Skip to main content
SaturnShift POSTs a signed JSON event to your endpoint whenever a payment changes state. Add and manage endpoints from the Developers section of your PSP portal.

Events

Payload

Every event uses the same envelope. data is the full transaction object, identical in shape to the REST API.

Headers

Verify the signature

The signature is HMAC-SHA256 of <timestamp>.<raw request body> using your endpoint’s signing secret (shown on the Developers page). Compute it over the raw body, before any JSON parsing.
Node.js (Express)
Acknowledge with a 2xx only after you have stored the event. Any non-2xx status, or a response slower than 10 seconds, is treated as a failed delivery.

Retries and auto-disable

  • Failed deliveries are retried with backoff (roughly 1m, 5m, 15m, 1h, 3h, 6h, 12h).
  • After several days of continuous failure, the endpoint is auto-disabled and your PSP admins are emailed. Re-enable it from the Developers page once the receiver is fixed.
  • You can resend any delivery from the deliveries log in the portal.

Best practices

  • Dedupe on SaturnShift-Event-Id. Deliveries can repeat.
  • Return fast. Send a 2xx immediately, then process asynchronously.
  • Reconcile with GET /v1/transactions rather than trusting webhooks alone.
  • Match your orders using external_reference (the value you set at checkout) or by storing the SaturnShift id from the event.