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

Fired 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

FieldTypeDescriptionExample
userStringUser identifier"123456782@tppName"
paymentRequestStringUnique payment UUID"9739700b-..."
psuIdStringPayer identifier"123456782"
requestedAmountStringAmount requested"1.00"
finalAmountObject / falseFinal settled amount. false for periodic/direct-debit payments (see note below){"amount": "1.00", "currency": "ILS"}
aspspCodeStringBank code"20"
accountNumberStringIBAN / account number"IL7902..."
psuMessageString | nullReference number"002115"
referenceNumberString | nullReference number"002115"
contextStringThe context you sent in the original JWT"tx-001"
transferTypeString"masav" | "fp" | "zahav"
accountTypeString"PRIVATE" | "BUSINESS" | "CORPORATE"
corporateIdNumberCorporate ID, if relevant515555555
currentStatusStringSee status table below
previousStatusString | nullnull if this is the first status update
recurringBooleanOnly sent for recurring (הו"ק) paymentstrue
startDateISO dateOnly sent for recurring payments"2025-12-12"
tppStringYour client 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

StatusMasavFPZahavMeaning
receivedRequest received — fired when the user reaches the bank
rejectedRejected — show error + retry option
expiredLink expired
partiallyAcceptedTechnicalCorrectRequires further authorization (corporate accounts)
acceptedFundsCheckedBalance check passed — last status for Faster Payments
acceptedTechnicalValidationApproved, will execute by end of business day — terminal
acceptedWithChangeApproved with minor changes — terminal
acceptedSettlementInProcessApproved, executing immediately — terminal
acceptedSettlementCompletedExecuted and posted to payer's account — terminal
acceptedSettlementCompletedCreditorAccountCompleted on the creditor's account — terminal
executedFunds received in creditor's account — terminal
cancelledUser cancelled the standing order via their bank (not supported on FIBI banks)

Common questions

QuestionAnswer
psuMessage is nullNormal — the bank didn't return a reference, or this isn't a terminal status yet
previousStatus is nullThis is the first status update for this payment
finalAmount: false on a recurring paymentNormal — 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 webhookCheck IP whitelisting — see Webhooks & IP Whitelisting


Did this page help you?