Step 1 of 19 Configuration API step

Authenticate

Every Cobre API call carries a short-lived Bearer token (~20 minutes). Exchange API user credentials once and attach the token to every subsequent request.

POST https://api.cobre.co/v1/auth
Headers
Content-Typeapplication/json
Request body
{
"user_id": "cli_psp_cn_mx01",User IDRequirediAPI client user id used to obtain the access token.
"secret": "sk_live_PspMx9xK2v"SecretRequirediAPI client secret paired with user_id for authentication.
}
Response 201
{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGlfcHNwX25fbXgwMSJ9.MxPsp9xK2vN7cL4wT8aH1gF6yJ0bZ5eQ",Access TokeniShort-lived bearer token. Attach as Authorization: Bearer on later calls.
"type": "Bearer",TypeiResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"expiration_time": 1200Expiration TimeiToken lifetime in seconds.
}
Documentation for this step
AuthenticationAuthentication Guide
Step 2 of 19 Configuration API step

Subscribe to Webhook Events

Subscribe to balance credits/debits, Money Movement status (including SPEI returned), and Cross-Border lifecycle events. Verify HMAC-SHA256 signatures on every delivery.

POST https://api.cobre.co/v1/subscriptions
Headers
AuthorizationBearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGlfcHNwX25fbXgwMSJ9.MxPsp9xK2vN7cL4wT8aH1gF6yJ0bZ5eQ
Content-Typeapplication/json
Request body
{
"url": "https://psp.example.mx/webhooks/cobre",Notification URLRequirediHTTPS URL used by this resource (e.g. webhook endpoint).
"description": "China merchant treasury lifecycle (Mexico)",DescriptioniHuman-readable label or note.
"events": [EventsiList of webhook event types this subscription listens to.
"accounts.balance.credit",
"accounts.balance.debit",
"money_movements.status.completed",
"money_movements.status.failed",
"money_movements.status.rejected",
"money_movements.status.returned",
"cross_border_money_movements.status.completed",
"cross_border_money_movements.status.rejected"
],
"event_signature_key": "WHsig_PspMx01"Signature KeyRequirediSecret you set on the subscription; Cobre uses it to HMAC-SHA256-sign deliveries (verify via event-signature + event-timestamp headers).
}
Response 201
{
"id": "sub_PspMxTre01",IdiUnique Cobre identifier for this resource.
"url": "https://psp.example.mx/webhooks/cobre",Notification URLRequirediHTTPS URL used by this resource (e.g. webhook endpoint).
"description": "China merchant treasury lifecycle (Mexico)",DescriptioniHuman-readable label or note.
"events": [EventsiList of webhook event types this subscription listens to.
"accounts.balance.credit",
"accounts.balance.debit",
"money_movements.status.completed",
"money_movements.status.failed",
"money_movements.status.rejected",
"money_movements.status.returned",
"cross_border_money_movements.status.completed",
"cross_border_money_movements.status.rejected"
],
"event_signature_key": "******Cn01",Signature KeyRequirediSecret you set on the subscription; Cobre uses it to HMAC-SHA256-sign deliveries (verify via event-signature + event-timestamp headers).
"created_at": "2026-07-06T10:00:00Z"Created AtiTimestamp when the resource was created (ISO 8601, UTC).
}
Step 3 of 19 Configuration API step

Create MXN Payout Cobre Balance

Create the Mexican MXN Payout balance first (primary account). It must exist before the Payin balance — Payin accounts reference it via metadata.primary_account for automatic sweeps. Also the source for local payouts and Cross-Border FX.

POST https://api.cobre.co/v1/accounts
Headers
AuthorizationBearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGlfcHNwX25fbXgwMSJ9.MxPsp9xK2vN7cL4wT8aH1gF6yJ0bZ5eQ
Content-Typeapplication/json
Request body
{
"provider_id": "pr_mex_cobre3",ProviderRequirediCobre field at "provider_id" in this payload.
"action": "create",ActionRequirediCobre field at "action" in this payload.
"alias": "PSP MXN Payout"AliasiDisplay name that helps identify it and clarify its purpose.
}
Response 201
{
"id": "acc_PspMxnPayout",IdiUnique Cobre identifier for this resource.
"provider_id": "pr_mex_cobre3",ProviderRequirediCobre field at "provider_id" in this payload.
"provider_name": "Cobre Balance Mexico",Provider NameiCobre field at "provider_name" in this payload.
"connectivity": {ConnectivityiConnection/registration status for keys or accounts.
"status": "connected",StatusiLifecycle status object for the resource or movement.
"description": ""DescriptioniHuman-readable label or note.
},
"alias": "PSP MXN Payout",AliasiDisplay name that helps identify it and clarify its purpose.
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"available_services": [Available ServicesiCobre field at "metadata.available_services" in this payload.
"mm_push_from_account",
"account_transactions"
]
},
"account_number": "",Account NumberiBank account or CLABE number for the counterparty.
"account_type": "clabe",Account TypeiCobre field at "account_type" in this payload.
"obtained_balance": 0,Obtained BalanceiCobre field at "obtained_balance" in this payload.
"geo": "mex",GeoiGeography code (e.g. col = Colombia, mex = Mexico).
"tags": [],TagsiCobre field at "tags" in this payload.
"currency": "mxn",CurrencyiISO currency code (e.g. cop, mxn).
"created_at": "2026-07-06T10:05:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"updated_at": "2026-07-06T10:05:00Z"Updated AtiTimestamp of the last update (ISO 8601, UTC).
}
Step 4 of 19 Configuration API step

Create MXN Payin Cobre Balance

Create the Mexican MXN Payin balance (secondary account) after the Payout balance. Set metadata.primary_account to acc_PspMxnPayout so inbound credits auto-sweep. If the automatic sweep does not occur, move funds manually as described in the Internal Transfer stage.

POST https://api.cobre.co/v1/accounts
Headers
AuthorizationBearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGlfcHNwX25fbXgwMSJ9.MxPsp9xK2vN7cL4wT8aH1gF6yJ0bZ5eQ
Content-Typeapplication/json
Request body
{
"provider_id": "pr_mex_cobre3",ProviderRequirediCobre field at "provider_id" in this payload.
"action": "create",ActionRequirediCobre field at "action" in this payload.
"alias": "PSP MXN Payin",AliasiDisplay name that helps identify it and clarify its purpose.
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"primary_account": "acc_PspMxnPayout"Primary accountRequirediPayout Cobre Balance (acc_PspMxnPayout) — every Payin credit auto-sweeps here.
}
}
Response 201
{
"id": "acc_PspMxnPayin",IdiUnique Cobre identifier for this resource.
"provider_id": "pr_mex_cobre3",ProviderRequirediCobre field at "provider_id" in this payload.
"provider_name": "Cobre Balance Mexico",Provider NameiCobre field at "provider_name" in this payload.
"connectivity": {ConnectivityiConnection/registration status for keys or accounts.
"status": "connected",StatusiLifecycle status object for the resource or movement.
"description": ""DescriptioniHuman-readable label or note.
},
"alias": "PSP MXN Payin",AliasiDisplay name that helps identify it and clarify its purpose.
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"available_services": [Available ServicesiCobre field at "metadata.available_services" in this payload.
"mm_push_from_account",
"account_transactions"
],
"primary_account": "acc_PspMxnPayout"Primary accountRequirediPayout Cobre Balance (acc_PspMxnPayout) — every Payin credit auto-sweeps here.
},
"account_number": "",Account NumberiBank account or CLABE number for the counterparty.
"account_type": "clabe",Account TypeiCobre field at "account_type" in this payload.
"obtained_balance": 0,Obtained BalanceiCobre field at "obtained_balance" in this payload.
"geo": "mex",GeoiGeography code (e.g. col = Colombia, mex = Mexico).
"tags": [],TagsiCobre field at "tags" in this payload.
"currency": "mxn",CurrencyiISO currency code (e.g. cop, mxn).
"created_at": "2026-07-06T10:05:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"updated_at": "2026-07-06T10:05:00Z"Updated AtiTimestamp of the last update (ISO 8601, UTC).
}
Step 5 of 19 Configuration API step

Create USD Global Cobre Balance

Provision the USD Global Cobre Balance — destination of MXN→USD Cross-Border conversions.

