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 IDiAPI client user id used to obtain the access token.
"secret": "sk_live_PspMx9xK2v"SecretiAPI 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 URLiHTTPS 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.failed",
"cross_border_money_movements.status.rejected"
],
"event_signature_key": "WHsig_PspMx01"Signature KeyiSecret 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 URLiHTTPS 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.failed",
"cross_border_money_movements.status.rejected"
],
"event_signature_key": "******Cn01",Signature KeyiSecret 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",ProvideriCobre field at "provider_id" in this payload.
"action": "create",ActioniCobre 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",ProvideriCobre 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",ProvideriCobre field at "provider_id" in this payload.
"action": "create",ActioniCobre 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 accountiPayout 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",ProvideriCobre 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 accountiPayout 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",ProvideriCobre field at "provider_id" in this payload.
"action": "create",ActioniCobre field at "action" in this payload.
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"currency": "usd"CurrencyiISO 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",ProvideriCobre 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"CurrencyiISO 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",CurrencyiISO 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 BalanceiCobre id of the source account or counterparty.
"type": "virtual_clabe_accounts",Reference typeiResource 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 typeiResource 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 BalanceiCobre 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 BalanceiPath 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 KeyiBre-B tracking key for the payment.
"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 KeyiBre-B tracking key for the payment.
"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)iAmount in cents — the last two digits are decimals.
"source_id": "acc_PspMxnPayin",MXN Payin balanceiCobre id of the source account or counterparty.
"destination_id": "acc_PspMxnPayout",MXN Payout balanceiCobre id of the destination account or counterparty.
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"description": "Manual Payin to Payout transfer"DescriptioniHuman-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"DescriptioniHuman-readable label or note.
},
"creator": "cli_psp_cn_mx01",CreatoriAPI client id that created this resource.
"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 balanceiCobre id of the source account or counterparty.
"destination_id": "acc_PspMxnPayout",MXN Payout balanceiCobre id of the destination account or counterparty.
"currency": "mxn",CurrencyiISO currency code (e.g. cop, mxn).
"amount": 150000000,Amount (MXN cents)iAmount 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",CreatoriAPI client id that created this resource.
"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 — common failed codes include:

Possible status codes
F001Payment processing failed — please try again.
F002NSF — not sufficient funds in the designated account.
F003R2P payment link expired (payins).
F004Daily transaction amount limit has been reached.
F005Amount exceeds the maximum allowed transaction limit.
F098Could not process the money movement at this time.
F099Could not process the money movement at this time.
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",CreatoriAPI client id that created this resource.
"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 — common rejected codes include:

Possible status codes
R000Transaction rejected.
R001Inactive or blocked account.
R002Account and identification provided do not coincide.
R005Account does not exist.
R006Invalid account number.
R009Exceeds maximum allowed amount.
R018Payment rejected due to invalid key (payouts).
R023Payment cancelled by the user.
R026Payment rejected due to unavailable bank services.
R034Account closed.
R085Bank processing error (payouts).
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": "R001",CodeiProvider or Cobre status code when the state is failed or rejected.
"description": "Inactive or blocked 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",CreatoriAPI client id that created this resource.
"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",GeoiGeography code (e.g. col = Colombia, mex = Mexico).
"type": "clabe",TypeiResource 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 nameiLegal or display name of the counterparty beneficiary.
"account_number": "012180009876543210",CLABEiBank account or CLABE number for the counterparty.
"counterparty_id_type": "rfc",ID typeiType of identification document for the counterparty (e.g. nit, cc, rfc).
"counterparty_id_number": "PRO990101ABC"RFCiIdentification number for the counterparty.
}
}
Response 201
{
"id": "cp_MxVendor01",IdiUnique Cobre identifier for this resource.
"geo": "mex",GeoiGeography code (e.g. col = Colombia, mex = Mexico).
"type": "clabe",TypeiResource 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 nameiLegal or display name of the counterparty beneficiary.
"account_number": "012180009876543210",CLABEiBank account or CLABE number for the counterparty.
"counterparty_id_type": "rfc",ID typeiType of identification document for the counterparty (e.g. nit, cc, rfc).
"counterparty_id_number": "PRO990101ABC",RFCiIdentification 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)iAmount in cents — the last two digits are decimals.
"source_id": "acc_PspMxnPayout",MXN Payout balanceiCobre id of the source account or counterparty.
"destination_id": "cp_MxVendor01",BeneficiaryiCobre id of the destination account or counterparty.
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"description": "Local vendor payout",DescriptioniHuman-readable label or note.
"reference": "7654321"SPEI referenceiPayment 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",DescriptioniHuman-readable label or note.
"reference": "7654321"SPEI referenceiPayment reference echoed in metadata for reconciliation.
},
"creator": "cli_psp_cn_mx01",CreatoriAPI client id that created this resource.
"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 balanceiCobre id of the source account or counterparty.
"destination_id": "cp_MxVendor01",BeneficiaryiCobre id of the destination account or counterparty.
"currency": "mxn",CurrencyiISO currency code (e.g. cop, mxn).
"amount": 30000000,Amount (MXN cents)iAmount 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",CreatoriAPI client id that created this resource.
"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 — common failed codes include:

