Webhooks: the source of truth for every Omno transaction

Omno webhooks send every transaction status change to your server as an HTTP POST with a JSON body, and they are the single source of truth for final outcomes. Configure them in the dashboard under Developers, Webhooks, process them idempotently, never downgrade a final status, and confirm with Get Transaction Info when in doubt.

Updated

On this page5 sections

How do I set up a webhook?

In the dashboard:

  1. Go to Developers, Webhooks and click Create Webhook.
  2. Enter a Name for your own reference and the Webhook URL of your receiving endpoint.
  3. Choose Hook Type: Transaction.
  4. Select the transaction events you want to receive.
  5. Optionally choose an authorisation method, then click Create.

The same page shows every delivery: the full request payload, your server’s response and the status of each attempt.

What does Omno send?

An HTTP POST with a JSON body describing the transaction, whenever it reaches a state you subscribed to: creation, processing updates, success, failure or timeout.

{
  "event": "payment.status_changed",
  "transaction_id": "txn_8f2c41e9",
  "status": "SUCCESS",
  "amount": 150.00,
  "currency": "BRL",
  "method": "pix"
}

This example is illustrative and simplified. Base your parser on the payloads you see in the delivery log for your account.

How should my backend handle webhooks?

Four rules keep balances correct:

  • Respond quickly. Acknowledge with a 2xx response and do heavy work asynchronously.
  • Process idempotently. The same transaction can arrive more than once.
  • Never downgrade a final status. If SUCCESS is recorded, an older PENDING that arrives later changes nothing.
  • When in doubt, ask. Call GET /public/payin/{id} or GET /public/payout/{id} for the authoritative status.

What happens when my endpoint is down?

Omno retries a failed delivery up to 10 times, and every attempt is visible in the delivery log. Fix the endpoint, then reconcile anything still open with Get Transaction Info.

How do I keep test transactions out of real balances?

Check the provider ID. Transactions processed by a fake provider carry its ID in merchantPspId or processorPspId. Your crediting logic should ignore them, before and after go-live.

Frequently asked questions

How many times does Omno retry a failed webhook?

Up to 10 times. You can see every attempt, with the payload and your server's response, under Developers, Webhooks in the dashboard.

Can the same webhook arrive twice?

Yes. Process webhooks idempotently, keyed on the transaction, so a repeated delivery never credits or debits a balance twice.

What if a PENDING webhook arrives after SUCCESS?

Ignore it. Statuses can arrive out of order, so never overwrite a final status such as SUCCESS with an earlier one such as PENDING.

Should I rely on redirects or SDK events instead?

No. Redirects and browser events can be lost or spoofed. Change balances only after a webhook or Get Transaction Info confirms the final status.

esc
↑↓ to move ↵ to open All results