Developers

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.