The PayoutIntent object
A payout intent represents a two-step payout. Step 1: Create the intent with basic details. Step 2: Submit the required fields and confirm.
note
23 of 23 fields on this object have no description yet. Field documentation lives in the SDK types (types/payout.ts) so it stays in one place — this page is generated from it.
Fields
| Field | Type | Description |
|---|---|---|
intentId REQUIRED | string | |
status REQUIRED | PayoutIntentStatus | See PayoutIntentStatus. PayoutIntentStatus |
amount REQUIRED | number | |
currency REQUIRED | string | |
country OPTIONAL | string | |
beneficiaryName REQUIRED | string | |
beneficiaryEmail OPTIONAL | string | |
payoutType OPTIONAL | string | |
isCrypto OPTIONAL | boolean | |
purpose OPTIONAL | string | |
customerId OPTIONAL | string | |
requiredFields OPTIONAL | PayoutFieldDefinition[] | |
optionalFields OPTIONAL | PayoutFieldDefinition[] | |
oneOfGroups OPTIONAL | string[][] | |
payoutId OPTIONAL | string | |
processingFee OPTIONAL | number | |
totalDebitedAmount OPTIONAL | number | |
failureReason OPTIONAL | string | |
expiresAt REQUIRED | string | |
confirmedAt OPTIONAL | string | |
completedAt OPTIONAL | string | |
createdAt REQUIRED | string | |
updatedAt OPTIONAL | string |
Example
{
"intentId": "intent_1a2b3c",
"status": "requires_confirmation",
"amount": 5000,
"currency": "USD",
"country": "string",
"beneficiaryName": "string",
"beneficiaryEmail": "customer@example.com",
"payoutType": "string",
"expiresAt": "2026-01-15T09:30:00Z",
"createdAt": "2026-01-15T09:30:00Z"
}
Usage
// Step 1
const intent = await zenpays.payouts.createPayoutIntent({
amount: 10000,
currency: 'INR',
country: 'IN',
beneficiaryName: 'John Doe',
})
// Step 2 — fill the required fields from intent.requiredFields
const result = await zenpays.payouts.confirmPayoutIntent(intent.intentId, {
beneficiaryAccount: '1234567890',
beneficiaryIfsc: 'HDFC0001234',
})