Skip to main content

API Reference

Base URL: https://api.abroad.finance. Add X-API-Key to every call. See Integration basics for headers and enums.

For a live, grouped view of every endpoint, open the Swagger UI at https://api.abroad.finance/docs.

Quotes

Create Quote (POST /quote)

Calculate the crypto amount you need to send to deliver a target fiat amount.

Request body

FieldTypeRequiredDescription
amountnumberYesTarget amount in the fiat currency you want the recipient to receive.
crypto_currencystringYesSource cryptocurrency (USDC).
networkstringYesBlockchain network (STELLAR or SOLANA).
payment_methodstringYesPayout method (BREB, PIX).
target_currencystringYesTarget fiat currency (COP or BRL).

Example

curl -X POST https://api.abroad.finance/quote \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"amount": 400000,
"crypto_currency": "USDC",
"network": "STELLAR",
"payment_method": "BREB",
"target_currency": "COP"
}'

Response

{
"expiration_time": 1732520000,
"quote_id": "550e8400-e29b-41d4-a716-446655440000",
"value": 100.5
}

value is the crypto amount (USDC) you must send before the quote expires.


Reverse Quote (POST /quote/reverse)

Calculate how much the recipient will receive for a specific crypto amount.

Request body

FieldTypeRequiredDescription
source_amountnumberYesCrypto amount you plan to send (for example, 100 USDC).
crypto_currencystringYesSource cryptocurrency.
networkstringYesBlockchain network.
payment_methodstringYesPayout method (BREB, PIX).
target_currencystringYesTarget fiat currency.

Response

{
"expiration_time": 1732520000,
"quote_id": "550e8400-e29b-41d4-a716-446655440000",
"value": 398500
}

value is the estimated fiat amount (e.g., COP) after fees.


Transactions

Accept Transaction (POST /transaction)

Create a transaction from a quote. Returns the memo you must attach to the on-chain transfer.

Request body

FieldTypeRequiredDescription
quote_idstringYesThe ID of the quote to execute.
user_idstringYesYour internal user ID.
account_numberstringYesRecipient's account number.
bank_codestringNoOptional bank or rail identifier; provide one only if your payout rail requires it.
tax_idstringNoUser's tax ID.
redirectUrlstringNoOptional redirect after KYC.
qr_codestringNoQR code string, when applicable.

Response

{
"id": "f4a96c4c-4d1e-4ab2-a6ec-2e1b5070c5db",
"transaction_reference": "9KlsTE0eSrKm7C4bUHDF2w==",
"kycLink": null
}
KYC Requirement

If kycLink is not null, you MUST redirect the user to this URL to complete their identity verification. The transaction will remain in AWAITING_PAYMENT (or a pre-payment state) until KYC is approved.


Get Transaction Status (GET /transaction/{id})

Retrieve the latest status and memo for a transaction. Status values are described in Status lifecycle.

Response

{
"id": "f4a96c4c-4d1e-4ab2-a6ec-2e1b5070c5db",
"status": "AWAITING_PAYMENT",
"transaction_reference": "9KlsTE0eSrKm7C4bUHDF2w==",
"on_chain_tx_hash": null,
"kycLink": null,
"user_id": "test-user-01"
}

List Transactions (GET /transactions/list)

Paginated list scoped to your partner and a single external user.

Query paramTypeRequiredDescription
externalUserIdstringYesThe user_id you provided during transaction creation.
pagenumberNoPage number (default 1).
pageSizenumberNoPage size (default 20, max 100).

Response (shape):

{
"page": 1,
"pageSize": 20,
"total": 2,
"transactions": [
{
"id": "f4a96c4c-4d1e-4ab2-a6ec-2e1b5070c5db",
"status": "PAYMENT_COMPLETED",
"accountNumber": "3001234567",
"bankCode": "9101",
"quote": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"cryptoCurrency": "USDC",
"network": "STELLAR",
"paymentMethod": "BREB",
"sourceAmount": 100.5,
"targetAmount": 400000,
"targetCurrency": "COP"
}
}
]
}

Payment metadata

List banks (GET /payments/banks)

Retrieve the bank list for a payment method (defaults to BREB if omitted).

Query paramTypeRequiredDescription
paymentMethodstringNoOne of BREB, PIX.

Response:

{
"banks": [
{ "bankCode": 9101, "bankName": "BREB ENT rail" },
{ "bankCode": 9102, "bankName": "BREB TFY rail" }
]
}

For BREB, the bank list maps to its payout rails:

  • 9101 (ENT) — intra-BreB accounts
  • 9102 (TFY) — Transfiya rail

bank_code is optional for supported methods. BREB resolves rails from the account details, and PIX ignores bank_code.

Check liquidity (GET /payments/liquidity)

Returns the latest known liquidity for a payment method.

Query paramTypeRequiredDescription
paymentMethodstringNoOne of BREB, PIX.

Response:

{
"liquidity": 10000000,
"message": "Liquidity retrieved successfully",
"success": true
}

Error Codes

Status CodeDescription
400Bad Request: Invalid parameters, exceeded limits, invalid account, or expired quote.
401Unauthorized: Missing/invalid X-API-Key or bearer token.
404Not Found: Resource not found or not associated with your partner.
500Internal Server Error: Something went wrong on our end.