Step 1 of 19 Configuration API step

Authenticate

Exchange API credentials for a short-lived Bearer token (~20 minutes). Reuse the same token on every later call.

POST https://api.cobre.co/v1/auth
Headers
Content-Typeapplication/json
Request body
{
"user_id": "cli_trust_co01",User IDRequirediAPI user id issued by Cobre (cli_…).
"secret": "sk_live_Trust9pQ2"SecretRequirediAPI secret — treat like a password.
}
Response 201
{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGlfdHJ1c3RfY28wMSJ9.Trust9xK2vN7cL4wT8aH1gF6yJ0bZ5eQ",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 Lifecycle Events

Register webhooks for key registration, balance credits/debits (static-key payins and auto-sweep), and Money Movement status (R2P QR). Verify every delivery with HMAC-SHA256.

POST https://api.cobre.co/v1/subscriptions
Headers
AuthorizationBearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGlfdHJ1c3RfY28wMSJ9.Trust9xK2vN7cL4wT8aH1gF6yJ0bZ5eQ
Content-Typeapplication/json
Request body
{
"url": "https://fiduciary.example.co/webhooks/cobre",Notification URLRequirediHTTPS URL used by this resource (e.g. webhook endpoint).
"description": "Trust encargo lifecycle",DescriptioniHuman-readable label or note.
"events": [EventsiList of webhook event types this subscription listens to.
"cobre_keys.status.registered",
"cobre_keys.status.failed",
"accounts.balance.credit",
"accounts.balance.debit",
"money_movements.status.initiated",
"money_movements.status.processing",
"money_movements.status.completed",
"money_movements.status.failed",
"money_movements.status.rejected"
],
"event_signature_key": "WHtrust9xZ"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_TrustEnc01",IdiUnique Cobre identifier for this resource.
"url": "https://fiduciary.example.co/webhooks/cobre",Notification URLRequirediHTTPS URL used by this resource (e.g. webhook endpoint).
"description": "Trust encargo lifecycle",DescriptioniHuman-readable label or note.
"events": [EventsiList of webhook event types this subscription listens to.
"cobre_keys.status.registered",
"cobre_keys.status.failed",
"accounts.balance.credit",
"accounts.balance.debit",
"money_movements.status.initiated",
"money_movements.status.processing",
"money_movements.status.completed",
"money_movements.status.failed",
"money_movements.status.rejected"
],
"event_signature_key": "******9xZ",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-16T09:00:00Z"Created AtiTimestamp when the resource was created (ISO 8601, UTC).
}
Step 3 of 19 Encargo Onboarding API step

Register Encargo Bank Account

Before creating the encargo Cobre Balance, register the encargo bank account as a counterparty (cp_…). Its id becomes metadata.primary_account — the auto-sweep destination for every credit received on the encargo balance.

POST https://api.cobre.co/v1/counterparties
Headers
AuthorizationBearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGlfdHJ1c3RfY28wMSJ9.Trust9xK2vN7cL4wT8aH1gF6yJ0bZ5eQ
Content-Typeapplication/json
Request body
{
"geo": "col",GeographyRequirediGeography code (e.g. col = Colombia, mex = Mexico).
"type": "ch",Account typeRequirediResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"alias": "Encargo 00123 - Banco destino",AliasiDisplay name that helps identify it and clarify its purpose.
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"counterparty_fullname": "Encargo Fiduciario 00123",Account holderRequirediLegal or display name of the counterparty beneficiary.
"beneficiary_institution": "1007",Bank codeRequirediBank or institution code for the destination account.
"account_number": "91234567890",Account numberRequirediBank account or CLABE number for the counterparty.
"counterparty_id_type": "nit",ID typeRequirediType of identification document for the counterparty (e.g. nit, cc, rfc).
"counterparty_id_number": "9001234567"ID numberRequirediIdentification number for the counterparty.
}
}
Response 201
{
"id": "cp_Encargo00123Bank",IdiUnique Cobre identifier for this resource.
"geo": "col",GeographyRequirediGeography code (e.g. col = Colombia, mex = Mexico).
"type": "ch",Account typeRequirediResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"alias": "Encargo 00123 - Banco destino",AliasiDisplay name that helps identify it and clarify its purpose.
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"counterparty_fullname": "Encargo Fiduciario 00123",Account holderRequirediLegal or display name of the counterparty beneficiary.
"beneficiary_institution": "1007",Bank codeRequirediBank or institution code for the destination account.
"account_number": "91234567890",Account numberRequirediBank account or CLABE number for the counterparty.
"counterparty_id_type": "nit",ID typeRequirediType of identification document for the counterparty (e.g. nit, cc, rfc).
"counterparty_id_number": "9001234567"ID numberRequirediIdentification number for the counterparty.
},
"created_at": "2026-07-16T09:05:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"updated_at": "2026-07-16T09:05:00Z"Updated AtiTimestamp of the last update (ISO 8601, UTC).
}
Step 4 of 19 Encargo Onboarding API step

Create Encargo Cobre Balance

When a new encargo fiduciario is created, open a dedicated COP Cobre Balance (pr_col_cobre) and set metadata.primary_account to the encargo bank counterparty — auto-sweep is active from day one. Store the returned acc_… id — it is critical for all later fund operations.

POST https://api.cobre.co/v1/accounts
Headers
AuthorizationBearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGlfdHJ1c3RfY28wMSJ9.Trust9xK2vN7cL4wT8aH1gF6yJ0bZ5eQ
Content-Typeapplication/json
Request body
{
"provider_id": "pr_col_cobre",ProviderRequirediCobre field at "provider_id" in this payload.
"action": "create",ActionRequirediCobre field at "action" in this payload.
"tags": [TagsiCobre field at "tags" in this payload.
"encargo_fiduciario"
],
"alias": "Encargo 00123",AliasiDisplay name that helps identify it and clarify its purpose.
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"primary_account": "cp_Encargo00123Bank"Primary accountRequirediEncargo bank counterparty — every credit auto-sweeps here.
}
}
Response 201
{
"id": "acc_Encargo00123",IdiUnique Cobre identifier for this resource.
"provider_id": "pr_col_cobre",ProviderRequirediCobre field at "provider_id" in this payload.
"provider_name": "Cobre Balance Colombia",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": "Encargo 00123",AliasiDisplay name that helps identify it and clarify its purpose.
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"cobre_tag": "@fidencargo00123",Cobre TagiCobre Balance tag identifying the destination account.
"available_services": [Available ServicesiCobre field at "metadata.available_services" in this payload.
"account_balance",
"mm_push_from_account",
"account_transactions"
],
"primary_account": "cp_Encargo00123Bank"Primary accountRequirediEncargo bank counterparty — every credit auto-sweeps here.
},
"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": "col",GeoiGeography code (e.g. col = Colombia, mex = Mexico).
"tags": [TagsiCobre field at "tags" in this payload.
"encargo_fiduciario"
],
"currency": "cop",CurrencyiISO currency code (e.g. cop, mxn).
"created_at": "2026-07-16T09:06:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"updated_at": "2026-07-16T09:06:00Z"Updated AtiTimestamp of the last update (ISO 8601, UTC).
}
Step 5 of 19 Encargo Onboarding API step

