generated: '2026-07-26' method: searched source: https://developer.pexa.com.au/Webhooks/docs/definitions/webhooks/ spec_type: Webhooks asyncapi: null asyncapi_note: PEXA publishes no AsyncAPI document. The event surface is contractually declared instead as a top-level OpenAPI 3.1 webhooks block (SubscriberNotification, NonSubscriberNotification) in openapi/pexa-notification-service-openapi.yaml, plus the prose Event Catalogue captured below. No AsyncAPI was fabricated. openapi: openapi/pexa-notification-service-openapi.yaml service: name: PEXA Push Notifications Service (PEXA Webhooks) billing: premium, billed API - contact apisupport@pexa.com.au registration_base: https://{API_SERVER_URL}/notification/v1/notification-registrations hosts: production: https://api.pexa.com.au test: https://api-tst.pexalabs.com.au model: self-serve registration; the customer selects the eventTypes it wishes to receive pii: PEXA states the webhook feature does not surface any Personally Identifiable Information (PII) delivery: transport: HTTPS POST to a customer-defined webhookURI (HTTPS only) domain_allowlist: the webhookURI domain must be whitelisted by PEXA during onboarding; a mismatch fails registration (GA.NOTIF.400014) acknowledgement_window: acknowledge within 5 seconds success: any 2xx - no further action hard_failure: 3xx and 4xx are hard failures; no retry. PEXA can manually re-trigger on request retriable: 500, 502, 503, 504 - exponential backoff retry_schedule: - delay: 5 seconds since_initial: 00:00:05 - delay: 5 minutes since_initial: 00:05:05 - delay: 30 minutes since_initial: 00:35:05 - delay: 2 hours since_initial: 02:35:05 - delay: 5 hours since_initial: 07:35:05 - delay: 10 hours since_initial: '17:35:05' headers: - name: webhook-id description: UUID of the webhook event. Stable across retries. PEXA documents it as the idempotency key consumers use to avoid processing the same event twice. - name: webhook-timestamp description: Unix UTC milliseconds for the delivery attempt; updated on each retry as a replay-attack countermeasure. - name: webhook-signature description: Space-delimited list of 'v1,' signatures. During secret rotation both the new and the old signature are sent for 24 hours. - name: Authorization description: Bearer {access_token} - present only for HMAC_OAUTH registrations; the token is issued by the CUSTOMER auth server to PEXA. security: signature: algorithm: HMAC-SHA256 signed_string: webhook-id.webhook-timestamp.payload (full-stop delimited) encoding: hex, prefixed with the version identifier v1 standard: https://github.com/standard-webhooks/standard-webhooks/blob/main/spec/standard-webhooks.md authentication_modes: - mode: HMAC description: Shared-secret HMAC-SHA256 signature only. Default; the mode legacy V1 registrations fall back to. - mode: HMAC_OAUTH description: Dual layer - PEXA obtains an OAuth 2.0 client-credentials token from the CUSTOMER token endpoint before each delivery and sends it alongside the HMAC signature. Client auth is private_key_jwt (AWS KMS RSA, PS256) or client_secret. Introduced with the V3 registration endpoints. mtls: Optional additional transport layer, available only for HMAC_OAUTH registrations; applies to both the token request and the webhook delivery. Onboarded via apisupport@pexa.com.au. shared_secret: lifetime_days: 30 rotation_endpoint: POST /v1/notification-registrations/{registrationId}/secret-rotation rotation_scope: create:notification_registrations_secret_rotation warning_event: SECRET_EXPIRY is emitted 7 days before expiry and daily thereafter until rotated overlap: the previous secret remains valid for 24 hours after rotation consequence: all registrations are deleted on secret expiry token_caching: PEXA caches customer-issued access tokens until expiry minus a 60-second buffer; if the customer token endpoint omits expires_in the token is not cached. payload: schema: 'openapi/pexa-notification-service-openapi.yaml#/components/schemas/SubscriberNotificationPayload and #/components/schemas/NonSubscriberNotificationPayload' type_format: . - e.g. Lodgement.LODGEMENT_REGISTERED, Workspace.CHECKLIST_CHECKED categories_observed_in_published_examples: - Lodgement - Settlement - Workspace - Notification fields: - timestamp - type - data.workspaceId - data.subscriberId - data.subscriberReferences[] - data.additionalReferences[] - data.links[] (HATEOAS callbacks back into the Exchange API) registration_operations: - operationId: createNotificationRegistration method: POST path: /v1/notification-registrations scope: create:notification_registrations - operationId: createNotificationRegistrationV3 method: POST path: /v3/notification-registrations scope: create:notification_registrations note: adds authenticationMode + authConfig (HMAC_OAUTH) - operationId: getNotificationRegistrationsV2 method: GET path: /v2/notification-registrations scope: view:notification_registrations note: 'paged: page (min 1, default 1), limit (1-20, default 10), optional registrationId' - operationId: updateNotificationRegistration method: PUT path: /v1/notification-registrations/{registrationId} scope: edit:notification_registrations - operationId: updateNotificationRegistrationV3 method: PUT path: /v3/notification-registrations/{registrationId} scope: edit:notification_registrations - operationId: deleteNotificationRegistration method: DELETE path: /v1/notification-registrations/{registrationId} scope: delete:notification_registrations - operationId: createNotificationSecretRotation method: POST path: /v1/notification-registrations/{registrationId}/secret-rotation scope: create:notification_registrations_secret_rotation webhooks: - name: SubscriberNotification operationId: SubscriberNotification payload: SubscriberNotificationPayload audience: PEXA subscribers source: openapi/pexa-notification-service-openapi.yaml#/webhooks - name: NonSubscriberNotification operationId: NonSubscriberNotification payload: NonSubscriberNotificationPayload audience: non-subscriber integrators (e.g. brokers) source: openapi/pexa-notification-service-openapi.yaml#/webhooks mandatory_event_types: - SECRET_EXPIRY event_count: 110 events: - event: LODGEMENT_REGISTERED trigger: Lodgement request succeeds and Document is now registered by the Land Registry - event: SETTLEMENT_COMPLETED_BETWEEN_ESA trigger: A workspace has successfully completed the settlement of funds between ESAs - event: SECRET_EXPIRY trigger: Sent 7 days prior to expiry and subsequently every day until the sharedSecret key is rotated by the customer - event: PPN_LODGEMENT_RESPONSE_RECEIVED trigger: Receive Purchaser Payment Notification Lodgement Response with no errors - event: PPN_LODGEMENT_RESPONSE_BUSINESS_ERRORS trigger: Receive Purchaser Payment Notification Lodgement Response with errors (business errors) - event: PPN_LODGEMENT_RESPONSE_TECH_ERRORS trigger: Receive Purchaser Payment Notification Lodgement Response with errors (technical errors not including timeout) - event: PPN_VERIFICATION_RESPONSE_RECEIVED trigger: Receive Purchaser Payment Notification Verification Response with no errors. - event: PPN_VERIFICATION_RESPONSE_TECH_ERRORS trigger: Receive Purchaser Payment Notification Verification Response with errors (technical errors not including timeout) - event: PEXA_KEY_TRUST_ACCOUNT_SENT trigger: PEXA Key Trust Account details request sent. - event: PEXA_KEY_TRUST_ACCOUNT_SENT_FAILED trigger: PEXA Key Trust Account details request failed. - event: PEXA_KEY_PEXA_SOURCE_ACCOUNT_SENT trigger: PEXA Key Source Account details request sent. - event: GST_FORM1_LODGEMENT_RESPONSE_SUCCESSFUL trigger: GST Form 1 receives successful lodgement response. - event: GST_FORM2_LODGEMENT_RESPONSE_SUCCESSFUL trigger: GST Form 2 receives successful lodgement response. - event: GST_FORM1_REMOVAL trigger: GST Form 1 removal. - event: MESSAGE_RECEIVED trigger: Message Received - event: DOCUMENT_STATUS_UPDATED trigger: Document Status Updated - event: DOCUMENT_UNSIGNED trigger: Document Unsigned - event: DOCUMENT_DELETED trigger: Document Deleted - event: DOCUMENT_SIGNED trigger: Document Signed - event: DOCUMENT_CREATED trigger: Document Created - event: DOCUMENT_EDITED trigger: A document in a workspace is edited and saved - event: DOCHUB_FILE_UPLOADED trigger: New file uploaded to DocHub - event: DOCHUB_FILE_DELETED trigger: DocHub file deleted - event: DISCHARGE_AUTHORITY_UPLOADED trigger: Discharge Authority has been uploaded - event: LODGEMENT_REQUEST_FAILED trigger: Lodgement Request Failed - event: LODGEMENT_VERIFICATION_WITH_ERRORS trigger: Lodgement Verification With Errors - event: LODGEMENT_VERIFICATION_WITH_WARNINGS trigger: Lodgement Verification With Warnings - event: LODGEMENT_LODGED trigger: Lodgement lodged - event: NUMBER_RECEIVED_AFTER_LODGEMENT trigger: Dealing Number received for Document - After Lodgement - event: PARTY_ADDED_TO_WORKSPACE trigger: Party Added To The Workspace - event: PARTY_DELETED trigger: Party Deleted - event: PARTY_DETAILS_UPDATED trigger: Party Details Updated - event: PARTY_REMOVED_FROM_WORKSPACE trigger: Party Deleted From The Workspace - event: PARTY_CREATED trigger: Party Created - event: PARTY_UPDATED trigger: Party Updated - event: AUTO_BALANCING_AMOUNT_BREACH trigger: The auto-balancing source line item cannot auto-balance as the maximum amount has been reached - event: FINANCIAL_LINE_ITEM_TOTAL_UPDATED trigger: Financial Line Item Destination changed - event: LOAN_PAYOUT_LINE_ITEM_CREATED trigger: Destination Source Line Item is created with category of Loan Payout - event: LOAN_PAYOUT_LINE_ITEM_REMOVED trigger: Existing Destination Line item with category of Loan Payout has been removed from financial settlement schedule - event: LOAN_PAYOUT_LINE_ITEM_UPDATED trigger: Existing Destination Line item with category of Loan Payout has been edited - event: READY_FOR_SHORTFALL_UPDATE trigger: Financial line item entries marked as 'Ready for shortfall' by user. - event: READY_FOR_SURPLUS trigger: Financial line item entries marked as 'Ready for surplus' by user. - event: READY_TO_BOOK_NO_LONGER_APPLICABLE trigger: Workspace is no longer following the Ready to Book process - event: READY_TO_BOOK_SETTLEMENT_BOOKED trigger: PEXA has booked a settlement date and time for the Workspace - event: SETTLEMENT_ACCEPTED_BY_PARTICIPANT trigger: Settlement date and time has been accepted by the participant - event: SETTLEMENT_DATETIME_UPDATED trigger: Settlement Date/Time Updated - event: SETTLEMENT_FAILED_NOT_READY_FI trigger: Settlement Failed Due To Not Ready - event: SETTLEMENT_REMOVED trigger: Financial Settlement has been removed - event: SETTLEMENT_STATEMENT_SIGNED trigger: Settlement Statement Signed - event: SETTLEMENT_STATEMENT_UNSIGNED trigger: Settlement Statement Unsigned - event: SETTLEMENT_SUCCEEDED trigger: Settlement Succeeded - event: SETTLEMENT_STATUS_CHANGED trigger: Settlement Status Changed - event: FINANCIAL_LINE_ITEM_UPDATED trigger: Financial Line Item Updated - event: FINANCIAL_LINE_ITEM_DELETED trigger: Financial Line Item Deleted - event: FINANCIAL_LINE_ITEM_UNVERIFIED trigger: Generated when manual or auto verification of a line item is undone. Applies to both PEXA Source Account and Trust Account Source Line Items. - event: FINANCIAL_LINE_ITEM_VERIFIED trigger: Generated when manual verification of line items happens at PEXA. Applies only to Trust Account Source Line Items. - event: FINANCIAL_LINE_ITEM_VERIFIED_BY_PEXA trigger: Generated when PEXA Ops team verifies the funds via dashboard or auto by system. Applies only to PEXA Source Account Line Items. - event: SETTLEMENT_FAILED trigger: Settlement Failed - event: TAC_WORKSPACE_NOT_READY trigger: Workspace is not in 'Ready' status even though settlement is due to occur within an hour - event: LINKED_LODGEMENT_REMOVE trigger: Linked lodgement has been removed from the workspace - event: SETTLEMENT_FRS_AMOUNT_CHANGED trigger: Total Funds Required to Settle Changed - event: SETTLEMENT_HAS_COMMENCED trigger: A workspace has initiated and workspace status is updated to Settling - event: READY_FOR_SHORTFALL trigger: Financial line item entries marked as 'Ready for shortfall' by user. - event: STAMPDUTY_VERIFIED trigger: Stamp Duty Verification result is received with no errors or warnings. - event: STAMPDUTY_VERIFICATION_ERROR trigger: Stamp Duty Verification result is received with errors. - event: STAMPDUTY_VERIFICATION_WARNING trigger: Stamp Duty Verification result is received with warnings. - event: TAC_HOURPRIOR_FAILED trigger: TAC batch not been able to be completed for a workspace prior to settlement due to a technical error - event: TAC_HOURPRIOR_FAILED_FOR_LINKED trigger: TAC batch not been able to be completed for a workspace prior to settlement due to a technical error. The workspace participants of the linked workspace are notified that a technical error has occurred for TAC. - event: LODGEMENT_VERIFICATION_FAILED trigger: Lodgement Verification Failed For Positive TAC - event: CHECKLIST_CHECKED trigger: Checklist checked - event: CHECKLIST_UNCHECKED trigger: Checklist unchecked - event: LANDTITLE_ADDED trigger: Land Title Reference Added To Workspace - event: LANDTITLE_REMOVED trigger: Land Title Reference Removed from Workspace - event: SUBSCRIBER_WITHDRAWN trigger: Subscriber Withdrawn From Workspace By Self - event: INVITATION_ACCEPTED trigger: Workspace Invitation Accepted - event: INVITATION_DECLINED trigger: Workspace Invitation Declined - event: PARTICIPANT_INVITED trigger: Workspace Participant Invited - event: INVITATION_CREATED trigger: Workspace Invitation Sent - event: WORKSPACE_MOVED_TO_READY trigger: Workspace Moved to Ready Status - event: WORKSPACE_REVERTED_FROM_READY trigger: Workspace Reverted from Ready Status - event: INVITE_ACCEPTED_NON_PANEL_MEMBER trigger: Workspace Invitation Accepted by Non Panel Member - event: INVITE_ACCEPTED_PANEL_MEMBER trigger: Workspace Invitation Accepted by Panel Member - event: RESPONSIBLE_SUBSCRIBER_CHANGED trigger: Responsible subscriber changed - event: JOINED_EXISTING_WORKSPACE trigger: Successfully joined Workspace via the Existing Workspace screen - event: TAC_SUCCEEDED trigger: Positive Title Activity Check Response Received - event: WORKSPACE_STATUS_CHANGED trigger: Worspace Status Change - event: WORKSPACE_UPDATED trigger: Workspace Updated due to the Re-supply of RIS - event: LODGEMENT_CASE_CREATED trigger: Lodgement Case Created - event: LODGEMENT_CASE_STATUS_UPDATED trigger: Lodgement Case Status Updated - event: LODGEMENT_VERIFICATION_REQUESTED trigger: Lodgement Verification Requested - event: LODGEMENT_VERIFIED trigger: Lodgement Verification Without Error and Warning - event: LODGEMENT_REQUESTED trigger: Lodgement Requested - event: LODGEMENT_RECEIVED_BY_LR trigger: Lodgement Documents have been received by Land Registry - event: SETTLEMENT_DATETIME_UPDATED_BY_USER trigger: Settlement date and time is added to the workspace by the user on the Accept or Propose New Settlement Date and Time screen. - event: WORKSPACE_ROLE_ADDED trigger: Role Added to Workspace - event: WORKSPACE_ROLE_REMOVED trigger: Role Removed from Workspace - event: DOCUMENT_SIGNED_VIA_COGITO trigger: '#N/A' - event: SETTLEMENT_SIGNED_VIA_COGITO trigger: '#N/A' - event: INVITATION_FORWARDED trigger: Subscriber has forwarded an invitation to another Subscriber - event: INVITATION_WITHDRAWN trigger: Workspace Invitation Withdrawn - event: AUTO_CALCULATE_AMOUNT_BREACH trigger: Vendor’s surplus auto-calculation amount has exceeded 99,999,999.99 - event: SOURCE_FUNDS_DEPOSIT_RECEIVED trigger: Source funds deposit received for the workspace - event: LINKED_SIM_LODGEMENT_CREATE trigger: Linked simultaneous lodgement created - event: LINKED_SETTLEMENT_CREATE trigger: Subscriber creates a linked financial line item between two workspaces - event: LINKED_SETTLEMENT_CREATE_FOR_RECEIVING_SUBSCRIBER trigger: Linked financial line item created, from the receiving workspace’s perspective - event: LINKED_SETTLEMENT_ACCEPT trigger: Receiving subscriber accepts the link request - event: LINKED_SETTLEMENT_ACCEPT_FOR_RECEIVING_SUBSCRIBER trigger: Link request accepted, from the accepting subscriber’s perspective - event: LINKED_SETTLEMENT_UPDATE trigger: Linked financial line item updated by either workspace - event: LINKED_SETTLEMENT_DECLINE trigger: Receiving subscriber declines the link request - event: LINKED_SETTLEMENT_DELETE trigger: Either workspace removes the linked financial line item