Scalapay · AsyncAPI Specification
Scalapay Webhooks
Version
View Spec
View on GitHub
PaymentsBuy Now Pay LaterBNPLInstalmentsE-CommerceCheckoutFinancial ServicesPoint of SaleReconciliationEuropeCompanyAsyncAPIWebhooksEvents
AsyncAPI Specification
generated: '2026-08-02'
method: searched
sources:
- https://developers.scalapay.com/reference/webhooks
- https://developers.scalapay.com/reference/wehook-data-model
- https://developers.scalapay.com/reference/listener-authentication-setup
- https://developers.scalapay.com/reference/connection-issues-and-retry-system
- https://developers.scalapay.com/reference/messages-validation
spec_type: none
asyncapi_published: false
notes: >-
Scalapay documents a real webhook surface but publishes no AsyncAPI (or any other machine-readable
event contract) — probed for /asyncapi.yaml, /asyncapi.json and an event catalog on the docs and API
hosts with no hit. This artifact captures the webhook catalog Scalapay does publish. It is a
documented event surface, not a fabricated spec.
surface:
kind: webhooks
direction: outbound
transport: HTTPS POST
content_type: application/json
subscription_model: single merchant-configured listener URL
configuration:
where: Partner Portal, Developers section
field: Webhook Url
description: The URL of your webhook listener.
url: https://developers.scalapay.com/reference/listener-authentication-setup
purpose: >-
Scalapay sends webhooks to notify the merchant backend about the outcome of every payment
operation, so no payment session is lost or dropped.
events:
- name: created
description: Triggered when an order is successfully created.
additional_payload: true
- name: authorized
description: Triggered when a shopper successfully authorizes a payment on the Scalapay page.
- name: charged
description: Triggered when a payment capture request is successfully processed.
- name: refunded
description: Triggered when a refund request is successfully processed.
additional_payload: true
- name: expired
description: >-
Triggered if an authorized payment is not captured before the expiry period defined by the
orderExpiryMilliseconds field in the initial order request.
payload:
always_present:
- {field: totalAmount, description: Total amount of the payment including all instalments.}
- {field: status, description: 'Current status of the payment: created, authorized, charged, refunded or expired.'}
- {field: orderToken, description: The Scalapay reference generated at the time of creation of the order.}
- {field: merchantReference, description: 'The correlation id from the merchant, typically the order id.'}
conditional: >-
Depending on the status you may receive further keys/objects (notably on `created` and `refunded`).
forward_compatibility_warning: >-
Scalapay states the list of statuses may change in the future, so consumers are advised not to
hardcode the expected set of values.
docs: https://developers.scalapay.com/reference/wehook-data-model
delivery:
ack_signal: HTTP 200
failure_signal: any non-200 (e.g. HTTP 400)
retry: exponential backoff
ordering_guarantee: none
ordering_note: >-
Retried notifications may not be processed in sequence; consumers must not assume webhooks arrive
in order.
docs: https://developers.scalapay.com/reference/connection-issues-and-retry-system
verification:
docs: https://developers.scalapay.com/reference/messages-validation
examples: https://developers.scalapay.com/reference/examples-of-webhook-requests
gaps:
- No AsyncAPI or JSON Schema document for any event payload.
- No per-event schema published; only the four always-present keys are specified.
- No published event-versioning policy.
x-evidence:
fetched: '2026-08-02'
probes:
- {url: 'https://developers.scalapay.com/asyncapi.yaml', http_status: 404}
- {url: 'https://developers.scalapay.com/asyncapi.json', http_status: 404}
- {url: 'https://api.scalapay.com/asyncapi.yaml', http_status: 403}
- {url: 'https://api.scalapay.com/asyncapi.json', http_status: 403}