Till-point QR integration
Use till-point QR when your POS runs on a separate device from the Peach Payments terminal. The till displays a QR code; the cashier scans it on the terminal; the customer pays on the terminal. Your backend receives the outcome via Point of sale webhooks.
When to use
| Scenario | Pattern |
|---|---|
| Till on tablet, PC, or phone; terminal at counter | Till-point QR |
| POS app on same device as Payment App | App-to-app integration |
Ask Peach Payments to enable integrated mode on the terminal. Integrated mode disables stand-alone numpad payments; you should use it for till-point QR deployments.
Sale flow
- Your till generates a QR code embedding JSON with the payment details.
- The cashier scans the QR on the terminal using the top-right QR button - not the customer-facing scan.
- The customer completes payment on the terminal.
- Your merchant backend receives a Point of sale webhook.
- Evaluate success:
transactionTypeisSALEorSALE_WITH_CASHBACKandisApproved == true.
QR payload (sale)
Embed JSON in the QR code:
{
"amount": 10000,
"posData": {
"merchantTransactionId": "ORDER-12345"
}
}| Field | Required | Description |
|---|---|---|
amount | Yes | Amount in minor units (cents) |
posData | No | Custom fields echoed in webhook and Dashboard |
posData.merchantTransactionId | Recommended | Your order reference for reconciliation |
Additional keys inside posData are permitted; Peach Payments echoes them in the webhook payload.
Refund QR
For refunds (Payment App 2.2.15+, same terminal as original sale), generate a QR with:
{
"amount": 6000,
"type": "REFUND",
"originalTransactionId": "<transactionId from original webhook>"
}| Field | Description |
|---|---|
amount | Refund amount in minor units |
type | Must be REFUND |
originalTransactionId | transactionId from the original sale webhook |
Webhook setup
Till-point QR requires Point of sale webhooks. Contact support with your HTTPS URL and optional custom headers.
Reconciliation
Match till orders to payments using merchantTransactionId in transaction.posData on the webhook payload. See Terminal integration flows for Dashboard and Reconciliation API options.
Next steps
- Configure Point of sale webhooks.
- Test end-to-end with a UAT terminal - see Test your integration.