Inyo

Push Transaction

Push (payout) transactions transfer funds to a recipient. The Inyo Gateway supports multiple destination methods:

  • Cards — Visa Direct / Mastercard Send (domestic and cross-border)
  • ACH — US domestic bank transfers
  • PIX — Brazilian instant payments
  • Wallets — Digital wallet payouts
  • Bank Accounts — Cross-border account payouts

Endpoint

POST https://{FQDN}/v2/payment

Headers:

HeaderValue
AuthorizationBearer {accessToken}
Content-Typeapplication/json

Request Structure

Root Object

FieldTypeRequiredDescription
externalPaymentIdstringYour unique payment identifier
ipAddressstringOriginator's IPv4 or IPv6 address
paymentTypestring"PUSH"
amountobjectSource amount (what you're sending)
recipientAmountobjectDestination amount (what recipient receives)
exchangeRatenumberFX rate applied between currencies
senderobjectSender details
recipientobjectRecipient details and destination

amount Object (Source)

FieldTypeRequiredDescription
totalnumberAmount to send (must be ≥ 1)
currencystringSource currency (e.g., "USD")

recipientAmount Object (Destination)

FieldTypeRequiredDescription
totalnumberAmount recipient receives
currencystringDestination currency (ISO 4217, e.g., "BRL")

sender Object

FieldTypeRequiredDescription
customerobjectSender's personal information
customerAddressobjectSender's address

sender.customer

FieldTypeRequiredDescription
firstNamestringSender's first name
lastNamestringSender's last name
phoneNumberstringPhone (7–15 digits)
documentNumberstringID document number (5–20 digits)
documentTypestringNATIONAL_ID, PASSPORT, or DRIVER_LICENSE
emailstringEmail address
countryCodeAlpha3stringISO Alpha-3 country code (e.g., "USA")

sender.customerAddress

FieldTypeRequiredDescription
stateCodestringState abbreviation (e.g., "CA")
citystringCity name
line1stringStreet address line 1
line2stringStreet address line 2
zipCodestringPostal/ZIP code
countryCodestringISO Alpha-2 country code

recipient Object

FieldTypeRequiredDescription
customerobjectRecipient's personal information
customerAddressobjectRecipient's address
destinationobjectPayout method and details

recipient.customer

Same fields as sender.customer.

recipient.customerAddress

Same fields as sender.customerAddress.

recipient.destination — Card

FieldTypeRequiredDescription
typestring"CARD"
cardTokenIdstringTokenized card identifier

recipient.destination — PIX

FieldTypeRequiredDescription
typestring"PIX"
pix.keyTypestring"EMAIL", "PHONE", "DOCUMENT" (CPF/CNPJ), or "EVP" (random key)
pix.keystringThe PIX key value

recipient.destination — Wallet

FieldTypeRequiredDescription
typestring"WALLET"
wallet.walletIdstringWallet identifier (email or ID)

Example — Push to Card

curl -X POST https://{FQDN}/v2/payment \
  -H 'Authorization: Bearer eyJhbGciOiJSUzI1NiIs...' \
  -H 'Content-Type: application/json' \
  -d '{
    "externalPaymentId": "push-card-001",
    "ipAddress": "203.0.113.42",
    "paymentType": "PUSH",
    "amount": {
      "total": 250.00,
      "currency": "USD"
    },
    "recipientAmount": {
      "total": 250.00,
      "currency": "USD"
    },
    "sender": {
      "firstName": "Jane",
      "lastName": "Doe",
      "email": "[email protected]",
      "address": {
        "countryCode": "USA",
        "stateCode": "CA",
        "city": "Mountain View",
        "line1": "1600 Amphitheatre Pkwy",
        "line2": "",
        "zipCode": "94043"
      }
    },
    "recipient": {
      "firstName": "John",
      "lastName": "Smith",
      "email": "[email protected]",
      "dateOfBirth": "1990-05-15",
      "contactNumber": "12125551234",
      "address": {
        "countryCode": "USA",
        "stateCode": "NY",
        "city": "New York",
        "line1": "20 W 34th St",
        "line2": "",
        "zipCode": "10001"
      },
      "paymentMethod": {
        "type": "CARD",
        "cardTokenId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
      }
    }
  }'

Example — Push to PIX

