Bulk Payout Transfer
Process multiple payout transfers in a single request using an Excel file.
Bulk Payout Transfer
API Version: 3.0.0
Process multiple payouts in one request by uploading an Excel file. Generate a Bearer token first — see Create Authentication Token.
This endpoint accepts multipart/form-data. All form fields and the Excel file are required.
Endpoint
| Method | URL |
|---|---|
| POST | https://payout.payorc.com/v1/bulk/payouts |
Headers
| Header | Type | Required | Description |
|---|---|---|---|
Authorization | String | Yes | Bearer token from GET /v1/token |
Request Body (multipart/form-data)
| Field | Type | Required | Description |
|---|---|---|---|
request_id | String | Yes | Unique bulk request ID (max 30 chars) |
currency | String | Yes | 3-letter ISO currency code (e.g. INR) |
payout_file | File | Yes | Excel file (.xlsx only, max 2 MB). Form field name must be payout_file |
remark | String | Yes | Remark for the bulk request (max 30 chars; can be "") |
callback_url | String | Yes | HTTPS webhook URL (max 100 chars; can be "") |
checksum | String | Yes | 64-character SHA-256 hex (see Checksum) |
request_id must be unique per bulk upload. Duplicate IDs are rejected.
Checksum
Build the canonical string:
request_id|callback_url|remarkHash with SHA-256 and send the lowercase hex digest as checksum.
Excel File Format
The first sheet must use these exact column headers (all 14 columns are required; values may be blank where not applicable to the payment mode). Maximum 500 data rows per file.
| Column Header | Required | Description |
|---|---|---|
Reference No | Yes | Unique reference per payout row (max 35 chars) |
Payment Mode | Yes | NEFT, RTGS, IFT, IMPSP2A, or IMPSP2P |
Amount | Yes | Transfer amount (max 2 decimal places) |
Remark | Yes | Row-level remark |
Beneficiary Account Number | Conditional | 9–18 digit account number |
Beneficiary Account Type | Conditional | SA, CA, OD, etc. |
Beneficiary IFSC | Conditional | IFSC code (XXXX0XXXXXX) |
Beneficiary Branch | Conditional | 4-char branch code (IFT) |
Beneficiary Name | Yes | 3–35 chars; letters and spaces |
Beneficiary Email | No | Valid email or blank |
Beneficiary Mobile | Conditional | 10- or 12-digit mobile (IMPSP2P) |
Beneficiary MMID | Conditional | 7-char MMID (IMPSP2P) |
Beneficiary LEI Code | Conditional | Required for NEFT > ₹50 crore |
Beneficiary NRE Flag | Conditional | EX or blank (NEFT/RTGS) |
Payment-mode requirements match the Single Payout Transfer beneficiary rules.
Code Examples
curl --location 'https://payout.payorc.com/v1/bulk/payouts' \
--header 'Authorization: Bearer YOUR_TOKEN' \
--form 'request_id="REQ-001"' \
--form 'currency="INR"' \
--form 'payout_file=@"/path/to/bulk-payout.xlsx"' \
--form 'callback_url="https://your.site/webhooks/payout"' \
--form 'remark="Monthly payroll"' \
--form 'checksum="YOUR_64_CHAR_SHA256_HEX"'Response — Success (200)
{
"data": {
"request_id": "REQ-001",
"total_records": 4,
"payouts_queued": 4
},
"message": "Bulk payouts queued successfully",
"status": "success",
"code": "00"
}Response Fields
| Field | Type | Description |
|---|---|---|
data.request_id | String | Your bulk request ID |
data.total_records | Number | Rows parsed from the Excel file |
data.payouts_queued | Number | Payouts successfully queued |
message | String | Bulk payouts queued successfully |
status | String | success |
code | String | 00 |
Response — Error (4xx)
{
"message": "Request id already exists",
"status": "fail",
"code": "E0021"
}If any row fails validation, the entire bulk request is rejected with an error list. Fix all errors and re-upload. total_records and payouts_queued are equal on success.