Quickstart
Accept your first test payment in five steps — under 5 minutes.
Sign up at /signup. You get instant sandbox credentials on signup; live keys arrive once KYB + activation fee are complete.
After signup, your publishable + secret test keys are shown once on the dashboard welcome card. Copy both — especially sk_test_…, which won't be shown again.
curl -X POST https://nexuspayph.com/v1/payments \
-H "Authorization: Bearer sk_test_..." \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"amount": 500.00,
"currency": "PHP",
"method": "gcash_qr",
"description": "Order #1042",
"return_url": "https://yoursite.com/thanks"
}'Response includes checkout_url. Redirect your customer there — they see a branded NexusPay checkout with a real GCash-compatible QR code.
The same response also includes qr_code (raw EMVCo payload), qr_code_url (pre-rendered image on the provider's CDN), and app_link (deep link). Use any on your own UI:
// Render your own QR using the 'qrcode' npm lib
import QRCode from 'qrcode';
const dataUrl = await QRCode.toDataURL(payment.qr_code);
// Or just embed the provider's pre-rendered image
<img src={payment.qr_code_url} alt="Pay with GCash" />
// Or on mobile, offer a one-tap deep link
<a href={payment.app_link}>Open in GCash app</a>Full rendering tips for React, Flutter, Python, PHP, plain JS, and mobile → QR Code response
In test mode, the checkout shows a faux QR code and a Dev controls toggle. Use the toggle to force the payment to succeed / fail / expire. Each drives a real webhook callback — same code path as production.
Register an endpoint at POST /v1/webhooks/endpoints or from the dashboard. NexusPay sends signed POSTs for payment.succeeded, payment.failed, payment.expired, and more.
POST /your-webhook
X-NexusPay-Signature: t=1776840100,v1=a3f8d2b19c5f...
X-NexusPay-Event: payment.succeeded
Content-Type: application/json
{
"id": "evt_2e599b29fc3203f06a63cc16",
"type": "payment.succeeded",
"created": 1776840100,
"data": { "object": { "id": "pay_...", "status": "succeeded", "amount": 500.00, ... } }
}Verify every delivery — see the Webhooks guide.