Payment methods

One integration, 40+ ways to pay. Set payment_method to a method code, handle next_action, and Finscale does the rest — including picking the right provider for that method. This page covers the families, their payload shapes, and the full catalog.

Method families

Every method belongs to a family. The family is a docs-side grouping (the API only ever sees the method code in payment_method) — but it predicts how the flow feels, how refunds work, and whether chargebacks exist.

FamilyHow it feelsChargebacks
CardsTokenized card, optional 3-D Secure challenge. Instant answer.Yes
Bank redirectsCustomer is redirected to their bank, approves, returns. iDEAL, Bancontact, EPS, Przelewy24, FPX, Trustly.No — push payments
WalletsDevice or app confirms: Apple Pay, Google Pay, PayPal, Alipay, WeChat Pay, Cash App Pay, Kakao Pay, MobilePay, Vipps, TWINT, Satispay, GrabPay, GoPay.Card-funded wallets: yes
Real-time paymentsQR code, app push, or a short code: UPI, PIX, Blik, Swish, MB Way, PayNow, PromptPay. Settles in seconds.No
Buy now, pay laterThe BNPL provider approves the customer for installments or deferred payment and pays you up front, in full — it owns the credit and fraud risk. Klarna, Affirm, Afterpay / Clearpay.No — disputes go via the provider
VouchersCustomer gets a cash reference — barcode, slip, or code — and pays at a store, bank, or ATM: OXXO, Boleto, Konbini, Multibanco. Succeeds when the cash is registered, hours or days later.No
Bank transfersCustomer pushes a credit transfer with a reference: SEPA Credit Transfer, SPEI.No
Direct debitYou pull from the account under a mandate: SEPA Direct Debit, ACH, Bacs, BECS, ACSS. Days to settle, returnable.Returns, up to 8 weeks (SEPA)
Mobile moneyCustomer approves a debit from their mobile-money balance on their phone: M-Pesa.No — reversals only
CryptoCustomer sends USDC to a one-time address; you settle in fiat or USDC.No — irreversible

Payload shapes by family

Same endpoint, same envelope — only payment_method changes, plus payment_method_id when charging a saved instrument (pm_…, created via POST /v1/payment_methods). Everything method-specific — bank selection, QR codes, wallet approval — happens on the Finscale-hosted page behind next_action.url.

POST /v1/payments — card
// 1. Exchange the hosted-checkout token for an instrument
// POST /v1/payment_methods
{ "type": "card", "token": "tok_2Fj9dW7xPq" }
// → { "id": "pm_7Wq2xN9dT4Ls", … }

// 2. Charge it — POST /v1/payments
{
  "amount": 4900,
  "currency": "EUR",
  "payment_method": "card",
  "payment_method_id": "pm_7Wq2xN9dT4Ls",
  "reference": "ord_9f21_0716",
  "return_url": "https://shop.example.com/checkout/return"
}

The one-time tok_… comes from Finscale fields or hosted checkout — in live mode the API rejects raw card numbers, so card data never touches your servers. If the issuer demands 3-D Secure, the payment returns requires_action with a redirect.

The method catalog

Every method, its code, and its operational profile. Refunds says how money goes back — natively on the same rail, or via credit transfer (see refund caveats). Chargeback risk is the dispute exposure inherent to the rail.

