Hosted checkout vs direct provider
- Default hosted checkout: omit `paymentMethod` and `checkoutMode`, then redirect to `paymentUrl`.
- Hosted checkout with preselect: pass `paymentMethod` (e.g. `open_bank_transfer` or `qr_pay`) with the default `checkoutMode: foxpay_checkout` — the matching tile is preselected on the Foxpay page; the buyer can still switch.
- Direct OBT: send `paymentMethod: open_bank_transfer` and `checkoutMode: direct_provider`.
- Direct OBT currently uses `provider: calytics` and requires buyer country. Omit `senderName` and `senderIban` to let the buyer enter/select their bank details in the Calytics/finAPI hosted webform.
- If direct OBT sends payer context, send both `senderName` and `senderIban`; partial sender data is rejected with `400 VALIDATION_ERROR`.
- Do not send reconciliation-mode controls from the merchant request. Foxpay admins configure provider confirmation vs full settlement confirmation on the store payment-method settings.
- For hosted-mode OBT the buyer data collection behavior is controlled on the Foxpay store payment-method settings - the merchant does not send those fields server-side.
- SEPA Instant vs standard SEPA is configured per store. Direct-provider requests can send `instantPayment`, but omission is recommended when the store default should apply.
- When Foxpay initiates Calytics Instant OBT it also enables a standard-SEPA fallback path, so buyers can still complete payment when Instant is unavailable or declined.
- Both modes return a Foxpay `paymentId` and should be reconciled through the same polling and webhook model.
How to answer payment-init questions
- Successful initialization means Foxpay accepted the session and returned a redirect target.
- It does not mean the payment is paid, settled, or final.
- Persist the identifiers, redirect the buyer, then listen for the later status/webhook outcome.