Payments
Pesapal cardpay fallback
Cards + Airtel Money for customers without M-Pesa.
Why
About 10-15% of order attempts fail because the customer isn't M-Pesa Express enrolled. Pesapal catches them with cards / Airtel / bank transfer.
Setup
Settings → **Pesapal**. Paste consumer key + secret. We register the IPN URL on first save (one-shot, idempotent) and persist the IPN id.
Flow
From the cart, the customer picks **Pay with card** → we open Pesapal's hosted page in an iframe. They pay → Pesapal hits our IPN → same downstream as M-Pesa (receipts, ERPNext SO+SI+eTIMS, ops webhook).
Missing something? Tell us what you needed.