Skip to main content

Create payout

Quick Reference

WhatSend an outbound payment (payout) funded by a wallet
WhyPay suppliers, partners, and customers across LATAM through a single unified endpoint
Reading Time10 min
DifficultyIntermediate
PrerequisitesAuthentication → A funded wallet → A registered merchant (when required by your account)
POST/api/v1/bank/wallet/payout/Bearer TokenCreate a payout debiting a wallet

How payouts work​

A payout is the outbound flow — money leaving the platform, the inverse of a charge. A single endpoint handles every payment rail; the type_payout field selects which one, and each type requires its matching destination object.


Payout flow​


Payout statuses​

StatusMeaningTerminal?
pendingCreated, awaiting processingNo
issuedSent to the providerNo
realizedConfirmed and settledYes
returnedReturned by the receiving bankYes
canceledCanceledYes
errorFailed during processingYes
expiredExpiredYes

Request headers​

HeaderValueRequired
AuthorizationBearer {A55_ACCESS_TOKEN}Yes
Content-Typeapplication/jsonYes

Request body​

FieldTypeRequiredDescription
wallet_uuidstring (UUID)YesWallet that will fund the payout
type_payoutstringYesPayment rail: pix, bank_transfer, ted, spei, cash_pickup
valuenumber (float)YesAmount to send. Must be greater than zero
descriptionstringYesFree-text description of the payout
currencystringNoISO 4217 code. Defaults to the wallet currency when omitted
merchant_idstring (UUID)NoMerchant the payout belongs to. Required when your account is configured with merchants
transaction_referencestringNoExternal idempotency key (scoped to the wallet). A UUID is generated when omitted
schedule_datestringNoYYYY-MM-DD to schedule the payout
country_codestringNoISO 3166-1 alpha-2 of the destination
providersstring[]NoProvider UUIDs to force routing to specific providers
webhook_urlstring (URL)NoURL notified on status changes
pix_destinationobjectConditionalRequired when type_payout is pix
bank_destinationobjectConditionalRequired when type_payout is bank_transfer, ted, or spei
cash_destinationobjectConditionalRequired when type_payout is cash_pickup

pix_destination​

FieldTypeRequiredDescription
pix_address_keystringYesPIX key value
pix_address_key_typestringYesPIX key type (cpf, cnpj, email, phone, evp)
beneficiary_namestringNoBeneficiary full name
beneficiary_tax_idstringNoBeneficiary CPF/CNPJ. Required for email/phone/evp keys; optional for cpf/cnpj keys (uses the key as document)

bank_destination (bank_transfer / ted / spei)​

FieldTypeRequiredDescription
country_codestringYesISO-3166 alpha-2 or alpha-3
beneficiary_namestringYesBeneficiary first name
beneficiary_last_namestringYesBeneficiary last name
document_typestringYesBeneficiary document type: CPF, CNPJ, DNI, CUIT, CUIL, CURP, RFC, INE, PAS
beneficiary_tax_idstringYesBeneficiary document number
account_numberstringConditionalAccount number, CBU/CVU, CCI, CLABE, etc. Required unless bank_alias is used
bank_aliasstringConditionalArgentina CBU alias (6-20 chars). Alternative to account_number
bank_codestringNoProvider bank code. Brazil TED: 8-digit ISPB or COMPE (e.g. 001)
account_typestringNoSavings / Current / Cash / RUT / etc. (varies by country)
account_agencystringNoBank branch/agency (Brazil TED)
bank_namestringNoBank name
beneficiary_emailstringNoRequired when account_type is Cash
beneficiary_phonestringNoBeneficiary phone
expiration_datestringNoYYYY-MM-DD (cash networks)

cash_destination (cash_pickup)​

FieldTypeRequiredDescription
country_codestringYesDestination country
bank_codestringYesCash network code (e.g. 010, 456)
beneficiary_namestringYesBeneficiary name
beneficiary_emailstringYesThe pickup code is sent to this email
document_typestringYesBeneficiary document type: CPF, CNPJ, DNI, CUIT, CUIL, CURP, RFC, INE, PAS
beneficiary_tax_idstringYesBeneficiary document number
beneficiary_last_namestringNoBeneficiary last name
beneficiary_phonestringNoBeneficiary phone
expiration_datestringNoYYYY-MM-DD pickup expiration

Response fields​

FieldTypeDescription
payout_uuidstringInternal payout identifier
external_idstringProvider's payout id
statusstringCurrent payout status (see table above)
type_payoutstringPayout rail used
amountnumber (float)Payout amount
feenumber (float)Provider fee
currencystringISO 4217 currency
descriptionstringPayout description
country_codestringDestination country
beneficiary_namestringBeneficiary name
transaction_referencestringIdempotency key used
submitted_datestringDate sent to the provider
confirmed_datestringDate confirmed
schedule_datestringScheduled date, when applicable
payment_codestringCash pickup code (cash payouts only)
authorization_codestringProvider authorization code, when available
authorization_datestringAuthorization date, when available
transaction_idstringProvider transaction id, when available
destinationobjectEcho of the destination data
messagearrayProvider/processing messages
createdstringISO 8601 creation timestamp
updatedstringISO 8601 last update timestamp

Error responses​