Possible status codes
F001Payment processing failed — please try again.
F002NSF — not sufficient funds in the designated account.
F003R2P payment link expired (payins).
F004Daily transaction amount limit has been reached.
F005Amount exceeds the maximum allowed transaction limit.
F098Could not process the money movement at this time.
F099Could not process the money movement at this time.
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",CreatoriAPI client id that created this resource.
"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 — common rejected codes include:

Possible status codes
R000Transaction rejected.
R001Inactive or blocked account.
R002Account and identification provided do not coincide.
R005Account does not exist.
R006Invalid account number.
R009Exceeds maximum allowed amount.
R018Payment rejected due to invalid key (payouts).
R023Payment cancelled by the user.
R026Payment rejected due to unavailable bank services.
R034Account closed.
R085Bank processing error (payouts).
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": "R001",CodeiProvider or Cobre status code when the state is failed or rejected.
"description": "Inactive or blocked 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",CreatoriAPI client id that created this resource.
"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 pairiCobre field at "currency_pair" in this payload.
"source_amount": 120000000,Source amount (MXN cents)iCobre field at "source_amount" in this payload.
"type": "static_quote"Quote typeiResource 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 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 "currency_pair" in this payload.
"source_amount": 120000000,Source amount (MXN cents)iCobre 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 balanceiCobre id of the source account or counterparty.
"destination_id": "acc_PspUsdGlobalMx",USD GlobaliCobre id of the destination account or counterparty.
"forex_quote_id": "fxq_PspMx001",FX Quote IDiCobre 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.
"currency": "mxn/usd"CurrencyiISO currency code (e.g. cop, mxn).
}
Response 201
{
"id": "mm_CbmmPspMx001",IdiUnique Cobre identifier for this resource.
"creator": "cli_psp_cn_mx01",CreatoriAPI client id that created 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.
"destination_description": "Merchant CN01 treasury FX",DescriptioniCobre field at "metadata.destination_description" in this payload.
"forex_quote_id": "fxq_PspMx001",Forex Quote IdiCobre field at "metadata.forex_quote_id" in this payload.
"forex_quote": {Forex QuoteiCobre field at "metadata.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 "metadata.forex_quote.currency_pair" in this payload.
"source_amount": 120000000,Source AmountiCobre field at "metadata.forex_quote.source_amount" in this payload.
"fees_breakdown": {Fees BreakdowniCobre field at "metadata.forex_quote.fees_breakdown" in this payload.
"spread": 1.2SpreadiCobre field at "metadata.forex_quote.fees_breakdown.spread" in this payload.
},
"fx_rate": 40,Fx RateiCobre field at "metadata.forex_quote.fx_rate" in this payload.
"destination_amount": 30000,Destination AmountiCobre field at "metadata.forex_quote.destination_amount" in this payload.
"quota_limit": 1000000000,Quota LimitiCobre field at "metadata.forex_quote.quota_limit" in this payload.
"remaining_quota": 999625000,Remaining QuotaiCobre field at "metadata.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 "metadata.forex_quote.valid_until" in this payload.
"last_quote": true,Last QuoteiCobre field at "metadata.forex_quote.last_quote" in this payload.
"off_market": falseOff MarketiCobre field at "metadata.forex_quote.off_market" in this payload.
}
},
"external_id": "psp_fx_merchant001",External IDiYour own reference echoed by Cobre for reconciliation.
"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).
"source_id": "acc_PspMxnPayout",MXN Payout balanceiCobre id of the source account or counterparty.
"destination_id": "acc_PspUsdGlobalMx",USD GlobaliCobre id of the destination account or counterparty.
"currency": "mxn/usd",CurrencyiISO currency code (e.g. cop, mxn).
"amount": 120000000,AmountiAmount in cents — the last two digits are decimals.
"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",CreatoriAPI client id that created 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.
"destination_description": "Merchant CN01 treasury FX",Destination DescriptioniMetadata field "destination_description" attached to the resource.
"forex_quote_id": "fxq_PspMx001",Forex Quote IdiMetadata field "forex_quote_id" attached to the resource.
"forex_quote": {Forex QuoteiMetadata field "forex_quote" attached to the resource.
"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 PairiMetadata field "forex_quote.currency_pair" attached to the resource.
"source_amount": 120000000,Source AmountiMetadata field "forex_quote.source_amount" attached to the resource.
"fees_breakdown": {Fees BreakdowniMetadata field "forex_quote.fees_breakdown" attached to the resource.
"spread": 1.2SpreadiMetadata field "forex_quote.fees_breakdown.spread" attached to the resource.
},
"fx_rate": 40,Fx RateiMetadata field "forex_quote.fx_rate" attached to the resource.
"destination_amount": 30000,Destination AmountiMetadata field "forex_quote.destination_amount" attached to the resource.
"quota_limit": 1000000000,Quota LimitiMetadata field "forex_quote.quota_limit" attached to the resource.
"remaining_quota": 999625000,Remaining QuotaiMetadata field "forex_quote.remaining_quota" attached to the resource.
"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 UntiliMetadata field "forex_quote.valid_until" attached to the resource.
"last_quote": true,Last QuoteiMetadata field "forex_quote.last_quote" attached to the resource.
"off_market": falseOff MarketiMetadata field "forex_quote.off_market" attached to the resource.
}
},
"external_id": "psp_fx_merchant001",External IdiYour own reference echoed by Cobre for reconciliation.
"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).
"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.
"currency": "mxn/usd",CurrencyiISO currency code (e.g. cop, mxn).
"amount": 120000000,AmountiAmount in cents — the last two digits are decimals.
"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 — common failed codes include:

