- Payments — Pay by Bank and card payments at the terminal.
- Refunds (voids) — refunds from the POS terminal. Not delivered under
REFUND_STATUS.
REFUND_STATUS, not here.
Payment statuses
Refund statuses
Distinguish payment from refund deliveries by checking for
refundId. Refund payloads use refundId and refundAmount instead of payment fields like tipAmount and storeDetails.V2 signing required: Subscribing to
POS_PAYMENT_STATUS requires a V2 signing secret. All POS webhooks are delivered with V2 signing — the X-Atoa-Signature header contains the HMAC-SHA256 signature and the body includes an eventType field.Payloads
Custom fields
Custom fields collected during the terminal payment appear as acustomFields array. For refunds, custom fields from the original payment are carried over.
Only present when custom fields were entered at the terminal. Not included in
PAYMENTS_STATUS or EXPIRED_STATUS webhooks.Metadata
Merchant-supplied metadata set when creating the payment appears as ametadata object — a flat map of string keys to string values. Unlike custom fields (entered at the terminal), metadata is supplied programmatically and is frozen at payment creation.
Only present when metadata was supplied on the payment. See Process Payment for the field limits.
Signature verification
AllPOS_PAYMENT_STATUS webhooks use V2 signing. To verify the signature, use the X-Atoa-Signature header as described in the V2 Webhook Signing guide.