Create Static Bre-B Key

Register the encargo static Bre-B key on the Cobre Balance — the primary payin channel. Creation is asynchronous: do not share the key with payers until cobre_keys.status.registered arrives. The holder object is optional for this use case.

POST https://api.cobre.co/v1/accounts/acc_Encargo00123Encargo balanceRequiredi/keys
Headers
AuthorizationBearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGlfdHJ1c3RfY28wMSJ9.Trust9xK2vN7cL4wT8aH1gF6yJ0bZ5eQ
Content-Typeapplication/json
Request body
{
"alias": "Llave encargo 00123",Key aliasiDisplay name that helps identify it and clarify its purpose.
"key_config": "open_input",Key configRequirediCobre field at "key_config" in this payload.
"open_input": "fidencargo00123"Custom key valueRequirediCobre field at "open_input" in this payload.
}
Response 201
{
"id": "key_Encargo00123",IdiUnique Cobre identifier for this resource.
"key_value": "",Key ValueiBre-B key value (e.g. @merchant123).
"source_id": "acc_Encargo00123",Source IdiCobre id of the source account or counterparty.
"alias": "Llave encargo 00123",Key aliasiDisplay name that helps identify it and clarify its purpose.
"connectivity": {ConnectivityiConnection/registration status for keys or accounts.
"status": "processing",StatusiLifecycle status object for the resource or movement.
"description": ""DescriptioniHuman-readable label or note.
},
"previous_action": {Previous ActioniCobre field at "previous_action" in this payload.
"action_requested": "create",Action RequestediCobre field at "previous_action.action_requested" in this payload.
"action_code": "",Action CodeiCobre field at "previous_action.action_code" in this payload.
"action_description": ""Action DescriptioniCobre field at "previous_action.action_description" in this payload.
},
"created_at": "2026-07-16T09:07:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"updated_at": "2026-07-16T09:07:00Z"Updated AtiTimestamp of the last update (ISO 8601, UTC).
}

Webhook delivered

cobre_keys.status.registered

Bre-B registration completed — store key_value and expose it to payers. Map key_id and acc_Encargo00123 to encargo 00123 in your ledger.

Headers
Content-Typeapplication/json
Payload
{
"id": "ev_KeyEncRegistered",IdiUnique Cobre identifier for this resource.
"event_key": "cobre_keys.status.registered",Event KeyiWebhook subscription key (e.g. money_movements.status.completed).
"created_at": "2026-07-16T09:09:30Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"content": {ContentiEvent-specific payload — same layout as the GET response for that resource.
"id": "key_Encargo00123",IdiUnique Cobre identifier for this resource.
"key_value": "@fidencargo00123",Key ValueiBre-B key value (e.g. @merchant123).
"source_id": "acc_Encargo00123",Source IdiCobre id of the source account or counterparty.
"alias": "Llave encargo 00123",AliasiDisplay name that helps identify it and clarify its purpose.
"connectivity": {ConnectivityiConnection/registration status for keys or accounts.
"status": "registered",StatusiLifecycle status object for the resource or movement.
"description": ""DescriptioniHuman-readable label or note.
},
"previous_action": {Previous ActioniCobre field at "content.previous_action" in this payload.
"action_requested": "create",Action RequestediCobre field at "content.previous_action.action_requested" in this payload.
"action_code": "",Action CodeiCobre field at "content.previous_action.action_code" in this payload.
"action_description": ""Action DescriptioniCobre field at "content.previous_action.action_description" in this payload.
},
"created_at": "2026-07-16T09:07:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"updated_at": "2026-07-16T09:09:30Z"Updated AtiTimestamp of the last update (ISO 8601, UTC).
}
}
Step 6 of 19 Static Key Payin (Model A) API step

Collect via Static Key (Model A)

The payer sends funds from any bank app to @fidencargo00123. Bre-B settles in real time and Cobre credits acc_Encargo00123 with a breb_credit transaction — no Money Movement is created. Reconcile on accounts.balance.credit (primary) and cross-check with GET /accounts/{acct_id}/transactions (fallback).

GET https://api.cobre.co/v1/accounts/acc_Encargo00123Encargo balanceRequiredi/transactions
Headers
AuthorizationBearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGlfdHJ1c3RfY28wMSJ9.Trust9xK2vN7cL4wT8aH1gF6yJ0bZ5eQ
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_EncStatic001",Transaction IDiUnique Cobre identifier for this resource.
"type": "breb_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_Encargo00123",Account IdiCobre Balance account id affected by the event.
"amount": 5000000,Amount (cents)iAmount in cents — the last two digits are decimals.
"previous_balance": 0,Previous BalanceiCobre field at "contents.0.previous_balance" in this payload.
"current_balance": 5000000,Current BalanceiCobre field at "contents.0.current_balance" in this payload.
"currency": "cop",CurrencyiISO currency code (e.g. cop, mxn).
"credit_debit_type": "credit",Credit Debit Typeicredit = funds in; debit = funds out.
"transaction_date": "2026-07-16T10:15:21Z",Transaction DateiTimestamp when the transaction was posted (ISO 8601, UTC).
"created_at": "2026-07-16T10:15:22Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"sender_account_number": "987654321",Sender Account NumberiMetadata field "sender_account_number" attached to the resource.
"sender_account_type": "ch",Sender Account TypeiMetadata field "sender_account_type" attached to the resource.
"sender_bank_code": "1007",Sender Bank CodeiMetadata field "sender_bank_code" attached to the resource.
"sender_id": "1234567890",Sender IdiMetadata field "sender_id" attached to the resource.
"sender_id_type": "cc",Sender Id TypeiMetadata field "sender_id_type" attached to the resource.
"sender_name": "Juan Perez",Sender NameiMetadata field "sender_name" attached to the resource.
"key_value": "@fidencargo00123",Cobre KeyiBre-B key value (e.g. @merchant123).
"description": "Bre-B deposit encargo 00123",DescriptioniHuman-readable label or note.
"mm_external_id": ""Mm External IdiMetadata field "mm_external_id" attached to the resource.
}
}
]
}

Webhook delivered

accounts.balance.credit

Primary reconciliation source for Model A payins. Map account_id to encargo 00123 and trx id to your ledger — no mm_id exists.

