PAYWISE
en

For developers

Build with PAYWISE.

A focused REST API, clear documentation and tools to start integrating in minutes.

cURL

curl -X POST https://paywise.asia/api/v1/transactions \

-H "Authorization: Bearer pw_test_••••••••" \

-H "Content-Type: application/json" \

-d '{"merchant_reference": "ORDER-1042", "amount": 250000, "payment_method": "QRIS", "customer_id": "user-1042"}'

01

Easy integration

Two endpoints and a signed webhook. Get started with the API and SDK reference.

02

Comprehensive docs

Clear and detailed documentation for every endpoint and error code.

03

Sandbox environment

Test your integration safely with pw_test_ keys before going live.

04

API logs

Every request is logged with its status, latency, and X-Request-Id for tracing.

Plugins and SDKs

Start accepting payments without writing the API calls yourself.

WooCommerce plugin

v1.0.0 · WC 8+

QRIS and USDT at checkout, the PAYWISE payment page, and orders marked paid automatically. Classic and block checkout.

  1. 1Upload the zip in WordPress → Plugins → Add New.
  2. 2In PAYWISE → Websites & webhook, add your store and turn on its Payment page.
  3. 3Paste your API key in WooCommerce → Payments → PAYWISE QRIS.
  4. 4Set the webhook URL shown there and its secret.

PHP SDK

v1.1.0 · PHP 7.4+

One small library, no dependencies (PHP 7.4+): create payments, read them, verify webhooks.

$paywise = new \Paywise\Client('pw_test_…');

$payment = $paywise->createTransaction([
    'merchant_reference' => 'ORDER-1042',
    'amount'             => 250000,
    'payment_method'     => 'QRIS',
    'customer_id'        => 'user-1042',
]);

Node.js SDK

v1.1.0 · Node.js 18+

For Node.js 18+, no dependencies, with TypeScript types: payments and webhook verification.

const paywise = new Paywise(process.env.PAYWISE_API_KEY);

const payment = await paywise.createTransaction({
  merchant_reference: 'ORDER-1042',
  amount: 250000,
  payment_method: 'QRIS',
  customer_id: 'user-1042',
});

Testing: with a sandbox key, open the payment page and choose Paid, Failed or Expired under "Simulate the result". Your webhook receives the same event a real payment sends.