API reference
Platform - Billing
One tag: method, path, summary, auth, and scopes. Request and response fields ship in this page — expand a row to read the contract.
Endpoints
1
POST
/webhooks/nowpayments
NOWPayments payment webhook
/webhooks/nowpayments
NOWPayments payment webhook
Description
NOWPayments sends webhook notifications (IPN) to this endpoint when a payment status changes. This is the confirmation path for /app/billing hosted checkout and balance top-up. create_email_subscription/2 exists in Billing but has no operator-UI event, form, or route. ## Webhook verification 1. NOWPayments signs the payload with HMAC-SHA512 using the IPN secret 2. The signature is sent in the `x-nowpayments-sig` header 3. The signature is computed over the sorted JSON payload parameters 4. The server verifies the signature before processing the event ## Supported payment statuses | Status | Description | |--------|-------------| | `waiting` | Waiting for blockchain confirmation | | `confirming` | Payment has blockchain confirmations | | `confirmed` | Payment is fully confirmed on-chain | | `sending` | Funds are being sent to the merchant wallet | | `partially_paid` | Payment received is less than the expected amount | | `finished` | Payment is complete and funds delivered | | `failed` | Payment failed | | `refunded` | Payment was refunded | | `expired` | Payment expired before completion | ## Response A verified callback is deduplicated in a durable database inbox and queued for background processing before the endpoint returns HTTP 202. Invalid signatures return HTTP 401. Persistence or queueing failures return HTTP 503 so the provider can retry. Inbox processing is idempotent and retries up to 20 attempts.
Auth
NoneResponses
202
Webhook accepted for processing
Webhook accepted for processing
401
Invalid webhook signature
Invalid webhook signature
503
Webhook could not be persisted or queued
Webhook could not be persisted or queued