Accept payments in
Cambodia with one API call.
Tola Saint lets merchants create KHQR payments and payment links, then track every transaction from one dashboard. Built for developers — clean REST, signed webhooks, and predictable responses.
No setup fees · KHQR · USD & KHR
# Create a KHQR payment curl -X POST https://api.tolasaint.com/v1/payment \ -H "x-api-key: sk_live_..." \ -H "content-type: application/json" \ -d '{"amount":"1.00","currency":"USD"}' # → 201 Created { "id": "AbC123xyz789", "status": "pending", "amount": "1.00", "currency": "USD", "qr_link": "https://api.tolasaint.com/qr/uQH8...", "expires_at": "2026-01-01T00:03:00Z" }
Everything you need
One platform for payments, links, and tracking
From your first test payment to production scale — a clean API and a dashboard that keeps up.
Payment Links
Generate a shareable payment link in one API call — no checkout code required.
KHQR Payments
Accept KHQR payments in USD or KHR, verified against the EMVCo/CRC standard.
Transaction Tracking
Real-time status: pending, scanned, processing, approved, failed, expired.
API Keys
Issue and rotate scoped keys per environment. Every request is authenticated.
Signed Webhooks
HMAC-signed, auto-retried webhooks notify your backend the moment a payment settles.
Developer API
Predictable REST, clear errors, and copy-paste examples in the docs.
How it works
Live in four steps
Create account
Sign up and open your dashboard in seconds.
Generate API key
Create a key and add it to the x-api-key header.
Create a payment
POST an amount and currency to get a QR and link.
Track the status
Poll the status endpoint or receive a webhook.
Developer-first
Verify a webhook in a few lines
Every event carries an HMAC-SHA256 signature and a timestamp. No SDK required — verify with the standard library and you're done.
import { createHmac } from "node:crypto"; export function verify(headers, rawBody, secret) { const ts = headers["x-webhook-timestamp"]; const sig = headers["x-webhook-signature"]; const mac = createHmac("sha256", secret) .update(ts + "." + rawBody) .digest("hex"); return sig === "sha256=" + mac; }
Dashboard
See every payment at a glance
Volume (30d)
$12,480
▲ 8.2%
Transactions
1,204
▲ 3.1%
Success rate
98.6%
▲ 0.4%
Pending
7
live
Start accepting payments today
Create your account, grab an API key, and send your first KHQR payment in minutes.