Skip to Content

Create Payout

POST/payouts

Description

Create a payout: a customer pays a beneficiary by sending crypto that is off-ramped to fiat. Returns the customer’s deposit_addresses for the customer to send to.

This is a signed request — the signature authorizes forwarding the funds to the chosen beneficiary, so a payout can never be redirected without your signing key.

⚠️

The customer must be active (KYC complete), and they may have only one open payout at a time.

Headers

HeaderDescriptionRequired
AuthorizationBearer token with your API keyyes
Content-Typeapplication/jsonyes

Request Body

NameTypeDescriptionRequired
customer_idstringThe customer sending the funds. Must be active.yes
beneficiary_idstringThe beneficiary (bank account) that receives the fiat.yes
amountnumberPayout amount in the smallest currency unit (e.g., cents for EUR).yes
currencystringThree-letter ISO currency code for the fiat payout (e.g., "EUR").yes
referencestringA reference shown on the payout (e.g., "Invoice INV-1042").no
signaturesobjectSigned authorization from the @exodus/checkout-signer SDK, keyed by chain family (e.g. { "evm": { ... } }). See Signed Requests.yes

Example Request

import { signPayout } from '@exodus/checkout-signer/evm'
 
const signatures = {
  evm: signPayout({
    privateKey: process.env.SIGNING_PRIVATE_KEY,
    beneficiaryId: 'ben_1a2b3c',
    amount: 150000,
  }),
}
 
const response = await fetch('https://checkout-api.exodus-int.com/payouts', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer sk_live_xxxxxxxxxxxxxxxx',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    customer_id: 'cus_9z8y7x',
    beneficiary_id: 'ben_1a2b3c',
    amount: 150000,
    currency: 'EUR',
    reference: 'Invoice INV-1042',
    signatures,
  }),
})

Payout signing uses the same @exodus/checkout-signer model as direct and two-step payments. The signer surface for payouts is being finalized during beta.

Response

SUCCESSFUL RESPONSE
{
  "id": "pyt_5t6u7v",
  "object": "payout",
  "status": "deposit_pending",
  "customer_id": "cus_9z8y7x",
  "beneficiary_id": "ben_1a2b3c",
  "amount": 150000,
  "currency": "EUR",
  "reference": "Invoice INV-1042",
  "deposit_addresses": [
    { "address": "0x369aF2…9EDd", "chains": ["ethereum", "arbitrum", "base", "polygon"], "tokens": ["USDC", "USDT"] },
    { "address": "GEhVdAGr…vpJMq", "chains": ["solana"], "tokens": ["USDC", "USDT"] }
  ],
  "expires_at": "2026-06-04T13:01:00Z",
  "created_at": "2026-06-04T12:05:00Z"
}

Error Responses

CUSTOMER NOT ACTIVE
{
  "error": {
    "type": "invalid_request",
    "message": "Customer must be active before creating a payout",
    "param": "customer_id"
  }
}
OPEN PAYOUT EXISTS
{
  "error": {
    "type": "invalid_request",
    "message": "Customer already has an open payout",
    "code": "open_payout_exists"
  }
}

Start building

XO

Request Demo

Schedule a call with our team

Select a product
Arrow right

Start building
Grateful

Contact Us

We're here to help