Integrate once for VND, PHP and USDT
Updated 2026-10-24
Short answer
CVPay exposes one API for pay-ins and pay-outs across VND, PHP and USDT. After KYB review you get a sandbox that is isolated from production, and every payment status change is delivered to you as a signed webhook. Most of the integration work is on your side: modelling orders, verifying webhooks and making retries safe.
Integration path
- Register a merchant account and complete the KYB review.
- Build and test against the sandbox, which is isolated from production.
- Verify webhook signatures and make your handlers idempotent.
- Go live once your account and integration are approved.
Model payments once, not per country
Because one API covers VND, PHP and USDT, treat currency and payment method as fields on a payment, not as separate integrations. Your order, refund and reconciliation logic then stays the same whether a customer pays with VietQR, GCash or USDT, and adding a method later is configuration rather than new code.
- Store your own order reference on every pay-in and pay-out, and send it with the request.
- Keep amounts in the currency of the payment and record the currency next to the amount.
- For USDT, store the network together with the address; an address alone is ambiguous.
Writing the webhook handler
The webhook is the event that moves your order or pay-out to its final state, so the handler deserves more care than any other part of the integration.
- Verify the signature before reading the payload, and reject anything that fails.
- Respond quickly and do slow work in the background.
- Make the handler idempotent: the same callback may arrive more than once, and the second delivery must not change anything.
- Never move a payment backwards, for example from “paid” to “pending”, because callbacks arrived out of order.
- Log every callback with your order reference so support can answer “did this payment go through?” without guessing.
What to test in the sandbox
- A successful pay-in, and the signed webhook that marks it paid.
- Underpayment, overpayment and expired orders.
- The same webhook delivered twice.
- A pay-out that succeeds and one that is rejected.
- Recovering a missed webhook with a status query.
Before you go live
- Production uses its own settings, separate from the sandbox; switch them through configuration, not code changes.
- Confirm which pay-in methods are enabled on your merchant account and show only those at checkout.
- Run one small real pay-in and, if you use pay-outs, one small real pay-out, and reconcile both end to end.
- Set up an alert for payments and pay-outs that stay without a final status.
API facts
These are the product facts you can rely on:
- One merchant account and one API cover all three currencies.
- Payment status changes are sent as webhook callbacks, and every callback is signed.
- Merchants are onboarded after a KYB review. A sandbox environment is opened first, and the sandbox is isolated from production.
- CVPay supports three currencies, VND, PHP and USDT, in both directions: collecting and paying out.
- USDT is supported on three networks: TRC20, BEP20 and Solana.
- Pay-ins support three kinds of method: bank transfer, QR code and e-wallet.
- Pay-outs can be sent to local bank accounts in Vietnam and the Philippines, or as USDT to a wallet.
Statements about CVPay on this page are limited to verifiable product facts. Ask us for anything not listed here before relying on it.
Frequently asked questions
- Is there a sandbox?
- Yes. A sandbox environment is opened first, and it is isolated from production.
- Are webhooks signed?
- Yes. Payment status changes are sent as webhook callbacks, and every callback is signed.
- Is it one API for VND, PHP and USDT?
- Yes. One merchant account and one API cover all three currencies, for both pay-ins and pay-outs.
- Which USDT networks can I integrate?
- TRC20, BEP20 and Solana.
- Where can pay-outs go?
- To local bank accounts in Vietnam and the Philippines, or as USDT to a wallet.
- What do I need before I get sandbox access?
- A registered merchant account that has gone through KYB review. The sandbox is opened first; production comes after.
Start accepting payments today.
Create an account and go live, or talk to our team about your requirements.