Point of sale webhooks
Optional backend confirmation alongside Intent API callbacks. Required for till-point QR integrations (no Intent callback on the till).
This webhook is different from eCommerce webhooks.
When to use
| Pattern | Webhook |
|---|---|
| App-to-app (Intent API) | Optional - Intent callback is primary; webhook for server-side reconciliation |
| Till-point QR | Required - till receives outcome via webhook |
Setup
Contact support with:
- Your HTTPS webhook URL (Peach Payments only allows ports 80 and 443)
- Optional custom request headers (for example, authentication tokens) - Peach Payments configures these on your endpoint
Point of sale webhooks use plain JSON - you do not need to decrypt them.
Success criterion
Apply the same logic as the Intent API response: check transactionType and isApproved on the webhook transaction payload.
| Operation | Success |
|---|---|
| Sale | transactionType is SALE or SALE_WITH_CASHBACK and isApproved == true |
| Refund | transactionType == REFUND and isApproved == true |
| Void | Use void-specific fields on the payload (no isApproved) |
Do not rely on transactionResult alone - always evaluate isApproved together with transactionType.
Key fields
| Field | Use |
|---|---|
transactionId | Peach Payments transaction UUID - refunds or voids |
amount | Amount in minor units |
transaction.posData.merchantTransactionId | Your order reference |
transactionType | SALE, REFUND, and so on |
isApproved | true / false |
Match webhook events to till orders using merchantTransactionId in transaction.posData.
Full payload reference
Contact support for the complete point of sale webhook field list.