When the customer wants to pay with a card on your physical terminal (Moniepoint, Opay, Squad), use this flow. The cart pushes the charge to the device; the customer dips or taps their card on the terminal; you wait a few seconds and the system confirms the payment.
This is different from the "Card / Wallet / USSD" QR-code flow — that one is for Paystack and the customer pays from their phone. With this flow, the customer pays at YOUR device.
Before you start
- An admin must have set up your provider credentials at Setup → Gateway Credentials, and registered at least one terminal at Setup → Payment Terminals. If neither is done, you'll see a yellow warning when you try to charge — call your manager.
- The terminal must be powered on and on the same network as the till.
- The Payment Method you'll pick must be one routed to your terminal provider (your admin sets this when configuring the Payment Method — look for "Moniepoint" / "Opay" / "Squad" in its name).
Steps
- Ring up the sale in POS as normal.
- Open the Checkout modal.
- In a tender row, pick the payment method routed to your terminal provider. The Amount column changes to a green "Charge via Moniepoint" button.
- Click Charge via Moniepoint. A small dialog opens. You'll see the channel locked to "Card on terminal" — there's no QR or virtual account, because the customer is using YOUR device.
- Pick a terminal. If you only have one registered, it's pre-selected. Otherwise tap the one you want to push the charge to.
- Click Push to terminal. The customer's screen at the device should immediately show the amount to pay.
- The customer dips / taps / inserts their card on the terminal and enters PIN.
- Wait. The dialog polls every 2.5 seconds; once the device responds you'll get a green "Payment received" banner and the tender row locks at the confirmed amount.
- Close the dialog and Finalize the sale as usual. The system links the charge to the invoice automatically.
Tips
- The dialog stays open while it polls. Don't close it before the customer finishes — closing it doesn't cancel the charge on the device, just hides the spinner. If you close too early and the customer DOES pay, reopen Checkout: the system catches up within ~5 minutes.
- Want a faster default? Ask your admin to bind the terminal to your till at Setup → Payment Terminals. Then the picker is auto-selected and it's one tap.
- The same terminal can be used by multiple tills (leave Bound to Till blank when registering) — handy if a smaller shop shares a single device between counters.
Common problems
- Yellow "No registered terminals" banner → the admin hasn't registered any terminal for this provider yet. Get them to do that under Setup → Payment Terminals before you can charge.
- "Moniepoint required TerminalSerial" → you clicked Push without selecting a terminal. Pick one and try again.
- Device shows nothing → the device may be on a different network, off, or asleep. Wake the device first. If still nothing, the credentials may be wrong; ask your admin to test connection on the Payment Terminals page.
- Payment is taking ages → check the terminal screen — the customer may be still entering PIN, or the receipt is still printing. The system waits up to 5 minutes before auto-cancelling a stuck charge; after that the row turns red and you can retry.
- Charge was approved on the device but the dialog still says Pending → wait up to 30 seconds, then close the dialog and reopen Checkout. The system runs a defensive recheck on every reopen; it'll usually catch up. If it still won't confirm after a minute, mark the tender as Cash + the customer's terminal receipt, and ask your admin to reconcile the next morning.
- Customer's card was declined on the device → the dialog turns red ("Payment failed"). Close it and try a different tender (Cash, different card, etc.).