Possible status codes
F001Payment processing failed — please try again.
F002NSF — not sufficient funds in the designated account.
F003R2P payment link expired (payins).
F004Daily transaction amount limit has been reached.
F005Amount exceeds the maximum allowed transaction limit.
F098Could not process the money movement at this time.
F099Could not process the money movement at this time.
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",CreatoriAPI client id that created 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.
"destination_description": "Merchant CN01 treasury FX",Destination DescriptioniMetadata field "destination_description" attached to the resource.
"forex_quote_id": "fxq_PspMx001",Forex Quote IdiMetadata field "forex_quote_id" attached to the resource.
"forex_quote": {Forex QuoteiMetadata field "forex_quote" attached to the resource.
"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 PairiMetadata field "forex_quote.currency_pair" attached to the resource.
"source_amount": 120000000,Source AmountiMetadata field "forex_quote.source_amount" attached to the resource.
"fees_breakdown": {Fees BreakdowniMetadata field "forex_quote.fees_breakdown" attached to the resource.
"spread": 1.2SpreadiMetadata field "forex_quote.fees_breakdown.spread" attached to the resource.
},
"fx_rate": 40,Fx RateiMetadata field "forex_quote.fx_rate" attached to the resource.
"destination_amount": 30000,Destination AmountiMetadata field "forex_quote.destination_amount" attached to the resource.
"quota_limit": 1000000000,Quota LimitiMetadata field "forex_quote.quota_limit" attached to the resource.
"remaining_quota": 999625000,Remaining QuotaiMetadata field "forex_quote.remaining_quota" attached to the resource.
"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 UntiliMetadata field "forex_quote.valid_until" attached to the resource.
"last_quote": true,Last QuoteiMetadata field "forex_quote.last_quote" attached to the resource.
"off_market": falseOff MarketiMetadata field "forex_quote.off_market" attached to the resource.
}
},
"external_id": "psp_fx_merchant001",External IdiYour own reference echoed by Cobre for reconciliation.
"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).
"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.
"currency": "mxn/usd",CurrencyiISO currency code (e.g. cop, mxn).
"amount": 120000000,AmountiAmount in cents — the last two digits are decimals.
"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 — common rejected codes include:

