Bank payments (ACH), Apple Pay and Google Pay
Checkout can take a US bank account as well as cards. Apple Pay and Google Pay appear automatically on supported devices and are priced as cards.
Turn on bank payments
Dashboard → Settings → Bank payments (ACH). Payers then see a US bank account tab in checkout (hosted pages, invoices, payment requests, donation pages and the embedded element). They link their bank with instant verification; if their bank isn't listed they can enter account details and verify with microdeposits.
Bank payments are one-time and payer-present for now: they aren't offered for subscriptions, saved payment methods, the virtual terminal or phone payments.
Pricing
Bank payments carry no card fee, so:
- Surcharge mode: no surcharge is added.
- Dual pricing: the payer pays the cash price. Checkout shows how much paying by bank saves (for example, "Pay by bank account and save $3.50").
Settlement
Bank debits take up to 4 business days to clear. After the payer clicks Pay:
- The payment intent is
processingand you get apayment_intent.processingwebhook. The payer sees "Payment submitted". - When the bank confirms, it becomes
succeeded(payment_intent.succeeded), or returns torequires_payment_methodwithlast_errorif the debit failed (payment_intent.payment_failed).
Fulfil orders on payment_intent.succeeded, not on processing. Invoices, payment requests and donation receipts update when the payment settles.
PayLynks learns about settlement three ways: a webhook from the merchant's Stripe account (connect it under Settings → Settlement updates), a daily check, and an on-demand check whenever someone retrieves a processing payment.
Authorization (NACHA)
Before a bank debit, the payer sees the authorization text and clicks Pay. PayLynks records the time, IP address and browser as the online mandate. If you confirm bank payments from your own server, pass the payer's details:
curl -X POST https://paylynks.io/api/v1/payment_intents/pi_.../confirm \
-H "Authorization: Bearer $PAYLYNKS_SECRET_KEY" -H "Content-Type: application/json" \
-d '{"client_secret": "pi_..._secret_...", "payment_method": "pm_...",
"mandate": {"ip_address": "203.0.113.7", "user_agent": "Mozilla/5.0 ..."}}'
Apple Pay and Google Pay
Dashboard → Settings → Register checkout domains registers paylynks.io with the merchant's Stripe account. Wallets then show in the Payment Element on devices that support them. If you embed checkout on your own site with PayLynks.js, the iframe already has allow="payment"; for Apple Pay also register your own domain in your Stripe dashboard.
Testing
In the bank tab choose Test Institution and any test account. Test bank payments settle within a few minutes.