Payments Webhook
This page covers the webhook event fired for payment links and payment requests.
For general webhook mechanics (response requirements, security, IP whitelisting, troubleshooting), see Webhooks - Async Updates or Webhook Security
Event: PaymentStatusChanged
PaymentStatusChangedFired on every status transition of a payment link/request (single/periodic/bulk)
ℹ️ Bulk Payouts fires the same event with a different payload shape (see Bulk Payouts Webhook).
ℹ️ The payload shape depends on the required payment service. Different payment services (single/periodc/bulk) or rails (payment request vs. payment links) fires the same event with different payload shape and content.
ℹ️ Do not validate against a strict schema; Since we do not filter out additional fields received by the aspsp, the payload may return additional fields that aren't listed here.
ℹ️ The Presence column below tells you whether a field is always sent for that variant ("Fixed") or only sent under certain conditions ("Optional") — check the condition before assuming a field will be there.
{
"timestamp": "2021-03-04T12:26:32.212913+00:00",
"event": "PaymentStatusChanged",
"payload": { ... }
}Single payment
The base shape for a single payment link.
Periodic payment (הוראת קבע)
ℹ️ In this variant, finalAmount comes back as false (not an object) until a terminal status is reached, because the final amount of a future occurrence isn't known yet.
ℹ️ These 3 fields do not appear on the single-payment webhook at all. They appear only for periodic payment. Otherwise, it's the same shape as single payments, plus:
Payment Requests
Similar payload to the single payment variant, with the following additions:
Not included for payment requests: requestedAmount, psuMessage, referenceNumber, context, resourceId, remittanceInformationUnstructuredMatch — they don't apply to this payload shape at all.
Why two status fields: in OB-RTP, a payment request can be waiting for authorization (tracked by requestStatus) independently of the actual transaction execution (tracked by currentStatus/previousStatus) — the two lifecycles are separate.
Statuses
Common questions
| Question | Answer |
|---|---|
previousStatus is null | This is the first status update for this payment |
finalAmount: false on a recurring payment | Normal — final amount isn't known until a terminal status |
Did acceptedTechnicalValidation succeed? | Yes (Masav/Zahav) — will execute by end of business day |
| Not receiving this webhook | Check IP whitelisting — see Webhooks & IP Whitelisting |
Updated about 1 month ago