Xendit (BYO)
Xendit is a leading Indonesian/Southeast Asian payment processor. If you already have a Xendit account — or want one directly — you can connect it to Plugipay and we'll orchestrate payments through it.
This page covers setup, what works, and what's BYO-specific.
Why use Xendit BYO
- You already have a Xendit account. No need to re-onboard with us.
- Direct settlement. Funds settle to your Xendit balance, then to your bank on Xendit's schedule.
- Direct Xendit support. For payment-method-specific issues you can reach Xendit directly.
- Slightly lower platform fee. Plugipay's BYO rate is lower than managed, since you're providing the provider relationship.
What you need to set up
- An active Xendit account in production (live mode) and/or test mode.
- A Xendit secret API key (in the Xendit dashboard: Settings → Developers → API keys).
- A Xendit webhook verification token (Settings → Webhooks).
Plugipay needs both to operate. The secret key authenticates outbound calls; the webhook token lets Plugipay validate inbound webhook events from Xendit.
Connecting Xendit
- In Plugipay, go to Settings → Payment methods → Add provider → Xendit.
- Choose test or live (you can connect both, one per environment).
- Paste the secret key and webhook verification token.
- Click Connect. We'll round-trip a test API call to confirm the credentials work.
If the test fails: the most common cause is whitespace in the pasted keys. Re-copy from Xendit, no leading/trailing spaces.
After connecting, configure the webhook URL in Xendit:
- Xendit dashboard → Settings → Webhooks
- Add
https://api.plugipay.com/v1/inbound-webhooks/xendit/<your-workspace-id>as a webhook URL - Subscribe to all event types
Your workspace ID is shown in the Plugipay setup wizard.
Payment methods supported
| Method | Status |
|---|---|
| Cards (Visa, MC) | ✅ |
| Cards (AmEx, JCB) | ✅ if enabled on your Xendit account |
| Bank transfer (VA: BCA, Mandiri, BNI, BRI, Permata) | ✅ |
| E-wallets (OVO, DANA, ShopeePay, LinkAja) | ✅ |
| GoPay (via Xendit Direct) | ✅ |
| QRIS | ✅ |
| Retail outlets (Alfamart, Indomaret) | ✅ |
| PayLater (Kredivo, Akulaku) | ✅ if enabled on Xendit |
Per-method availability depends on what you've activated in Xendit — we mirror Xendit's enabled set, we don't enable methods for you.
What Plugipay does on top
Even though Xendit handles the payment, Plugipay adds:
- Unified API. Your code uses the same Plugipay SDKs regardless of which provider is underneath.
- Hosted checkout pages. Plugipay's branded checkout pages, not Xendit's.
- Webhook normalization. Xendit events come in their format; Plugipay re-emits them as
payment.succeeded,refund.failed, etc. consistent with managed mode. - Templates and theming. Customize the checkout look in Plugipay — works the same as managed.
- Idempotency. Plugipay's idempotency layer wraps Xendit calls so retries are safe.
- Cross-provider portability. Switch off Xendit later without changing your application code.
What Xendit does
- Money movement and settlement. Funds go through Xendit's pipes, not Plugipay's.
- Underlying compliance. PCI-DSS, AML, KYC of the merchant (Plugipay supplements but Xendit is primary).
- Direct disputes and chargebacks. Card disputes are handled in Xendit's dashboard.
Refunds
Refunds via the Plugipay API forward to Xendit's refund API. Timing:
- Cards: 5-10 business days (Xendit's standard)
- VA / e-wallet: 1-3 business days
- QRIS: instant or near-instant
The refund's status in Plugipay reflects the underlying Xendit status. Listen for refund.succeeded / refund.failed webhooks.
Fees
Xendit charges you per their pricing — we don't intermediate that. Plugipay charges a separate BYO platform fee, billed monthly.
Both appear on payment details:
payment.fees.provider— Xendit's cutpayment.fees.platform— Plugipay's cutpayment.net— what you actually receive
Switching off Xendit
To disconnect:
- Settings → Payment methods → Xendit → Disconnect.
- We stop routing new payments through Xendit.
- Existing payments and refunds continue to work — we keep the credentials around long enough to handle in-flight operations.
- After 90 days of no activity, we purge the stored credentials.
You can reconnect later with new credentials anytime.
Limits and quirks
- Xendit's rate limits apply. We pass them through; you can see them on
429responses if you hit Xendit's ceiling. - Test mode vs live keys. A test Xendit key won't process real money no matter what; the environment is determined by the key prefix.
- Settlement currency. Xendit settles in IDR by default. If you need USD or another currency, configure that in Xendit first.
Next
- Midtrans (BYO) — the other Indonesian option.
- PayPal (BYO) — for international cards and PayPal balance.
- Plugipay managed — if you'd rather not own the provider relationship.