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_typestringYesCedula / RUC / DPI / RUT / CPF / etc.
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
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.