initiatedinitiated.processingprocessing when Cobre starts executing it.pending_approval (conditional)pending_approval.If the money movement was marked with checker_approval = true, your integration must handle this state explicitly: either by approving via the Approvals endpoints or by expecting it to remain pending until your internal operators approve it
completedcanceledfailedrejectedreturned (Mexico only)R008 Payment Returned by Beneficiary.initiated → processinginitiated → pending_approval (if approval required)pending_approval → processing (after approval)processing → completedprocessing → failed / rejectedprocessing → returned (post-completion return path)pending_approval → canceled (if canceled/expired)initiated → canceled (if canceled before execution)Important: All terminal states are final. Once a Money Movement reaches a terminal state, it will not transition again (except that some rails may report a return after a previous completion, which is represented by returned).
pending_approval, approve it or wait for approvalprocessing, keep monitoringcompleted → success pathfailed → evaluate error code and retry strategyrejected → correct input or treat as failed business casereturned → reconcile return and update your ledgercanceled → treat as no-op or user-intent cancellation| Money Movement type | Flow | Source | Allowed source type | Destination | Allowed destination type |
|---|---|---|---|---|---|
| SPEI | Push | account_id | clabe | counterparty_id or account_id | clabe or spei_card |
| FAST PAY | Push | account_id | cobre_balance | counterparty_id or account_id | checking(cc), saving (ch), cobre_balance, electronic deposit (dp) |
| ACH | Push | account_id | checking(cc), saving (ch) or cobre_balance | counterparty_id or account_id | checking(cc), saving (ch) or electronic deposit (dp) |
| BREB | Push | account_id | cobre_balance | counterparty_id | Breb-B (breb_key) |
| GLOBAL | Push | account_id | cobre_balance | counterparty_id | global_deposit_le or global_deposit_np |
| R2P Direct Dynamic Key | Pull | counterparty_id | r2p or r2p_breb | account_id | cobre_balance |
| R2P Direct Link | Pull | counterparty_id | r2p | account_id | cobre_balance |
| DIRECT DEBIT | Pull | counterparty_id | checking(cc), saving (ch) or cobre_balance | account_id | cobre_balance |
| Status | Code | Description |
|---|---|---|
| initiated | NA | NA |
| processing | NA | NA |
| completed | NA | NA |
| pending_approval | NA | NA |
| canceled | NA | NA |
| failed | F001 | Payment processing failed please try again |
| failed | F002 | NSF - Not Sufficient Funds in the designated account |
| failed | F003 | R2P Payment link expired |
| failed | F004 | Daily transaction amount limit has been reached |
| failed | F005 | Amount exceeds the maximum allowed transaction limit |
| failed | F098 | Could not process the money movement at this time |
| failed | F099 | Could not process the money movement at this time |
| rejected | R000 | Transaction rejected |
| rejected | R001 | Inactive or blocked account |
| rejected | R002 | Account and identification provided do not coincide |
| rejected | R004 | ID not valid |
| rejected | R005 | Account does not exist |
| rejected | R006 | Invalid account number |
| returned | R008 | Payment Returned by Beneficiary |
| rejected | R009 | Exceeds maximum allowed amount |
| rejected | R010 | Account not authorized to debit |
| rejected | R011 | Invalid Account type. |
| rejected | R012 | The user has abandoned the transaction |
| rejected | R015 | Account not authorized to be credited |
| rejected | R016 | Payment rejected due to timeout |
| rejected | R017 | Payment rejected due to expired key |
| rejected | R018 | Payment rejected due invalid key |
| rejected | R019 | Payment rejected due to incorrect amount |
| rejected | R020 | Payment rejected due to user authentication failure |
| rejected | R021 | Insufficient funds in payer account |
| rejected | R023 | Payment cancelled by the user |
| rejected | R024 | Exceeds maximum allowed number of transactions |
| rejected | R025 | Required information missing |
| rejected | R026 | Payment rejected due to unavailable bank services |
| rejected | R027 | Account exceeds the maximum allowed transaction limit |
| rejected | R034 | Account closed |
| rejected | R081 | The counterparty registration has expired |
| rejected | R082 | The counterparty registration has been canceled |
| rejected | R084 | The counterparty registration has been rejected |