StatusCodeDescription
400errors.payout.validate_errorPayload failed validation (missing type_payout, value <= 0, missing destination fields, etc.)
400errors.payout.destination_invalidDestination object is invalid for the chosen type_payout
400errors.payout.provider_not_validNo eligible provider for this payout
400errors.wallet.payout_already_existsA payout with the same transaction_reference already exists for this wallet
400errors.wallet.daily_transaction_limit_exceededThe wallet daily limit would be exceeded
400errors.wallet.merchant_invalidThe merchant does not belong to the wallet's account
401unauthorizedInvalid or expired Bearer token
404errors.wallet.not_foundWallet not found
404errors.payout.merchant_not_foundMerchant not found
422errors.payout.insufficient_balanceThe wallet balance is insufficient for this payout

Code examples​

PIX out (Brazil)​

curl -s -X POST "https://sandbox.api.a55.tech/api/v1/bank/wallet/payout/" \
-H "Authorization: Bearer $A55_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"wallet_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"type_payout": "pix",
"value": 100.00,
"currency": "BRL",
"description": "Supplier payment #2048",
"transaction_reference": "PAY-2048",
"webhook_url": "https://your-app.com/webhooks/a55/payouts",
"pix_destination": {
"pix_address_key": "joao@example.com",
"pix_address_key_type": "email",
"beneficiary_name": "João Silva",
"beneficiary_tax_id": "12345678901"
}
}'

TED (Brazil)​

curl -s -X POST "https://sandbox.api.a55.tech/api/v1/bank/wallet/payout/" \
-H "Authorization: Bearer $A55_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"wallet_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"type_payout": "ted",
"value": 500.00,
"currency": "BRL",
"description": "Vendor settlement",
"transaction_reference": "PAY-2049",
"bank_destination": {
"country_code": "BR",
"bank_code": "341",
"account_type": "checking",
"account_number": "12345-6",
"account_agency": "0001",
"bank_name": "Itaú",
"beneficiary_name": "Maria",
"beneficiary_last_name": "Costa",
"document_type": "CPF",
"beneficiary_tax_id": "98765432100"
}
}'

SPEI (Mexico)​

curl -s -X POST "https://sandbox.api.a55.tech/api/v1/bank/wallet/payout/" \
-H "Authorization: Bearer $A55_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"wallet_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"type_payout": "spei",
"value": 1500.00,
"currency": "MXN",
"description": "Payout MXN",
"transaction_reference": "PAY-2050",
"bank_destination": {
"country_code": "MX",
"account_number": "012180012345678901",
"beneficiary_name": "Carlos",
"beneficiary_last_name": "Hernández",
"document_type": "RFC",
"beneficiary_tax_id": "HEGC800101XXX"
}
}'

Bank transfer (LATAM)​

curl -s -X POST "https://sandbox.api.a55.tech/api/v1/bank/wallet/payout/" \
-H "Authorization: Bearer $A55_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"wallet_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"type_payout": "bank_transfer",
"value": 250.00,
"currency": "ARS",
"description": "Payout Argentina",
"transaction_reference": "PAY-2051",
"bank_destination": {
"country_code": "AR",
"bank_alias": "mi.alias.cbu",
"beneficiary_name": "Lucía",
"beneficiary_last_name": "Gómez",
"document_type": "DNI",
"beneficiary_tax_id": "20304050607"
}
}'

Cash pickup (Ecuador)​

curl -s -X POST "https://sandbox.api.a55.tech/api/v1/bank/wallet/payout/" \
-H "Authorization: Bearer $A55_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"wallet_uuid": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"type_payout": "cash_pickup",
"value": 200.00,
"currency": "USD",
"description": "Cash pickup payout",
"transaction_reference": "PAY-2052",
"cash_destination": {
"country_code": "EC",
"bank_code": "456",
"beneficiary_name": "Pedro",
"beneficiary_email": "pedro@example.com",
"document_type": "Cedula",
"beneficiary_tax_id": "1234567890"
}
}'

Complete response example​

PIX payout accepted​

{
"payout_uuid": "9b1f0c88-3a3c-4f2f-9d6e-1f0a2d4e88c1",
"external_id": "MN-20260616-0001",
"status": "issued",
"type_payout": "pix",
"amount": 100.00,
"fee": 0.50,
"currency": "BRL",
"description": "Supplier payment #2048",
"country_code": "BR",
"beneficiary_name": "João Silva",
"transaction_reference": "PAY-2048",
"submitted_date": "2026-06-16",
"confirmed_date": null,
"schedule_date": null,
"destination": {
"pix_address_key": "joao@example.com",
"pix_address_key_type": "email"
},
"message": [],
"created": "2026-06-16T18:00:00Z",
"updated": "2026-06-16T18:00:00Z"
}

Cash pickup accepted (includes pickup code)​

{
"payout_uuid": "5c2a13f0-5e74-4b21-9c6a-2bd9d9b0aa10",
"external_id": "MN-20260616-0002",
"status": "issued",
"type_payout": "cash_pickup",
"amount": 200.00,
"fee": 1.20,
"currency": "USD",
"description": "Cash pickup payout",
"country_code": "EC",
"beneficiary_name": "Pedro",
"transaction_reference": "PAY-2052",
"payment_code": "EC-PICKUP-7788",
"message": [],
"created": "2026-06-16T18:05:00Z",
"updated": "2026-06-16T18:05:00Z"
}
Always confirm via webhook

The synchronous response returns the initial status. A payout typically moves from issued to realized asynchronously. Set webhook_url and treat the webhook as the source of truth for the final outcome. See Payout webhook.