Payment modes
Most stores can use platform mode so merchants never need a Xendit account.
Step 1 — Enable the feature
- Open your project dashboard.
- Enable Online Store, then enable Payment Gateway.
- Set the store currency to IDR (QRIS is Indonesia-only today).
Step 2 — Choose how you collect payments
Open Store → Payments.Webstorio payments (default)
Checkout uses Webstorio platform. When a buyer pays:- The order becomes paid.
- Your project ledger is credited for the full amount (platform fee is 0% for now).
- Funds show under Store → Balance.
- Request a payout with your bank details; Webstorio admin marks it paid after transfer.
Connect your own Xendit (optional)
- Choose Connect your own Xendit.
- Paste your Xendit secret key (
xnd_development_…for test,xnd_production_…for live). - Paste the callback token from the Xendit dashboard (required).
- Copy the shown webhook URL into Xendit for Payment Request events.
Step 3 — Checkout settings
In Store → Settings:Step 4 — Buyer flow
- Visitor creates an order (
createOrder). - Response includes
order.trackingTokenand apaymentobject with a QR image. - Redirect them to a status page that calls
trackOrder(token). - When the QR expires, call
retryPayment(token)to issue a new one. - After payment succeeds, update status and upload deliverables from Store → Orders.
Balance & payouts (platform mode)
- Store → Balance shows available balance and ledger entries.
- Request a payout ≤ available balance with bank name, account number, and account name.
- Available balance drops when you request a payout (funds are held).
- If ops rejects a request, the hold is released back to your balance.
- Platform fee and T+N settlement holds are not applied in v1.
For operators (platform)
Point the master Xendit Payment Request webhook at:XENDIT_WEBHOOK_SECRET (same callback token as billing QRIS). Per-project webhook URLs remain for merchants on custom mode.
Ops reviews requests under Admin → Payouts and marks them paid or rejected.

