Skip to content
ZytePedevelopersDashboard
DocsBeneficiaries
Beneficiaries

Create and manage payees

Map your recipient records to ZytePe payee identifiers.

Register a recipient

Create payee registers the recipient in your merchant payee vault. The source uses payee and beneficiary for the same integration concept. Preserve your own reference in external_ref and store data.id from the response.

Choose recipient details

Bank-mode payouts use bank_account_no and routing_id; UPI payouts use vpa. The create request uses vpa, while response examples contain vpa_address. Preserve those names instead of normalizing request and response shapes.

Find existing recipients

List payees provides limit and offset query parameters. Match your beneficiary records before creating duplicates; the source disallows registering the same bank account twice for a merchant.

Verify before payout

Follow bank and UPI verification for the intended method. Protect returned account and contact details as personal data; do not expose complete payee lists in a browser or logs.

Request example

Choose Node.js, Python, PHP, Ruby, Java or cURL. Run signed requests on your backend. PHP, Ruby and Java include signing directly. Java requires JDK 17 or newer.

import { signedHeaders } from './signing.mjs';
const path = `/api/v1/payees/external/create`;
const query = '';
const payload = {
  "legal_name": "Aditi Traders",
  "email_address": "ops@example.com",
  "phone_number": "9876543210",
  "bank_account_no": "123456789012",
  "routing_id": "HDFC0001234",
  "bank_name": "HDFC Bank",
  "vpa": "aditi.traders@okhdfcbank",
  "category": "business",
  "external_ref": "BENEFICIARY-42"
};
const body = JSON.stringify(payload);
const headers = signedHeaders({
  method: 'POST', path, query, body,
  keyId: process.env.ZYTEPE_API_KEY_ID,
  secret: process.env.ZYTEPE_API_SECRET,
});
headers['Content-Type'] = 'application/json';
const url = 'https://api.zytepe.com' + path + (query ? '?' + query : '');
const response = await fetch(url, { method: 'POST', headers, body });
if (!response.ok) throw new Error('Request failed: HTTP ' + response.status);
const result = await response.json();
// Store the returned identifiers securely. Do not log customer data.

Request fields

Optional fields can be omitted. Conditional fields depend on the payment method. Labels reflect the reviewed API schemas and handler checks.

legal_nameRequired

Recipient legal name.

email_addressOptional

Recipient email.

phone_numberOptional

Recipient contact number.

bank_nameOptional

Bank display name.

categoryOptional

Defaults to individual.

external_refOptional

Your beneficiary reference.

bank_account_noConditional

Required for bank-mode payouts; optional when creating a UPI-only payee.

routing_idConditional

Required with bank details for bank-mode payouts.

vpaConditional

Required for UPI payouts; optional for bank-only recipients.

Request body

JSON · request.json
{
  "legal_name": "Aditi Traders",
  "email_address": "ops@example.com",
  "phone_number": "9876543210",
  "bank_account_no": "123456789012",
  "routing_id": "HDFC0001234",
  "bank_name": "HDFC Bank",
  "vpa": "aditi.traders@okhdfcbank",
  "category": "business",
  "external_ref": "BENEFICIARY-42"
}

Example response

JSON · response
{
  "success": true,
  "message": "Payee created.",
  "data": {
    "id": "d965aa45-1952-4749-aa52-2bed21470ffd",
    "legal_name": "Aditi Traders",
    "email_address": "ops@example.com",
    "phone_number": "9876543210",
    "bank_account_no": "123456789012",
    "routing_id": "HDFC0001234",
    "vpa_address": "aditi.traders@okhdfcbank",
    "status": "active",
    "compliance_status": "pending",
    "created_at": "2026-05-03T10:30:00Z"
  }
}