Headers
Content-Typeapplication/json
Payload
{
"id": "ev_EncBalCredit",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-16T10:15:22Z",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_EncStatic001",IdiUnique Cobre identifier for this resource.
"type": "breb_credit",TypeiResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"amount": 5000000,AmountiAmount in cents — the last two digits are decimals.
"currency": "cop",CurrencyiISO currency code (e.g. cop, mxn).
"date": "2026-07-16T10:15:21Z",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.
"sender_id_type": "cc",Sender Id TypeiMetadata field "sender_id_type" attached to the resource.
"sender_account_type": "ch",Sender Account TypeiMetadata field "sender_account_type" attached to the resource.
"sender_bank_code": "1007",Sender Bank CodeiMetadata field "sender_bank_code" attached to the resource.
"sender_account_number": "987654321",Sender Account NumberiMetadata field "sender_account_number" attached to the resource.
"description": "Bre-B deposit encargo 00123",DescriptioniHuman-readable label or note.
"sender_name": "Juan Perez",Sender NameiMetadata field "sender_name" attached to the resource.
"mm_external_id": "",Mm External IdiMetadata field "mm_external_id" attached to the resource.
"key_value": "@fidencargo00123",Key ValueiBre-B key value (e.g. @merchant123).
"sender_id": "1234567890"Sender IdiMetadata field "sender_id" attached to the resource.
},
"account_id": "acc_Encargo00123",Account IdiCobre Balance account id affected by the event.
"previous_balance": 0,Previous BalanceiCobre field at "content.previous_balance" in this payload.
"current_balance": 5000000,Current BalanceiCobre field at "content.current_balance" in this payload.
"credit_debit_type": "credit"Credit Debit Typeicredit = funds in; debit = funds out.
}
}
Step 7 of 19 Static Key Payin (Model A) Reconciliation

Reconcile Static-Key Payin

Model A has no Money Movement — reconcile transaction-level on trx id and account_id. Cross-check webhook against GET /accounts/{acct_id}/transactions.

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

Cobre field & valueEncargo ledger field
content.account_id
acc_Encargo00123
cobre_acct_id
Maps 1:1 to encargo 00123.
content.id
trx_EncStatic001
cobre_trx_id
Canonical reference — no mm_id.
content.amount
5000000
received_amount_cents
content.metadata.key_value
@fidencargo00123
static_key_value
Step 8 of 19 R2P QR Payin (Model B) API step

Register Platform R2P Counterparty

For on-demand QR collections (Model B), register an r2p_breb counterparty with your platform display name (e.g. "Fiduciaria") — reused across encargos. This cp_… is the source_id of the R2P Money Movement.

POST https://api.cobre.co/v1/counterparties
Headers
AuthorizationBearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGlfdHJ1c3RfY28wMSJ9.Trust9xK2vN7cL4wT8aH1gF6yJ0bZ5eQ
Content-Typeapplication/json
Request body
{
"geo": "col",GeographyRequirediGeography code (e.g. col = Colombia, mex = Mexico).
"type": "r2p_breb",TypeRequirediResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"alias": "Platform R2P QR",AliasiDisplay name that helps identify it and clarify its purpose.
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"counterparty_fullname": "Fiduciaria"Display nameRequirediLegal or display name of the counterparty beneficiary.
}
}
Response 201
{
"id": "cp_TrustR2p",IdiUnique Cobre identifier for this resource.
"geo": "col",GeographyRequirediGeography code (e.g. col = Colombia, mex = Mexico).
"type": "r2p_breb",TypeRequirediResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"alias": "Platform R2P QR",AliasiDisplay name that helps identify it and clarify its purpose.
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"counterparty_fullname": "Fiduciaria"Display nameRequirediLegal or display name of the counterparty beneficiary.
},
"created_at": "2026-07-16T10:20:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"updated_at": "2026-07-16T10:20:00Z"Updated AtiTimestamp of the last update (ISO 8601, UTC).
}
Documentation for this step
Create a CounterpartyRequest to Pay (R2P)
Step 9 of 19 R2P QR Payin (Model B) API step

Create R2P QR Collection (Model B)

When a payer needs a QR for a specific amount, POST /money_movements with source_id = platform r2p_breb counterparty, destination_id = encargo balance, metadata.r2p_rail = breb_key, and valid_until for QR expiry. Amount is integer cents (5000000 = COP $50,000). Reuse idempotency on retries — valid 24h.

POST https://api.cobre.co/v1/money_movements
Headers
AuthorizationBearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGlfdHJ1c3RfY28wMSJ9.Trust9xK2vN7cL4wT8aH1gF6yJ0bZ5eQ
Content-Typeapplication/json
idempotencyencargo00123-qr-0001
Request body
{
"amount": 5000000,Amount (cents)RequirediAmount in cents — the last two digits are decimals.
"source_id": "cp_TrustR2p",R2P sourceRequirediCobre id of the source account or counterparty.
"destination_id": "acc_Encargo00123",Encargo balanceRequirediCobre id of the destination account or counterparty.
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"r2p_rail": "breb_key",R2P railRequirediRequest-to-Pay rail the payer chose (pse, nequi, bancolombia, breb).
"key_config": "name",Key configRequirediCobre field at "metadata.key_config" in this payload.
"description_to_payer": "Pago encargo 00123",Description to payeriPayer-facing description. On Checkout this is checkout_item.
"description_to_payee": "Recaudo encargo 00123",Description To PayeeiDescription that appears on the credit in your Cobre Balance.
"valid_until": "2026-07-17T22:00:00Z"QR expiryRequirediCobre field at "metadata.valid_until" in this payload.
},
"external_id": "encargo_00123"External IDiYour own reference echoed by Cobre for reconciliation.
}
Response 201
{
"id": "mm_R2pQr0001",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": "QR generated — awaiting payer authorization."DescriptioniHuman-readable detail for the current status.
},
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"r2p_rail": "breb_key",R2P railRequirediRequest-to-Pay rail the payer chose (pse, nequi, bancolombia, breb).
"key_config": "name",Key configRequirediCobre field at "metadata.key_config" in this payload.
"qr_value": "00020101021226990014co.com.breb1...",Qr ValueiCobre field at "metadata.qr_value" in this payload.
"description_to_payer": "Pago encargo 00123",Description to payeriPayer-facing description. On Checkout this is checkout_item.
"description_to_payee": "Recaudo encargo 00123",Description To PayeeiDescription that appears on the credit in your Cobre Balance.
"valid_until": "2026-07-17T22:00:00Z"QR expiryRequirediCobre field at "metadata.valid_until" in this payload.
},
"creator": "cli_trust_co01",CreatoriActor that created the resource. On a Checkout-created Money Movement this is the r2p source counterparty (cp_…), not the API user.
"external_id": "encargo_00123",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": "r2p_breb",TypeiResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"geo": "col",GeoiGeography code (e.g. col = Colombia, mex = Mexico).
"source_id": "cp_TrustR2p",R2P sourceRequirediCobre id of the source account or counterparty.
"destination_id": "acc_Encargo00123",Encargo balanceRequirediCobre id of the destination account or counterparty.
"currency": "cop",CurrencyiISO currency code (e.g. cop, mxn).
"amount": 5000000,Amount (cents)RequirediAmount in cents — the last two digits are decimals.
"created_at": "2026-07-16T10:25:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"updated_at": "2026-07-16T10:25:00Z"Updated AtiTimestamp of the last update (ISO 8601, UTC).
}

