Create a payout to a beneficiary's Bre-B key instead of a bank account, routed through Cobre.
How to activate it
Set channel to "bre-b" and put the beneficiary's Bre-B key in account_id. account_type
stays a regular Colombian account type — it has no effect on routing for this rail.
| Attribute | Data type | Required | Notes |
|---|---|---|---|
channel | string | Yes | Must be exactly "bre-b" (case-insensitive) to route through Bre-B. Any other value sends a regular bank-account transfer instead |
account_id | string | Yes | The beneficiary's Bre-B key (document, phone, email, or an alphanumeric key like @JAR1234). Must not be empty. |
account_type | string | Yes | Any valid Colombia account type (ca, cc, tp, dp). Not used to buildl the destination sent to Cobre — kept because every transaction requires one. |
bank. | integer | Yes | A valid Bank id. Not used to build the destination either — kept because the field is mandatory on every transaction. |
About the "@" prefixCobre confirmed that the alphanumeric keys they generate always start with
@(e.g.@JAR1234). Keys registered as document/phone/email may not have it — Cobre's own
API reference shows a valid Bre-B key example without@. ALPS does not require the@prefix onaccount_id; it only requires it to be non-empty. The@is used internally only
to flag a row where the key looks alphanumeric butchannelwas not set to"bre-b".
Example payload
[
{
"order_id": "20260901002",
"credit_note": "20260901113",
"account_id": "@JAR1234",
"account_type": "cc",
"vat_id_type": "nit",
"vat_id": "1089713337",
"name": "Jose Paez",
"amount": 2,
"currency": 9,
"subject": "TEST COBRE BREB",
"bank_detail": "TEST COBRE BREB",
"bank": 10000,
"user_email": "[email protected]",
"phone_number": "+573000000000",
"channel": "bre-b",
"transfer_status": 1
}
]What happens after you send it
POST /api/transactions/ only validates and stores the transaction — it does not call Cobre
synchronously. A row can return 200 on that call and still never reach Cobre if channel/account_id are inconsistent. Rather than send a malformed request, ALPS excludes the row and records why in the audit trail; the transaction stays approved and is retried on the next batch once the payload is fixed.
| Audit reason | When it happens |
|---|---|
breb_disabled | channel is "bre-b" but the rail is turned off. |
breb_missing_key | channel is "bre-b" but account_id is empty. |
breb_channel_missing | account_id looks like an alphanumeric Bre-B key (@ prefix) but channel is not "bre-b". |
