Use hosted or in-page checkout for card payments. Zahlo’s secure component collects card details and handles additional customer action; your server receives payment state, not raw card numbers or security codes.

Configure card acceptance

Ask for card in paymentMethodTypes, but still render the method only when the current session says it is eligible. A card can require additional action or remain processing after submission.

Statuses

Keep the order pending for requires_action, processing, or equivalent intermediate states. Display a recoverable error for a decline or validation failure. Confirm success from a verified payment.confirmed event and compare amount, currency, and order ID before fulfillment.

Saved cards

Use a Setup Intent and attach a reusable payment method to a customer only when the customer has consented and your retention policy allows it. Never store card data yourself. See Save a payment method for the off-session flow.

Testing

Exercise approval, decline, additional action, duplicate submission, session expiry, refund, and dispute paths in Demo. Keep test data separate from production and verify that no card field or token is written to application logs.