Webhook outcomesMoney movement

When the payer scans and authorizes the QR, funds settle into acc_Encargo00123. Reconcile on external_id and mm_id. Cobre also posts r2p_breb_credit on the balance — see the Transaction tab.

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. Cobre Balance transactions are covered in the <b>Transaction</b> tab.

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_R2pQrCmp",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-16T10:27:48Z",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_R2pQr0001",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.
"r2p_rail": "breb_key",R2p RailiRequest-to-Pay rail the payer chose (pse, nequi, bancolombia, breb).
"key_config": "name",Key ConfigiMetadata field "key_config" attached to the resource.
"qr_value": "00020101021226990014co.com.breb1...",Qr ValueiMetadata field "qr_value" attached to the resource.
"description_to_payer": "Pago encargo 00123",Description To PayeriPayer-facing description. On Checkout this is checkout_item.
"description_to_payee": "Recaudo encargo 00123",Description To PayeeiDescription that appears on the credit in your Cobre Balance.
"valid_until": "2026-07-17T22:00:00Z"Valid UntiliMetadata field "valid_until" attached to the resource.
},
"creator": "cli_trust_co01",CreatoriActor that created the resource. On a Checkout-created Money Movement this is the r2p source counterparty (cp_…), not the API user.
"external_id": "encargo_00123",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": "r2p_breb",TypeiResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"geo": "col",GeoiGeography code (e.g. col = Colombia, mex = Mexico).
"source_id": "cp_TrustR2p",Source IdiCobre id of the source account or counterparty.
"destination_id": "acc_Encargo00123",Destination IdiCobre id of the destination account or counterparty.
"currency": "cop",CurrencyiISO currency code (e.g. cop, mxn).
"amount": 5000000,AmountiAmount in cents — the last two digits are decimals.
"created_at": "2026-07-16T10:25:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"updated_at": "2026-07-16T10:27:48Z"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 money_movements.status.failed
Headers
Content-Typeapplication/json
Example payload
{
"id": "ev_R2pQrCmp",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-16T10:27:48Z",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_R2pQr0001",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": "F003",CodeiProvider or Cobre status code when the state is failed or rejected.
"description": "R2P Payment link expired."DescriptioniHuman-readable label or note.
},
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"r2p_rail": "breb_key",R2p RailiRequest-to-Pay rail the payer chose (pse, nequi, bancolombia, breb).
"key_config": "name",Key ConfigiMetadata field "key_config" attached to the resource.
"qr_value": "00020101021226990014co.com.breb1...",Qr ValueiMetadata field "qr_value" attached to the resource.
"description_to_payer": "Pago encargo 00123",Description To PayeriPayer-facing description. On Checkout this is checkout_item.
"description_to_payee": "Recaudo encargo 00123",Description To PayeeiDescription that appears on the credit in your Cobre Balance.
"valid_until": "2026-07-17T22:00:00Z"Valid UntiliMetadata field "valid_until" attached to the resource.
},
"creator": "cli_trust_co01",CreatoriActor that created the resource. On a Checkout-created Money Movement this is the r2p source counterparty (cp_…), not the API user.
"external_id": "encargo_00123",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": "r2p_breb",TypeiResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"geo": "col",GeoiGeography code (e.g. col = Colombia, mex = Mexico).
"source_id": "cp_TrustR2p",Source IdiCobre id of the source account or counterparty.
"destination_id": "acc_Encargo00123",Destination IdiCobre id of the destination account or counterparty.
"currency": "cop",CurrencyiISO currency code (e.g. cop, mxn).
"amount": 5000000,AmountiAmount in cents — the last two digits are decimals.
"created_at": "2026-07-16T10:25:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"updated_at": "2026-07-16T10:27:48Z"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
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
R012The user has abandoned the transaction.Payin
R016Payment rejected due to timeout.Payin
R017Payment rejected due to expired money movement.Payin
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
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
Event money_movements.status.rejected
Headers
Content-Typeapplication/json
Example payload
{
"id": "ev_R2pQrCmp",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-16T10:27:48Z",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_R2pQr0001",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": "R016",CodeiProvider or Cobre status code when the state is failed or rejected.
"description": "Payment rejected due to timeout."DescriptioniHuman-readable label or note.
},
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"r2p_rail": "breb_key",R2p RailiRequest-to-Pay rail the payer chose (pse, nequi, bancolombia, breb).
"key_config": "name",Key ConfigiMetadata field "key_config" attached to the resource.
"qr_value": "00020101021226990014co.com.breb1...",Qr ValueiMetadata field "qr_value" attached to the resource.
"description_to_payer": "Pago encargo 00123",Description To PayeriPayer-facing description. On Checkout this is checkout_item.
"description_to_payee": "Recaudo encargo 00123",Description To PayeeiDescription that appears on the credit in your Cobre Balance.
"valid_until": "2026-07-17T22:00:00Z"Valid UntiliMetadata field "valid_until" attached to the resource.
},
"creator": "cli_trust_co01",CreatoriActor that created the resource. On a Checkout-created Money Movement this is the r2p source counterparty (cp_…), not the API user.
"external_id": "encargo_00123",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": "r2p_breb",TypeiResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"geo": "col",GeoiGeography code (e.g. col = Colombia, mex = Mexico).
"source_id": "cp_TrustR2p",Source IdiCobre id of the source account or counterparty.
"destination_id": "acc_Encargo00123",Destination IdiCobre id of the destination account or counterparty.
"currency": "cop",CurrencyiISO currency code (e.g. cop, mxn).
"amount": 5000000,AmountiAmount in cents — the last two digits are decimals.
"created_at": "2026-07-16T10:25:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"updated_at": "2026-07-16T10:27:48Z"Updated AtiTimestamp of the last update (ISO 8601, UTC).
}
}

When a payin Money Movement completes, Cobre credits the destination Cobre Balance and delivers accounts.balance.credit. Transaction type matches the movement type — see GET /accounts/{id}/transactions OAS examples.

When the payin settles, Cobre credits the destination Cobre Balance.

