Paycose Docs
FlowProviders

Provider capability matrix

What each payment provider supports across the unified API — capture, refunds, disputes, settlement, and billing mode.

PaymentGateway exposes many payment providers behind one unified API. You integrate once; the platform routes each charge, refund, capture, and webhook to the right provider. Stripe is the reference implementation — every other provider is normalized to behave the same way, and each provider declares exactly which capabilities it supports in its manifest. When a provider does not support a capability, the API rejects that operation up front rather than failing silently.

Legend

SymbolMeaning
✅Supported
🟡Supported, with caveats / hardening in progress
📝Draft / coming soon — not yet available
➖Not offered by this provider (by design)

Capture — auto captures funds immediately at charge time; manual authorizes now and lets you capture (or cancel) later. Refund — refund to the original payment source. Disputes — chargeback/dispute events update your internal state. Settlement — delay (in business days) before captured funds are available to you (T+0 = immediate). Billing mode — native means the provider owns invoices/subscriptions; internal means PaymentGateway's billing engine drives them.

Card providers

ProviderCaptureRefundDisputesSettlementBilling modeStatus
Stripeauto + manual ✅✅✅ full lifecycleT+2native✅ Live — reference
Omiseauto + manual ✅✅📝 coming soonT+2internal✅ Live 1
SCBauto ✅ · manual ➖➖➖T+0internal✅ Live 2
KBankauto ✅ · manual ➖✅➖T+0internal✅ Live 2
Lodash📝📝📝—internal📝 Coming soon 3

1 Omise: capture and refund are live. A few webhook nuances apply — see Webhook events by provider: charge.capture/charge.reverse fire only on the manual-capture path, refunds emit no completion event (state is reconciled on read), and there is no authorization (amount_capturable) event. Dispute handling is in progress. 2 SCB and KBank are auto-capture only by design — manual capture is intentionally not offered, so the API rejects it rather than pretending to support it. SCB card has no refund API. KBank card refunds go back to the card: a full refund on the day of payment (before the bank's cut-off) is a void, later it is a refund, and a partial refund needs the charge to be settled first. 3 Lodash is an in-house card processor still in development; all operations currently return "coming soon."

Wallets, BNPL & QR providers

ProviderMethodCaptureRefundSettlementBilling modeStatus
Alipayalipayauto ✅✅T+0internal✅ Live
Touch 'n Gotouchngoauto ✅✅T+0internal✅ Live
Atome (BNPL)atomeauto ✅✅T+0internal✅ Live
GrabPaygrabpayauto ✅✅T+0internal✅ Live
PayPalpaypalauto + manual ✅✅T+2internal✅ Live
PayPaypaypayauto ✅✅T+0internal✅ Live
Rabbit LINE Payrabbitlinepayauto + manual ✅✅T+0internal✅ Live
ShopeePayshopeepayauto ✅✅T+0internal✅ Live
WeChat Paywechat_payauto ✅✅T+0internal✅ Live
PromptPay (SCB / KBank)promptpayauto ✅➖ 4SCB T+2 · KBank T+0internal✅ Live
K PLUSmobile_bankingauto ✅➖T+0internal✅ Live
SCB EASYmobile_bankingauto ✅➖T+0internal✅ Live
International QR (SCB)qr_cross_borderauto ✅➖T+2internal✅ Live 6
Alipay (SCB)alipayauto ✅➖T+2internal✅ Live 6
WeChat Pay (SCB)wechat_payauto ✅➖T+2internal✅ Live 6
Apple Payapple_pay📝📝—internal📝 Coming soon 5
Google Paygoogle_pay📝📝—internal📝 Coming soon 5

4 PromptPay and mobile-banking methods are QR/redirect flows that settle on a provider notification; refund-to-source is not currently offered through these methods. 5 Apple Pay and Google Pay are scaffolded but await payment-processor wiring.

6 The SCB cross-border rails are QR flows a foreign wallet scans. qr_cross_border is one QR that accepts every scheme SCB returns in its channel list; alipay and wechat_pay mint a wallet-specific QR. Refunds are not wired yet, and qr_cross_border settles from the inquiry and expiry sweepers rather than from SCB’s unsigned callback.

Payout providers

ProviderMethodStatus
Wisebank_transfer✅ Live — payouts only (no charge capability)
Omise (payout)bank_transfer🟡 Bank-transfer payouts; transfer-event webhook handling is minimal

How capabilities map to the API

  • Manual capture — declared per method; when present you may create a charge with capture_method: manual, then capture or cancel it later. Providers that omit it reject manual capture at validation.
  • Refund to source — declared per method; required for a refund back to the original payment instrument. Providers without it reject refund requests up front.

A refund always goes back to the original payment method; refunding into a customer wallet balance was removed, so there is no fallback. When the provider has no refund API for the method a charge used — for example PromptPay and QR through SCB or KBank, K PLUS, SCB EASY, KBank SmartPay, Krungsri card and KMA, Apple Pay and Google Pay — POST /refunds refuses the refund with E4526 and creates nothing, and the dashboard shows Refund disabled with the reason. Refund those customers outside PaymentGateway. GET /charges/{id}/refund_methods reports this ahead of time as available: false with an unavailable_reason.

  • Disputes — only providers with dispute support surface chargeback events into your payment state. Where a provider can deliver disputes but handling isn't wired yet, it is marked 📝.
  • Settlement (T+N) — informational timing for when captured funds become available; absent means T+0.
  • Billing mode — native (provider owns invoices/quotes/subscriptions) vs internal (PaymentGateway's billing engine). This affects which billing webhooks are authoritative.

For the exact event each provider emits and how it maps to your payment state, see Webhook events by provider.

On this page