PayOrc
Payouts

Single Payout Transfer

Transfer funds to a single beneficiary via the PayOrc payout API.

Single Payout Transfer

API Version: 3.0.0

Send funds to one beneficiary at a time. Each request specifies payment mode, amount, beneficiary bank details, and a checksum for payload integrity.

Generate a Bearer token first — see Create Authentication Token.

Endpoint

MethodURL
POSThttps://payout.payorc.com/v1/transfer

Headers

HeaderTypeRequiredDescription
AuthorizationStringYesBearer token from GET /v1/token
Content-TypeStringYesapplication/json

Request Body

FieldTypeRequiredDescription
reference_noStringYesUnique merchant reference (max 35 chars; letters, numbers, hyphen only)
payment_modeStringYesNEFT, RTGS, IFT, IMPSP2A, or IMPSP2P (must be enabled on your MID)
amountString/NumberYesPositive amount, max 2 decimal places. RTGS requires ≥ ₹2,00,000
currencyStringYesISO 4217 code (e.g. INR). Must match your MID currency
remarkStringNoTransfer remark (max 40 chars; may be omitted or "")
callback_urlStringYesMust be present. HTTPS webhook URL (max 100 chars), or "" if not used
checksumStringYes64-character lowercase SHA-256 hex (see Checksum)
beneficiaryObjectYesBeneficiary bank details (see below)

beneficiary Object

The beneficiary object is required. All keys below must be present in every request. Use "" for fields not applicable to the payment mode.

FieldTypeKey requiredValue requiredDescription
account_numberStringYesConditional9–18 digit account number (NEFT/RTGS/IFT/IMPSP2A)
account_typeStringYesConditionalSA, CA, OD, CC, LA, NRE, FCRA (NEFT/RTGS)
ifscStringYesConditionalIFSC code XXXX0XXXXXX (NEFT/RTGS/IMPSP2A)
branchStringYesConditionalUp to 4 characters (IFT)
nameStringYesYes3–35 chars; letters and spaces only
emailStringYesNoValid email or ""
mobileStringYesConditional10- or 12-digit mobile (IMPSP2P; validated when non-empty)
mmidStringYesConditionalExactly 7 characters (IMPSP2P)
lei_codeStringYesConditionalLEI format; mandatory for NEFT when amount > ₹50 crore
nre_flagStringYesConditionalEX or "" (NEFT/RTGS)

Payment-mode-specific requirements

ModeRequired beneficiary fields
NEFTaccount_number, account_type, name, ifsc, nre_flag
RTGSSame as NEFT; amount must be ≥ 2,00,000
IFTaccount_number, branch
IMPSP2Aaccount_number, ifsc
IMPSP2Pmobile, mmid

Checksum

Build the canonical string (pipe-separated, trimmed values):

reference_no|amount|currency|payment_mode|account_number|account_type|callback_url

Hash with SHA-256 and send the lowercase hex digest as checksum.

Example:

REF-001|100.00|INR|NEFT|200060539673|SA|https://yourdomain.com/webhooks/payout

Compute the checksum on your server before sending the request. Use SHA-256 over the UTF-8 canonical string and send the lowercase hex digest (64 characters) in the checksum field.

Code Examples

curl --location 'https://payout.payorc.com/v1/transfer' \
--header 'Authorization: Bearer YOUR_TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{
    "reference_no": "REF-001",
    "payment_mode": "NEFT",
    "amount": "100.00",
    "remark": "Invoice payment",
    "currency": "INR",
    "callback_url": "https://yourdomain.com/webhooks/payout",
    "checksum": "YOUR_64_CHAR_SHA256_HEX",
    "beneficiary": {
        "account_number": "200060539673",
        "account_type": "SA",
        "ifsc": "INDB0000539",
        "branch": "",
        "name": "John Doe",
        "email": "[email protected]",
        "mobile": "9876543210",
        "mmid": "",
        "lei_code": "",
        "nre_flag": "EX"
    }
}'

Response — Success (200)

{
    "data": {
        "reference_no": "REF-001",
        "transaction_id": "PY260217164600000007",
        "status": "QUEUED",
        "amount": "100.00",
        "currency": "INR"
    },
    "message": "Payout queued successfully",
    "status": "success",
    "code": "00"
}

Response Fields

FieldTypeDescription
data.reference_noStringYour reference number
data.transaction_idStringPayOrc payout ID
data.statusStringInitial status — QUEUED
data.amountStringTransfer amount
data.currencyStringCurrency code
messageStringPayout queued successfully
statusStringsuccess
codeString00

Response — Error (4xx)

{
    "message": "reference_no already exists",
    "status": "fail",
    "code": "E1001"
}
CodeMeaning
E0021Validation error (invalid field, checksum format, etc.)
E0401Unauthorized — invalid or expired token
E1001Duplicate reference_no

Checksum mismatch returns HTTP 401 with message Checksum verification failed (code E0021).

Insufficient balance returns Insufficient merchant balance (code E0021). MID or PSP selection failed is returned when no routing MID is configured.

On this page