POST https://api.cobre.co/v1/accounts
Headers
AuthorizationBearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGlfcHNwX25fbXgwMSJ9.MxPsp9xK2vN7cL4wT8aH1gF6yJ0bZ5eQ
Content-Typeapplication/json
Request body
{
"provider_id": "pr_global_cobre",ProviderRequirediCobre field at "provider_id" in this payload.
"action": "create",ActionRequirediCobre field at "action" in this payload.
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"currency": "usd"CurrencyRequirediISO currency code (e.g. cop, mxn).
},
"alias": "PSP USD Global Treasury"AliasiDisplay name that helps identify it and clarify its purpose.
}
Response 201
{
"id": "acc_PspUsdGlobalMx",IdiUnique Cobre identifier for this resource.
"provider_id": "pr_global_cobre",ProviderRequirediCobre field at "provider_id" in this payload.
"provider_name": "Cobre Balance Global",Provider NameiCobre field at "provider_name" in this payload.
"connectivity": {ConnectivityiConnection/registration status for keys or accounts.
"status": "connected",StatusiLifecycle status object for the resource or movement.
"description": ""DescriptioniHuman-readable label or note.
},
"alias": "PSP USD Global Treasury",AliasiDisplay name that helps identify it and clarify its purpose.
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"available_services": [Available ServicesiCobre field at "metadata.available_services" in this payload.
"mm_push_from_account"
],
"currency": "usd"CurrencyRequirediISO currency code (e.g. cop, mxn).
},
"account_number": "",Account NumberiBank account or CLABE number for the counterparty.
"account_type": "cobre_balance",Account TypeiCobre field at "account_type" in this payload.
"obtained_balance": 0,Obtained BalanceiCobre field at "obtained_balance" in this payload.
"geo": "global",GeoiGeography code (e.g. col = Colombia, mex = Mexico).
"tags": [],TagsiCobre field at "tags" in this payload.
"currency": "usd",CurrencyRequirediISO currency code (e.g. cop, mxn).
"created_at": "2026-07-06T10:06:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"updated_at": "2026-07-06T10:06:00Z"Updated AtiTimestamp of the last update (ISO 8601, UTC).
}
Step 6 of 19 Virtual CLABE Collections API step

Create Merchant Virtual CLABE Reference

Create a Virtual CLABE account reference on the MXN Payin balance for China merchant CN01. Inbound SPEI transfers credit acc_PspMxnPayin — reconcile using metadata.account_reference for merchant attribution.

POST https://api.cobre.co/v1/account_references
Headers
AuthorizationBearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGlfcHNwX25fbXgwMSJ9.MxPsp9xK2vN7cL4wT8aH1gF6yJ0bZ5eQ
Content-Typeapplication/json
Request body
{
"source_id": "acc_PspMxnPayin",MXN Payin BalanceRequirediCobre id of the source account or counterparty.
"type": "virtual_clabe_accounts",Reference typeRequirediResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"alias": "Merchant CN01 Virtual CLABE"AliasiDisplay name that helps identify it and clarify its purpose.
}
Response 200
{
"id": "ref_MerchCnMx01",IdiUnique Cobre identifier for this resource.
"alias": "Merchant CN01 Virtual CLABE",AliasiDisplay name that helps identify it and clarify its purpose.
"type": "virtual_clabe_accounts",Reference typeRequirediResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"value": "70301105231100001",ValueiCobre field at "value" in this payload.
"source_id": "acc_PspMxnPayin",MXN Payin BalanceRequirediCobre id of the source account or counterparty.
"geo": "mex",GeoiGeography code (e.g. col = Colombia, mex = Mexico).
"connectivity": {ConnectivityiConnection/registration status for keys or accounts.
"status": "enabled",StatusiLifecycle status object for the resource or movement.
"description": ""DescriptioniHuman-readable label or note.
},
"metadata": {},MetadataiCustom key-value metadata attached to the resource.
"created_at": "2026-07-06T11:00:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"updated_at": "2026-07-06T11:00:05Z"Updated AtiTimestamp of the last update (ISO 8601, UTC).
}
Step 7 of 19 Virtual CLABE Collections API step

Merchant Virtual CLABE Credit

The merchant sends MXN via SPEI to their Virtual CLABE. Cobre credits acc_PspMxnPayin with spei_credit — reconcile using metadata.account_reference 70301105231100001 (ref_MerchCnMx01).

GET https://api.cobre.co/v1/accounts/acc_PspMxnPayinPayin Cobre BalanceRequirediPath parameter — MXN Payin balance where Virtual CLABE SPEI credits post./transactions
Headers
AuthorizationBearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGlfcHNwX25fbXgwMSJ9.MxPsp9xK2vN7cL4wT8aH1gF6yJ0bZ5eQ
Response 200
{
"total_items": 1,Total ItemsiTotal items matching the query across all pages.
"total_pages": 1,Total PagesiNumber of pages in this result set.
"is_last_page": true,Is Last PageiTrue when this is the final page of results.
"page_items": 1,Page ItemsiNumber of items returned on this page.
"contents": [ContentsiArray of result objects for this page.
{
"id": "trx_MerchMx001",Transaction IDiUnique Cobre identifier for this resource.
"type": "spei_credit",Transaction typeiResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"account_id": "acc_PspMxnPayin",Account IdiCobre Balance account id affected by the event.
"amount": 50000000,Amount creditediAmount in cents — the last two digits are decimals.
"previous_balance": 100000000,Previous BalanceiCobre field at "contents.0.previous_balance" in this payload.
"current_balance": 150000000,Current BalanceiCobre field at "contents.0.current_balance" in this payload.
"currency": "mxn",CurrencyiISO currency code (e.g. cop, mxn).
"credit_debit_type": "credit",Credit Debit Typeicredit = funds in; debit = funds out.
"transaction_date": "2026-07-06T13:10:00Z",Transaction DateiTimestamp when the transaction was posted (ISO 8601, UTC).
"created_at": "2026-07-06T13:10:01Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"reference": "1234567",ReferenceiPayment reference echoed in metadata for reconciliation.
"sender_name": "Merchant CN01 SA de CV",Sender NameiMetadata field "sender_name" attached to the resource.
"sender_clabe": "012180001234567890",Sender ClabeiMetadata field "sender_clabe" attached to the resource.
"tracking_key": "20260706131000001",Tracking KeyiNetwork tracking key for the payment (PSE ticket or Bre-B key).
"description": "SPEI merchant funding",DescriptioniHuman-readable label or note.
"account_reference": "70301105231100001"Account referenceiTransfer-In reference number used to reconcile incoming deposits.
}
}
]
}

Webhook delivered

accounts.balance.credit

Fires when the Virtual CLABE credit posts on acc_PspMxnPayin. Map metadata.account_reference to merchant CN01.

Headers
Content-Typeapplication/json
Payload
{
"id": "ev_MerchMxTi001",IdiUnique Cobre identifier for this resource.
"event_key": "accounts.balance.credit",Event KeyiWebhook subscription key (e.g. money_movements.status.completed).
"created_at": "2026-07-06T13:10:01Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"content": {ContentiEvent-specific payload — same layout as the GET response for that resource.
"id": "trx_MerchMx001",IdiUnique Cobre identifier for this resource.
"type": "spei_credit",TypeiResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"amount": 50000000,AmountiAmount in cents — the last two digits are decimals.
"currency": "mxn",CurrencyiISO currency code (e.g. cop, mxn).
"date": "2026-07-06T13:10:00Z",DateiTimestamp when the balance transaction was posted (ISO 8601, UTC) — used in accounts.balance.* webhook notifications.
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"reference": "1234567",ReferenceiPayment reference echoed in metadata for reconciliation.
"sender_name": "Merchant CN01 SA de CV",Sender NameiMetadata field "sender_name" attached to the resource.
"sender_clabe": "012180001234567890",Sender ClabeiMetadata field "sender_clabe" attached to the resource.
"tracking_key": "20260706131000001",Tracking KeyiNetwork tracking key for the payment (PSE ticket or Bre-B key).
"description": "SPEI merchant funding",DescriptioniHuman-readable label or note.
"account_reference": "70301105231100001"Account ReferenceiTransfer-In reference number used to reconcile incoming deposits.
},
"account_id": "acc_PspMxnPayin",Account IdiCobre Balance account id affected by the event.
"previous_balance": 100000000,Previous BalanceiCobre field at "content.previous_balance" in this payload.
"current_balance": 150000000,Current BalanceiCobre field at "content.current_balance" in this payload.
"credit_debit_type": "credit"Credit Debit Typeicredit = funds in; debit = funds out.
}
}
Step 8 of 19 Virtual CLABE Collections Reconciliation

Reconcile Virtual CLABE Credit

Match the accounts.balance.credit webhook to your treasury ledger using metadata.account_reference for merchant attribution. No Money Movement exists — reconciliation is transaction-level on acc_PspMxnPayin.

Mapping the webhook payload from an earlier step onto Treasury ledger. No API call is made — this step closes the loop in your own system.

Cobre field & valueTreasury ledger field
content.metadata.account_reference
70301105231100001
merchant_virtual_clabe_ref
Primary join key — maps ref_MerchCnMx01 (70301105231100001) to merchant CN01 available MXN.
content.id
trx_MerchMx001
cobre_transaction_id
content.amount
50000000
credited_amount_cents
MXN credited to acc_PspMxnPayin (50000000 = $500,000.00 MXN).
content.account_id
acc_PspMxnPayin
mxn_payin_balance_id
content.metadata.tracking_key
20260706131000001
bank_tracking_key
Bank network tracking key — store for audit alongside metadata.reference.
Step 9 of 19 Internal Transfer API step

Manual transfer: Payin → Payout

