Dynamic QRIS in one API call

QRIS payments,
built for developers.

QRISIFY turns your static QRIS into a dynamic, amount-locked QR for every order. One REST endpoint, a hosted checkout page, signed webhooks and a fully auditable wallet ledger.

Pay-as-you-go · 0.50% per transaction · no monthly fee

POST /api/v1/payments 201 Created
{
  "amount": 100000,
  "order_id": "ORDER-12345",
  "description": "Pembelian Produk",
  "customer": { "name": "Ahmad" }
}
{
  "success": true,
  "payment": {
    "id": "PAY-20260812-000001",
    "amount": 100000,
    "fee": 500,
    "total": 100500,
    "status": "PENDING",
    "payment_url": "https://msqris.mkz.biz.id/pay/PAY-20260812-000001"
  }
}
Platform

Everything you need to accept QRIS

Wallet ledger, API keys, webhooks, analytics and a hosted checkout page.

Static to dynamic QRIS

We parse your QRIS payload, inject the amount, switch to dynamic mode and recompute the CRC16 checksum.

Auditable wallet ledger

Available, reserved and total balance. Every movement writes a ledger row with balance before and after.

Clean REST API

Bearer API keys, predictable error codes, rate limiting and request logs for every call.

Signed webhooks

HMAC SHA256 signatures with automatic retries at 1m, 5m, 15m, 30m and 1h.

Analytics

Daily transactions, revenue, fees, success rate and balance history charts.

Security first

CSRF, prepared statements, hashed API keys, audit logs and login throttling.

How it works

From static QRIS to a paid order

1

Save your QRIS

Paste the payload of your merchant static QRIS. We validate the CRC before storing it.

2

Create a payment

Call POST /api/v1/payments with the amount and order id. We reserve the fee from your wallet.

3

Customer scans

Redirect the customer to the hosted checkout page with a dynamic, amount-locked QR.

4

Verified settlement

The payment only becomes PAID after your licensed provider verifies it, then we fire your webhook.

Pricing

Pay as you go

0.50%
per successful transaction
  • Unlimited API keys and QRIS merchants
  • Hosted checkout page and QR downloads
  • Signed webhooks with retries
  • Full ledger, analytics and audit logs
  • No monthly subscription

Example: Rp100.000 transaction = Rp500 fee, Rp99.500 net.

Trust & compliance

Honest about what QRISIFY is

QRISIFY is payment software, not a licensed payment institution. Dynamic QR generation is never treated as proof of payment: a transaction stays PENDING until a licensed provider confirms settlement through the verification layer.

  • No notification scraping, no bank or e-wallet account access
  • Provider abstraction for official APIs and webhooks
  • Balances only change through the ledger
Read the compliance notes
// Verify a QRISIFY webhook (PHP)
$payload   = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_QRISIFY_SIGNATURE'] ?? '';
$expected  = hash_hmac('sha256', $payload, $webhookSecret);

if (!hash_equals($expected, $signature)) {
    http_response_code(401);
    exit('invalid signature');
}
FAQ

Frequently asked questions

No. QRISIFY generates dynamic QRIS payloads and orchestrates orders, wallets and webhooks. Funds move through your own QRIS merchant account and the licensed provider you connect.

Only when the verification layer receives a confirmation from a valid source, such as an official provider webhook or API. Generating a QR never marks a payment as paid.

The wallet funds the platform fee. When a payment is created we reserve the amount plus fee, and release or settle it depending on the outcome.

Yes. The super admin can change the default fee percentage in settings. Existing transactions keep the fee that was stored at creation time.

Yes. You can store multiple QRIS merchants (per branch or outlet) and choose one per payment, with a default fallback.

Ready to ship QRIS payments?

Create an account, add your QRIS, generate an API key and go live.

Get started Explore the API