Payments Webhook
For general webhook mechanics (response requirements, security, IP whitelisting, troubleshooting), see Webhooks - Async Updates. This page covers the webhook event fired for FAST and Seamless 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 request (single or recurring/הו"ק).
{
"timestamp": "2021-03-04T12:26:32.212913+00:00",
"event": "PaymentStatusChanged",
"payload": { ... }
}Payload fields
| Field | Type | Description | Example |
|---|---|---|---|
user | String | User identifier | "123456782@tppName" |
paymentRequest | String | Unique payment UUID | "9739700b-..." |
psuId | String | Payer identifier | "123456782" |
requestedAmount | String | Amount requested | "1.00" |
finalAmount | Object / false | Final settled amount. false for periodic/direct-debit payments (see note below) | {"amount": "1.00", "currency": "ILS"} |
aspspCode | String | Bank code | "20" |
accountNumber | String | IBAN / account number | "IL7902..." |
psuMessage | String | null | Reference number | "002115" |
referenceNumber | String | null | Reference number | "002115" |
context | String | The context you sent in the original JWT | "tx-001" |
transferType | String | "masav" | "fp" | "zahav" | |
accountType | String | "PRIVATE" | "BUSINESS" | "CORPORATE" | |
corporateId | Number | Corporate ID, if relevant | 515555555 |
currentStatus | String | See status table below | |
previousStatus | String | null | null if this is the first status update | |
recurring | Boolean | Only sent for periodic payments | true |
startDate | ISO date | Only sent for periodic payments | "2025-12-12" |
tpp | String | Your organization identifier | "tppID" |
⚠️ Do not validate against a strict schema. The bank may return additional fields inside payload that aren't listed here — parse only what you need.
Note on finalAmount in recurring payments: while recurring: true, finalAmount comes back as false (not an object) because the final amount isn't known yet. Don't rely on it before a terminal status is reached.
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 7 days ago