Account linkage reliably auto-sweeps Payin credits to Payout, but it can occasionally fail. When account linkage does not auto-sweep, manually move MXN from acc_PspMxnPayin to acc_PspMxnPayout with POST /money_movements (Cobre Balance → Cobre Balance). The same endpoint moves funds in reverse (Payout → Payin) by swapping source_id and destination_id. If the automatic sweep does not occur, move funds manually as described in the Internal Transfer stage.

POST https://api.cobre.co/v1/money_movements
Headers
AuthorizationBearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGlfcHNwX25fbXgwMSJ9.MxPsp9xK2vN7cL4wT8aH1gF6yJ0bZ5eQ
Content-Typeapplication/json
idempotencypsp-internal-sweep-cn001
Request body
{
"amount": 150000000,Amount (MXN cents)RequirediAmount in cents — the last two digits are decimals.
"source_id": "acc_PspMxnPayin",MXN Payin balanceRequirediCobre id of the source account or counterparty.
"destination_id": "acc_PspMxnPayout",MXN Payout balanceRequirediCobre id of the destination account or counterparty.
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"description": "Manual Payin to Payout transfer"DescriptionRequirediHuman-readable label or note.
},
"external_id": "psp_internal_sweep_001",External IDiYour own reference echoed by Cobre for reconciliation.
"checker_approval": falseChecker ApprovaliWhen true, Cobre pauses at pending_approval and locks source funds until an approval/denial decision via Money Movement Approvals API.
}
Response 201
{
"id": "mm_MxnSweep01",IdiUnique Cobre identifier for this resource.
"status": {StatusiLifecycle status object for the resource or movement.
"state": "initiated",StateiCurrent lifecycle state (e.g. completed, failed, rejected).
"code": "",CodeiProvider or Cobre status code when the state is failed or rejected.
"description": ""DescriptioniHuman-readable detail for the current status.
},
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"description": "Manual Payin to Payout transfer"DescriptionRequirediHuman-readable label or note.
},
"creator": "cli_psp_cn_mx01",CreatoriActor that created the resource. On a Checkout-created Money Movement this is the r2p source counterparty (cp_…), not the API user.
"external_id": "psp_internal_sweep_001",External IDiYour own reference echoed by Cobre for reconciliation.
"checker_approval": false,Checker ApprovaliWhen true, Cobre pauses at pending_approval and locks source funds until an approval/denial decision via Money Movement Approvals API.
"mm_approval_id": "",Mm Approval IdiMoney Movement Approval id (mma_…) when checker_approval is true — used for the decision endpoint.
"type": "spei",TypeiResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"geo": "mex",GeoiGeography code (e.g. col = Colombia, mex = Mexico).
"source_id": "acc_PspMxnPayin",MXN Payin balanceRequirediCobre id of the source account or counterparty.
"destination_id": "acc_PspMxnPayout",MXN Payout balanceRequirediCobre id of the destination account or counterparty.
"currency": "mxn",CurrencyiISO currency code (e.g. cop, mxn).
"amount": 150000000,Amount (MXN cents)RequirediAmount in cents — the last two digits are decimals.
"created_at": "2026-07-07T12:00:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"updated_at": "2026-07-07T12:00:00Z"Updated AtiTimestamp of the last update (ISO 8601, UTC).
}

Webhook outcomesMoney movement

Manual transfer completed — MXN debited from acc_PspMxnPayin and credited to acc_PspMxnPayout. Use when automatic linkage sweep did not run.

Handle each terminal state in your webhook listener. Status codes reference the <a href="https://docs.cobre.com/money-movement-statuses-2032280m0" target="_blank" rel="noopener">Money Movement Statuses</a> guide.

Funds settled successfully. No error code is set (NA in the status guide). Use this webhook to mark the payment as paid in your system.

Event money_movements.status.completed
Headers
Content-Typeapplication/json
Example payload
{
"id": "ev_MxnSweepCmp",IdiUnique Cobre identifier for this resource.
"event_key": "money_movements.status.completed",Event KeyiWebhook subscription key (e.g. money_movements.status.completed).
"created_at": "2026-07-07T12:02:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"content": {ContentiEvent-specific payload — same layout as the GET response for that resource.
"id": "mm_MxnSweep01",IdiUnique Cobre identifier for this resource.
"status": {StatusiLifecycle status object for the resource or movement.
"state": "completed",StateiCurrent lifecycle state (e.g. completed, failed, rejected).
"code": "",CodeiProvider or Cobre status code when the state is failed or rejected.
"description": ""DescriptioniHuman-readable label or note.
},
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"description": "Manual Payin to Payout transfer"DescriptioniHuman-readable label or note.
},
"creator": "cli_psp_cn_mx01",CreatoriActor that created the resource. On a Checkout-created Money Movement this is the r2p source counterparty (cp_…), not the API user.
"external_id": "psp_internal_sweep_001",External IdiYour own reference echoed by Cobre for reconciliation.
"checker_approval": false,Checker ApprovaliWhen true, Cobre pauses at pending_approval and locks source funds until an approval/denial decision via Money Movement Approvals API.
"mm_approval_id": "",Mm Approval IdiMoney Movement Approval id (mma_…) when checker_approval is true — used for the decision endpoint.
"type": "spei",TypeiResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"geo": "mex",GeoiGeography code (e.g. col = Colombia, mex = Mexico).
"source_id": "acc_PspMxnPayin",Source IdiCobre id of the source account or counterparty.
"destination_id": "acc_PspMxnPayout",Destination IdiCobre id of the destination account or counterparty.
"currency": "mxn",CurrencyiISO currency code (e.g. cop, mxn).
"amount": 150000000,AmountiAmount in cents — the last two digits are decimals.
"created_at": "2026-07-07T12:00:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"updated_at": "2026-07-07T12:02:00Z"Updated AtiTimestamp of the last update (ISO 8601, UTC).
}
}

Cobre or the rail could not process the movement. Inspect status.code and status.description. The list below is filtered to this Money Movement’s direction (payin, payout, or both):

Possible status codes
CodeDescriptionApplies to
F001Payment processing failed please try again.Payin and payout
F002NSF - Not Sufficient Funds in the designated account.Payin and payout
F004Daily transaction amount limit has been reached.Payin and payout
F005Amount exceeds the maximum allowed transaction limit.Payin and payout
F098Could not process the money movement at this time.Payin and payout
F099Could not process the money movement at this time.Payin and payout
Event money_movements.status.failed
Headers
Content-Typeapplication/json
Example payload
{
"id": "ev_MxnSweepCmp",IdiUnique Cobre identifier for this resource.
"event_key": "money_movements.status.failed",Event KeyiWebhook subscription key (e.g. money_movements.status.completed).
"created_at": "2026-07-07T12:02:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"content": {ContentiEvent-specific payload — same layout as the GET response for that resource.
"id": "mm_MxnSweep01",IdiUnique Cobre identifier for this resource.
"status": {StatusiLifecycle status object for the resource or movement.
"state": "failed",StateiCurrent lifecycle state (e.g. completed, failed, rejected).
"code": "F002",CodeiProvider or Cobre status code when the state is failed or rejected.
"description": "NSF - Not Sufficient Funds in the designated account."DescriptioniHuman-readable label or note.
},
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"description": "Manual Payin to Payout transfer"DescriptioniHuman-readable label or note.
},
"creator": "cli_psp_cn_mx01",CreatoriActor that created the resource. On a Checkout-created Money Movement this is the r2p source counterparty (cp_…), not the API user.
"external_id": "psp_internal_sweep_001",External IdiYour own reference echoed by Cobre for reconciliation.
"checker_approval": false,Checker ApprovaliWhen true, Cobre pauses at pending_approval and locks source funds until an approval/denial decision via Money Movement Approvals API.
"mm_approval_id": "",Mm Approval IdiMoney Movement Approval id (mma_…) when checker_approval is true — used for the decision endpoint.
"type": "spei",TypeiResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"geo": "mex",GeoiGeography code (e.g. col = Colombia, mex = Mexico).
"source_id": "acc_PspMxnPayin",Source IdiCobre id of the source account or counterparty.
"destination_id": "acc_PspMxnPayout",Destination IdiCobre id of the destination account or counterparty.
"currency": "mxn",CurrencyiISO currency code (e.g. cop, mxn).
"amount": 150000000,AmountiAmount in cents — the last two digits are decimals.
"created_at": "2026-07-07T12:00:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"updated_at": "2026-07-07T12:02:00Z"Updated AtiTimestamp of the last update (ISO 8601, UTC).
}
}

The bank or payment network rejected the transaction. Inspect status.code. The list below is filtered to this Money Movement’s direction (payin, payout, or both):