Event accounts.balance.credit
Headers
Content-Typeapplication/json
Example payload
{
"id": "ev_R2pQr0001Cr",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-16T10:27:48Z",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_R2pQr0001Cr",IdiUnique Cobre identifier for this resource.
"type": "r2p_breb_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_Encargo00123",Account IdiCobre Balance account id affected by the event.
"amount": 5000000,AmountiAmount in cents — the last two digits are decimals.
"previous_balance": 0,Previous BalanceiCobre field at "content.previous_balance" in this payload.
"current_balance": 5000000,Current BalanceiCobre field at "content.current_balance" in this payload.
"currency": "COP",CurrencyiISO currency code (e.g. cop, mxn).
"credit_debit_type": "credit",Credit Debit Typeicredit = funds in; debit = funds out.
"transaction_date": "2026-07-16T10:27:48Z",Transaction DateiTimestamp when the transaction was posted (ISO 8601, UTC).
"created_at": "2026-07-16T10:27:48Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"sender_account_number": "",Sender Account NumberiMetadata field "sender_account_number" attached to the resource.
"sender_account_type": "ch",Sender Account TypeiMetadata field "sender_account_type" attached to the resource.
"sender_bank_code": "",Sender Bank CodeiMetadata field "sender_bank_code" attached to the resource.
"sender_id": "",Sender IdiMetadata field "sender_id" attached to the resource.
"sender_id_type": "cc",Sender Id TypeiMetadata field "sender_id_type" attached to the resource.
"key_value": "",Key ValueiBre-B key value (e.g. @merchant123).
"sender_name": "",Sender NameiMetadata field "sender_name" attached to the resource.
"description": "Recaudo encargo 00123",DescriptioniHuman-readable label or note.
"money_movement_id": "mm_R2pQr0001"Money Movement IdiMoney Movement that generated this balance transaction.
}
}
}
Step 10 of 19 R2P QR Payin (Model B) Reconciliation

Reconcile R2P QR Payin

Model B reconciliation is Money-Movement-level: join on external_id and mm_id. Fallback: GET /money_movements?external_id=encargo_00123.

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

Cobre field & valueEncargo ledger field
content.external_id
encargo_00123
encargo_reference
content.id
mm_R2pQr0001
cobre_mm_id
content.amount
5000000
received_amount_cents
content.status.state
completed
payin_status
Map completed → RECEIVED.
Step 11 of 19 Fund Sweep API step

Auto-Sweep via Primary Account (Option A)

Option (a): because metadata.primary_account was set at account creation, every credit on acc_Encargo00123 auto-sweeps to cp_Encargo00123Bank. Cobre debits the encargo balance — watch accounts.balance.debit. Use Option (b) schedulers or Option (c) manual payouts when you need batched or on-demand control instead.

GET https://api.cobre.co/v1/accounts/acc_Encargo00123Encargo balanceRequiredi/transactions
Headers
AuthorizationBearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGlfdHJ1c3RfY28wMSJ9.Trust9xK2vN7cL4wT8aH1gF6yJ0bZ5eQ
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_EncSweep001",Debit transaction IDiUnique Cobre identifier for this resource.
"type": "col_payout_debit",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_Encargo00123",Account IdiCobre Balance account id affected by the event.
"amount": 5000000,Amount swept (cents)iAmount in cents — the last two digits are decimals.
"previous_balance": 5000000,Previous BalanceiCobre field at "contents.0.previous_balance" in this payload.
"current_balance": 0,Current BalanceiCobre field at "contents.0.current_balance" in this payload.
"currency": "cop",CurrencyiISO currency code (e.g. cop, mxn).
"credit_debit_type": "debit",Directionicredit = funds in; debit = funds out.
"transaction_date": "2026-07-16T10:16:04Z",Transaction DateiTimestamp when the transaction was posted (ISO 8601, UTC).
"created_at": "2026-07-16T10:16:05Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"description": "Primary account auto-sweep to encargo bank"DescriptioniHuman-readable label or note.
}
}
]
}

Webhook delivered

accounts.balance.debit

Fires when auto-sweep debits acc_Encargo00123 after a payin credit. Funds are en route to the encargo bank account via Primary Account linkage.

Headers
Content-Typeapplication/json
Payload
{
"id": "ev_EncBalDebit",IdiUnique Cobre identifier for this resource.
"event_key": "accounts.balance.debit",Event KeyiWebhook subscription key (e.g. money_movements.status.completed).
"created_at": "2026-07-16T10:16:05Z",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_EncSweep001",IdiUnique Cobre identifier for this resource.
"type": "col_payout_debit",TypeiResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"amount": 5000000,AmountiAmount in cents — the last two digits are decimals.
"currency": "cop",CurrencyiISO currency code (e.g. cop, mxn).
"date": "2026-07-16T10:16:04Z",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.
"description": "Primary account auto-sweep to encargo bank"DescriptioniHuman-readable label or note.
},
"account_id": "acc_Encargo00123",Account IdiCobre Balance account id affected by the event.
"previous_balance": 5000000,Previous BalanceiCobre field at "content.previous_balance" in this payload.
"current_balance": 0,Current BalanceiCobre field at "content.current_balance" in this payload.
"credit_debit_type": "debit"Credit Debit Typeicredit = funds in; debit = funds out.
}
}
Step 12 of 19 Scheduled Sweep (Option B) API step

Create Multi-Balance Sweep Scheduler

Option (b): when encargos do not use instant Primary Account sweep (or you batch at end-of-day), create a Money Movement Scheduler that pulls from multiple encargo Cobre Balances and pays out to the external bank counterparty. Set amount to 0 for full account sweeping. schedule_pattern is a Quartz cron (example: daily at 18:00).

