Skip to main content
Send payments follow a structured flow: discover the payment method for the destination country, collect recipient bank details, lock an exchange rate quote, then execute the transfer.
interface PayoutMethod {
  id: number;
  method_name: string;
  country: string;
  currency: string;
  base_currency: string;
}

interface BeneficiaryPaymentMethod {
  id: string;
  beneficiary_id: string;
  payment_method_id: number;
  account_details: Record<string, string>;
  created_at: string;
}

interface SendMoneyQuote {
  quote_id: string;       // valid for 5 minutes
  from_currency: string;
  to_currency: string;
  rate: string;
  amount: string;
  payout_data: {
    total_transaction_fee_in_from_currency: string;
    customer_sent_amount: string;
    customer_receive_amount: string;
    customer_total_amount_due: string;
  };
}

Step 1: Get Supported Payout Countries

Retrieve the full list of countries where Yativo supports outbound payments:
GET /payment-methods/payout/countries
curl -X GET 'https://api.yativo.com/api/v1/payment-methods/payout/countries' \
  -H 'Authorization: Bearer YOUR_ACCESS_TOKEN'
{
  "status": "success",
  "data": [
    { "country": "Chile", "iso3": "CHL" },
    { "country": "Mexico", "iso3": "MEX" },
    { "country": "Brazil", "iso3": "BRA" },
    { "country": "Peru", "iso3": "PER" },
    { "country": "Colombia", "iso3": "COL" },
    { "country": "Argentina", "iso3": "ARG" }
  ]
}

Step 2: Get Payout Methods for Destination

Retrieve available payment rails for the destination country. Use the ISO 3166-1 alpha-3 country code:
GET /payment-methods/payout?country={iso3}
country
string
required
Destination country ISO 3166-1 alpha-3 code (e.g. CHL, MEX, BRA).
curl -X GET 'https://api.yativo.com/api/v1/payment-methods/payout?country=CHL' \
  -H 'Authorization: Bearer YOUR_ACCESS_TOKEN'
{
  "status": "success",
  "data": [
    {
      "id": 21,
      "method_name": "Bank Transfer",
      "country": "CHL",
      "currency": "CLP",
      "base_currency": "CLP"
    }
  ]
}
Note the id — this is your payment_method_id for subsequent steps.

Step 3: Get Required Form Fields

Each payment method requires different recipient details (CLABE, account number, routing number, etc.). Retrieve the exact fields needed:
GET /beneficiary/form/show/{payment_method_id}
payment_method_id
number
required
The payment method ID from Step 2.
curl -X GET 'https://api.yativo.com/api/v1/beneficiary/form/show/21' \
  -H 'Authorization: Bearer YOUR_ACCESS_TOKEN'

Step 4: Create a Beneficiary

Create a beneficiary record for the recipient:
POST /beneficiaries
first_name
string
required
Recipient’s first name.
last_name
string
required
Recipient’s last name.
email
string
Recipient’s email address.
country
string
required
ISO 3166-1 alpha-3 country code.
type
string
required
"individual" or "business".
curl -X POST 'https://api.yativo.com/api/v1/beneficiaries' \
  -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: unique-key-here' \
  -d '{
    "first_name": "Carlos",
    "last_name": "Mendez",
    "email": "carlos@example.com",
    "country": "CHL",
    "type": "individual"
  }'
{
  "status": "success",
  "data": {
    "id": "benef_01HX9KZMB3F7VNQP8R2WDGT4E5",
    "first_name": "Carlos",
    "last_name": "Mendez",
    "country": "CHL"
  }
}

Step 5: Save Recipient Bank Details

Submit the recipient’s bank account details using the fields returned in Step 3:
POST /beneficiaries/payment-methods
beneficiary_id
string
required
The beneficiary ID from Step 4.
payment_method_id
number
required
Payment method ID from Step 2.
account_details
object
required
Key-value pairs of the required fields (e.g. account_number, bank_code, clabe, pix_key).
curl -X POST 'https://api.yativo.com/api/v1/beneficiaries/payment-methods' \
  -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: unique-key-here' \
  -d '{
    "beneficiary_id": "benef_01HX9KZMB3F7VNQP8R2WDGT4E5",
    "payment_method_id": 21,
    "account_details": {
      "account_number": "12345678",
      "bank_code": "001",
      "account_type": "checking"
    }
  }'
The response includes a saved payment method id for use in Step 7.
Lock in a rate before executing the payment. Quotes are valid for 5 minutes:
POST /sendmoney/quote
from_currency
string
required
Source currency code (e.g. USD, EUR).
to_currency
string
required
Destination currency code (e.g. CLP, MXN, BRL).
amount
number
required
Amount in the source currency.
curl -X POST 'https://api.yativo.com/api/v1/sendmoney/quote' \
  -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: unique-key-here' \
  -d '{
    "from_currency": "USD",
    "to_currency": "CLP",
    "amount": 500
  }'
{
  "status": "success",
  "data": {
    "quote_id": "4a72ecf8-6c8a-4e38-9971-8aabe9f785ed",
    "from_currency": "USD",
    "to_currency": "CLP",
    "rate": "950.00",
    "amount": "500.00",
    "payout_data": {
      "total_transaction_fee_in_from_currency": "11.15",
      "customer_sent_amount": "500.00",
      "customer_receive_amount": "462925.00",
      "customer_total_amount_due": "511.15"
    }
  }
}
Quotes are valid for 5 minutes. Execute the send money request within this window using the quote_id.

Step 7: Send Money

Execute the payment using the quote ID:
POST /sendmoney
quote_id
string
required
The quote ID from Step 6. Guarantees the locked rate.
curl -X POST 'https://api.yativo.com/api/v1/sendmoney' \
  -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: unique-payout-key' \
  -d '{
    "quote_id": "4a72ecf8-6c8a-4e38-9971-8aabe9f785ed"
  }'
Alternatively, initiate a quick payout directly from your wallet without a quote:
POST /wallet/payout
cURL (wallet payout)
curl -X POST 'https://api.yativo.com/api/v1/wallet/payout' \
  -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: unique-payout-key' \
  -d '{
    "debit_wallet": "USD",
    "payment_method_id": 21,
    "amount": 500
  }'

Step 8: Track the Payment

Monitor the payment status in real-time:
GET /transaction/tracking/{transactionId}
curl -X GET 'https://api.yativo.com/api/v1/transaction/tracking/a0e9e50e-81be-4bd0-9941-0151e68b9e97' \
  -H 'Authorization: Bearer YOUR_ACCESS_TOKEN'
{
  "status": "success",
  "data": [
    { "tracking_status": "Payment credited to beneficiary", "created_at": "2026-04-01T10:03:22Z" },
    { "tracking_status": "With Beneficiary's Bank/Rail", "created_at": "2026-04-01T10:02:54Z" },
    { "tracking_status": "Processed by Yativo", "created_at": "2026-04-01T10:01:45Z" },
    { "tracking_status": "Send money initiated", "created_at": "2026-04-01T10:00:00Z" }
  ]
}

Manage Saved Payment Methods

List All Saved Methods

GET /beneficiaries/payment-methods/all

Update a Saved Method

PUT /beneficiaries/payment-methods/update/{id}

Delete a Saved Method

DELETE /beneficiaries/payment-methods/delete/{id}

Transaction Purpose

For compliance, submit the purpose of a transaction after initiating it:
POST /sendmoney/purpose
Yativo supports payouts to LATAM (CHL, MEX, BRA, PER, COL, ARG), USA, and Europe. Contact your integration team for additional corridors.