Skip to Content
API DocumentationBre-B Payouts (Colombia)

What is Bre-B

Bre-B is Colombia’s instant payment network. It settles transfers in real time and addresses the beneficiary through a key — an email address, a phone number or an alias — instead of a traditional bank account number.

For Colombian off ramps you can send the payout either over Bre-B or over the traditional ACH cycle. You choose per bank account, using the optional rail field on POST /bank-accounts.

The rail field

rail is optional and applies only to Colombian bank accounts. It accepts two values:

ValueRail
BANKTraditional bank transfer, settled through the ACH cycle
BREBBre-B instant transfer, addressed by key

Any other value is rejected.

If you omit rail, the payout rail is inferred from the shape of the destination: an all-numeric accountNumber with a valid bankCode is routed over ACH, while a destination that looks like a key (an email address, a phone number) is routed over Bre-B.

Omitting rail is not the same as sending rail: BANK. Inference is a convenience for unambiguous destinations, not a default. Declare rail explicitly whenever the destination could be read either way — most importantly when the key is a NIT, which is all digits and therefore indistinguishable from an account number.

Existing integrations that register traditional bank accounts do not need to change: a numeric account with its bankCode keeps being routed over ACH exactly as before.

Registering a Bre-B key

With rail: BREB, the accountNumber field no longer holds an account number — it holds the beneficiary’s Bre-B key, exactly as given to them by their financial institution. It must be entered as an exact mirror copy of that key — without adding, removing or altering a single character.

bankCode and accountType are required for every Colombian bank account, whichever rail you use — they are not a Bre-B requirement. The request body marks them optional because it is shared across countries, and Colombia validates them on top of it. Send a bankCode from GET /bank-info/COL and a valid accountType, the same way you would for a traditional account.

The per-bank account number validations for Colombia apply to traditional accounts. A Bre-B key is not validated against those formats — it is passed through exactly as provided.

BANK and BREB are separate destinations

The rail is part of a destination’s identity. Registering the same value with and without rail: BREB creates two different bank accounts, each with its own _id.

This is deliberate: the same number really can be two destinations. A NIT-based Bre-B key is all digits, so it can collide with a genuine account number belonging to the same beneficiary — one reachable over ACH, the other over Bre-B.

Store the _id returned when you register each account. The _id is what you pass as destinationAddress when you create an order, and it is what determines which rail the money goes out through. Passing the _id of the wrong registration sends the payout over the wrong rail.

Creating the order

Nothing changes in POST /orders. The rail is already fixed by the bank account you registered, so you only pass its _id in destinationAddress as usual.

Last updated on