Skip to main content
Manage payouts

Available Endpoints

GET  /transactions/payout/balances     # Check Balances
POST /transactions/payout/crypto       # Create Crypto Payout
POST /transactions/payout/crypto/retry # Retry Failed Payout

Check Balances

Get available payout balances.
curl -X GET https://api.orafi.app/transactions/payout/balances \
  -H "x-api-key: your_api_key"
Response:
{
    "success": true,
    "message": "Balances retrieved successfully",
    "data": [
        {
            "coinType": "USDC",
            "balance": 35192
        }
    ]
}

Create Crypto Payout

Initiates a cryptocurrency payout.
There are two supported payout methods:
  1. Using a saved settlement account
  2. Using a direct wallet address
Only one method should be used per request.

Payout Methods

1. Settlement Account Payout

Uses a previously saved crypto settlement account. This method does not require wallet signing.
Required Fields
  • cryptoSettlementAccountId
  • amount

2. Wallet Address Payout

Sends funds directly to a wallet address. This method requires cryptographic signing to authorize the payout.
Required Fields
  • walletAddress
  • bytes
  • signature
  • amount

Request Body

amount

  • Type: number
  • Required
  • Description:
    Amount to be paid out.

cryptoSettlementAccountId

  • Type: string
  • Optional
  • Description:
    Identifier of a saved crypto settlement account used for the payout.

walletAddress

  • Type: string
  • Optional
  • Description:
    Destination wallet address for the payout.

bytes

  • Type: string
  • Optional
  • Description:
    Serialized message bytes that were signed by the wallet owner.
    Used to verify payout authorization.

signature

  • Type: string
  • Optional
  • Description:
    Cryptographic signature generated by signing the bytes message with the wallet’s private key.

save

  • Type: boolean
  • Optional
  • Description:
    Indicates whether the wallet address should be saved as a settlement account for future payouts.

Authorization Requirements

  • When using a wallet address payout, the wallet owner must sign a message.
  • The bytes and signature fields are used to verify wallet ownership.
  • Requests missing required fields for the selected payout method will be rejected.
curl -X POST https://api.orafi.app/v1/transactions/payout/crypto \
  -H "Content-Type: application/json" \
  -H "x-api-key: your_api_key" \
  -d '{
    "amount": 5000,
    "walletAddress": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e",
    "bytes": "xxx"
    "signature": "yyy
      }'
curl -X POST https://api.orafi.app/v1/transactions/payout/crypto \
  -H "Content-Type: application/json" \
  -H "x-api-key: your_api_key" \
  -d '{
    "amount": 5000,
    "cryptoSettlementAccountId": "xxx"
      }'
Response:
{
  "success": true,
  "message": "Payout created successfully",
  "data": {
    "id": "payout_abc123",
    "amount": 5000,
    "status": "INITIALIZED",
    "walletAddress": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e"
  }
}

Create Fiat Payout

Coming soon!

Retry Failed Payout

Retry a failed payout.

Request Body

payoutId

  • Type: string
  • Required
  • Description:
    Payout transaction identifier.
curl -X POST https://api.orafi.app/transactions/payout/crypto/retry \
  -H "Content-Type: application/json" \
  -H "x-api-key: your_api_key" \
  -d '{
    "payoutId": "payout_abc123"
  }'
Response:
{
  "success": true,
  "message": "Payout retried successfully"
  "data": {
    "id": "payout_abc123",
    "amount": 5000,
    "status": "INITIALIZED",
    "walletAddress": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e"
  }
}