Payments that don't tax your success.
Plugipay is a payment service. Plug it into Xendit (or PayPal), and it handles the parts they don't — subscriptions, dunning, idempotency, a ledger that actually balances.No MoR. No percent-of-revenue tax. No lock-in.
- QRIS
- VA
- OVO
- DANA
- ShopeePay
- Card
- PayPal
# Create a checkout for Rp 299.000 in two lines
$ plugipay checkout create \
--amount 299000 --currency IDR \
--customer cus_8kQ2 --method qris
→ https://plugipay.com/c/cs_01HXZ8...
# Stream live events to your laptop
$ plugipay events listen --forward-to=localhost:3000/webhooks
✓ connected — forwarding plugipay.*.v1
⟶ plugipay.checkout_session.completed.v1 (12ms)
⟶ plugipay.invoice.paid.v1 (9ms)Outbox-reliable
webhooks that replay
Double-entry ledger
debits === credits
Real CLI
stripe-listen parity
Not a MoR
you keep 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...