Implemented in Fire and verified against the DSI sandbox. The final public host is still to be
fixed; until then the URL is coordinated per environment.
POST to this Fire endpoint. It is the primary path to close
the charge: without this notification, the charge stays waiting for the customer.
Endpoint
string
required
Country of the DSI connection in ISO alpha-2 (
EC, CL, CO, AR, VE, BR). It defines
which connection and which secret are used to validate the signature. Lowercase is accepted.settings.callbacks.status, so there is nothing
to configure separately: each payment already travels with its country’s callback.
Authentication: HMAC signature
This endpoint uses no API key and no bearer token. Authenticity comes from the signature.string
required
Hex-encoded HMAC-SHA256 of the raw request body, computed with the secret of the country
connection. A Fire administrator loads that secret when configuring the country’s DSI connection —
ask them for it if you need to verify the signature.
Signature calculation
- The raw body is signed, not a rebuilt JSON: reordering keys or changing whitespace invalidates the signature.
- The comparison runs in constant time.
- A missing or invalid signature returns
400, and nothing is processed.
Payload
string
required
The reference Fire sent when creating the payment. It is the correlation key: it identifies the
exact attempt the notification belongs to.
string
required
Transaction id in DSI. Fire uses it as the event id for deduplication.
string
required
Status reached:
approved, cancelled, waitingPayment, refundPayment, or refundFailed.integer
required
Amount paid in cents (integer).
1990 = 19.90.string
Provider message (rejection reason, refund detail).
string
required
Branch of the payment (the
branchOffice Fire sent when creating it).What Fire does with each status
paidPrice is stored as the provider’s reference; the amount Fire credits is the attempt’s amount.
Response
Fire returns200 as soon as it validates the signature and enqueues the notification. A
worker applies the status transition seconds later.
200
A
200 means received, not applied. To learn the final outcome, read the charge with
GET /api/v1/external/paybridge/intents/{intentId}.Idempotency and retries
Deduplication
Fire deduplicates by the triple
externalReference + transactionId + status. Resending the
same notification returns 200 with duplicate: true and is not processed again.No rollbacks
An attempt already in a terminal status is not moved back by a late notification. The only
exception is refunds, which do apply on an approved payment.
Unknown reference
If
externalReference matches no attempt, Fire returns 200 and discards it, so DSI doesn’t retry
forever.Safe retries
Processing is idempotent: you can retry after a
5xx with no risk of applying the same status
twice.Related
Charge from a channel
How the charge that this notification closes is created.
Supported methods by country
Which methods charge through DSI today in each country.