curl -X POST https://{FQDN}/v2/payment \
  -H 'Authorization: Bearer eyJhbGciOiJSUzI1NiIs...' \
  -H 'Content-Type: application/json' \
  -d '{
    "externalPaymentId": "push-001",
    "ipAddress": "203.0.113.42",
    "paymentType": "PUSH",
    "amount": {
      "total": 55.00,
      "currency": "USD"
    },
    "recipientAmount": {
      "total": 273.63,
      "currency": "BRL"
    },
    "exchangeRate": 4.975,
    "sender": {
      "customer": {
        "firstName": "John",
        "lastName": "Smith",
        "phoneNumber": "5551234567",
        "documentNumber": "050482156",
        "documentType": "NATIONAL_ID",
        "email": "[email protected]",
        "countryCodeAlpha3": "USA"
      },
      "customerAddress": {
        "stateCode": "CA",
        "city": "Los Angeles",
        "line1": "4429 Candlewood St",
        "zipCode": "90712",
        "countryCode": "US"
      }
    },
    "recipient": {
      "customer": {
        "firstName": "Carlos",
        "lastName": "Silva",
        "phoneNumber": "1122334455",
        "documentNumber": "12345678900",
        "documentType": "PASSPORT",
        "email": "[email protected]",
        "countryCodeAlpha3": "BRA"
      },
      "customerAddress": {
        "stateCode": "RJ",
        "city": "Rio de Janeiro",
        "line1": "Rua das Laranjeiras 321",
        "state": "Rio de Janeiro",
        "zipCode": "22240-005"
      },
      "destination": {
        "type": "PIX",
        "pix": {
          "keyType": "DOCUMENT",
          "key": "01034861788"
        }
      }
    }
  }'

Example — Push to Wallet

curl -X POST https://{FQDN}/v2/payment \
  -H 'Authorization: Bearer eyJhbGciOiJSUzI1NiIs...' \
  -H 'Content-Type: application/json' \
  -d '{
    "externalPaymentId": "push-002",
    "ipAddress": "203.0.113.42",
    "paymentType": "PUSH",
    "amount": {
      "total": 100.00,
      "currency": "USD"
    },
    "recipientAmount": {
      "total": 497.50,
      "currency": "BRL"
    },
    "exchangeRate": 4.975,
    "sender": {
      "customer": {
        "firstName": "Jane",
        "lastName": "Doe",
        "phoneNumber": "5559876543",
        "documentNumber": "123456789",
        "documentType": "NATIONAL_ID",
        "email": "[email protected]",
        "countryCodeAlpha3": "USA"
      },
      "customerAddress": {
        "stateCode": "NY",
        "city": "New York",
        "line1": "456 Park Avenue",
        "zipCode": "10022",
        "countryCode": "US"
      }
    },
    "recipient": {
      "customer": {
        "firstName": "Ana",
        "lastName": "Souza",
        "phoneNumber": "21987654321",
        "documentNumber": "10987654321",
        "documentType": "PASSPORT",
        "email": "[email protected]",
        "countryCodeAlpha3": "BRA"
      },
      "customerAddress": {
        "stateCode": "RJ",
        "city": "Rio de Janeiro",
        "line1": "Rua da Alfândega 45",
        "state": "Rio de Janeiro",
        "zipCode": "20010-030"
      },
      "destination": {
        "type": "WALLET",
        "wallet": {
          "walletId": "[email protected]"
        }
      }
    }
  }'

Foreign Exchange

For cross-currency push payments, you can fetch real-time FX rates before submitting:

curl -X POST https://{FQDN}/foreign-exchange \
  -H 'Authorization: Bearer eyJhbGciOiJSUzI1NiIs...' \
  -H 'Content-Type: application/json' \
  -d '{
    "sourceCurrencyCode": "USD",
    "destinationCurrencyCode": "BRL"
  }'

Response:

{
  "fxId": "a1b2c3d4-...",
  "conversionRate": 4.975,
  "quoteIdExpiryDateTime": "2025-03-31T15:30:00Z"
}

Use the conversionRate as the exchangeRate in your push payment, and optionally pass fxId to lock in the quoted rate.

Note: FX quotes have a limited validity period. Check quoteIdExpiryDateTime and refresh if expired.