Your payment links.
Ready for your
next build.
Connect merchant-owned KHR and USD links to a clear checkout flow. Keep your currency, your code, and your payment status in sync.
Development preview · self-service access is not enabled yet.
Your stack. Your way in.
One payment request, four interfaces. Explore the integration contract.
CLI example
# Private local workspace · run npm run build:all first
# Set KHPAYMENT_BASE_URL and KHPAYMENT_API_KEY privately.
node packages/cli/dist/index.js payments create \
--amount '12.50' --currency 'USD' \
--idempotency-key example-order-001 --jsonMCP example
# Private local stdio: node packages/mcp/dist/index.js
# Set KHPAYMENT_BASE_URL and KHPAYMENT_API_KEY in the host environment.
# Send this tool call through a host with human confirmation.
# Live creation is disabled by default; test payments are simulated.
{
"name": "create_payment",
"arguments": {
"amount": "12.50",
"currency": "USD",
"idempotencyKey": "example-order-001"
}
}SDK example
// Private local Node workspace · run npm run build:all first
// Server-side only; set both environment variables privately.
import { createClient } from 'khpayment-sdk';
const client = createClient({
baseUrl: process.env.KHPAYMENT_BASE_URL,
apiKey: process.env.KHPAYMENT_API_KEY,
});
const payment = await client.createPayment({
"amount": "12.50",
"currency": "USD"
}, {
idempotencyKey: 'example-order-001',
});
console.log(JSON.stringify(payment));API example
# Local development API · public access remains gated
# Set KHPAYMENT_API_KEY privately; use a test key for simulations.
curl --fail-with-body --silent --show-error 'https://khpayment-dev.161-118-223-128.sslip.io/api/v1/payments' \
-H "Authorization: Bearer $KHPAYMENT_API_KEY" \
-H 'Idempotency-Key: example-order-001' \
-H 'Content-Type: application/json' \
--data '{"amount":"12.50","currency":"USD"}'Two currencies.
No guesswork.
Your customer chooses a currency. The matching merchant link does the rest. No silent currency switch, no fallback to somebody else’s account.
Explore the payment flow12.50USD
Switch currency to see the request change.
Illustration only. No payment will be created.
Know what happens
behind the checkout.
Test mode is a simulation. Live payments use a separate provider flow, with their own setup and verification requirements.
A scan is progress, not proof of payment. A return page is not a receipt. The integration keeps those differences visible.
Understand payment evidenceA few things worth knowing.
Is KH Payment a bank or payment network?
No. It is independent integration software. Payment processing remains with the configured provider. It is not an ABA Bank website, official PayWay plugin or KHQR operator.
Do KHR and USD use the same merchant link?
No. Each currency uses its own merchant-owned link. Configure either currency or both. A missing USD link never falls back to a KHR link.
Does scanning a QR confirm payment?
No. Scanning and returning to a page are not proof of payment. Status evidence must come from the transaction-bound provider flow, and public-link evidence is not official settlement verification.
Can I test without making a payment?
The self-service release is designed around a clearly labeled simulator. It is separate from the existing operator’s real provider testing. This public example never contacts a bank or creates a payment.