Skip to main content
If your company has BitGo Go Network enabled, you can fund an off-ramp by sending a stablecoin settlement to Kravata through Go Network. You write the payment instructions in the notes of the settlement. Kravata checks the people involved, converts the funds to COP and pays the beneficiary in Colombia, either to a Bre-B key or to a bank account. Kravata then answers with a response settlement that tells you the result. You do not call the Kravata API to create these payments. Everything travels in the settlement.

How it works

1

Kravata enables Go Network for your company

Request it in Company sign-up under Products that require Kravata. Kravata reviews the request and enables it. Ask your Kravata point of contact which Go account to send to.
2

You send the settlement

From your Go Network account, create a settlement to Kravata’s Go account with one stablecoin transfer and put the payment instructions in the settlement notes as a JSON object (see Notes fields). Authorize the settlement on your side: Kravata waits for your authorization and rejects the payment if it does not arrive in time.
3

Kravata checks the notes and the people

Kravata validates the notes and registers the ordering customer (who sends the money) and the beneficiary (who receives the COP), if they do not exist yet. Both must pass KYC. While KYC is pending, the payment waits.
4

Kravata checks the payout destination

The Bre-B key or the bank account must exist and belong to the beneficiary.
5

Kravata creates the off-ramp in COP

When the checks pass, Kravata accepts the settlement and creates the off-ramp. Once the funds are settled, the COP payout is made to the beneficiary.
6

Kravata answers

Kravata sends you a response settlement with a receipt or a rejection, matched to your payment by end_to_end_id.
Send exactly one asset transfer per settlement, in an asset Kravata accepts for your company. Any other settlement is rejected with UNSUPPORTED_ASSET.

Quote and rate

quote_id is optional. If you send it, it must be a valid quote UUID issued to your company and still valid, and the off-ramp uses that quote. If it is not valid or has expired, the payment is rejected with QUOTE_EXPIRED_OR_MISMATCH. If you leave it out, Kravata creates the off-ramp without a pre-agreed quote. The receipt always shows the amount paid and the resulting rate.

Notes fields

The notes must be a JSON object (a JSON string). Keys are lowercase with underscores. Names are split by Spanish convention when the first name and surname fields are missing: Ana Pérez gives first name Ana and surname Pérez; Juan Carlos Pérez Gómez gives Juan and Pérez. Send the explicit fields when the name does not follow that convention.

Document types

If you leave out *_customer_id_type, Kravata uses the type written in front of the number (for example CC129876528). If there is none, it uses DNI for the ordering customer and CC for the beneficiary. If the prefix and the type field disagree, the message is invalid. A CC or NIT number with letters is also invalid.

Payout destination

Bre-B key (default)

The payout goes to a Bre-B key when beneficiary_account_type is absent or has a Bre-B value: BREB, BRE-B, LLAVE, LLAVE_BREB or KEY. Put the key in beneficiary_bank_account. The key must exist and belong to the beneficiary.

Bank transfer

The payout is a bank transfer when beneficiary_account_type is SAVINGS or CHECKING (also accepted: AHORROS and CORRIENTE). In that case:
  • beneficiary_bank_code is required. See Bank codes.
  • 9999 is refused as a bank code: it is the Bre-B entry of the catalog, not a bank. For a Bre-B payout, leave beneficiary_account_type out.
  • beneficiary_bank_account is the account number, digits only. Spaces and dashes are removed before validating.
  • The account must belong to the beneficiary: the holder is checked against the beneficiary’s document.
Any other beneficiary_account_type value makes the message invalid.

Bank codes

Take the code of the bank from Get Banks (GET /api/v1/admin/banks, default type=cashout) of the Stack API, in the environment you are using.
  • Use the code, not the numeric id.
  • Banks that are not active are not accepted.
  • A code that is not in the list is rejected with BANK_NOT_SUPPORTED.

The response you receive

Kravata sends one response settlement per payment, with a small fixed transfer and a JSON message in its notes. The notes text is machine readable: received=<amount> <currency>; ref=<reference>; ramp=<id> for a receipt and rejected=<reason>; ref=<reference> for a rejection. Match the response to your payment with end_to_end_id.

Receipt

Sent when the COP payout is completed.

Rejection

Sent when the payment cannot be completed. Nothing is credited to the beneficiary, so destination_amount is 0.00.
When a payment is rejected before it is accepted, Kravata also rejects the settlement on Go Network, so your funds are not taken. Fix the cause and send a new settlement. A rejected end_to_end_id can be used again.

Rejection reasons

The reason is a fixed code. It never includes details about the people involved. Payments that need a person at Kravata, for example a manual compliance review, stay pending until they are resolved and you receive the response afterwards.