Possible status codes
R000Transaction rejected.
R001Inactive or blocked account.
R002Account and identification provided do not coincide.
R005Account does not exist.
R006Invalid account number.
R009Exceeds maximum allowed amount.
R018Payment rejected due to invalid key (payouts).
R023Payment cancelled by the user.
R026Payment rejected due to unavailable bank services.
R034Account closed.
R085Bank processing error (payouts).
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",CreatoriAPI client id that created this resource.
"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.
},
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"destination_description": "Merchant CN01 treasury FX",Destination DescriptioniMetadata field "destination_description" attached to the resource.
"forex_quote_id": "fxq_PspMx001",Forex Quote IdiMetadata field "forex_quote_id" attached to the resource.
"forex_quote": {Forex QuoteiMetadata field "forex_quote" attached to the resource.
"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 PairiMetadata field "forex_quote.currency_pair" attached to the resource.
"source_amount": 120000000,Source AmountiMetadata field "forex_quote.source_amount" attached to the resource.
"fees_breakdown": {Fees BreakdowniMetadata field "forex_quote.fees_breakdown" attached to the resource.
"spread": 1.2SpreadiMetadata field "forex_quote.fees_breakdown.spread" attached to the resource.
},
"fx_rate": 40,Fx RateiMetadata field "forex_quote.fx_rate" attached to the resource.
"destination_amount": 30000,Destination AmountiMetadata field "forex_quote.destination_amount" attached to the resource.
"quota_limit": 1000000000,Quota LimitiMetadata field "forex_quote.quota_limit" attached to the resource.
"remaining_quota": 999625000,Remaining QuotaiMetadata field "forex_quote.remaining_quota" attached to the resource.
"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 UntiliMetadata field "forex_quote.valid_until" attached to the resource.
"last_quote": true,Last QuoteiMetadata field "forex_quote.last_quote" attached to the resource.
"off_market": falseOff MarketiMetadata field "forex_quote.off_market" attached to the resource.
}
},
"external_id": "psp_fx_merchant001",External IdiYour own reference echoed by Cobre for reconciliation.
"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).
"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.
"currency": "mxn/usd",CurrencyiISO currency code (e.g. cop, mxn).
"amount": 120000000,AmountiAmount in cents — the last two digits are decimals.
"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.metadata.forex_quote_id
fxq_PspMx001
fxq_id
content.amount
120000000
mxn_debited_cents
MXN source amount debited from acc_PspMxnPayout (120000000 = $1,200,000.00 MXN).
content.metadata.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 balanceiPath 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 balanceiPath 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