What webhooks do
Instead of polling/latest after 4 PM hoping today’s rates have landed, a webhook pushes them to you. When the RBA publishes the daily rates, we send a signed HTTP POST to the URL you register - typically within ten minutes of publication.
Webhooks are available on the Professional plan and above. You can register up to 3 (Professional), 10 (Business), or 50 (Enterprise) subscriptions.
Authorization: Bearer YOUR_API_KEY) - the same key you use for the rest of the API - or from your dashboard. Your existing /latest and other REST endpoints are unchanged; webhooks are an addition, not a replacement.
Timing
The RBA targets ~4:00 PM Australian Eastern Time on business days, but the exact publication time drifts (often 4–5 PM, occasionally later), and it does not publish on weekends or NSW public holidays. The webhook fires once per business day, shortly after we detect the new rates.The delivery request
WePOST JSON to your URL with these headers:
| Header | Value |
|---|---|
Content-Type | application/json |
X-ExchangeRates-Event | rates.published (or rates.test for test sends) |
X-ExchangeRates-Signature | sha256=<hmac> - see Verifying signatures |
X-ExchangeRates-Delivery | A unique delivery UUID |
User-Agent | ExchangeRatesAPI-Webhook/1.0 |
rates contains every supported currency, or only the currencies you subscribed to. Respond with any 2xx status to acknowledge receipt.
Verifying signatures
Every delivery is signed so you can confirm it came from us. We computeHMAC-SHA256 over the raw request body using your subscription’s signing secret (shown once when you create the subscription), hex-encode it, and send it as X-ExchangeRates-Signature: sha256=<hmac>.
Recompute the HMAC over the exact bytes you received and compare. Use a constant-time comparison.
Retries and failures
If your endpoint does not return a2xx, we retry the delivery several times with backoff. Deliveries that never succeed are dropped after the retry budget is exhausted. If a subscription fails on 7 consecutive publications, we automatically deactivate it; it will then show as inactive when you list your subscriptions. Re-create it once your endpoint is healthy.
Testing your endpoint
Use the test endpoint to send a samplerates.test delivery on demand - it is signed exactly like a real one - so you can validate your receiver and signature check without waiting for the next publication.
