<!-- ZenPays documentation · https://docs.zenpayz.com/docs/reference/objects/payout-intent -->

# 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

<ParamTable
  label="Field"
  rows={[
    { name: "intentId", type: "string", required: true },
    { name: "status", type: "PayoutIntentStatus", required: true, desc: "See PayoutIntentStatus. [PayoutIntentStatus](/docs/reference/enums/payout-status)" },
    { name: "amount", type: "number", required: true },
    { name: "currency", type: "string", required: true },
    { name: "country", type: "string", required: false },
    { name: "beneficiaryName", type: "string", required: true },
    { name: "beneficiaryEmail", type: "string", required: false },
    { name: "payoutType", type: "string", required: false },
    { name: "isCrypto", type: "boolean", required: false },
    { name: "purpose", type: "string", required: false },
    { name: "customerId", type: "string", required: false },
    { name: "requiredFields", type: "PayoutFieldDefinition[]", required: false },
    { name: "optionalFields", type: "PayoutFieldDefinition[]", required: false },
    { name: "oneOfGroups", type: "string[][]", required: false },
    { name: "payoutId", type: "string", required: false },
    { name: "processingFee", type: "number", required: false },
    { name: "totalDebitedAmount", type: "number", required: false },
    { name: "failureReason", type: "string", required: false },
    { name: "expiresAt", type: "string", required: true },
    { name: "confirmedAt", type: "string", required: false },
    { name: "completedAt", type: "string", required: false },
    { name: "createdAt", type: "string", required: true },
    { name: "updatedAt", type: "string", required: false },
  ]}
/>

## Example

```json
{
  "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

```typescript
// 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',
})
```
