M4 · live on the Forjio suiteXendit-native

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.

Methods supported day one:
  • QRIS
  • VA
  • OVO
  • DANA
  • ShopeePay
  • Card
  • PayPal
plugipay — sandbox
zsh
# 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.
    RP

    Rangga 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.
    SO

    Stephanie 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.
    DH

    Diki 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.

three commandszsh
# 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...