Possible status codes
CodeDescriptionApplies to
R000Transaction rejected.Payin and payout
R001Inactive or blocked account.Payin and payout
R002Account and identification provided do not coincide.Payin and payout
R004ID not valid.Payout
R005Account does not exist.Payin and payout
R006Invalid account number.Payin and payout
R009Exceeds maximum allowed amount.Payin and payout
R010Account not authorized to debit.Payin and payout
R011Invalid Account type.Payout
R015Account not authorized to be credited.Payout
R018Payment rejected due invalid key.Payout
R023Payment cancelled by the user.Payin and payout
R024Exceeds maximum allowed number of transactions.Payout
R025Required information missing.Payout
R026Payment rejected due to unavailable bank services.Payin and payout
R027Account exceeds the maximum allowed transaction limit.Payin and payout
R034Account closed.Payin and payout
R085Bank processing error.Payout
Event money_movements.status.rejected
Headers
Content-Typeapplication/json
Example payload
{
"id": "ev_MxnSweepCmp",IdiUnique Cobre identifier for this resource.
"event_key": "money_movements.status.rejected",Event KeyiWebhook subscription key (e.g. money_movements.status.completed).
"created_at": "2026-07-07T12:02:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"content": {ContentiEvent-specific payload — same layout as the GET response for that resource.
"id": "mm_MxnSweep01",IdiUnique Cobre identifier for this resource.
"status": {StatusiLifecycle status object for the resource or movement.
"state": "rejected",StateiCurrent lifecycle state (e.g. completed, failed, rejected).
"code": "R018",CodeiProvider or Cobre status code when the state is failed or rejected.
"description": "Payment rejected due invalid key."DescriptioniHuman-readable label or note.
},
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"description": "Manual Payin to Payout transfer"DescriptioniHuman-readable label or note.
},
"creator": "cli_psp_cn_mx01",CreatoriActor that created the resource. On a Checkout-created Money Movement this is the r2p source counterparty (cp_…), not the API user.
"external_id": "psp_internal_sweep_001",External IdiYour own reference echoed by Cobre for reconciliation.
"checker_approval": false,Checker ApprovaliWhen true, Cobre pauses at pending_approval and locks source funds until an approval/denial decision via Money Movement Approvals API.
"mm_approval_id": "",Mm Approval IdiMoney Movement Approval id (mma_…) when checker_approval is true — used for the decision endpoint.
"type": "spei",TypeiResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"geo": "mex",GeoiGeography code (e.g. col = Colombia, mex = Mexico).
"source_id": "acc_PspMxnPayin",Source IdiCobre id of the source account or counterparty.
"destination_id": "acc_PspMxnPayout",Destination IdiCobre id of the destination account or counterparty.
"currency": "mxn",CurrencyiISO currency code (e.g. cop, mxn).
"amount": 150000000,AmountiAmount in cents — the last two digits are decimals.
"created_at": "2026-07-07T12:00:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"updated_at": "2026-07-07T12:02:00Z"Updated AtiTimestamp of the last update (ISO 8601, UTC).
}
}
Step 10 of 19 Internal Transfer Reconciliation

Reconcile manual Payin → Payout transfer

Match the completion webhook on external_id psp_internal_sweep_001. Cross-check MXN debit on acc_PspMxnPayin and credit on acc_PspMxnPayout. Only needed when automatic linkage sweep did not occur.

Mapping the webhook payload from an earlier step onto Treasury ledger. No API call is made — this step closes the loop in your own system.

Cobre field & valueTreasury ledger field
content.external_id
psp_internal_sweep_001
sweep_reference
content.id
mm_MxnSweep01
cobre_mm_id
content.amount
150000000
swept_amount_cents
content.status.state
completed
sweep_status
Step 11 of 19 Local Payout API step

Create Local CLABE Beneficiary

Register the local vendor as a Mexico CLABE counterparty for SPEI payouts from the MXN Payout balance.

POST https://api.cobre.co/v1/counterparties
Headers
AuthorizationBearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGlfcHNwX25fbXgwMSJ9.MxPsp9xK2vN7cL4wT8aH1gF6yJ0bZ5eQ
Content-Typeapplication/json
Request body
{
"geo": "mex",GeoRequirediGeography code (e.g. col = Colombia, mex = Mexico).
"type": "clabe",TypeRequirediResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"alias": "Local vendor - Merchant CN01",AliasiDisplay name that helps identify it and clarify its purpose.
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"counterparty_fullname": "Proveedor Local SA de CV",Beneficiary nameRequirediLegal or display name of the counterparty beneficiary.
"account_number": "012180009876543210",CLABERequirediBank account or CLABE number for the counterparty.
"counterparty_id_type": "rfc",ID typeRequirediType of identification document for the counterparty (e.g. nit, cc, rfc).
"counterparty_id_number": "PRO990101ABC"RFCRequirediIdentification number for the counterparty.
}
}
Response 201
{
"id": "cp_MxVendor01",IdiUnique Cobre identifier for this resource.
"geo": "mex",GeoRequirediGeography code (e.g. col = Colombia, mex = Mexico).
"type": "clabe",TypeRequirediResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"alias": "Local vendor - Merchant CN01",AliasiDisplay name that helps identify it and clarify its purpose.
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"counterparty_fullname": "Proveedor Local SA de CV",Beneficiary nameRequirediLegal or display name of the counterparty beneficiary.
"account_number": "012180009876543210",CLABERequirediBank account or CLABE number for the counterparty.
"counterparty_id_type": "rfc",ID typeRequirediType of identification document for the counterparty (e.g. nit, cc, rfc).
"counterparty_id_number": "PRO990101ABC",RFCRequirediIdentification number for the counterparty.
"registered_account": falseRegistered AccountiCobre field at "metadata.registered_account" in this payload.
},
"created_at": "2026-07-07T12:10:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"updated_at": "2026-07-07T12:10:00Z"Updated AtiTimestamp of the last update (ISO 8601, UTC).
}
Documentation for this step
Create a CounterpartyManaging Counterparties
Step 12 of 19 Local Payout API step

Pay via SPEI

Create a Money Movement from acc_PspMxnPayout to the CLABE counterparty over SPEI. metadata.reference must be numeric (1–7 digits).

POST https://api.cobre.co/v1/money_movements
Headers
AuthorizationBearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGlfcHNwX25fbXgwMSJ9.MxPsp9xK2vN7cL4wT8aH1gF6yJ0bZ5eQ
Content-Typeapplication/json
idempotencypsp-local-payout-cn001
Request body
{
"amount": 30000000,Amount (MXN cents)RequirediAmount in cents — the last two digits are decimals.
"source_id": "acc_PspMxnPayout",MXN Payout balanceRequirediCobre id of the source account or counterparty.
"destination_id": "cp_MxVendor01",BeneficiaryRequirediCobre id of the destination account or counterparty.
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"description": "Local vendor payout",DescriptionRequirediHuman-readable label or note.
"reference": "7654321"SPEI referenceRequirediPayment reference echoed in metadata for reconciliation.
},
"external_id": "psp_local_payout_001",External IDiYour own reference echoed by Cobre for reconciliation.
"checker_approval": falseChecker ApprovaliWhen true, Cobre pauses at pending_approval and locks source funds until an approval/denial decision via Money Movement Approvals API.
}
Response 201
{
"id": "mm_MxnLocalPayout01",IdiUnique Cobre identifier for this resource.
"status": {StatusiLifecycle status object for the resource or movement.
"state": "initiated",StateiCurrent lifecycle state (e.g. completed, failed, rejected).
"code": "",CodeiProvider or Cobre status code when the state is failed or rejected.
"description": ""DescriptioniHuman-readable detail for the current status.
},
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"description": "Local vendor payout",DescriptionRequirediHuman-readable label or note.
"reference": "7654321"SPEI referenceRequirediPayment reference echoed in metadata for reconciliation.
},
"creator": "cli_psp_cn_mx01",CreatoriActor that created the resource. On a Checkout-created Money Movement this is the r2p source counterparty (cp_…), not the API user.
"external_id": "psp_local_payout_001",External IDiYour own reference echoed by Cobre for reconciliation.
"checker_approval": false,Checker ApprovaliWhen true, Cobre pauses at pending_approval and locks source funds until an approval/denial decision via Money Movement Approvals API.
"mm_approval_id": "",Mm Approval IdiMoney Movement Approval id (mma_…) when checker_approval is true — used for the decision endpoint.
"type": "spei",TypeiResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"geo": "mex",GeoiGeography code (e.g. col = Colombia, mex = Mexico).
"source_id": "acc_PspMxnPayout",MXN Payout balanceRequirediCobre id of the source account or counterparty.
"destination_id": "cp_MxVendor01",BeneficiaryRequirediCobre id of the destination account or counterparty.
"currency": "mxn",CurrencyiISO currency code (e.g. cop, mxn).
"amount": 30000000,Amount (MXN cents)RequirediAmount in cents — the last two digits are decimals.
"created_at": "2026-07-07T12:15:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"updated_at": "2026-07-07T12:15:00Z"Updated AtiTimestamp of the last update (ISO 8601, UTC).
}

Webhook outcomesMoney movement

Local payout completed — MXN debited from acc_PspMxnPayout. Reconcile on external_id psp_local_payout_001.

Handle each terminal state in your webhook listener. Status codes reference the <a href="https://docs.cobre.com/money-movement-statuses-2032280m0" target="_blank" rel="noopener">Money Movement Statuses</a> guide.

Funds settled successfully. No error code is set (NA in the status guide). Use this webhook to mark the payment as paid in your system.

