Skip to navigation

Pay QR codes like a local across Asia, Africa and Latin America.

Version 2.0 Beta
View as Markdown

This collection includes all HTTP endpoints for the SQRIL SaaS payout system:

  • Customer registration and profile management (registerCustomer/checkCustomer/updateCustomer)
  • QR code decoding (decodeQr)
  • Payout execution (executePayout)
  • Payment provider integrations
  • Transaction management
  • Account webhook notifications

Currency precision (request amounts)
Pass amounts as JSON numbers in standard currency units:

CurrencyDecimal placesExample
PHP21000.50 = 1,000.50 PHP
VND01000000.00 = 1,000,000 VND
THB2500.00 = 500.00 THB
IDR0100000.00 = 100,000 IDR
USD2100.00 = 100.00 USD

decodeQr, getQuotation, and executePayout response formatting

USD fields in JSON responses from those endpoints:

  • fee (total SaaS fee in USD), percentage_fee, fixed_fee, amount_usd: 2 decimal places
  • exchange_rate: 10 decimal places (source currency → USD)

Where pricing is returned, fee equals percentage_fee + fixed_fee (within rounding). Older transactions may omit the breakdown.

Stored transaction data may keep higher precision; these limits apply to the HTTP response body.

All endpoints are RESTful HTTP endpoints.

Customer flow (required):

  1. Call registerCustomer and store the returned customer_id.
  2. (Optional) Call checkCustomer / updateCustomer to verify or update profile data.
  3. Use the same customer_id in decodeQr, getQuotation, and executePayout.
  4. getQuotation and executePayout enforce that tx_id belongs to the same customer_id.
SQRIL QR Scan to Pay

These are the sender fields currently required by the local providers to execute a payment transaction.

Sender Fields

This is a one-time call that will allow your customer to transact in any regions you integrated with.

Asia: VN, PH, TH, KH, ID. Latin America: AR, BR, CO, BO, PE, PY. Africa: KE, TZ, UG.

Sender fieldUser Registration *VNPHTHKHIDARBRCOBOPEPYKETZUG
name_firstYYYYYYYYYYYYYYY
name_lastYYYYYYYYYYYYYYY
dobYYYYYYYYYYYYYYY
ic_typeYYYYYYYYYYYYYYY
ic_countryYYYYYYYYYYYYYYY
ic_numberYYYYYYYYYYYYYYY
ic_expiry_dateYYYYYYYYYYYYYYY
country_of_residenceYYYYYYYYYYYYYYY
nationalityNYNNNNNNNNNNNNN
addressYYYYYYYYYYYYYYY
phoneNNNNNNNNNNYNYYY
emailNNNYNNNNNNYNNNN
genderNNNNNNNNNNYNNNN
occupationYYYYYYYYYYYYYYY

* Collected once through registerCustomer. Each country column lists every field a payout to that country needs. A field marked N at registration but Y for a country can be sent at registration or added later with updateCustomer before the first payout there. Sender Field Definition

All fields are required except gender, phone, email and nationality, which some corridors ask for; executePayout returns them as missing_fields when a corridor needs them (nationality: Vietnam). Thailand also needs the sender’s email, and a payout to Thailand without one is refused.

Field nameData TypeDescription
name_firststringFirst name of the sender
name_laststringLast name of the sender
genderstringGender of the sender (M if male, F if female)
ic_numberstringID number of the ic_type
ic_typestringType of identity card
ic_countryString (ISO3166, country code)The country the identity card was issued in
occupationstringCode of the occupation of the sender.
country_of_residencestring (ISO3166, country code)Country of residence of the sender
phonestring (E.164 format)Phone number of the sender
emailstringEmail address of the sender
nationalitystring (ISO3166, country code)nationality of the sender. Required for Vietnam (VN), checked at the payer’s first VN payout.
dobstring (ISO8601 (YYYY-MM-DD)Date of birth of the sender
addressstringComplete address
ic_expiry_datestring (ISO8601 (YYYY-MM-DD)The expiration date for the provided identification card or passport. For non-expiring credentials, please input 2099-01-01.

Occupation List

CodeDescription
OCC1C-Suite executive / Board membe
OCC2Employee
OCC3Entrepreneur / Business owner
OCC4Foreign worker
OCC5Foreign domestic worker
OCC6Home-maker
OCC7Middle management employee
OCC8Pilot
OCC9Professional
OCC10Senior management employee
OCC11Student
OCC12Others

Identification Card List

CodeDescription
NICNational ID Card / Identity Card / Identification Card
PPPassport
WEPWork Permit / Employment Pass
DLDriver’s License

Funding and balance timing

Payouts draw from your account balance, never from a specific deposit. A stablecoin deposit to your assigned receiving address is credited to your balance a few minutes after it confirms on chain, not at the moment of confirmation.

If your flow collects the customer’s funds first and calls executePayout immediately after the on-chain confirmation, the call can arrive before the credit and fail on balance. Check getAccountBalances shows the deposit before calling executePayout, or keep a small standing balance.

On TON, your deposit address comes with a memo, shown under it on your Balance page. Send USDT to the address and put the memo, exactly as shown, in the transfer’s comment field (wallets and exchanges also call it memo, tag or note). Do not paste the memo into the address field. A transfer without the memo reaches the wallet but cannot be credited to your balance.

A quotation that expires before executePayout locks nothing: the balance stays available and the same payment can be re-run from decodeQr. Deposits are not returned per transaction; the balance is what you spend.