Pay by bank is a payment link that only accepts a US bank account (ACH Direct Debit), in US dollars. Your backend creates it and shares checkout_url with the customer.
  • With bank details — send the customer’s routing and account number. The link opens with that account ready; the customer reviews the debit authorization and clicks Pay.
  • Without bank details — the customer picks their bank on the page (instant bank login) or types the account in.
Pay by bank must be enabled for your account by ParuPay — ask support@parupay.com. It works with sk_test_ (ParuPay sandbox, no real bank) and sk_live_.

Create

POST /v1/pay_by_bank with Authorization: Bearer sk_live_….
ParuPay keeps only the bank name and the last 4 digits of the account. The full numbers are never stored or returned.

Response

What the customer sees

  1. The pay page shows the amount, the bank account (for example STRIPE TEST BANK •••• 6789) and the debit authorization. If you did not send billing_address, it also asks for the customer’s address.
  2. The customer clicks Pay. The payment is now Processing — bank payments take up to 4 business days.
  3. If the account was typed in (not logged in through the bank), the bank may first need to be verified with two small deposits. The page shows Verify bank account; the payment continues once the customer confirms the amounts.

Statuses

You receive the usual webhooks when a payment succeeds or fails.

Read

Testing

With sk_test_ the ParuPay sandbox processes the payment — no real bank, no small deposits. After the customer clicks Pay the payment is processing, then about 10 seconds later succeeded or failed. Use routing number 110000000 with: Any other account number succeeds.