Skip to main content

Webhooks Overview

A55 sends an HTTP POST webhook to your webhook_url whenever a charge status changes, giving you real-time visibility into payments.

Why webhooks

AspectWebhooks (push)Polling (pull)
LatencySecondsMinutes (depends on poll interval)
ReliabilityGuaranteed delivery with retriesEvents missed between intervals
Server loadEvent-driven, minimalConstant requests regardless of activity

Configuration

Set webhook_url on each charge request, or configure a default URL in the A55 dashboard.

SettingDescription
Per-charge webhook_urlSet on each charge request — receives events only for that charge
Default URLConfigured in the A55 dashboard — used when webhook_url is omitted
PropertyValue
MethodPOST
Content-Typeapplication/json
Timeout30 seconds
TLSHTTPS required

Retry policy

Failed deliveries are retried with exponential backoff over 24 hours:

AttemptDelayCumulative time
1ImmediateT+0
21 minuteT+1m
35 minutesT+6m
430 minutesT+36m
52 hoursT+2h 36m
66 hoursT+8h 36m
724 hoursT+32h 36m

After 7 failed attempts, the event is marked as failed in the dashboard.

ResponseRetried?
2xxNo — delivered successfully
4xxNo — permanent client error
5xxYes — transient server error
Timeout (>30 s)Yes
Connection refusedYes

Idempotency

Webhooks use at-least-once delivery. The same event may arrive more than once. Your handler must be idempotent — deduplicate by charge_uuid.

Respond quickly

Return 200 OK immediately after receiving the webhook. Process the event in a background job to avoid timeouts and duplicate deliveries.

Testing

ToolUsage
webhook.siteInspect payloads without running a server
ngrokExpose local server for live sandbox webhooks
A55 sandboxSend real test events from the sandbox environment