Event money_movements.status.completed
Headers
Content-Typeapplication/json
Example payload
{
"id": "ev_MxnLocalPayoutCmp",IdiUnique Cobre identifier for this resource.
"event_key": "money_movements.status.completed",Event KeyiWebhook subscription key (e.g. money_movements.status.completed).
"created_at": "2026-07-07T12:17:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"content": {ContentiEvent-specific payload — same layout as the GET response for that resource.
"id": "mm_MxnLocalPayout01",IdiUnique Cobre identifier for this resource.
"status": {StatusiLifecycle status object for the resource or movement.
"state": "completed",StateiCurrent lifecycle state (e.g. completed, failed, rejected).
"code": "",CodeiProvider or Cobre status code when the state is failed or rejected.
"description": ""DescriptioniHuman-readable label or note.
},
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"description": "Local vendor payout",DescriptioniHuman-readable label or note.
"reference": "7654321"ReferenceiPayment reference echoed in metadata for reconciliation.
},
"creator": "cli_psp_cn_mx01",CreatoriActor that created the resource. On a Checkout-created Money Movement this is the r2p source counterparty (cp_…), not the API user.
"external_id": "psp_local_payout_001",External IdiYour own reference echoed by Cobre for reconciliation.
"checker_approval": false,Checker ApprovaliWhen true, Cobre pauses at pending_approval and locks source funds until an approval/denial decision via Money Movement Approvals API.
"mm_approval_id": "",Mm Approval IdiMoney Movement Approval id (mma_…) when checker_approval is true — used for the decision endpoint.
"type": "spei",TypeiResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"geo": "mex",GeoiGeography code (e.g. col = Colombia, mex = Mexico).
"source_id": "acc_PspMxnPayout",Source IdiCobre id of the source account or counterparty.
"destination_id": "cp_MxVendor01",Destination IdiCobre id of the destination account or counterparty.
"currency": "mxn",CurrencyiISO currency code (e.g. cop, mxn).
"amount": 30000000,AmountiAmount in cents — the last two digits are decimals.
"created_at": "2026-07-07T12:15:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"updated_at": "2026-07-07T12:17:00Z"Updated AtiTimestamp of the last update (ISO 8601, UTC).
}
}

Cobre or the rail could not process the movement. Inspect status.code and status.description. The list below is filtered to this Money Movement’s direction (payin, payout, or both):

Possible status codes
CodeDescriptionApplies to
F001Payment processing failed please try again.Payin and payout
F002NSF - Not Sufficient Funds in the designated account.Payin and payout
F004Daily transaction amount limit has been reached.Payin and payout
F005Amount exceeds the maximum allowed transaction limit.Payin and payout
F098Could not process the money movement at this time.Payin and payout
F099Could not process the money movement at this time.Payin and payout
Event money_movements.status.failed
Headers
Content-Typeapplication/json
Example payload
{
"id": "ev_MxnLocalPayoutCmp",IdiUnique Cobre identifier for this resource.
"event_key": "money_movements.status.failed",Event KeyiWebhook subscription key (e.g. money_movements.status.completed).
"created_at": "2026-07-07T12:17:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"content": {ContentiEvent-specific payload — same layout as the GET response for that resource.
"id": "mm_MxnLocalPayout01",IdiUnique Cobre identifier for this resource.
"status": {StatusiLifecycle status object for the resource or movement.
"state": "failed",StateiCurrent lifecycle state (e.g. completed, failed, rejected).
"code": "F002",CodeiProvider or Cobre status code when the state is failed or rejected.
"description": "NSF - Not Sufficient Funds in the designated account."DescriptioniHuman-readable label or note.
},
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"description": "Local vendor payout",DescriptioniHuman-readable label or note.
"reference": "7654321"ReferenceiPayment reference echoed in metadata for reconciliation.
},
"creator": "cli_psp_cn_mx01",CreatoriActor that created the resource. On a Checkout-created Money Movement this is the r2p source counterparty (cp_…), not the API user.
"external_id": "psp_local_payout_001",External IdiYour own reference echoed by Cobre for reconciliation.
"checker_approval": false,Checker ApprovaliWhen true, Cobre pauses at pending_approval and locks source funds until an approval/denial decision via Money Movement Approvals API.
"mm_approval_id": "",Mm Approval IdiMoney Movement Approval id (mma_…) when checker_approval is true — used for the decision endpoint.
"type": "spei",TypeiResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"geo": "mex",GeoiGeography code (e.g. col = Colombia, mex = Mexico).
"source_id": "acc_PspMxnPayout",Source IdiCobre id of the source account or counterparty.
"destination_id": "cp_MxVendor01",Destination IdiCobre id of the destination account or counterparty.
"currency": "mxn",CurrencyiISO currency code (e.g. cop, mxn).
"amount": 30000000,AmountiAmount in cents — the last two digits are decimals.
"created_at": "2026-07-07T12:15:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"updated_at": "2026-07-07T12:17:00Z"Updated AtiTimestamp of the last update (ISO 8601, UTC).
}
}

The bank or payment network rejected the transaction. Inspect status.code. The list below is filtered to this Money Movement’s direction (payin, payout, or both):

Possible status codes
CodeDescriptionApplies to
R000Transaction rejected.Payin and payout
R001Inactive or blocked account.Payin and payout
R002Account and identification provided do not coincide.Payin and payout
R004ID not valid.Payout
R005Account does not exist.Payin and payout
R006Invalid account number.Payin and payout
R009Exceeds maximum allowed amount.Payin and payout
R010Account not authorized to debit.Payin and payout
R011Invalid Account type.Payout
R015Account not authorized to be credited.Payout
R018Payment rejected due invalid key.Payout
R023Payment cancelled by the user.Payin and payout
R024Exceeds maximum allowed number of transactions.Payout
R025Required information missing.Payout
R026Payment rejected due to unavailable bank services.Payin and payout
R027Account exceeds the maximum allowed transaction limit.Payin and payout
R034Account closed.Payin and payout
R085Bank processing error.Payout
Event money_movements.status.rejected
Headers
Content-Typeapplication/json
Example payload
{
"id": "ev_MxnLocalPayoutCmp",IdiUnique Cobre identifier for this resource.
"event_key": "money_movements.status.rejected",Event KeyiWebhook subscription key (e.g. money_movements.status.completed).
"created_at": "2026-07-07T12:17:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"content": {ContentiEvent-specific payload — same layout as the GET response for that resource.
"id": "mm_MxnLocalPayout01",IdiUnique Cobre identifier for this resource.
"status": {StatusiLifecycle status object for the resource or movement.
"state": "rejected",StateiCurrent lifecycle state (e.g. completed, failed, rejected).
"code": "R018",CodeiProvider or Cobre status code when the state is failed or rejected.
"description": "Payment rejected due invalid key."DescriptioniHuman-readable label or note.
},
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"description": "Local vendor payout",DescriptioniHuman-readable label or note.
"reference": "7654321"ReferenceiPayment reference echoed in metadata for reconciliation.
},
"creator": "cli_psp_cn_mx01",CreatoriActor that created the resource. On a Checkout-created Money Movement this is the r2p source counterparty (cp_…), not the API user.
"external_id": "psp_local_payout_001",External IdiYour own reference echoed by Cobre for reconciliation.
"checker_approval": false,Checker ApprovaliWhen true, Cobre pauses at pending_approval and locks source funds until an approval/denial decision via Money Movement Approvals API.
"mm_approval_id": "",Mm Approval IdiMoney Movement Approval id (mma_…) when checker_approval is true — used for the decision endpoint.
"type": "spei",TypeiResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"geo": "mex",GeoiGeography code (e.g. col = Colombia, mex = Mexico).
"source_id": "acc_PspMxnPayout",Source IdiCobre id of the source account or counterparty.
"destination_id": "cp_MxVendor01",Destination IdiCobre id of the destination account or counterparty.
"currency": "mxn",CurrencyiISO currency code (e.g. cop, mxn).
"amount": 30000000,AmountiAmount in cents — the last two digits are decimals.
"created_at": "2026-07-07T12:15:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"updated_at": "2026-07-07T12:17:00Z"Updated AtiTimestamp of the last update (ISO 8601, UTC).
}
}
Step 13 of 19 Local Payout Reconciliation

Reconcile SPEI Payout

Match the completion webhook on external_id psp_local_payout_001. Note content.type (spei vs ach) for the rail Cobre selected.

Mapping the webhook payload from an earlier step onto Treasury ledger. No API call is made — this step closes the loop in your own system.

Cobre field & valueTreasury ledger field
content.external_id
psp_local_payout_001
payout_reference
content.id
mm_MxnLocalPayout01
cobre_mm_id
content.amount
30000000
paid_amount_cents
content.type
spei
payout_rail
content.status.state
completed
payout_status
Step 14 of 19 Cross-Border FX API step

Request MXN/USD Quote

Lock a short-lived MXN/USD static quote before converting merchant treasury MXN to USD. Confirm corridor availability and quote direction with your KAM — quotes expire in ~1 minute.

