PayOrc
Payouts

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

MethodURL
POSThttps://payout.payorc.com/v1/bulk/payouts

Headers

HeaderTypeRequiredDescription
AuthorizationStringYesBearer token from GET /v1/token

Request Body (multipart/form-data)

FieldTypeRequiredDescription
request_idStringYesUnique bulk request ID (max 30 chars)
currencyStringYes3-letter ISO currency code (e.g. INR)
payout_fileFileYesExcel file (.xlsx only, max 2 MB). Form field name must be payout_file
remarkStringYesRemark for the bulk request (max 30 chars; can be "")
callback_urlStringYesHTTPS webhook URL (max 100 chars; can be "")
checksumStringYes64-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|remark

Hash 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 HeaderRequiredDescription
Reference NoYesUnique reference per payout row (max 35 chars)
Payment ModeYesNEFT, RTGS, IFT, IMPSP2A, or IMPSP2P
AmountYesTransfer amount (max 2 decimal places)
RemarkYesRow-level remark
Beneficiary Account NumberConditional9–18 digit account number
Beneficiary Account TypeConditionalSA, CA, OD, etc.
Beneficiary IFSCConditionalIFSC code (XXXX0XXXXXX)
Beneficiary BranchConditional4-char branch code (IFT)
Beneficiary NameYes3–35 chars; letters and spaces
Beneficiary EmailNoValid email or blank
Beneficiary MobileConditional10- or 12-digit mobile (IMPSP2P)
Beneficiary MMIDConditional7-char MMID (IMPSP2P)
Beneficiary LEI CodeConditionalRequired for NEFT > ₹50 crore
Beneficiary NRE FlagConditionalEX 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

FieldTypeDescription
data.request_idStringYour bulk request ID
data.total_recordsNumberRows parsed from the Excel file
data.payouts_queuedNumberPayouts successfully queued
messageStringBulk payouts queued successfully
statusStringsuccess
codeString00

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.

On this page