Available Combinations
How It Works
Each combination defines a specific type of transaction. The quote calculates the price and fees, while the ticket executes the operation.
Elements of a Combination
- Input (What you provide) - The source of funds
- Output (What you receive) - The destination of funds
- Quote - Parameters to get the price
- Ticket - Specific fields to execute
Modifying for Different Results
To change the amount: Use inputAmount or outputAmount in the quote
To change the currency: Modify inputCurrency and outputCurrency
To change the network: Adjust inputPaymentMethod and outputPaymentMethod
To change the method: Choose between PERMIT or TRANSFER (for blockchain operations only)
PIX to Crypto
BRL → BRLA/USDC/USDT/EURC
Input: R$ via PIX Output: Tokens on blockchain
You can register frequently used wallets in Beneficiary Wallets to avoid entering wallet details every time. Simply use the beneficiaryWalletId instead of providing wallet details directly.
Quote Parameters
| Parameter | Value | Description |
|---|---|---|
inputCurrency | BRL | The currency you are paying with |
inputPaymentMethod | PIX | The payment method you are using |
inputAmount | 100 | The amount you want to pay |
outputCurrency | BRLA | The currency you want to receive |
outputPaymentMethod | INTERNAL | The blockchain where you want to receive tokens |
Ticket Request
{
"quoteToken": "eyJ...",
"ticketBlockchainOutput": {
"beneficiaryWalletId": "uuid-of-registered-wallet"
},
"customDuration": 600
}
Request Parameters
| Parameter | Type | Description |
|---|---|---|
beneficiaryWalletId | string (UUID) | Registered wallet ID to receive tokens |
customDuration | integer | Operation expiration time in seconds. Minimum 300 (5 minutes). For currency conversion operations (inputCurrency ≠ outputCurrency): max 600 (10 minutes). For same currency operations (inputCurrency = outputCurrency): max 259200 (72 hours). |
Ticket Response
{
"brCode": "00020126580014br.gov.bcb.pix...",
"expiration": "2025-03-11T16:06:42.638410717Z",
"id": "00000000-0000-0000-0000-000000000000"
}
Response Fields
| Field | Type | Description |
|---|---|---|
brCode | string | PIX QR code for payment - user must pay this |
expiration | timestamp | ISO 8601 expiration time for the brCode |
Result: System returns a brCode for PIX payment. After payment, tokens are credited to the specified wallet.
Fiat currencies can have a maximum of 2 decimal places, while blockchain currencies can have up to 6 decimal places.
Crypto to PIX
BRLA/USDC/USDT/EURC → BRL
Input: Tokens from blockchain Output: R$ via PIX
You can register frequently used bank accounts in Beneficiary Bank Accounts to avoid entering account details every time. Simply use the beneficiaryBrlBankAccountId instead of providing account details directly.
Option 1: Using Registered Beneficiary Account
Quote Parameters
| Parameter | Value | Description |
|---|---|---|
inputCurrency | BRLA | The currency you are paying with |
inputPaymentMethod | INTERNAL | The blockchain you are sending from |
inputAmount | 100 | The amount you want to convert |
outputCurrency | BRL | The currency you want to receive |
outputPaymentMethod | PIX | The payment method for receiving funds |
blockchainSendMethod | string | Defines the blockchain transaction type. Can be TRANSFER or PERMIT. Required for blockchain inputs. |
Ticket Request
{
"quoteToken": "eyJ...",
"ticketBrlPixOutput": {
"beneficiaryBrlBankAccountId": "uuid-of-registered-account",
"pixMessage": "optional PIX message"
}
}
Request Parameters
| Parameter | Type | Description |
|---|---|---|
beneficiaryBrlBankAccountId | string (UUID) | Registered BRL bank account ID for receiving PIX |
pixMessage | string (optional) | Optional message to include in PIX transaction |
Ticket Response
{
"id": "55ea4ebf-60fb-4c47-8a97-00f7659f4762"
}
Option 2: Using PIX Key
Quote Parameters
| Parameter | Value | Description |
|---|---|---|
inputCurrency | BRLA | The currency you are paying with |
inputPaymentMethod | INTERNAL | The blockchain you are sending from |
inputAmount | 100 | The amount you want to convert |
outputCurrency | BRL | The currency you want to receive |
outputPaymentMethod | PIX | The payment method for receiving funds |
blockchainSendMethod | PERMIT | Defines the blockchain transaction type |
Ticket Request
{
"quoteToken": "eyJ...",
"ticketBrlPixOutput": {
"pixKey": "50.224.164/0001-70",
"pixMessage": "optional PIX message"
}
}
Request Parameters
| Parameter | Type | Description |
|---|---|---|
pixKey | string | PIX key for receiving funds (CPF, CNPJ, email, phone, or random key) |
pixMessage | string (optional) | Optional message to include in PIX transaction |
Ticket Response
{
"id": "55ea4ebf-60fb-4c47-8a97-00f7659f4762"
}
Option 3: Using Full Bank Account Details
Quote Parameters
| Parameter | Value | Description |
|---|---|---|
inputCurrency | BRLA | The currency you are paying with |
inputPaymentMethod | INTERNAL | The blockchain you are sending from |
inputAmount | 100 | The amount you want to convert |
outputCurrency | BRL | The currency you want to receive |
outputPaymentMethod | PIX | The payment method for receiving funds |
blockchainSendMethod | PERMIT | Defines the blockchain transaction type |
Ticket Request
{
"quoteToken": "eyJ...",
"pixMessage": "optional PIX message",
"ticketBrlPixOutput": {
"userName": "John Doe",
"bankCode": "260",
"branchCode": "0001",
"accountNumber": "12345678",
"accountType": "checking",
"taxId": "123.456.789-00"
}
}
Request Parameters
| Parameter | Type | Description |
|---|---|---|
userName | string | Full name of the account holder |
bankCode | string | Bank code (3 or 8 digits) |
branchCode | string | Branch code of the bank account |
accountNumber | string | Account number |
accountType | string | Account type: checking, payment, savings, or salary |
taxId | string | CPF or CNPJ of the account holder |
pixMessage | string (optional) | Optional message to include in PIX transaction |
Ticket Response
{
"id": "55ea4ebf-60fb-4c47-8a97-00f7659f4762"
}
Choose only one option: either beneficiaryBrlBankAccountId, pixKey, full bank account details, or brCode — not multiple options together.
Result: PIX is sent automatically to the specified bank account, PIX key, or brCode is generated for payment.
Just like for input, fiat currencies can have a maximum of 2 decimal places, while blockchain currencies can have up to 6 decimal places.
Option 4: Using brCode
Quote Parameters
| Parameter | Value | Description |
|---|---|---|
inputCurrency | BRLA | The currency you are paying with |
inputPaymentMethod | INTERNAL | Payment method (subaccount's internal balance) |
inputAmount | 8.550804 | The amount you want to convert |
outputCurrency | BRL | Currency in which the brCode will be paid |
outputPaymentMethod | PIX-BRCODE | Payment method for the payout (via PIX brCode) |
inputThirdParty | false | Indicates funds come from the subaccount itself |
outputThirdParty | false | Set to true if the brCode is paid to a third party |
blockchainSendMethod | PERMIT | Specifies that the transfer is automatically handled |
outputBrCode | 00020101021226890014br.gov.bcb.pix2567brcode-h.sandbox.starkinfra.com/v2/... | The brCode that the user will pay |
Ticket Request
{
"quoteToken": "eyJ...",
"externalId": "your-reference-id"
}
Request Parameters
| Parameter | Type | Description |
|---|---|---|
externalId | string | Your reference ID for tracking this transaction |
Ticket Response
{
"id": "a14d6b53-e573-4e68-b34a-2a1b717eb448"
}
Some BrCodes do not have a specified value. In such cases, provide either the inputAmount or the outputAmount—only one amount is allowed, so do not include both.
USD to Crypto
USD → USDC/USDT
Input: $ via WIRE/ACH Output: Tokens on blockchain
You can register frequently used USD bank accounts in Beneficiary Bank Accounts to avoid entering account details every time. Simply use the beneficiaryUsdBankAccountId instead of providing account details directly.
Quote Parameters
| Parameter | Value | Description |
|---|---|---|
inputCurrency | USD | The currency you are paying with |
inputPaymentMethod | WIRE | The payment method you are using |
inputAmount | 100 | The amount you want to convert |
outputCurrency | USDC | The currency you want to receive |
outputPaymentMethod | INTERNAL | The blockchain where you want to receive tokens |
Ticket Request
{
"quoteToken": "eyJ...",
"ticketUsdWireOutput": {
"beneficiaryUsdBankAccountId": "uuid-of-usd-account"
}
}
Request Parameters
| Parameter | Type | Description |
|---|---|---|
beneficiaryUsdBankAccountId | string (UUID) | Registered USD bank account ID to receive WIRE |
Ticket Response
{
"id": "bc4a2582-0204-4827-9ddf-3a77ea59a0d1",
"usdDepositInstructions": {
"accountHolderName": "BRLA Digital LTDA",
"bankAccountNumber": "218939188578",
"bankRoutingNumber": "101019644",
"accountType": "CHECKING",
"bankName": "Lead Bank",
"bankAddress": "1801 Main St., Kansas City, MO 64108",
"depositMessage": "BRGWSSY9E6WEKTS4RTJ6",
"paymentRail": "WIRE"
}
}
Response Fields
| Field | Type | Description |
|---|---|---|
usdDepositInstructions.accountHolderName | string | Account holder name to send USD to |
usdDepositInstructions.bankAccountNumber | string | Bank account number for deposit |
usdDepositInstructions.bankRoutingNumber | string | ABA routing number |
usdDepositInstructions.accountType | string | Type of account (e.g., CHECKING) |
usdDepositInstructions.bankName | string | Name of the receiving bank |
usdDepositInstructions.bankAddress | string | Physical address of the bank |
usdDepositInstructions.depositMessage | string | Reference message for the deposit |
usdDepositInstructions.paymentRail | string | Payment method used (WIRE or ACH) |
Result: System returns WIRE deposit instructions. After bank confirmation, tokens are credited.
For USD input transactions, you benefit from direct 1:1 conversion to stablecoins without exchange rate fluctuations, making it ideal for preserving value when moving from fiat to crypto.
USD Payment Methods Characteristics
When working with USD transactions, it's important to understand the differences between the available payment methods and how currency conversion works.
Payment Method Differences
WIRE Transfers:
- Faster processing - Typically settled within hours
- Higher fees - More expensive due to the expedited nature
- Best for: Urgent transfers or large amounts where speed is prioritized
ACH Transfers:
- Lower fees - More cost-effective option
- Slower settlement - Can take 1-3 business days to process
- Best for: Regular transfers where cost efficiency is more important than speed
Currency Conversion Rules
For Input Transactions (Deposits):
- No currency exchange - USD deposits maintain their value
- 1:1 conversion to crypto - USD converts directly to stablecoins at a 1:1 ratio
- Example: Depositing $100 USD will give you $100 worth of USDC/USDT
For Output Transactions (Withdrawals):
- Normal exchange rates apply - Standard market rates and fees
- Currency conversion - When converting from other currencies to USD
Crypto to USD
USDC/USDT → USD
Input: Tokens from blockchain Output: $ via WIRE/ACH
You can register frequently used USD bank accounts in Beneficiary Bank Accounts to avoid entering account details every time. Simply use the beneficiaryUsdBankAccountId instead of providing account details directly.
Quote Parameters
| Parameter | Value | Description |
|---|---|---|
inputCurrency | USDC | The currency you are paying with |
inputPaymentMethod | INTERNAL | The blockchain you are sending from |
inputAmount | 100 | The amount you want to convert |
outputCurrency | USD | The currency you want to receive |
outputPaymentMethod | WIRE | The payment method for receiving funds |
blockchainSendMethod | PERMIT | Defines the blockchain transaction type |
Ticket Request
{
"quoteToken": "eyJ...",
"ticketUsdOutput": {
"beneficiaryUsdBankAccountId": "uuid-of-usd-account",
"wireMessage": "Payment reference"
}
}
Request Parameters
| Parameter | Type | Description |
|---|---|---|
beneficiaryUsdBankAccountId | string (UUID) | Registered USD bank account ID to receive WIRE |
wireMessage | string (optional) | Reference message for the WIRE transfer |
Ticket Response
{
"id": "55ea4ebf-60fb-4c47-8a97-00f7659f4762"
}
Result: WIRE is sent automatically to the bank account.
For USD input transactions, you benefit from direct 1:1 conversion to stablecoins without exchange rate fluctuations, making it ideal for preserving value when moving from fiat to crypto.
USD Output Operations
Crypto → USD (WIRE Transfer)
Input: Tokens from blockchain Output: $ via WIRE
You can register frequently used USD bank accounts in Beneficiary Bank Accounts to avoid entering account details every time. Simply use the beneficiaryUsdBankAccountId instead of providing account details directly.
Ticket Request
{
"quoteToken": "eyJ...",
"ticketUsdOutput": {
"beneficiaryUsdBankAccountId": "00000000-0000-0000-0000-000000000000",
"wireMessage": "Payment for services"
}
}
Request Parameters
| Parameter | Type | Description |
|---|---|---|
beneficiaryUsdBankAccountId | string (UUID) | Registered USD bank account ID to receive WIRE |
wireMessage | string (optional) | Reference message for the WIRE transfer |
Ticket Response
{
"id": "55ea4ebf-60fb-4c47-8a97-00f7659f4762"
}
Result: WIRE is sent automatically to the specified bank account.
Crypto → USD (ACH Transfer)
Input: Tokens from blockchain Output: $ via ACH
You can register frequently used USD bank accounts in Beneficiary Bank Accounts to avoid entering account details every time. Simply use the beneficiaryUsdBankAccountId instead of providing account details directly.
Ticket Request
{
"quoteToken": "eyJ...",
"ticketUsdOutput": {
"beneficiaryUsdBankAccountId": "00000000-0000-0000-0000-000000000000",
"achReference": "REF123456"
}
}
Request Parameters
| Parameter | Type | Description |
|---|---|---|
beneficiaryUsdBankAccountId | string (UUID) | Registered USD bank account ID to receive ACH |
achReference | string (optional) | Reference code for the ACH transfer |
Ticket Response
{
"id": "55ea4ebf-60fb-4c47-8a97-00f7659f4762"
}
Result: ACH transfer is sent automatically to the specified bank account.
EUR Output Operations
Crypto → EUR (SEPA Transfer)
Input: EURC tokens from blockchain Output: € via SEPA
You can register frequently used EUR bank accounts in Beneficiary Bank Accounts to avoid entering account details every time. Simply use the beneficiaryEurBankAccountId instead of providing account details directly.
Ticket Request
{
"quoteToken": "eyJ...",
"ticketEurSepaOutput": {
"beneficiaryEurBankAccountId": "00000000-0000-0000-0000-000000000000",
"sepaReference": "Payment reference"
}
}
Request Parameters
| Parameter | Type | Description |
|---|---|---|
beneficiaryEurBankAccountId | string (UUID) | Registered EUR bank account ID to receive SEPA transfer |
sepaReference | string (optional) | Reference code for the SEPA transfer |
Ticket Response
{
"id": "55ea4ebf-60fb-4c47-8a97-00f7659f4762"
}
Result: SEPA transfer is sent automatically to the bank account.
EUR to Crypto
EUR → EURC
Input: € via SEPA Output: Tokens on blockchain
You can register frequently used EUR bank accounts in Beneficiary Bank Accounts to avoid entering account details every time. Simply use the beneficiaryEurBankAccountId instead of providing account details directly.
Quote Parameters
| Parameter | Value | Description |
|---|---|---|
inputCurrency | EUR | The currency you are paying with |
inputPaymentMethod | SEPA | The payment method you are using |
inputAmount | 100 | The amount you want to convert |
outputCurrency | EURC | The currency you want to receive |
outputPaymentMethod | INTERNAL | The blockchain where you want to receive tokens |
Ticket Request
{
"quoteToken": "eyJ...",
"ticketEurSepaOutput": {
"beneficiaryEurBankAccountId": "uuid-of-eur-account"
}
}
Request Parameters
| Parameter | Type | Description |
|---|---|---|
beneficiaryEurBankAccountId | string (UUID) | Registered EUR bank account ID to receive SEPA deposit instructions |
Ticket Response
{
"id": "cedc708c-3430-49c7-b100-451910e85967",
"eurDepositInstructions": {
"bankBeneficiaryName": "JANE",
"iban": "IE33MODR99035504937309",
"bic": "MODRIE22XXX",
"bankName": "Modulr Finance, Ireland Branch",
"depositMessage": "BRGGM5DASSH96PRPYKZJ",
"paymentRail": "SEPA",
"currency": "EUR"
}
}
Response Fields
| Field | Type | Description |
|---|---|---|
eurDepositInstructions.bankBeneficiaryName | string | Account holder name to send EUR to |
eurDepositInstructions.iban | string | IBAN for the receiving bank account |
eurDepositInstructions.bic | string | BIC (SWIFT) code for SEPA transfer |
eurDepositInstructions.bankName | string | Name of the receiving bank |
eurDepositInstructions.depositMessage | string | Reference message for the deposit |
eurDepositInstructions.paymentRail | string | Payment method used (SEPA) |
eurDepositInstructions.currency | string | Currency code (EUR) |
Result: System returns SEPA deposit instructions. After bank confirmation, EURC tokens are credited.
For EUR input transactions, you benefit from direct 1:1 conversion to EURC without exchange rate fluctuations, making it ideal for preserving value when moving from fiat to crypto.
EUR Payment Methods Characteristics
Currency Conversion Rules
For Input Transactions (Deposits):
- No currency exchange - EUR deposits maintain their value
- 1:1 conversion to crypto - EUR converts directly to stablecoins at a 1:1 ratio
- Example: Depositing €100 EUR will give you €100 worth of EURC
For Output Transactions (Withdrawals):
- Normal exchange rates apply - Standard market rates and fees
- Currency conversion - When converting from other currencies to EURC
Crypto to EUR
EURC → EUR
Input: EURC tokens from blockchain Output: € via SEPA
You can register frequently used EUR bank accounts in Beneficiary Bank Accounts to avoid entering account details every time. Simply use the beneficiaryEurBankAccountId instead of providing account details directly.
Quote Parameters
| Parameter | Value | Description |
|---|---|---|
inputCurrency | EURC | The currency you are paying with |
inputPaymentMethod | INTERNAL | The blockchain you are sending from |
inputAmount | 100 | The amount you want to convert |
outputCurrency | EUR | The currency you want to receive |
outputPaymentMethod | SEPA | The payment method for receiving funds |
blockchainSendMethod | PERMIT | Defines the blockchain transaction type |
Ticket Request
{
"quoteToken": "eyJ...",
"ticketEurSepaOutput": {
"beneficiaryEurBankAccountId": "uuid-of-eur-account",
"sepaReference": "Payment reference"
}
}
Request Parameters
| Parameter | Type | Description |
|---|---|---|
beneficiaryEurBankAccountId | string (UUID) | Registered EUR bank account ID to receive SEPA transfer |
sepaReference | string (optional) | Reference code for the SEPA transfer |
Ticket Response
{
"id": "55ea4ebf-60fb-4c47-8a97-00f7659f4762"
}
Result: SEPA transfer is sent automatically to the bank account.
For EUR output transactions, you benefit from standard market rates and fees when converting from crypto to EUR.
ARS to Crypto
ARS → ARSA
Input: ARS via Bank Transfer Output: ARSA tokens on blockchain
You can register frequently used ARS bank accounts in Beneficiary Bank Accounts to avoid entering account details every time. Simply use the beneficiaryArsBankAccountId instead of providing account details directly.
Quote Parameters
| Parameter | Value | Description |
|---|---|---|
inputCurrency | ARS | Argentine Peso |
inputPaymentMethod | BANK-TRANSFER | Bank transfer method |
inputAmount | 500 | Amount in ARS |
outputCurrency | ARSA | ARSA token |
outputPaymentMethod | INTERNAL | Blockchain (internal network) |
blockchainSendMethod | PERMIT | Transaction type (PERMIT or TRANSFER) |
Ticket Request
{
"quoteToken": "eyJ...",
"ticketArsInput": {
"senderCuit": "20123456781"
},
"ticketBlockchainOutput": {
"beneficiaryWalletId": "uuid-of-registered-wallet"
}
}
Request Parameters
| Parameter | Type | Description |
|---|---|---|
senderCuit | string | CUIT of the ARS account sender (11 digits) |
beneficiaryWalletId | string (UUID) | Registered wallet ID to receive tokens |
Ticket Response
{
"id": "00000000-0000-0000-0000-000000000000",
"argentineFiatSenderInfo": {
"cuit": "20123456781"
},
"blockchainReceiverInfo": {
"walletAddress": "0x1234567890123456789012345678901234567890"
}
}
Response Fields
| Field | Type | Description |
|---|---|---|
argentineFiatSenderInfo.cuit | string | CUIT confirmed from the ARS transaction |
blockchainReceiverInfo.walletAddress | string | Wallet address where tokens will be received |
Result: System processes ARS bank transfer. After bank confirmation, ARSA tokens are credited to your wallet.
ARS → BRLA/USDC/USDT/EURC
Input: ARS via Bank Transfer Output: Tokens on blockchain
Quote Parameters
| Parameter | Value | Description |
|---|---|---|
inputCurrency | ARS | Argentine Peso |
inputPaymentMethod | BANK-TRANSFER | Bank transfer method |
inputAmount | 1000 | Amount in ARS |
outputCurrency | BRLA | Token currency (BRLA, USDC, USDT, or EURC) |
outputPaymentMethod | INTERNAL | Blockchain (internal network) |
blockchainSendMethod | TRANSFER | Transaction type |
Ticket Request
{
"quoteToken": "eyJ...",
"ticketArsInput": {
"senderCuit": "20123456781"
},
"ticketBlockchainOutput": {
"walletChain": "POLYGON",
"walletAddress": "0xabcdefabcdefabcdefabcdefabcdefabcdefabcd"
}
}
Request Parameters
| Parameter | Type | Description |
|---|---|---|
senderCuit | string | CUIT of the ARS account sender (11 digits) |
walletChain | string | Blockchain to receive tokens on (e.g., POLYGON, ETHEREUM, CELO) |
walletAddress | string | Wallet address on the specified chain |
Ticket Response
{
"id": "55ea4ebf-60fb-4c47-8a97-00f7659f4762"
}
Result: ARS transferred via bank. After confirmation, tokens are credited to your blockchain wallet.
Crypto to ARS
ARSA/BRLA/USDC/USDT/EURC → ARS
Input: Tokens from blockchain Output: ARS via Bank Transfer
You can register frequently used ARS bank accounts in Beneficiary Bank Accounts to avoid entering account details every time. Simply use the beneficiaryArsBankAccountId instead of providing account details directly.
Quote Parameters
| Parameter | Value | Description |
|---|---|---|
inputCurrency | BRLA | Token currency (ARSA, BRLA, USDC, USDT, or EURC) |
inputPaymentMethod | INTERNAL | Blockchain you are sending from |
outputAmount | 1000 | Output in ARS (note: use outputAmount for ARS output) |
outputCurrency | ARS | Argentine Peso |
outputPaymentMethod | BANK-TRANSFER | Bank transfer method |
blockchainSendMethod | PERMIT | Defines the blockchain transaction type |
Ticket Request
{
"quoteToken": "eyJ...",
"blockchainSenderInfo": {
"walletAddress": "0x1234567890123456789012345678901234567890",
"r": "0x...",
"s": "0x...",
"v": 28,
"nonce": 1,
"deadline": 1700000000
},
"ticketArsOutput": {
"beneficiaryArsBankAccountId": "550e8400-e29b-41d4-a716-446655440000"
}
}
Request Parameters
| Parameter | Type | Description |
|---|---|---|
beneficiaryArsBankAccountId | string (UUID) | Registered ARS bank account ID to receive funds |
Ticket Response
{
"id": "ticket_crypto_to_ars_001",
"blockchainSenderInfo": {
"walletAddress": "0x1234567890123456789012345678901234567890"
},
"argentineFiatReceiverInfo": {
"cvu": "0000003100002800000000",
"cuit": "27987654321",
"accountHolder": "Juan Pérez"
}
}
Response Fields
| Field | Type | Description |
|---|---|---|
blockchainSenderInfo.walletAddress | string | Wallet address from which tokens were sent |
argentineFiatReceiverInfo.cvu | string | CVU of the receiving ARS account |
argentineFiatReceiverInfo.cuit | string | CUIT of the account holder |
argentineFiatReceiverInfo.accountHolder | string | Name of the account holder |
Result: Tokens sent from wallet. After blockchain confirmation, ARS is transferred to your bank account.
ARS Output Operations
Crypto → ARS (Bank Transfer)
Input: Tokens from blockchain Output: ARS via Bank Transfer
You can register frequently used ARS bank accounts in Beneficiary Bank Accounts to avoid entering account details every time. Simply use the beneficiaryArsBankAccountId instead of providing account details directly.
Ticket Request
{
"quoteToken": "eyJ...",
"blockchainSenderInfo": {
"walletAddress": "0xabcdefabcdefabcdefabcdefabcdefabcdefabcd",
"r": "0x...",
"s": "0x...",
"v": 27,
"nonce": 5,
"deadline": 1700100000
},
"ticketArsOutput": {
"beneficiaryArsBankAccountId": "00000000-0000-0000-0000-000000000000"
}
}
Request Parameters
| Parameter | Type | Description |
|---|---|---|
beneficiaryArsBankAccountId | string (UUID) | Registered ARS bank account ID to receive transferred funds |
Ticket Response
{
"id": "55ea4ebf-60fb-4c47-8a97-00f7659f4762"
}
Result: Crypto is converted and ARS is sent automatically to the bank account.
Blockchain Input Operations
Crypto Deposit (PERMIT Method)
Input: Tokens from wallet via blockchain Output: Tokens credited to Avenia account
If the wallet you specify is an Avenia Wallet, you do not need to include the PERMIT or TRANSFER fields.
Option 1: Using PERMIT Signature
Ticket Request
{
"quoteToken": "eyJ...",
"ticketBlockchainInput": {
"walletAddress": "0xXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"permit": {
"r": "0xXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"s": "0xXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"v": 1,
"nonce": 1,
"deadline": 1234567890
}
}
}
Ticket Response
{
"id": "55ea4ebf-60fb-4c47-8a97-00f7659f4762"
}
Option 2: Using Personal Signature
Ticket Request
{
"quoteToken": "eyJ...",
"ticketBlockchainInput": {
"walletAddress": "0xXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"personal": {
"signature": "0xXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"deadline": 1234567890
}
}
}
Ticket Response
{
"id": "55ea4ebf-60fb-4c47-8a97-00f7659f4762"
}
Crypto Deposit (TRANSFER Method)
Input: Tokens transferred manually to Avenia wallet Output: Tokens credited to Avenia account
Ticket Request
{
"quoteToken": "eyJ...",
"externalId": "your-reference-id"
}
Ticket Response
{
"id": "55ea4ebf-60fb-4c47-8a97-00f7659f4762"
}
Result: You must manually send tokens to your Avenia wallet. After confirmation, tokens are credited to your account.
Blockchain Output Operations
Crypto Withdrawal
Input: Tokens from Avenia account Output: Tokens sent to external wallet
Ticket Request
{
"quoteToken": "eyJ...",
"ticketBlockchainOutput": {
"walletChain": "CELO",
"walletAddress": "0x0000000000000000000000000000000000000000",
"walletMemo": "optional memo"
}
}
Ticket Response
{
"id": "55ea4ebf-60fb-4c47-8a97-00f7659f4762"
}
Result: Tokens are sent automatically to the specified wallet address.
Cross-chain Swaps
Crypto ↔ Crypto (Different Blockchains)
Input: Tokens on one blockchain Output: Tokens on another blockchain
You can register frequently used wallets in Beneficiary Wallets to avoid entering wallet details every time. Simply use the beneficiaryWalletId instead of providing wallet details directly.
Quote Parameters
| Parameter | Value | Description |
|---|---|---|
inputCurrency | BRLA | The currency you are paying with |
inputPaymentMethod | INTERNAL | The blockchain you are sending from |
inputAmount | 100 | The amount you want to convert |
outputCurrency | USDT | The currency you want to receive |
outputPaymentMethod | CELO | The blockchain where you want to receive tokens |
blockchainSendMethod | PERMIT | Defines the blockchain transaction type |
Ticket Request - PERMIT (Recommended)
{
"quoteToken": "eyJ...",
"ticketBlockchainInput": {
"walletAddress": "0x...",
"permit": {
"r": "0x...", "s": "0x...", "v": 1,
"nonce": 1, "deadline": 1234567890
}
},
"ticketBlockchainOutput": {
"walletChain": "CELO",
"walletAddress": "0x..."
}
}
Ticket Response - PERMIT
{
"id": "55ea4ebf-60fb-4c47-8a97-00f7659f4762"
}
Ticket Request - TRANSFER (Alternative)
{
"quoteToken": "eyJ...",
"ticketBlockchainOutput": {
"walletChain": "CELO",
"walletAddress": "0x..."
}
}
Ticket Response - TRANSFER
{
"id": "55ea4ebf-60fb-4c47-8a97-00f7659f4762"
}
PERMIT: Avenia automatically pulls tokens after your signature TRANSFER: You must manually send tokens to Avenia wallet
Send Method is only applied to quotes where the input is blockchain
Refund Deposit Operations
REFUND DEPOSIT
Input: BRLA tokens from internal balance Output: BRL via PIX (return to original depositor)
The REFUND DEPOSIT allows you to return a deposit that the user made but for some reason no longer wants the funds. This operation uses the ticket generated from the original deposit.
This functionality is available only for BRL via PIX deposits that were converted to BRLA INTERNAL. To perform the refund, you must use the Ticket ID of the original deposit.
Quote Parameters
| Parameter | Value | Description |
|---|---|---|
inputCurrency | BRLA | The currency being refunded |
inputPaymentMethod | INTERNAL | The internal payment method |
outputCurrency | BRL | The currency that will be received back |
outputPaymentMethod | REFUND | The refund payment method |
inputThirdParty | false | Indicates that funds come from internal balance |
outputThirdParty | false | Indicates that refund goes to original depositor |
blockchainSendMethod | PERMIT | Defines the blockchain transaction type |
ticketRefundId | uuid | Required - Original deposit ticket ID (BRL PIX → BRLA INTERNAL) |
Ticket Request
The structure ticketBrlPixOutput passing the pixMessage is optional!
{
"quoteToken": "eyJ...",
"ticketBlockchainOutput": {
"beneficiaryWalletId": "00000000-0000-0000-0000-000000000000"
},
"ticketBrlPixOutput": {
"pixMessage": "optional PIX message"
}
}
The beneficiaryWalletId with value 00000000-0000-0000-0000-000000000000 (zeroed UUID) indicates that funds will be debited from whoever executed the operation. If a sub-account operated, funds will come out of the sub-account balance. If there is no sub-account field, funds will come out of the main account balance.
Ticket Response
{
"id": "65feb710-029f-4469-87a4-295f0d7a3855"
}
Result: The system automatically processes the refund via PIX to the original depositor, reversing the deposit operation.
ticketRefundId is the ID of the original deposit ticket that needs to be refunded. You can find this ID by querying the BRL PIX → BRLA INTERNAL deposit transaction.
Avenia Internal Account Transactions
Internal Currency Transfer (BRLA/USDC/USDT/EURC/ARSA → Same Currency)
Input: Tokens from internal balance (any currency with INTERNAL payment method) Output: Same currency tokens to another Avenia account (main or sub-account)
Internal transfers allow you to move tokens between Avenia accounts for any currency that supports the INTERNAL payment method (BRLA, USDC, USDT, EURC, ARSA). This works for transfers from main account to sub-account, sub-account to main account, and between sub-accounts. The operation follows the same process regardless of the account types involved or the currency used.
If the subAccountId={uuid} query parameter is included in the request, the operation will be executed on behalf of the specified sub-account. If omitted, the operation will be executed on behalf of the main account.
Quote Parameters
| Parameter | Value | Description |
|---|---|---|
inputCurrency | BRLA / USDC / USDT / EURC / ARSA | The currency you are paying with (must support INTERNAL payment method) |
inputPaymentMethod | INTERNAL | The internal payment method |
inputAmount | 100 | The amount you want to transfer |
outputCurrency | Same as inputCurrency | The currency you want to receive (must match input currency) |
outputPaymentMethod | INTERNAL | The internal payment method for receiving funds |
Base URL: https://api.sandbox.avenia.io:10952/v2/account/quote/fixed-rate
Ticket Request
{
"quoteToken": "eyJ...",
"ticketBlockchainOutput": {
"beneficiaryWalletId": "28b5ccec-0286-47af-ac16-12395b40f066"
}
}
Request Parameters
| Parameter | Type | Description |
|---|---|---|
quoteToken | string | Token obtained from the quote response |
beneficiaryWalletId | string (UUID) | Required - The account ID of the recipient. This must be the account ID of the destination account, whether it's another sub-account ID or the main account ID |
Base URL: https://api.sandbox.avenia.io:10952/v2/account/tickets/
If you included the subAccountId query parameter in the quote request, you must include the same subAccountId parameter in the ticket request as well.
Ticket Response
{
"id": "55ea4ebf-60fb-4c47-8a97-00f7659f4762"
}
Response Fields
| Field | Type | Description |
|---|---|---|
id | string (UUID) | Unique identifier for the ticket |
Result: Tokens are transferred automatically between the specified Avenia accounts in the same currency.
Supported Assets Table
Permitted Currencies and Payment Methods
| Currency | Valid Payment Methods |
|---|---|
| BRL | PIX, REFUND |
| USD | WIRE, ACH |
| EUR | SEPA |
| ARS | BANK-TRANSFER |
| ARSA | INTERNAL |
| BRLA | INTERNAL, BASE, CELO, ETHEREUM, GNOSIS, MOONBEAM, POLYGON |
| USDC | INTERNAL, BASE, CELO, ETHEREUM, GNOSIS, MOONBEAM, POLYGON |
| USDCe | POLYGON (input only — see note below) |
| USDT | INTERNAL, CELO, ETHEREUM, MOONBEAM, POLYGON, TRON |
| EURC | INTERNAL |
USDCe (Bridged USDC on Polygon): We only accept USDCe as an input. Sending USDCe as output is not supported.
Valid Blockchain Send Methods
| Currency | Blockchain | Valid Send Methods |
|---|---|---|
| ARSA | INTERNAL | PERMIT, TRANSFER |
| BRLA | POLYGON | PERMIT, TRANSFER |
| BRLA | MOONBEAM | PERMIT, TRANSFER |
| BRLA | CELO | PERMIT, TRANSFER |
| BRLA | GNOSIS | PERMIT, TRANSFER |
| USDC | POLYGON | PERMIT, TRANSFER |
| USDCe | POLYGON | PERMIT, TRANSFER |
| USDT | POLYGON | PERMIT, TRANSFER |
| USDC | MOONBEAM | TRANSFER |
| USDC | CELO | PERMIT, TRANSFER |
| USDT | TRON | TRANSFER |
Valid Markup Currencies
| Currency | Can be used for Markup? |
|---|---|
| BRLA | Yes |
| USDC | Yes |
| USDT | Yes |
| EURC | No |
| ARSA | No |
Practical Usage
1. Choose Your Combination
Consult the table above and identify the desired conversion.
2. Adjust Parameters
- Amount: Use
inputAmountto define how much to convert - Direction: Swap
inputCurrencyandoutputCurrencyto reverse - Network: Change
inputPaymentMethod/outputPaymentMethodto switch blockchain - Method: Select PERMIT or TRANSFER for blockchain operations
3. Consider Fees
- Conversion: Fee applied when changing currencies
- Network: Fee from the destination blockchain
- Markup: Additional fee (if applicable)
- Gas: Blockchain transaction fee
4. Execute in Sequence
- Create quote first (valid for 15 seconds)
- Create ticket immediately after (uses the quoteToken)
- Monitor via webhooks or API
Understanding Quote Response
pairName
| Field | Type | Description |
|---|---|---|
| pairName | string | Represents the currency pair used in the quote. Example: "BRLAUSDT" for a BRLA to USDT conversion. |
basePrice
| Field | Type | Description |
|---|---|---|
| basePrice | decimal | The raw exchange rate before any fees are applied. Example: "1.002" means 1 BRLA is worth 1.002 USDT. |
appliedFees
A list of fees that were applied to the transaction. Each item in the list contains:
| Field | Type | Description |
|---|---|---|
| type | string | The fee category. Example: "Markup Fee", "Gas Fee", "In Fee"... |
| description | string | A brief explanation of what the fee represents. |
| amount | decimal | The amount charged for this specific fee. |
| currency | string | The currency in which the fee is charged. |
Conclusion
By now, you should have a solid understanding of how the quote system works and how to interact with the API efficiently.
We covered:
- The structure of a quote, including input, output, markup, and blockchain-specific parameters.
- How to make requests to the quote endpoint, whether it's PIX to Token, Token to PIX, or Blockchain to Blockchain.
- How to interpret the response, including fees, exchange rates, and key transaction details.
- Common validation rules and error handling, ensuring smooth and predictable API usage.
- How to retrieve all tickets, allowing you to fetch your transaction history and track status changes.
With this knowledge, you're ready to integrate Avenia's quoting system into your own workflows, allowing you to seamlessly handle token conversions, fiat transactions, and blockchain swaps.
Now that you've mastered quotes, it's time to start creating tickets and executing transactions!