POST https://api.cobre.co/v1/fx_quotes
Headers
AuthorizationBearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGlfcHNwX25fbXgwMSJ9.MxPsp9xK2vN7cL4wT8aH1gF6yJ0bZ5eQ
Content-Typeapplication/json
Request body
{
"currency_pair": "mxn/usd",Currency pairRequirediCobre field at "currency_pair" in this payload.
"source_amount": 120000000,Source amount (MXN cents)RequirediCobre field at "source_amount" in this payload.
"type": "static_quote"Quote typeRequirediResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
}
Response 201
{
"id": "fxq_PspMx001",IdiUnique Cobre identifier for this resource.
"type": "static_quote",Quote typeRequirediResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"currency_pair": "mxn/usd",Currency pairRequirediCobre field at "currency_pair" in this payload.
"source_amount": 120000000,Source amount (MXN cents)RequirediCobre field at "source_amount" in this payload.
"fees_breakdown": {Fees BreakdowniCobre field at "fees_breakdown" in this payload.
"spread": 1.2SpreadiCobre field at "fees_breakdown.spread" in this payload.
},
"fx_rate": 40,Fx RateiCobre field at "fx_rate" in this payload.
"destination_amount": 30000,Destination AmountiCobre field at "destination_amount" in this payload.
"quota_limit": 1000000000,Quota LimitiCobre field at "quota_limit" in this payload.
"remaining_quota": 999625000,Remaining QuotaiCobre field at "remaining_quota" in this payload.
"created_at": "2026-07-06T14:00:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"valid_until": "2026-07-06T14:01:00Z",Valid UntiliCobre field at "valid_until" in this payload.
"last_quote": true,Last QuoteiCobre field at "last_quote" in this payload.
"off_market": falseOff MarketiCobre field at "off_market" in this payload.
}
Step 15 of 19 Cross-Border FX API step

Execute MXN→USD Cross-Border

Convert merchant treasury MXN from acc_PspMxnPayout to USD on acc_PspUsdGlobalMx using the locked quote. Reuse the idempotency header on retries (valid 24h).

POST https://api.cobre.co/v1/cross_border_money_movements
Headers
AuthorizationBearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGlfcHNwX25fbXgwMSJ9.MxPsp9xK2vN7cL4wT8aH1gF6yJ0bZ5eQ
Content-Typeapplication/json
idempotencypsp_cbmm_cn001
Request body
{
"source_id": "acc_PspMxnPayout",MXN Payout balanceRequirediCobre id of the source account or counterparty.
"destination_id": "acc_PspUsdGlobalMx",USD GlobalRequirediCobre id of the destination account or counterparty.
"forex_quote_id": "fxq_PspMx001",FX Quote IDRequirediCobre field at "forex_quote_id" in this payload.
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"destination_description": "Merchant CN01 treasury FX"DescriptioniCobre field at "metadata.destination_description" in this payload.
},
"external_id": "psp_fx_merchant001"External IDiYour own reference echoed by Cobre for reconciliation.
}
Response 201
{
"id": "mm_CbmmPspMx001",IdiUnique Cobre identifier for this resource.
"creator": "cli_psp_cn_mx01",CreatoriActor that created the resource. On a Checkout-created Money Movement this is the r2p source counterparty (cp_…), not the API user.
"type": "cross_border",TypeiResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"external_id": "psp_fx_merchant001",External IDiYour own reference echoed by Cobre for reconciliation.
"status": {StatusiLifecycle status object for the resource or movement.
"state": "initiated",StateiCurrent lifecycle state (e.g. completed, failed, rejected).
"code": "",CodeiProvider or Cobre status code when the state is failed or rejected.
"description": ""DescriptioniHuman-readable detail for the current status.
},
"source_id": "acc_PspMxnPayout",MXN Payout balanceRequirediCobre id of the source account or counterparty.
"destination_id": "acc_PspUsdGlobalMx",USD GlobalRequirediCobre id of the destination account or counterparty.
"forex_quote_id": "fxq_PspMx001",FX Quote IDRequirediCobre field at "forex_quote_id" in this payload.
"forex_quote": {Forex QuoteiCobre field at "forex_quote" in this payload.
"type": "static_quote",TypeiResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"currency_pair": "mxn/usd",Currency PairiCobre field at "forex_quote.currency_pair" in this payload.
"source_amount": 120000000,Source AmountiCobre field at "forex_quote.source_amount" in this payload.
"fees_breakdown": {Fees BreakdowniCobre field at "forex_quote.fees_breakdown" in this payload.
"spread": 1.2SpreadiCobre field at "forex_quote.fees_breakdown.spread" in this payload.
},
"fx_rate": 40,Fx RateiCobre field at "forex_quote.fx_rate" in this payload.
"destination_amount": 30000,Destination AmountiCobre field at "forex_quote.destination_amount" in this payload.
"quota_limit": 1000000000,Quota LimitiCobre field at "forex_quote.quota_limit" in this payload.
"remaining_quota": 999625000,Remaining QuotaiCobre field at "forex_quote.remaining_quota" in this payload.
"created_at": "2026-07-06T14:00:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"valid_until": "2026-07-06T14:01:00Z",Valid UntiliCobre field at "forex_quote.valid_until" in this payload.
"last_quote": true,Last QuoteiCobre field at "forex_quote.last_quote" in this payload.
"off_market": falseOff MarketiCobre field at "forex_quote.off_market" in this payload.
},
"geo": "mex/usa",GeoiGeography code (e.g. col = Colombia, mex = Mexico).
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"destination_description": "Merchant CN01 treasury FX"DescriptioniCobre field at "metadata.destination_description" in this payload.
},
"created_at": "2026-07-06T14:01:10Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"updated_at": "2026-07-06T14:01:10Z"Updated AtiTimestamp of the last update (ISO 8601, UTC).
}

Webhook outcomesCross-border money movement

MXN→USD conversion completed — USD is now on acc_PspUsdGlobalMx. Reconcile this FX leg on your treasury ledger.

Handle each terminal state in your webhook listener. Status codes reference the <a href="https://docs.cobre.com/money-movement-statuses-2032280m0" target="_blank" rel="noopener">Money Movement Statuses</a> guide.

Funds settled successfully. No error code is set (NA in the status guide). Use this webhook to mark the payment as paid in your system.

Event cross_border_money_movements.status.completed
Headers
Content-Typeapplication/json
Example payload
{
"id": "ev_CbmmPspMx001Cmp",IdiUnique Cobre identifier for this resource.
"event_key": "cross_border_money_movements.status.completed",Event KeyiWebhook subscription key (e.g. money_movements.status.completed).
"created_at": "2026-07-06T14:01:45Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"content": {ContentiEvent-specific payload — same layout as the GET response for that resource.
"id": "mm_CbmmPspMx001",IdiUnique Cobre identifier for this resource.
"creator": "cli_psp_cn_mx01",CreatoriActor that created the resource. On a Checkout-created Money Movement this is the r2p source counterparty (cp_…), not the API user.
"type": "cross_border",TypeiResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"external_id": "psp_fx_merchant001",External IdiYour own reference echoed by Cobre for reconciliation.
"status": {StatusiLifecycle status object for the resource or movement.
"state": "completed",StateiCurrent lifecycle state (e.g. completed, failed, rejected).
"code": "",CodeiProvider or Cobre status code when the state is failed or rejected.
"description": ""DescriptioniHuman-readable label or note.
},
"source_id": "acc_PspMxnPayout",Source IdiCobre id of the source account or counterparty.
"destination_id": "acc_PspUsdGlobalMx",Destination IdiCobre id of the destination account or counterparty.
"forex_quote_id": "fxq_PspMx001",Forex Quote IdiCobre field at "content.forex_quote_id" in this payload.
"forex_quote": {Forex QuoteiCobre field at "content.forex_quote" in this payload.
"type": "static_quote",TypeiResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"currency_pair": "mxn/usd",Currency PairiCobre field at "content.forex_quote.currency_pair" in this payload.
"source_amount": 120000000,Source AmountiCobre field at "content.forex_quote.source_amount" in this payload.
"fees_breakdown": {Fees BreakdowniCobre field at "content.forex_quote.fees_breakdown" in this payload.
"spread": 1.2SpreadiCobre field at "content.forex_quote.fees_breakdown.spread" in this payload.
},
"fx_rate": 40,Fx RateiCobre field at "content.forex_quote.fx_rate" in this payload.
"destination_amount": 30000,Destination AmountiCobre field at "content.forex_quote.destination_amount" in this payload.
"quota_limit": 1000000000,Quota LimitiCobre field at "content.forex_quote.quota_limit" in this payload.
"remaining_quota": 999625000,Remaining QuotaiCobre field at "content.forex_quote.remaining_quota" in this payload.
"created_at": "2026-07-06T14:00:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"valid_until": "2026-07-06T14:01:00Z",Valid UntiliCobre field at "content.forex_quote.valid_until" in this payload.
"last_quote": true,Last QuoteiCobre field at "content.forex_quote.last_quote" in this payload.
"off_market": falseOff MarketiCobre field at "content.forex_quote.off_market" in this payload.
},
"geo": "mex/usa",GeoiGeography code (e.g. col = Colombia, mex = Mexico).
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"destination_description": "Merchant CN01 treasury FX"Destination DescriptioniMetadata field "destination_description" attached to the resource.
},
"created_at": "2026-07-06T14:01:10Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"updated_at": "2026-07-06T14:01:45Z"Updated AtiTimestamp of the last update (ISO 8601, UTC).
}
}

