Every Novupay order has a reference ID (e.g. C2P-ABC123). You can learn that payment completed in three ways — pick what fits your integration.
1. Webhook to your store (recommended)
When an order becomes PAID, Novupay POSTs a signed JSON notification to your callback URL (WooCommerce plugin handles this automatically).
POST https://your-store.com/wp-json/card2pay/v1/callback
Content-Type: application/json
x-card2pay-event: order.paid
x-card2pay-apikey: c2p_...
x-card2pay-signature: sha256=<hmac-sha256 of raw body>
{
"event": "order.paid",
"reference": "C2P-ABC123",
"order_id": "12345",
"status": "paid",
"amount": 99.00,
"currency": "USD",
"pay_currency": "btc",
"pay_amount": 0.001,
"actually_paid": 99.00,
"customer_email": "buyer@example.com",
"paid_at": "2026-07-10T10:30:00.000Z"
}Verify the signature with your site's API secret (same as in the WooCommerce plugin). See WooCommerce setup.
2. Poll order status (API)
If you build a custom integration, poll this endpoint with the order reference:
GET https://portal.novupay.com/api/orders/C2P-XXXXXX/statusExample response:
{ "status": "PAID" }Possible values include PENDING, WAITING, CONFIRMING, PAID, FAILED, EXPIRED. Poll every few seconds until PAID (same approach as the Novupay checkout page).
No API key required for this endpoint — anyone with the reference can check status. Do not treat the reference as a secret in public URLs.
3. Merchant dashboard
Open Dashboard → Orders and search by reference. Status updates automatically after payment confirms.
About PayGate Postman docs
The PayGate.to Postman API describes the provider layer (wallet.php, pay.php, provider callbacks). Novupay uses that internally — you do not need to integrate PayGate directly.
- PayGate notifies Novupay per order at
https://portal.novupay.com/api/webhooks/paygate?reference=… - Novupay then notifies your store via
order.paidwebhook or you poll status above
Crypto payments work the same way: NOWPayments IPN → Novupay → your callback.