Webhooks
Configure, verify, and handle Swipelux webhook deliveries.
Webhooks notify your platform when customer, verification, rail, and transfer states change asynchronously. Use them to update internal state without polling every object.
Swipelux delivers webhooks through Svix. Svix delivery and signature verification are the public integration contract.
Supported Events
| Event | When it fires |
|---|---|
customer.created | A customer record is created. |
customer.updated | Merchant-visible customer profile fields are updated. |
customer.verification_changed | A customer's verification status changes. |
customer.rail.status_changed | A customer rail changes status. |
customer.rail.documents_requested | Swipelux requests documents for a customer rail. |
transfer.created | A transfer is created by a pay-in, payout, or transfer flow, including Wert card and Apple Pay direct pay-ins. |
transfer.updated | A transfer is updated. |
transfer.amount_adjusted | The booked amount differs from the expected amount. |
transfer.funded_partial | A transfer receives less than the expected amount and completes with the received amount. |
transfer.completed | A transfer reaches completed. |
transfer.failed | A transfer reaches failed. |
payin.created | A pay-in transfer is created. |
payin.updated | A pay-in transfer is updated. |
payin.amount_adjusted | The booked pay-in amount differs from the expected amount. |
payin.funded_partial | A pay-in receives less than the expected amount and completes with the received amount. |
payin.completed | A pay-in reaches completed. |
payin.failed | A pay-in reaches failed. |
payout.created | A payout transfer is created. |
payout.updated | A payout transfer is updated. |
payout.amount_adjusted | The booked payout amount differs from the expected amount. |
payout.completed | A payout reaches completed. |
payout.failed | A payout reaches failed. |
Delivery Shape
createdAt is a Unix timestamp in milliseconds.
Webhook deliveries use a JSON event body. The payload examples on this page show the body your endpoint receives; do not Base64-decode the webhook body before parsing it.
Correlate Webhooks To API Requests
Core API pay-in, payout, and transfer webhooks are correlated by Swipelux object
IDs, not by a merchant-supplied externalId.
When you create a pay-in or payout, store the returned id from the response.
That value is the transfer ID (tr_xxx) used in transfer.*, payin.*, and
payout.* webhook payloads. If you execute the flow from a quote, also store
the quote ID (quo_xxx): GET /v1/transfers/{id} accepts either the transfer
ID or the consumed quote ID and returns the transfer.
Legacy widget order identifiers are separate from the public Core API webhook
contract. Do not expect a legacy widget externalId to appear in Core API
pay-in or transfer webhook payloads unless that field is documented in the API
reference for the endpoint you are using.
Customer Lifecycle
customer.created and customer.updated include the merchant-visible customer fields returned by the customer API.
Partial Funding
transfer.funded_partial uses the completed transfer state and reports both the expected amount and the received amount. fromAmount equals the received amount.
Transfer Completion Amounts
transfer.created, transfer.updated, transfer.completed, and transfer.failed are compatibility lifecycle events for pay-ins, payouts, and transfers. They include fromAmount; toAmount is included when Swipelux has a positive destination amount.
For card pay-ins, transfer.completed.toAmount is the delivered amount when that amount is known.
Pay-in And Payout Events
For API-created pay-ins and payouts, payin.* and payout.* events are emitted additively with transfer.* compatibility events. Pay-in payloads follow the pay-in API response shape. Payout payloads follow the payout API response shape.
Virtual-account deposits emit transfer lifecycle events after Swipelux attributes the incoming funds to the customer and destination wallet. Completed attributed deposits also emit payin.completed. Unresolved provider-side evidence does not emit merchant lifecycle webhooks until it is tied to an existing pay-in or resolved into a completed pay-in transfer.
Rail Status
Rail status events identify the qualified rail.
Rail Documents Requested
Document request events also identify the qualified rail.
Verify Deliveries
Verify each delivery with the Svix headers on the HTTP request:
svix-idsvix-timestampsvix-signature
Legacy HMAC fields such as secretKey may remain visible in compatibility responses, but do not treat HMAC-SHA256 or X-Webhook-Signature as the primary verification path for new integrations.
Configure Delivery
PATCH /v1/webhooks configures the delivery URL. It does not accept an events array and does not mutate the subscribed event list. New endpoints are subscribed to the supported public event catalog; per-endpoint event filters are managed in Svix.
When an endpoint has a narrow Svix-managed event filter, Swipelux keeps customer.verification_changed included so verification lifecycle changes continue to deliver.
API Reference
| Operation | Use it for |
|---|---|
GET /v1/webhooks | Retrieve webhook configuration. |
PATCH /v1/webhooks | Configure the webhook delivery URL. |