Cobre or the rail could not process the movement. Inspect status.code and status.description. The list below is filtered to this Money Movement’s direction (payin, payout, or both):

Possible status codes
CodeDescriptionApplies to
F001Payment processing failed please try again.Payin and payout
F002NSF - Not Sufficient Funds in the designated account.Payin and payout
F003R2P Payment link expired.Payin
F004Daily transaction amount limit has been reached.Payin and payout
F005Amount exceeds the maximum allowed transaction limit.Payin and payout
F098Could not process the money movement at this time.Payin and payout
F099Could not process the money movement at this time.Payin and payout
Event cross_border_money_movements.status.failed
Headers
Content-Typeapplication/json
Example payload
{
"id": "ev_CbmmPspMx001Cmp",IdiUnique Cobre identifier for this resource.
"event_key": "cross_border_money_movements.status.failed",Event KeyiWebhook subscription key (e.g. money_movements.status.completed).
"created_at": "2026-07-06T14:01:45Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"content": {ContentiEvent-specific payload — same layout as the GET response for that resource.
"id": "mm_CbmmPspMx001",IdiUnique Cobre identifier for this resource.
"creator": "cli_psp_cn_mx01",CreatoriActor that created the resource. On a Checkout-created Money Movement this is the r2p source counterparty (cp_…), not the API user.
"type": "cross_border",TypeiResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"external_id": "psp_fx_merchant001",External IdiYour own reference echoed by Cobre for reconciliation.
"status": {StatusiLifecycle status object for the resource or movement.
"state": "failed",StateiCurrent lifecycle state (e.g. completed, failed, rejected).
"code": "F002",CodeiProvider or Cobre status code when the state is failed or rejected.
"description": "NSF - Not Sufficient Funds in the designated account."DescriptioniHuman-readable label or note.
},
"source_id": "acc_PspMxnPayout",Source IdiCobre id of the source account or counterparty.
"destination_id": "acc_PspUsdGlobalMx",Destination IdiCobre id of the destination account or counterparty.
"forex_quote_id": "fxq_PspMx001",Forex Quote IdiCobre field at "content.forex_quote_id" in this payload.
"forex_quote": {Forex QuoteiCobre field at "content.forex_quote" in this payload.
"type": "static_quote",TypeiResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"currency_pair": "mxn/usd",Currency PairiCobre field at "content.forex_quote.currency_pair" in this payload.
"source_amount": 120000000,Source AmountiCobre field at "content.forex_quote.source_amount" in this payload.
"fees_breakdown": {Fees BreakdowniCobre field at "content.forex_quote.fees_breakdown" in this payload.
"spread": 1.2SpreadiCobre field at "content.forex_quote.fees_breakdown.spread" in this payload.
},
"fx_rate": 40,Fx RateiCobre field at "content.forex_quote.fx_rate" in this payload.
"destination_amount": 30000,Destination AmountiCobre field at "content.forex_quote.destination_amount" in this payload.
"quota_limit": 1000000000,Quota LimitiCobre field at "content.forex_quote.quota_limit" in this payload.
"remaining_quota": 999625000,Remaining QuotaiCobre field at "content.forex_quote.remaining_quota" in this payload.
"created_at": "2026-07-06T14:00:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"valid_until": "2026-07-06T14:01:00Z",Valid UntiliCobre field at "content.forex_quote.valid_until" in this payload.
"last_quote": true,Last QuoteiCobre field at "content.forex_quote.last_quote" in this payload.
"off_market": falseOff MarketiCobre field at "content.forex_quote.off_market" in this payload.
},
"geo": "mex/usa",GeoiGeography code (e.g. col = Colombia, mex = Mexico).
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"destination_description": "Merchant CN01 treasury FX"Destination DescriptioniMetadata field "destination_description" attached to the resource.
},
"created_at": "2026-07-06T14:01:10Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"updated_at": "2026-07-06T14:01:45Z"Updated AtiTimestamp of the last update (ISO 8601, UTC).
}
}

The bank or payment network rejected the transaction. Inspect status.code. The list below is filtered to this Money Movement’s direction (payin, payout, or both):

Possible status codes
CodeDescriptionApplies to
R000Transaction rejected.Payin and payout
R001Inactive or blocked account.Payin and payout
R002Account and identification provided do not coincide.Payin and payout
R004ID not valid.Payout
R005Account does not exist.Payin and payout
R006Invalid account number.Payin and payout
R009Exceeds maximum allowed amount.Payin and payout
R010Account not authorized to debit.Payin and payout
R011Invalid Account type.Payout
R012The user has abandoned the transaction.Payin
R015Account not authorized to be credited.Payout
R016Payment rejected due to timeout.Payin
R017Payment rejected due to expired money movement.Payin
R018Payment rejected due invalid key.Payout
R019Payment rejected due to incorrect amount.Payin
R020Payment rejected due to user authentication failure.Payin
R021Insufficient funds in payer account.Payin
R023Payment cancelled by the user.Payin and payout
R024Exceeds maximum allowed number of transactions.Payout
R025Required information missing.Payout
R026Payment rejected due to unavailable bank services.Payin and payout
R027Account exceeds the maximum allowed transaction limit.Payin and payout
R034Account closed.Payin and payout
R081The counterparty registration has expired.Payin
R082The counterparty registration has been canceled.Payin
R084The counterparty registration has been rejected.Payin
R085Bank processing error.Payout
Event cross_border_money_movements.status.rejected
Headers
Content-Typeapplication/json
Example payload
{
"id": "ev_CbmmPspMx001Cmp",IdiUnique Cobre identifier for this resource.
"event_key": "cross_border_money_movements.status.rejected",Event KeyiWebhook subscription key (e.g. money_movements.status.completed).
"created_at": "2026-07-06T14:01:45Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"content": {ContentiEvent-specific payload — same layout as the GET response for that resource.
"id": "mm_CbmmPspMx001",IdiUnique Cobre identifier for this resource.
"creator": "cli_psp_cn_mx01",CreatoriActor that created the resource. On a Checkout-created Money Movement this is the r2p source counterparty (cp_…), not the API user.
"type": "cross_border",TypeiResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"external_id": "psp_fx_merchant001",External IdiYour own reference echoed by Cobre for reconciliation.
"status": {StatusiLifecycle status object for the resource or movement.
"state": "rejected",StateiCurrent lifecycle state (e.g. completed, failed, rejected).
"code": "R001",CodeiProvider or Cobre status code when the state is failed or rejected.
"description": "Inactive or blocked account."DescriptioniHuman-readable label or note.
},
"source_id": "acc_PspMxnPayout",Source IdiCobre id of the source account or counterparty.
"destination_id": "acc_PspUsdGlobalMx",Destination IdiCobre id of the destination account or counterparty.
"forex_quote_id": "fxq_PspMx001",Forex Quote IdiCobre field at "content.forex_quote_id" in this payload.
"forex_quote": {Forex QuoteiCobre field at "content.forex_quote" in this payload.
"type": "static_quote",TypeiResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"currency_pair": "mxn/usd",Currency PairiCobre field at "content.forex_quote.currency_pair" in this payload.
"source_amount": 120000000,Source AmountiCobre field at "content.forex_quote.source_amount" in this payload.
"fees_breakdown": {Fees BreakdowniCobre field at "content.forex_quote.fees_breakdown" in this payload.
"spread": 1.2SpreadiCobre field at "content.forex_quote.fees_breakdown.spread" in this payload.
},
"fx_rate": 40,Fx RateiCobre field at "content.forex_quote.fx_rate" in this payload.
"destination_amount": 30000,Destination AmountiCobre field at "content.forex_quote.destination_amount" in this payload.
"quota_limit": 1000000000,Quota LimitiCobre field at "content.forex_quote.quota_limit" in this payload.
"remaining_quota": 999625000,Remaining QuotaiCobre field at "content.forex_quote.remaining_quota" in this payload.
"created_at": "2026-07-06T14:00:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"valid_until": "2026-07-06T14:01:00Z",Valid UntiliCobre field at "content.forex_quote.valid_until" in this payload.
"last_quote": true,Last QuoteiCobre field at "content.forex_quote.last_quote" in this payload.
"off_market": falseOff MarketiCobre field at "content.forex_quote.off_market" in this payload.
},
"geo": "mex/usa",GeoiGeography code (e.g. col = Colombia, mex = Mexico).
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"destination_description": "Merchant CN01 treasury FX"Destination DescriptioniMetadata field "destination_description" attached to the resource.
},
"created_at": "2026-07-06T14:01:10Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"updated_at": "2026-07-06T14:01:45Z"Updated AtiTimestamp of the last update (ISO 8601, UTC).
}
}
Step 16 of 19 Cross-Border FX Reconciliation

