Payonclick Developer Docs
v1

Onboard Merchant

POST https://payonclick.in/ext/v1/aeps/merchants
Requires aeps Signed request Counts toward your 60 req/min

Register one of your outlets as an AEPS merchant (step 1)


Body Params

NameTypeDescription
merchant_ref required string Your id for the outlet. 1–48 chars: letters, digits, hyphen, underscore. Unique per account
first_name required string Owner’s first name as on Aadhaar. Letters only
middle_name optional string Letters only
last_name required string Letters only; must differ from first_name
mobile required string Owner’s 10-digit mobile — linked to their Aadhaar (eKYC OTP goes here)
email optional string Owner’s email
pan required string Owner’s PAN, e.g. ABCDE1234F
aadhaar required string Owner’s 12-digit Aadhaar. Only the last 4 digits are stored
shop_name required string Outlet / business name
address_line1 required string Owner’s address, line 1
address_line2 required string Address, line 2 (locality / landmark)
city required string City
district optional string Defaults to city
state_code required int From GET /states
pincode required string 6-digit PIN code
shop_address optional string Outlet address, if different. Also shop_city, shop_district, shop_state_code, shop_pincode
bank_account_number required string Owner’s settlement bank account (6–20 digits)
bank_ifsc required string IFSC, e.g. SBIN0001234
bank_name required string Bank name (special characters are removed)
bank_account_name required string Account holder name
gstin optional string 15 characters, if registered
latitude required number Outlet GPS latitude
longitude required number Outlet GPS longitude
pan_image optional string Base64 JPEG/PNG of the PAN card, under 500 KB. Also aadhaar_image, shop_image

Responses

StatusDescription
201 Created Register one of your outlets as an AEPS merchant (step 1) — see the example on the right.
422 · not accepted Alternate outcome for the same call — the second Response tab.
4xx / 5xx { "success": false, "error": { "code": "…", "message": "…" } } — every code is listed under Error Codes.
🔏
This call must be signed

POST carries an X-Signature header over POST\n/ext/v1/aeps/merchants\n{TIMESTAMP}\n{BODY_SHA256}. The samples on the right compute it for you; the rules are in Request Signing.

📘
Good to know

Onboarding is synchronous: 201 means the outlet is registered and next_step is EKYC. Sending the same merchant_ref again for a registered outlet returns it with duplicate: true and changes nothing. After ONBOARDING_FAILED, or when a later step answers REONBOARD_REQUIRED (the bank account could not be verified), fix the details and send POST /merchants again with the same merchant_ref. Use the owner’s own Aadhaar-linked mobile and own bank account: eKYC verifies both against Aadhaar.