Integration patterns
Overview
Peach Payments terminal integrations fall into a few patterns. Pick the one that matches where your POS software runs and how you deliver payment results to your backend.
Pattern comparison
| Pattern | Till runs on | Payment initiated by | Result delivery |
|---|---|---|---|
| App-to-app (Intent API) | Same Android device as Payment App | POS app calls Intent API builders | Intent callback; optional point of sale webhook |
| Till-point QR | Any device (tablet, PC, phone) | Cashier scans QR on terminal | Point of sale webhook (required) |
| Web POS in WebView | WebView container on terminal | JavaScript bridge → Kotlin → Intent API | Same as app-to-app |
Decision guide
Where does your POS software run?
│
├─ Same Sunmi device as Payment App
│ ├─ Native Android (Kotlin/Java) ──► App-to-app (Intent API)
│ └─ Web UI in WebView shell ──► Web POS in WebView (Intent API)
│
└─ Separate device from terminal
└── Till-point QR + point of sale webhooksSame device → app-to-app. Your POS and the Payment App share one Android device. Use com.peach:intent_api builders and receive results in your listener callbacks.
Separate till → till-point QR. Your till displays a QR code; the cashier scans it on the terminal. Your backend receives the outcome via Point of sale webhooks.
Result delivery
| Pattern | Primary result path | Backend notification |
|---|---|---|
| App-to-app | Intent listener callback (PosTransactionSummary, VoidResponse) | Optional Point of sale webhooks |
| Till-point QR | None on till device | Required Point of sale webhooks |
For both Intent callbacks and point of sale webhooks, evaluate
transactionTypeandisApprovedtogether to determine success. Void usesVoidResponsewithoutisApproved.
Next steps
| Pattern | Next step |
|---|---|
| App-to-app | Get started with app-to-app |
| Till-point QR | Till-point QR integration |
| Web POS | App-to-app integration (Web POS section) |