Reconcile Cross-Border FX

Match the Cross-Border completion webhook to your treasury ledger on external_id psp_fx_merchant001. Cross-check MXN debit on acc_PspMxnPayout and USD credit on acc_PspUsdGlobalMx.

Mapping the webhook payload from an earlier step onto Treasury ledger. No API call is made — this step closes the loop in your own system.

Cobre field & valueTreasury ledger field
content.external_id
psp_fx_merchant001
fx_external_id
content.id
mm_CbmmPspMx001
cobre_cbmm_id
content.forex_quote_id
fxq_PspMx001
fxq_id
content.forex_quote.source_amount
120000000
mxn_debited_cents
MXN source amount debited from acc_PspMxnPayout (120000000 = $1,200,000.00 MXN).
content.forex_quote.destination_amount
30000
usd_credited_cents
USD credited to acc_PspUsdGlobalMx (30000 = $300.00 USD).
content.status.state
completed
fx_status
Step 17 of 19 End-of-Day / D+1 Reconciliation API step

Daily Balance History (Summarized)

On D+1 (available ~5 hours after midnight), retrieve summarized opening balance, total credits/debits, and end-of-day balance for acc_PspMxnPayout. Use balance_date to scope a single business day.

GET https://api.cobre.co/v1/accounts/acc_PspMxnPayoutPayout balanceRequirediPath parameter — Cobre Balance to pull daily balance history for./daily_balance_history?balance_date=2026-07-09Balance dateiBusiness day to reconcile (YYYY-MM-DD). Daily balance objects are generated per calendar day.
Headers
AuthorizationBearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGlfcHNwX25fbXgwMSJ9.MxPsp9xK2vN7cL4wT8aH1gF6yJ0bZ5eQ
Response 200
{
"total_items": 1,Total ItemsiTotal items matching the query across all pages.
"total_pages": 1,Total PagesiNumber of pages in this result set.
"is_last_page": true,Is Last PageiTrue when this is the final page of results.
"page_items": 1,Page ItemsiNumber of items returned on this page.
"Daily Balance history List": [Daily Balance history ListiCobre field at "Daily Balance history List" in this payload.
{
"id": "dbh_PspMxEod01",IdiUnique Cobre identifier for this resource.
"offset": "-06:00",OffsetiCobre field at "Daily Balance history List.0.offset" in this payload.
"balance_date": "2026-07-09",Balance DateiCobre field at "Daily Balance history List.0.balance_date" in this payload.
"initial_balance": "850000000",Initial BalanceiCobre field at "Daily Balance history List.0.initial_balance" in this payload.
"total_credits": "50000000",Total CreditsiCobre field at "Daily Balance history List.0.total_credits" in this payload.
"total_debits": "320000000",Total DebitsiCobre field at "Daily Balance history List.0.total_debits" in this payload.
"end_balance": "580000000",End BalanceiCobre field at "Daily Balance history List.0.end_balance" in this payload.
"created_at": "2026-07-10T10:00:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"updated_at": "2026-07-10T10:00:00Z"Updated AtiTimestamp of the last update (ISO 8601, UTC).
}
]
}
Documentation for this step
Obtain Account Daily Balance History
Step 18 of 19 End-of-Day / D+1 Reconciliation API step

Obtain All Transactions

Pull every transaction across all Cobre Balances for the business day — useful when reconciling platform-wide activity or catching events missed by webhooks.

GET https://api.cobre.co/v1/transactions?date=2026-07-09Transaction dateiFilter by transaction_date (YYYY-MM-DD).
Headers
AuthorizationBearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGlfcHNwX25fbXgwMSJ9.MxPsp9xK2vN7cL4wT8aH1gF6yJ0bZ5eQ
Response 200
{
"total_items": 2,Total ItemsiTotal items matching the query across all pages.
"total_pages": 1,Total PagesiNumber of pages in this result set.
"is_last_page": true,Is Last PageiTrue when this is the final page of results.
"page_items": 2,Page ItemsiNumber of items returned on this page.
"contents": [ContentsiArray of result objects for this page.
{
"id": "trx_EodMxCr01",IdiUnique Cobre identifier for this resource.
"type": "spei_credit",TypeiResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"account_id": "acc_PspMxnPayin",Account IdiCobre Balance account id affected by the event.
"amount": 50000000,AmountiAmount in cents — the last two digits are decimals.
"previous_balance": 100000000,Previous BalanceiCobre field at "contents.0.previous_balance" in this payload.
"current_balance": 150000000,Current BalanceiCobre field at "contents.0.current_balance" in this payload.
"currency": "mxn",CurrencyiISO currency code (e.g. cop, mxn).
"credit_debit_type": "credit",Credit Debit Typeicredit = funds in; debit = funds out.
"transaction_date": "2026-07-09T13:10:00Z",Transaction DateiTimestamp when the transaction was posted (ISO 8601, UTC).
"created_at": "2026-07-09T13:10:01Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"description": "Inbound merchant collection"DescriptioniHuman-readable label or note.
}
},
{
"id": "trx_EodMxDb01",IdiUnique Cobre identifier for this resource.
"type": "spei_debit",TypeiResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"account_id": "acc_PspMxnPayout",Account IdiCobre Balance account id affected by the event.
"amount": -120000000,AmountiAmount in cents — the last two digits are decimals.
"previous_balance": 700000000,Previous BalanceiCobre field at "contents.1.previous_balance" in this payload.
"current_balance": 580000000,Current BalanceiCobre field at "contents.1.current_balance" in this payload.
"currency": "mxn",CurrencyiISO currency code (e.g. cop, mxn).
"credit_debit_type": "debit",Credit Debit Typeicredit = funds in; debit = funds out.
"transaction_date": "2026-07-09T16:45:00Z",Transaction DateiTimestamp when the transaction was posted (ISO 8601, UTC).
"created_at": "2026-07-09T16:45:01Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"money_movement_id": "mm_CbmmPspMx001"Money Movement IdiMoney Movement that generated this balance transaction.
}
}
]
}
Documentation for this step
Obtain all TransactionsTransaction Types
Step 19 of 19 End-of-Day / D+1 Reconciliation API step

Obtain One Account Transactions

Drill into line-level credits and debits on acc_PspMxnPayout for the same business day — cross-check against daily balance totals and webhook-driven reconciliation.

GET https://api.cobre.co/v1/accounts/acc_PspMxnPayoutPayout balanceRequirediPath parameter — Cobre Balance whose transactions to list./transactions?date=2026-07-09Transaction dateiFilter by transaction_date (YYYY-MM-DD).
Headers
AuthorizationBearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGlfcHNwX25fbXgwMSJ9.MxPsp9xK2vN7cL4wT8aH1gF6yJ0bZ5eQ
Response 200
{
"total_items": 2,Total ItemsiTotal items matching the query across all pages.
"total_pages": 1,Total PagesiNumber of pages in this result set.
"is_last_page": true,Is Last PageiTrue when this is the final page of results.
"page_items": 2,Page ItemsiNumber of items returned on this page.
"contents": [ContentsiArray of result objects for this page.
{
"id": "trx_EodMxInt01",IdiUnique Cobre identifier for this resource.
"type": "internal_credit",TypeiResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"account_id": "acc_PspMxnPayout",Account IdiCobre Balance account id affected by the event.
"amount": 50000000,AmountiAmount in cents — the last two digits are decimals.
"previous_balance": 530000000,Previous BalanceiCobre field at "contents.0.previous_balance" in this payload.
"current_balance": 580000000,Current BalanceiCobre field at "contents.0.current_balance" in this payload.
"currency": "mxn",CurrencyiISO currency code (e.g. cop, mxn).
"credit_debit_type": "credit",Credit Debit Typeicredit = funds in; debit = funds out.
"transaction_date": "2026-07-09T14:00:00Z",Transaction DateiTimestamp when the transaction was posted (ISO 8601, UTC).
"created_at": "2026-07-09T14:00:01Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"description": "Linkage auto-sweep from Payin"DescriptioniHuman-readable label or note.
}
},
{
"id": "trx_EodMxDb01",IdiUnique Cobre identifier for this resource.
"type": "spei_debit",TypeiResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"account_id": "acc_PspMxnPayout",Account IdiCobre Balance account id affected by the event.
"amount": -120000000,AmountiAmount in cents — the last two digits are decimals.
"previous_balance": 700000000,Previous BalanceiCobre field at "contents.1.previous_balance" in this payload.
"current_balance": 580000000,Current BalanceiCobre field at "contents.1.current_balance" in this payload.
"currency": "mxn",CurrencyiISO currency code (e.g. cop, mxn).
"credit_debit_type": "debit",Credit Debit Typeicredit = funds in; debit = funds out.
"transaction_date": "2026-07-09T16:45:00Z",Transaction DateiTimestamp when the transaction was posted (ISO 8601, UTC).
"created_at": "2026-07-09T16:45:01Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"money_movement_id": "mm_CbmmPspMx001"Money Movement IdiMoney Movement that generated this balance transaction.
}
}
]
}
Documentation for this step
Obtain one Account Transactions