Integrate once. Accept everywhere.

ChampsPay exposes a clean merchant API. Authenticate with your apiKey, sign requests with MD5, and you're ready to collect and disburse across all aggregated channels.

Authentication

Request signing (apiKey + MD5)

Every request is signed so we can verify it came from you. The rules are simple and deterministic.

How the signature is built

  1. 1. Collect all request parameters (except sign).
  2. 2. Sort them by ASCII key order (A→Z).
  3. 3. Concatenate as key1=value1&key2=value2….
  4. 4. Append your secret: &key=<yourApiSecret>.
  5. 5. Compute MD5 of the whole string → that is sign.

The sign field itself is excluded from the signed string. Encoding follows standard URL rules (watch the + → space pitfall — we handle it server-side).

# 1) Concatenate sorted params + secret raw = "amount=100.00&merOrderNo=M123&merno=MER001&key=YOUR_API_SECRET" # 2) MD5 the raw string → sign sign = md5(raw) # e.g. 9e107d9d372bb6826bd81d3542a419d6 # 3) Send sign as a normal parameter POST /payin { amount, merOrderNo, merno, sign }
Pay-in flow

Collect a payment

Steps

  • Merchant signs and sends a pay-in request (amount, order no, channel params).
  • ChampsPay routes to the best channel and returns a payment link / redirect.
  • Customer pays with the local method (PIX, UPI, bank, wallet…).
  • A callback notifies you of success; you can also poll order status.
# Pay-in request (simplified) curl -X POST https://api.xxxx.com/payin \ -d merno=MER001 \ -d merOrderNo=M123 \ -d amount=100.00 \ -d currency=USD \ -d channelParams="{...}" \ -d sign=9e107d9d372bb6826bd81d3542a419d6 # Response { "code":0, "sysOrderNo":"CP2025...", "payUrl":"https://..." }
Pay-out flow

Disburse funds

Steps

  • Merchant signs and sends a pay-out request (recipient, amount, channel params).
  • ChampsPay validates balance and submits to the channel.
  • Status transitions are reported via callback and query API.
# Pay-out request (simplified) curl -X POST https://api.xxxx.com/payout \ -d merno=MER001 \ -d merOrderNo=P456 \ -d amount=50.00 \ -d currency=USD \ -d channelParams="{ \"upi\":\"...\" }" \ -d sign=... # Callback (notification) { "sysOrderNo":"CP2025...", "status":"SUCCESS", "sign":"..." }

Request full API documentation