POST https://api.cobre.co/v1/money_movement_schedulers
Headers
AuthorizationBearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGlfdHJ1c3RfY28wMSJ9.Trust9xK2vN7cL4wT8aH1gF6yJ0bZ5eQ
Content-Typeapplication/json
Request body
{
"alias": "Encargo balances EOD sweep",AliasiDisplay name that helps identify it and clarify its purpose.
"schedule_pattern": "0 0 18 * * ?",Schedule (cron)RequirediQuartz cron — 0 0 18 * * ? = daily at 18:00.
"account_source_ids": [Account Source IdsiCobre field at "account_source_ids" in this payload.
"acc_Encargo00123",
"acc_Encargo00124"
],
"destination_id": "cp_Encargo00123Bank",Bank counterpartyRequirediCobre id of the destination account or counterparty.
"amount": 0,Amount (0 = sweep all)RequirediAmount in cents — the last two digits are decimals.
"description": "EOD sweep encargo balances to bank",DescriptioniHuman-readable label or note.
"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": "mms_EncSweep01",IdiUnique Cobre identifier for this resource.
"creator": "cli_trust_co01",CreatoriActor that created the resource. On a Checkout-created Money Movement this is the r2p source counterparty (cp_…), not the API user.
"alias": "Encargo balances EOD sweep",AliasiDisplay name that helps identify it and clarify its purpose.
"amount": 0,Amount (0 = sweep all)RequirediAmount in cents — the last two digits are decimals.
"description": "EOD sweep encargo balances to bank",DescriptioniHuman-readable label or note.
"active_status": true,Active StatusiCobre field at "active_status" in this payload.
"schedule_pattern": "0 0 18 * * ?",Schedule (cron)RequirediQuartz cron — 0 0 18 * * ? = daily at 18:00.
"account_source_ids": [Account Source IdsiCobre field at "account_source_ids" in this payload.
"acc_Encargo00123",
"acc_Encargo00124"
],
"destination_id": "cp_Encargo00123Bank",Bank counterpartyRequirediCobre id of the destination account or counterparty.
"created_at": "2026-07-16T11:00:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"updated_at": "2026-07-16T11:00:00Z",Updated AtiTimestamp of the last update (ISO 8601, UTC).
"checker_approval": falseChecker approvaliWhen true, Cobre pauses at pending_approval and locks source funds until an approval/denial decision via Money Movement Approvals API.
}
Step 13 of 19 Scheduled Sweep (Option B) API step

List Sweep Schedulers

Audit active and historical schedulers. Each triggered run creates a Money Movement — reconcile those on money_movements.status.* webhooks and GET /money_movements.

GET https://api.cobre.co/v1/money_movement_schedulers
Headers
AuthorizationBearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGlfdHJ1c3RfY28wMSJ9.Trust9xK2vN7cL4wT8aH1gF6yJ0bZ5eQ
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": "mms_EncSweep01",Scheduler IDiUnique Cobre identifier for this resource.
"creator": "cli_trust_co01",CreatoriActor that created the resource. On a Checkout-created Money Movement this is the r2p source counterparty (cp_…), not the API user.
"alias": "Encargo balances EOD sweep",AliasiDisplay name that helps identify it and clarify its purpose.
"amount": 0,AmountiAmount in cents — the last two digits are decimals.
"description": "EOD sweep encargo balances to bank",DescriptioniHuman-readable label or note.
"active_status": true,ActiveiCobre field at "contents.0.active_status" in this payload.
"schedule_pattern": "0 0 18 * * ?",Schedule PatterniCobre field at "contents.0.schedule_pattern" in this payload.
"account_source_ids": [Account Source IdsiCobre field at "contents.0.account_source_ids" in this payload.
"acc_Encargo00123",
"acc_Encargo00124"
],
"destination_id": "cp_Encargo00123Bank",DestinationiCobre id of the destination account or counterparty.
"created_at": "2026-07-16T11:00:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"updated_at": "2026-07-16T11:00:00Z",Updated AtiTimestamp of the last update (ISO 8601, UTC).
"checker_approval": falseChecker ApprovaliWhen true, Cobre pauses at pending_approval and locks source funds until an approval/denial decision via Money Movement Approvals API.
}
]
}
Step 14 of 19 Scheduled Sweep (Option B) Reconciliation

Reconcile Scheduler-Triggered Payouts

When the scheduler fires, Cobre creates a Money Movement per source balance with available funds. Match money_movements.status.completed webhooks to your encargo ledger by external_id and mm_id; cross-check accounts.balance.debit on each source balance.

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

Cobre field & valueEncargo ledger field
id
mms_EncSweep01
scheduler_id
account_source_ids.0
acc_Encargo00123
swept_balance_1
account_source_ids.1
acc_Encargo00124
swept_balance_2
One MM per balance when scheduler runs.
destination_id
cp_Encargo00123Bank
bank_counterparty_id
Step 15 of 19 Manual Payout (Option C) API step

Payout to Encargo Bank Account

Option (c): on-demand transfer from the encargo Cobre Balance to the encargo bank counterparty (cp_…) via Fast Pay / ACH. Use when Primary Account auto-sweep is disabled or you need a specific amount moved outside the scheduler. Reuse idempotency on retries — valid 24h.

POST https://api.cobre.co/v1/money_movements
Headers
AuthorizationBearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGlfdHJ1c3RfY28wMSJ9.Trust9xK2vN7cL4wT8aH1gF6yJ0bZ5eQ
Content-Typeapplication/json
idempotencyencargo00123-payout-0001
Request body
{
"source_id": "acc_Encargo00123",Encargo balanceRequirediCobre id of the source account or counterparty.
"destination_id": "cp_Encargo00123Bank",Bank counterpartyRequirediCobre id of the destination account or counterparty.
"amount": 5000000,Amount (cents)Requiredi5000000 = COP $50,000.
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"description": "Encargo 00123 bank transfer"DescriptionRequirediHuman-readable label or note.
},
"external_id": "encargo_00123_payout_001"External IDiYour own reference echoed by Cobre for reconciliation.
}
Response 201
{
"id": "mm_EncPayout001",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": "Encargo 00123 bank transfer"DescriptionRequirediHuman-readable label or note.
},
"creator": "cli_trust_co01",CreatoriActor that created the resource. On a Checkout-created Money Movement this is the r2p source counterparty (cp_…), not the API user.
"external_id": "encargo_00123_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": "fast_pay",TypeiResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"geo": "col",GeoiGeography code (e.g. col = Colombia, mex = Mexico).
"source_id": "acc_Encargo00123",Encargo balanceRequirediCobre id of the source account or counterparty.
"destination_id": "cp_Encargo00123Bank",Bank counterpartyRequirediCobre id of the destination account or counterparty.
"currency": "cop",CurrencyiISO currency code (e.g. cop, mxn).
"amount": 5000000,Amount (cents)Requiredi5000000 = COP $50,000.
"created_at": "2026-07-16T11:30:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"updated_at": "2026-07-16T11:30:00Z"Updated AtiTimestamp of the last update (ISO 8601, UTC).
}

Webhook outcomesMoney movement

