Accept your first payment in 2 minutes. No provider account needed.
Plugipay handles the provider, the subscriptions, the dunning, and a ledger that actually balances. Sign up and get an automatic Xendit sub-account — QRIS, VA, e-wallets, cards — or connect your own Xendit, Midtrans, or PayPal if you already have one.
No provider account. No glue code. No lock-in.
- QRIS
- VA
- OVO
- DANA
- ShopeePay
- Card
- PayPal
Choose payment provider
Start accepting payments in 2 minutes.
Plugipay managed
Recommended · 2 minAutomatic Xendit sub-account. QRIS, VA, e-wallets, and cards active immediately. No keys to paste.
Connect Xendit
Paste your Xendit secret + callback token.
Connect Midtrans
Paste your Midtrans server key + client key.
Connect PayPal
Paste your PayPal client ID + secret.
Automatic Xendit sub-account. No keys required.
# one-liner checkout
$ plugipay checkout create \
--amount 299000 --currency IDR
→ https://plugipay.com/c/cs_01HXZ8...
# live events → localhost
$ plugipay events listen --forward-to=localhost:3000/webhooks
⟶ plugipay.checkout_session.completed.v1 (12ms)
⟶ plugipay.invoice.paid.v1 (9ms)Real CLI, local loop. Stripe-listen parity + time-travel dunning.
Zero-setup
automatic Xendit sub-account
Outbox-reliable
webhooks with replay
Double-entry ledger
sum(debits) === sum(credits)
Not a MoR
you own the contract
Five features. That's it.
MVP ships all five or it doesn't ship.
No checkbox grid. No quarterly roadmap promises. If it's not on this page, we don't do it.
- F1 · Checkout
One API, every method that matters in SEA.
QRIS, VA across five banks, OVO, DANA, LinkAja, ShopeePay, cards, retail counters, PayPal. Swap adapters without re-integrating. We're worse than Primer at global routing. We're better at Indonesia.
- F2 · Events
Webhooks that survive a bad Tuesday.
Every state change hits the outbox inside the same Postgres transaction. Huudis fans out with retries, dedup, and a circuit breaker. Dropped one? `plugipay events replay` re-emits matching rows.
- F3 · Subscriptions
A ledger you can actually reconcile.
Plans, trials, coupons, proration, pause/resume, dunning. Every charge writes a balanced double-entry row. sum(debits) === sum(credits) at every point in time. PPN 11% built in. Flat fee, never a percent of your MRR.
- F4 · Portal
Stop answering billing tickets at 2am.
Signed 15-minute portal sessions. Your buyers update their card, cancel at period end, or download past invoices themselves. You keep the customer relationship — we never see their login.
- F5 · CLI
A local loop that doesn't make you miss Stripe CLI.
plugipay listen forwards live events to localhost with signature verification. plugipay clocks advance --days 35 time-travels a subscription through dunning in under a second. Every REST endpoint has a subcommand. Free sandbox, deterministic fake adapter.
Early users
Built for devs who've been burned.
Placeholder quotes from teams in the beta. We'll swap them for the real ones when they go live — no stock photos, no rented logos.
We replaced 900 lines of 'retry this webhook' glue with one Plugipay integration. Our dunning logic used to be a JIRA epic. Now it's a config block.
RPRangga Pratama
Backend Lead, Kitatoko · Jakarta
We tried Chargebee for two months. The 0.75% on top of gateway fees didn't scale for IDR volume. Plugipay's flat fee plus first-class QRIS was the reason we stayed SEA-first.
SOStephanie Ong
CTO, Fluxly · Singapore
plugipay listen on the left monitor, my editor on the right. First payment tool where the local loop did not feel like punishment.
DHDiki Hardiansyah
Founder, Rapot.id · Bandung
Get started
Plug it in. Take payments.
Free on Starter up to Rp 20M/mo GMV. No card, no sales call. First checkout session in three commands.
Prefer to read first? Read the docs.
# 1. install
$ npm i -g @forjio/plugipay-cli
# 2. log in (device flow via Huudis)
$ plugipay auth login
# 3. first checkout
$ plugipay checkout create \
--amount 50000 --currency IDR \
--customer cus_demo
→ https://plugipay.com/c/cs_01HXZ8...