MethodCodeFamilyCountriesCurrenciesRefundsChargeback risk
CardscardCardGlobal135+Full + partialHigh
Apple Payapple_payWalletGlobalAs cardFull + partialAs card
Google Paygoogle_payWalletGlobalAs cardFull + partialAs card
PayPalpaypalWalletGlobalMajor currenciesFull + partialMedium — provider disputes
USDCusdcCryptoGlobalPriced in fiat, paid in USDCFull + partialNone — irreversible
UPIupiReal-timeININRFull + partialNone
iDEALidealBank redirectNLEURVia credit transferNone
BancontactbancontactBank redirectBEEURVia credit transferNone
BlikblikReal-timePLPLNFull + partialNone
Przelewy24p24Bank redirectPLPLN, EURVia credit transferNone
PIXpixReal-timeBRBRLFull + partialNone
BoletoboletoVoucherBRBRLVia credit transferNone
MB Waymb_wayReal-timePTEURFull + partialNone
MultibancomultibancoVoucherPTEURVia credit transferNone
TrustlytrustlyBank redirectEU + NordicsEUR, SEK, DKK, NOK, GBPFull + partialNone
EPSepsBank redirectATEURVia credit transferNone
SatispaysatispayWalletITEURFull + partialLow
MobilePaymobilepayWalletDK, FIDKK, EURFull + partialLow
VippsvippsWalletNONOKFull + partialLow
SwishswishReal-timeSESEKFull + partialNone
TWINTtwintWalletCHCHFFull + partialLow
KlarnaklarnaBuy now, pay laterEU, UK, USEUR, GBP, USD, SEK, NOK, DKK, PLN, CHFFull + partialLow — provider disputes
AffirmaffirmBuy now, pay laterUS, CAUSD, CADFull + partialLow — provider disputes
Afterpay / Clearpayafterpay_clearpayBuy now, pay laterUS, UK, AU, NZUSD, GBP, AUD, NZDFull + partialLow — provider disputes
Cash App PaycashappWalletUSUSDFull + partialLow
AlipayalipayWalletCN + AsiaCNY + major currenciesFull + partialLow
WeChat Paywechat_payWalletCN + AsiaCNY + major currenciesFull + partialLow
Kakao Paykakao_payWalletKRKRWFull + partialLow
KonbinikonbiniVoucherJPJPYVia credit transferNone
GrabPaygrabpayWalletSG, MY, PH, TH, VN, IDSGD, MYR, PHP, THB, VND, IDRFullLow
GoPaygopayWalletIDIDRFullLow
FPXfpxBank redirectMYMYRVia credit transferNone
PayNowpaynowReal-timeSGSGDFull + partialNone
PromptPaypromptpayReal-timeTHTHBFull + partialNone
M-PesampesaMobile moneyKEKESVia reversalNone
OXXOoxxoVoucherMXMXNVia credit transferNone
SPEIspeiBank transferMXMXNVia credit transferNone
SEPA Direct Debitsepa_debitDirect debitSEPA (36)EURFull + partialHigh — 8-week returns
SEPA Credit Transfersepa_creditBank transferSEPA (36)EURVia credit transferNone
ACHachDirect debitUSUSDFull + partialMedium — returns
Bacs Direct Debitbacs_debitDirect debitUKGBPFull + partialMedium — indemnity claims
BECS Direct Debitbecs_debitDirect debitAU, NZAUD, NZDFull + partialMedium — returns
ACSS Debitacss_debitDirect debitCACADFull + partialMedium — returns

Enabling methods

Methods are enabled per merchant account. Card payments work out of the box; local methods are switched on in Dashboard → Settings → Payment methods. Most activate instantly — a few (direct debit, USDC) need extra business information first, and the dashboard tells you what's missing.

Note that GET /v1/payment_methods is not a method catalog — it lists a customer's saved instruments (customer is a required query parameter). Use it to offer "pay with your saved card" at checkout:

GET /v1/payment_methods?customer=cus_4T8nQb2Wp1Zr
{
  "object": "list",
  "data": [
    {
      "id": "pm_7Wq2xN9dT4Ls",
      "object": "payment_method",
      "type": "card",
      "customer": "cus_4T8nQb2Wp1Zr",
      "card": {
        "brand": "visa",
        "last4": "4242",
        "exp_month": 12,
        "exp_year": 2028,
        "funding": "debit",
        "country": "NL"
      },
      "livemode": false,
      "created_at": "2026-07-16T09:24:31Z"
    }
  ],
  "has_more": false
}
Hosted checkout picks methods for you If you use hosted checkout, skip the selector entirely: Finscale shows each customer the enabled methods valid for the payment's currency and the customer's country, ordered by local conversion data. Direct API integrations should build their selector from the catalog table above plus what's enabled in the dashboard.