Manual encargo payout completed — mark the transfer on your ledger using external_id and mm_id. Cobre debits acc_Encargo00123 — see the Transaction tab.

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. Cobre Balance transactions are covered in the <b>Transaction</b> tab.

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_EncPayoutCmp",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-16T11:30: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_EncPayout001",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": "Encargo 00123 bank transfer",DescriptioniHuman-readable label or note.
"tracking_key": "20260716Enc00123"Tracking KeyiNetwork tracking key for the payment (PSE ticket or Bre-B key).
},
"creator": "cli_trust_co01",CreatoriActor that created the resource. On a Checkout-created Money Movement this is the r2p source counterparty (cp_…), not the API user.
"external_id": "encargo_00123_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": "fast_pay",TypeiResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"geo": "col",GeoiGeography code (e.g. col = Colombia, mex = Mexico).
"source_id": "acc_Encargo00123",Source IdiCobre id of the source account or counterparty.
"destination_id": "cp_Encargo00123Bank",Destination IdiCobre id of the destination account or counterparty.
"currency": "cop",CurrencyiISO currency code (e.g. cop, mxn).
"amount": 5000000,AmountiAmount in cents — the last two digits are decimals.
"created_at": "2026-07-16T11:30:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"updated_at": "2026-07-16T11:30: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
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_EncPayoutCmp",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-16T11:30: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_EncPayout001",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": "Encargo 00123 bank transfer",DescriptioniHuman-readable label or note.
"tracking_key": "20260716Enc00123"Tracking KeyiNetwork tracking key for the payment (PSE ticket or Bre-B key).
},
"creator": "cli_trust_co01",CreatoriActor that created the resource. On a Checkout-created Money Movement this is the r2p source counterparty (cp_…), not the API user.
"external_id": "encargo_00123_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": "fast_pay",TypeiResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"geo": "col",GeoiGeography code (e.g. col = Colombia, mex = Mexico).
"source_id": "acc_Encargo00123",Source IdiCobre id of the source account or counterparty.
"destination_id": "cp_Encargo00123Bank",Destination IdiCobre id of the destination account or counterparty.
"currency": "cop",CurrencyiISO currency code (e.g. cop, mxn).
"amount": 5000000,AmountiAmount in cents — the last two digits are decimals.
"created_at": "2026-07-16T11:30:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"updated_at": "2026-07-16T11:30: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
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_EncPayoutCmp",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-16T11:30: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_EncPayout001",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": "Encargo 00123 bank transfer",DescriptioniHuman-readable label or note.
"tracking_key": "20260716Enc00123"Tracking KeyiNetwork tracking key for the payment (PSE ticket or Bre-B key).
},
"creator": "cli_trust_co01",CreatoriActor that created the resource. On a Checkout-created Money Movement this is the r2p source counterparty (cp_…), not the API user.
"external_id": "encargo_00123_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": "fast_pay",TypeiResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"geo": "col",GeoiGeography code (e.g. col = Colombia, mex = Mexico).
"source_id": "acc_Encargo00123",Source IdiCobre id of the source account or counterparty.
"destination_id": "cp_Encargo00123Bank",Destination IdiCobre id of the destination account or counterparty.
"currency": "cop",CurrencyiISO currency code (e.g. cop, mxn).
"amount": 5000000,AmountiAmount in cents — the last two digits are decimals.
"created_at": "2026-07-16T11:30:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"updated_at": "2026-07-16T11:30:45Z"Updated AtiTimestamp of the last update (ISO 8601, UTC).
}
}

Payouts debit the source Cobre Balance while the movement is processing to lock funds. If the movement ends in failed, rejected, or canceled, Cobre posts a compensation credit (breb_credit or col_cb_credit). Payins credit the destination on completion only.

While the movement is in processing, Cobre debits the source Cobre Balance to lock the payout amount. Subscribe to accounts.balance.debit and money_movements.status.processing.

Event accounts.balance.debit
Headers
Content-Typeapplication/json
Example payload
{
"id": "ev_EncPayout0Lk",IdiUnique Cobre identifier for this resource.
"event_key": "accounts.balance.debit",Event KeyiWebhook subscription key (e.g. money_movements.status.completed).
"created_at": "2026-07-16T11:30: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": "trx_EncPayout001Lk",IdiUnique Cobre identifier for this resource.
"type": "col_cb_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_Encargo00123",Account IdiCobre Balance account id affected by the event.
"amount": -5000000,AmountiAmount in cents — the last two digits are decimals.
"previous_balance": 10000000,Previous BalanceiCobre field at "content.previous_balance" in this payload.
"current_balance": 5000000,Current BalanceiCobre field at "content.current_balance" in this payload.
"currency": "COP",CurrencyiISO currency code (e.g. cop, mxn).
"credit_debit_type": "debit",Credit Debit Typeicredit = funds in; debit = funds out.
"transaction_date": "2026-07-16T11:30:00Z",Transaction DateiTimestamp when the transaction was posted (ISO 8601, UTC).
"created_at": "2026-07-16T11:30:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"money_movement_id": "mm_EncPayout001",Money Movement IdiMoney Movement that generated this balance transaction.
"description": "Encargo 00123 bank transfer",DescriptioniHuman-readable label or note.
"beneficiary_account_number": "",Beneficiary Account NumberiMetadata field "beneficiary_account_number" attached to the resource.
"tracking_key": "20260716Enc00123"Tracking KeyiNetwork tracking key for the payment (PSE ticket or Bre-B key).
}
}
}

On completion the locked funds are sent to the beneficiary. The processing debit remains on the ledger — no compensation credit is posted.

Event accounts.balance.debit
Headers
Content-Typeapplication/json
Example payload
{
"id": "ev_EncPayout0Lk",IdiUnique Cobre identifier for this resource.
"event_key": "accounts.balance.debit",Event KeyiWebhook subscription key (e.g. money_movements.status.completed).
"created_at": "2026-07-16T11:30: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": "trx_EncPayout001Lk",IdiUnique Cobre identifier for this resource.
"type": "col_cb_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_Encargo00123",Account IdiCobre Balance account id affected by the event.
"amount": -5000000,AmountiAmount in cents — the last two digits are decimals.
"previous_balance": 10000000,Previous BalanceiCobre field at "content.previous_balance" in this payload.
"current_balance": 5000000,Current BalanceiCobre field at "content.current_balance" in this payload.
"currency": "COP",CurrencyiISO currency code (e.g. cop, mxn).
"credit_debit_type": "debit",Credit Debit Typeicredit = funds in; debit = funds out.
"transaction_date": "2026-07-16T11:30:00Z",Transaction DateiTimestamp when the transaction was posted (ISO 8601, UTC).
"created_at": "2026-07-16T11:30:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"money_movement_id": "mm_EncPayout001",Money Movement IdiMoney Movement that generated this balance transaction.
"description": "Encargo 00123 bank transfer",DescriptioniHuman-readable label or note.
"beneficiary_account_number": "",Beneficiary Account NumberiMetadata field "beneficiary_account_number" attached to the resource.
"tracking_key": "20260716Enc00123"Tracking KeyiNetwork tracking key for the payment (PSE ticket or Bre-B key).
}
}
}

If the movement reaches a terminal failed, rejected, or canceled state, Cobre credits the source Cobre Balance to release the lock (breb_credit for Bre-B, col_cb_credit for bank rails).

