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

PatternWebhook
App-to-app (Intent API)Optional - Intent callback is primary; webhook for server-side reconciliation
Till-point QRRequired - 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.

OperationSuccess
SaletransactionType is SALE or SALE_WITH_CASHBACK and isApproved == true
RefundtransactionType == REFUND and isApproved == true
VoidUse void-specific fields on the payload (no isApproved)

Do not rely on transactionResult alone - always evaluate isApproved together with transactionType.

Key fields

FieldUse
transactionIdPeach Payments transaction UUID - refunds or voids
amountAmount in minor units
transaction.posData.merchantTransactionIdYour order reference
transactionTypeSALE, REFUND, and so on
isApprovedtrue / 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.