⚡Developer preview— API documentation and integration reference
WOWPAYZAP API

Build payments into your product.

A clean API for collecting payments, creating payment links, issuing refunds, sending payouts and keeping your transaction lifecycle in sync.

REST API · JSON · HTTPS only
create-payment.js
$ curl -X POST https://api.sandbox.wowpayzap.com/v1/payments \
-H "Authorization: Bearer sk_test_xxx" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order_1024" \
-d '{
"amount": 249900,
"currency": "INR",
"reference": "ORDER-1024",
"customer": { "id": "cus_9f82" }
}'

// 201 Created
{
"id": "pay_8f21c9",
"status": "processing",
"amount": 249900,
"currency": "INR"
}
QUICK START

From first request to live payment.

Four simple steps to connect your application to the WowPayzap payment stack.

Create account

Complete your business setup and access your developer workspace.

Generate keys

Create sandbox keys first, then production keys when you're ready to launch.

Create payment

Send an authenticated request with an amount, currency and reference.

Handle events

Use webhooks to keep your order and payment state synchronized.

Authentication

Every API request is authenticated with a secret API key using the Bearer authentication scheme. Keep secret keys on your server and never expose them in browser or mobile application code.

Security: use environment variables or your server-side secret manager for API keys. Sandbox keys are prefixed with sk_test_.
cURLAuthorization
curl https://api.sandbox.wowpayzap.com/v1/payments \
  -H "Authorization: Bearer sk_test_xxxxxxxxx" \
  -H "Content-Type: application/json"

Base URLs

Use the sandbox environment while developing and switch to the production endpoint when your integration is ready for live traffic.

Sandboxhttps://api.sandbox.wowpayzap.com
Productionhttps://api.wowpayzap.com

Payments

Create and manage payment intents from your backend. Amounts are represented in the smallest currency unit, such as paise for INR.

POST/v1/payments
Requestapplication/json
{
  "amount": 249900,
  "currency": "INR",
  "reference": "ORDER-1024",
  "customer": {
    "id": "cus_9f82"
  },
  "description": "Order #1024"
}
ParameterTypeRequiredDescription
amountintegerRequiredAmount in the smallest currency unit.
currencystringRequiredThree-letter ISO currency code, e.g. INR.
referencestringRequiredYour unique order or transaction reference.
customerobjectOptionalCustomer identity and contact information.
descriptionstringOptionalHuman-readable payment description.

Response · 201 Created

Response · 201 CreatedJSON
{
  "id": "pay_8f21c9",
  "status": "processing",
  "amount": 249900,
  "currency": "INR",
  "reference": "ORDER-1024"
}

Payment lifecycle

Model your order state around the payment status returned by the API and confirmed through webhooks.

CREATED

Payment request accepted and initialized.

PROCESSING

Payment is being processed by the selected method.

SUCCESS

Payment has been successfully completed.

PROCESSING

Payment remains in an active processing state.

FAILED

Payment could not be completed.

REFUNDED

Funds have been returned after a refund.

Retrieve payment

Fetch the current state of a payment using its payment ID.

GET/v1/payments/{payment_id}
Request
curl https://api.sandbox.wowpayzap.com/v1/payments/pay_8f21c9 \
  -H "Authorization: Bearer sk_test_xxxxxxxxx"

List payments

Query payments with pagination and optional filters.

GET/v1/payments
Query parameterTypeDescription
limitintegerNumber of records to return.
cursorstringPagination cursor from the previous response.
statusstringFilter by payment status.
created_afterdatetimeReturn payments created after a timestamp.

Customers

Create reusable customer profiles so payment history, contact information and future payment flows can be associated with one customer record.

POST/v1/customers→
GET/v1/customers/{customer_id}→
GET/v1/customers→
POST/v1/customers/{customer_id}→

Refunds

Initiate a full or partial refund against a successful payment.

POST/v1/refunds
Request
{
  "payment_id": "pay_8f21c9",
  "amount": 100000,
  "reason": "customer_request"
}

Payouts

Create outbound payouts and track their processing state from the same API model.

POST/v1/payouts→
GET/v1/payouts/{payout_id}→
GET/v1/payouts→
POST/v1/payouts/{payout_id}/cancel→

Idempotency

Use an idempotency key on create and mutation requests so network retries do not accidentally create duplicate operations.

Best practice: generate a unique key for each logical operation and reuse that same key when safely retrying the request.
Request headerRecommended
-H "Idempotency-Key: ORDER-1024-PAYMENT"

Webhooks

Webhooks notify your server when payment, refund, payout or payment-link state changes. Verify the event signature before processing it.

payment.succeededPOST
{
  "id": "evt_72af",
  "type": "payment.succeeded",
  "created_at": "2026-09-03T08:30:00Z",
  "data": {
    "payment_id": "pay_8f21c9",
    "status": "success"
  }
}
EventWhen it fires
payment.succeededA payment reaches a successful state.
payment.failedA payment fails.
refund.succeededA refund is completed.
payout.succeededA payout completes successfully.
payment_link.paidA hosted payment link receives payment.

Errors

Errors use conventional HTTP status codes and a consistent JSON envelope so your application can handle failures predictably.

JSON error
{
  "error": {
    "code": "invalid_request",
    "message": "amount must be greater than zero",
    "request_id": "req_91bd"
  }
}
StatusMeaning
400Malformed or invalid request.
401Authentication failed or missing.
403Authenticated request is not permitted.
404Requested resource does not exist.
409Conflict, often related to idempotency or state.
422Validation error.
429Rate limit exceeded.
500Unexpected server error.

SDKs

Use the API directly or install an SDK to reduce boilerplate in your application.

NODEnpm install wowpayzap→
PYTHONpip install wowpayzap→
PHPcomposer require wowpayzap/sdk→
JAVAwowpayzap-java→

Sandbox

Build and test without touching real money. Use test API keys, simulated payment states and webhook events before switching to production credentials.

Recommended flow: create a sandbox payment → simulate success or failure → validate webhook handling → test refunds → review logs → switch to production keys.

Ready to build?

Start in the sandbox, validate your integration, then move to production when your payment flow is ready.