Event accounts.balance.credit
Headers
Content-Typeapplication/json
Example payload
{
"id": "ev_EncPayout0Cp",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-16T11:30: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": "trx_EncPayout001Cp",IdiUnique Cobre identifier for this resource.
"type": "col_cb_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_Encargo00123",Account IdiCobre Balance account id affected by the event.
"amount": 5000000,AmountiAmount in cents — the last two digits are decimals.
"previous_balance": 0,Previous BalanceiCobre field at "content.previous_balance" in this payload.
"current_balance": 5000000,Current BalanceiCobre field at "content.current_balance" in this payload.
"currency": "COP",CurrencyiISO currency code (e.g. cop, mxn).
"credit_debit_type": "credit",Credit Debit Typeicredit = funds in; debit = funds out.
"transaction_date": "2026-07-16T11:30:45Z",Transaction DateiTimestamp when the transaction was posted (ISO 8601, UTC).
"created_at": "2026-07-16T11:30:45Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"metadata": {MetadataiCustom key-value metadata attached to the resource.
"money_movement_id": "mm_EncPayout001",Money Movement IdiMoney Movement that generated this balance transaction.
"description": "Encargo 00123 bank transfer",DescriptioniHuman-readable label or note.
"tracking_key": "20260716Enc00123",Tracking KeyiNetwork tracking key for the payment (PSE ticket or Bre-B key).
"sender_name": "",Sender NameiMetadata field "sender_name" attached to the resource.
"sender_id": "",Sender IdiMetadata field "sender_id" attached to the resource.
"sender_account_number": ""Sender Account NumberiMetadata field "sender_account_number" attached to the resource.
}
}
}
Step 16 of 19 Manual Payout (Option C) Reconciliation

Reconcile Manual Encargo Payout

Match the completion webhook to the encargo ledger on external_id and mm_id. Cross-check the balance debit via accounts.balance.debit or GET /accounts/{acct_id}/transactions.

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

Cobre field & valueEncargo ledger field
content.external_id
encargo_00123_payout_001
payout_reference
content.id
mm_EncPayout001
cobre_mm_id
content.source_id
acc_Encargo00123
cobre_acct_id
content.destination_id
cp_Encargo00123Bank
bank_counterparty_id
content.amount
5000000
transferred_amount_cents
content.status.state
completed
payout_status
Map completed → TRANSFERRED.
Step 17 of 19 Reconciliation API step

Daily Balance History (D+1)

On D+1 (~5 hours after midnight), pull summarized opening balance, total credits/debits, and closing balance per encargo for daily close. Filter by balance_date (YYYY-MM-DD).

GET https://api.cobre.co/v1/accounts/acc_Encargo00123Encargo balanceRequiredi/daily_balance_history?balance_date=2026-07-16Balance datei
Headers
AuthorizationBearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGlfdHJ1c3RfY28wMSJ9.Trust9xK2vN7cL4wT8aH1gF6yJ0bZ5eQ
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_Enc00123Eod",IdiUnique Cobre identifier for this resource.
"offset": "-05:00",OffsetiCobre field at "Daily Balance history List.0.offset" in this payload.
"balance_date": "2026-07-16",Balance DateiCobre field at "Daily Balance history List.0.balance_date" in this payload.
"initial_balance": "0",Initial BalanceiCobre field at "Daily Balance history List.0.initial_balance" in this payload.
"total_credits": "10000000",Total CreditsiCobre field at "Daily Balance history List.0.total_credits" in this payload.
"total_debits": "10000000",Total DebitsiCobre field at "Daily Balance history List.0.total_debits" in this payload.
"end_balance": "0",End BalanceiCobre field at "Daily Balance history List.0.end_balance" in this payload.
"created_at": "2026-07-17T10:00:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"updated_at": "2026-07-17T10:00:00Z"Updated AtiTimestamp of the last update (ISO 8601, UTC).
}
]
}
Step 18 of 19 Reconciliation API step

Fallback: Query Money Movements

Mandatory fallback when webhooks may have been missed. Query R2P collections by external_id. Static-key payins have no mm_id — use GET /accounts/{acct_id}/transactions instead.

GET https://api.cobre.co/v1/money_movements?external_id=encargo_00123External IDi
Headers
AuthorizationBearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjbGlfdHJ1c3RfY28wMSJ9.Trust9xK2vN7cL4wT8aH1gF6yJ0bZ5eQ
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": "mm_R2pQr0001",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.
"r2p_rail": "breb_key",R2p RailiRequest-to-Pay rail the payer chose (pse, nequi, bancolombia, breb).
"key_config": "name",Key ConfigiMetadata field "key_config" attached to the resource.
"valid_until": "2026-07-17T22:00:00Z"Valid UntiliMetadata field "valid_until" attached to the resource.
},
"creator": "cli_trust_co01",CreatoriActor that created the resource. On a Checkout-created Money Movement this is the r2p source counterparty (cp_…), not the API user.
"external_id": "encargo_00123",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": "r2p_breb",TypeiResource or movement type as defined by the Cobre API for this rail/product (e.g. breb_credit for Cobre Key payins).
"geo": "col",GeoiGeography code (e.g. col = Colombia, mex = Mexico).
"source_id": "cp_TrustR2p",Source IdiCobre id of the source account or counterparty.
"destination_id": "acc_Encargo00123",Destination IdiCobre id of the destination account or counterparty.
"currency": "cop",CurrencyiISO currency code (e.g. cop, mxn).
"amount": 5000000,AmountiAmount in cents — the last two digits are decimals.
"created_at": "2026-07-16T10:25:00Z",Created AtiTimestamp when the resource was created (ISO 8601, UTC).
"updated_at": "2026-07-16T10:27:48Z"Updated AtiTimestamp of the last update (ISO 8601, UTC).
}
]
}
Documentation for this step
Obtain all Money MovementsReports Guide
Step 19 of 19 Reconciliation Reconciliation

Close the Mixed Reconciliation Model

Webhooks are the primary source (accounts.balance.credit/debit, money_movements.status.*, cobre_keys.status.registered). Mandatory fallback: GET /accounts/{acct_id}/transactions for Model A, GET /money_movements for Model B, GET daily_balance_history for D+1 per-encargo close. Export via POST /reports when needed.

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

Cobre field & valueEncargo ledger field
Daily Balance history List.0.balance_date
2026-07-16
reconciliation_date
Daily Balance history List.0.total_credits
10000000
total_payins_cents
Sum of Model A + Model B credits for the day.
Daily Balance history List.0.total_debits
10000000
total_sweeps_cents
Auto-sweep debits to encargo bank.
Daily Balance history List.0.end_balance
0
closing_balance_cents
Should be zero when all funds swept same day.