Skip to main content

What is a webhook

Webhooks enable apps to provide real-time information whenever an event happens without needing constant requests. They are a passive method to receive data between two systems through an HTTP POST. After configuring the Yuno webhooks, you will receive event notifications every time an activity or a function is generated within the Yuno flow.

Why do we recommend you use webhooks?

Webhooks are the best way to ensure your system is up-to-date with payment progress and status. Since the event notifications trigger automatically, your system won’t need to perform recurrent requests to Yuno. You will process the payment information on demand.

What do you need to know before start using webhooks?

To start using Yuno’s webhooks, you need to build a public REST API to receive event notifications (POST request). That means the REST API you will build should not require any authentication or access restriction through a header. Despite using a public API, the communication system is very safe since Yuno event notifications will not be available to the public and will use a unique URL to communicate only to your REST API.

Webhooks delivery and response requirements

Yuno webhooks expects to receive an HTTP 200 OK status as a response to confirm the webhook was successfully received. The merchant system does not need to include any information in the response’s body. Only the HTTP 200 status is required. If no response is received within the specified time, Yuno will retry sending the event notification up to seven times to ensure no information is lost. Refer to the Receipt Confirmation Process section for details on the notification schedule and confirmation waiting times for each retry.

De-duplication

Because Yuno retries delivery when it doesn’t receive a confirmation, your endpoint can receive the same event more than once. This is expected behavior, not a bug — your integration should be able to identify and skip duplicates.

The identifier

Every event payload includes data.idempotency_key, a unique identifier for that event. It stays stable across every retry of the same event, so you can use it to tell a duplicate delivery apart from a genuinely new event.

Coverage

data.idempotency_key is currently included in:
  • payment events
  • refund events
  • chargeback events
Support for enrollment events is landing on July 11, 2026. Until then, enrollment payloads do not include data.idempotency_key.

Why you might see the same event twice

Each payload also includes a top-level retry field with the number of delivery attempts made for that event (0 on the first attempt). If your endpoint doesn’t return an HTTP 200 OK in time, Yuno resends the same event — same data.idempotency_key, incremented retry — following the schedule described in Webhooks delivery and response requirements above. Treat any event carrying an idempotency key you’ve already processed as a duplicate, regardless of its retry value. Store every data.idempotency_key you’ve successfully processed, and check incoming events against that store before acting on them:
Keep in mind that not every event type carries data.idempotency_key yet (see Coverage above) — for event types without it, fall back to your own de-duplication key, such as the combination of resource ID and event type.

Common Webhook Events

Yuno sends event notifications for various activities within the payment ecosystem. Below are the available event categories and their corresponding events.

Payment events

Refund events

Subscription events

Each renewal charge is delivered as a payment.purchase webhook tied to the subscription, with the outcome (success or decline) carried in the status/sub_status fields. $0/trial cycles emit no payment webhook, and there is currently no subscription.error event.

Enrollment events

Payout events

Marketplace Split Transfer events

Banking Connectivity webhook events

Banking Connectivity (Banking as a Service) webhook notifications follow the same delivery and retry behavior described above. Yuno sends these events to your configured webhook endpoint when the status of a Banking Connectivity resource changes. For incoming transfer payload structure, see Webhook Notifications (Banking Connectivity). Incoming transfer notifications are sent to your endpoint at {merchant_base_URL}/v1/banking/transfers.

Entity events

Onboarding events

Account events

Transfer events (outgoing)

Transfer events (incoming)