Skip to main content

Overview

Yuno sends webhook events to notify your server about changes to payments, subscriptions, payouts, customers, disputes, and BaaS resources. Each event contains the full resource state at the time of the event.
Process events idempotently. You may receive the same event multiple times due to retries. Use the id and timestamp fields to detect and deduplicate events.

Event Payload Structure

All webhook events follow this structure:
{
  "id": "evt_a1b2c3d4e5f6",
  "event": "payment.succeeded",
  "timestamp": "2026-01-15T14:30:00.000Z",
  "data": {
    // Full resource object at the time of the event
  }
}
FieldTypeDescription
idstringUnique event identifier
eventstringEvent type (e.g., payment.succeeded)
timestampstringISO 8601 datetime when the event occurred
dataobjectFull resource object (payment, subscription, payout, etc.)

Payment Events

payment.created

A new payment has been initiated. Trigger: A payment is created via the API or SDK.
{
  "id": "evt_pay_created_001",
  "event": "payment.created",
  "timestamp": "2026-01-15T14:30:00.000Z",
  "data": {
    "id": "pay_a1b2c3d4",
    "status": "PENDING",
    "amount": {
      "value": 100.00,
      "currency": "BRL"
    },
    "country": "BR",
    "payment_method": {
      "type": "PIX"
    },
    "merchant_order_id": "order-456",
    "customer": {
      "id": "cust_001"
    },
    "created_at": "2026-01-15T14:30:00.000Z"
  }
}

payment.authorized

A payment has been authorized but not yet captured. The funds are held on the customer’s account. Trigger: Payment authorization is approved by the provider/issuer. Applies to card payments with separate capture flows.
{
  "id": "evt_pay_auth_001",
  "event": "payment.authorized",
  "timestamp": "2026-01-15T14:30:05.000Z",
  "data": {
    "id": "pay_a1b2c3d4",
    "status": "AUTHORIZED",
    "amount": {
      "value": 100.00,
      "currency": "USD"
    },
    "country": "CO",
    "payment_method": {
      "type": "CARD",
      "card": {
        "last_four": "4242",
        "brand": "VISA"
      }
    },
    "authorization_code": "AUTH123456",
    "merchant_order_id": "order-789",
    "created_at": "2026-01-15T14:30:00.000Z"
  }
}

payment.succeeded

A payment has been completed successfully. Funds have been captured. Trigger: Payment is captured (automatically or manually) and confirmed by the provider.
{
  "id": "evt_pay_success_001",
  "event": "payment.succeeded",
  "timestamp": "2026-01-15T14:30:10.000Z",
  "data": {
    "id": "pay_a1b2c3d4",
    "status": "SUCCEEDED",
    "amount": {
      "value": 100.00,
      "currency": "BRL"
    },
    "country": "BR",
    "payment_method": {
      "type": "PIX"
    },
    "provider_reference": "prov_ref_abc123",
    "merchant_order_id": "order-456",
    "created_at": "2026-01-15T14:30:00.000Z",
    "completed_at": "2026-01-15T14:30:10.000Z"
  }
}

payment.failed

A payment has failed during processing. Trigger: Payment processing fails due to a technical error, provider issue, or validation failure (distinct from a decline by the issuer).
{
  "id": "evt_pay_fail_001",
  "event": "payment.failed",
  "timestamp": "2026-01-15T14:30:10.000Z",
  "data": {
    "id": "pay_a1b2c3d4",
    "status": "FAILED",
    "amount": {
      "value": 50.00,
      "currency": "USD"
    },
    "country": "CO",
    "payment_method": {
      "type": "CARD"
    },
    "error": {
      "code": "PROCESSING_ERROR",
      "message": "Provider returned an internal error"
    },
    "merchant_order_id": "order-101",
    "created_at": "2026-01-15T14:30:00.000Z"
  }
}
payment.failed indicates a processing error (timeout, provider error). payment.declined indicates the payment was actively refused by the issuer or provider. These are distinct events: failed means the transaction could not be processed, while declined means it was processed but rejected.

payment.declined

A payment has been declined by the provider or card issuer. Trigger: The issuer or payment provider rejects the transaction (e.g., insufficient funds, fraud check).
{
  "id": "evt_pay_decline_001",
  "event": "payment.declined",
  "timestamp": "2026-01-15T14:30:08.000Z",
  "data": {
    "id": "pay_a1b2c3d4",
    "status": "DECLINED",
    "amount": {
      "value": 200.00,
      "currency": "MXN"
    },
    "country": "MX",
    "payment_method": {
      "type": "CARD",
      "card": {
        "last_four": "1234",
        "brand": "MASTERCARD"
      }
    },
    "decline_reason": {
      "code": "INSUFFICIENT_FUNDS",
      "message": "The card has insufficient funds"
    },
    "merchant_order_id": "order-202",
    "created_at": "2026-01-15T14:30:00.000Z"
  }
}

payment.cancelled

A payment has been cancelled or voided before settlement. Trigger: The merchant cancels or voids a pending/authorized payment.
{
  "id": "evt_pay_cancel_001",
  "event": "payment.cancelled",
  "timestamp": "2026-01-15T15:00:00.000Z",
  "data": {
    "id": "pay_a1b2c3d4",
    "status": "CANCELLED",
    "amount": {
      "value": 100.00,
      "currency": "USD"
    },
    "country": "CO",
    "payment_method": {
      "type": "CARD"
    },
    "merchant_order_id": "order-789",
    "cancelled_at": "2026-01-15T15:00:00.000Z",
    "created_at": "2026-01-15T14:30:00.000Z"
  }
}

payment.expired

A payment authorization has expired without being captured. Trigger: The authorization window closes (typically 7-30 days depending on provider) without a capture.
{
  "id": "evt_pay_expire_001",
  "event": "payment.expired",
  "timestamp": "2026-01-22T14:30:00.000Z",
  "data": {
    "id": "pay_a1b2c3d4",
    "status": "EXPIRED",
    "amount": {
      "value": 75.00,
      "currency": "USD"
    },
    "country": "US",
    "payment_method": {
      "type": "CARD"
    },
    "merchant_order_id": "order-303",
    "created_at": "2026-01-15T14:30:00.000Z",
    "expired_at": "2026-01-22T14:30:00.000Z"
  }
}

payment.refunded

A full refund has been processed for a payment. Trigger: A refund is completed for the full payment amount.
{
  "id": "evt_pay_refund_001",
  "event": "payment.refunded",
  "timestamp": "2026-01-20T10:00:00.000Z",
  "data": {
    "id": "pay_a1b2c3d4",
    "status": "REFUNDED",
    "amount": {
      "value": 100.00,
      "currency": "BRL"
    },
    "refund": {
      "id": "ref_x1y2z3",
      "amount": {
        "value": 100.00,
        "currency": "BRL"
      },
      "reason": "Customer request",
      "created_at": "2026-01-20T10:00:00.000Z"
    },
    "country": "BR",
    "merchant_order_id": "order-456",
    "created_at": "2026-01-15T14:30:00.000Z"
  }
}

payment.partially_refunded

A partial refund has been processed for a payment. Trigger: A refund is completed for less than the full payment amount.
{
  "id": "evt_pay_partial_ref_001",
  "event": "payment.partially_refunded",
  "timestamp": "2026-01-20T10:00:00.000Z",
  "data": {
    "id": "pay_a1b2c3d4",
    "status": "PARTIALLY_REFUNDED",
    "amount": {
      "value": 100.00,
      "currency": "USD"
    },
    "refund": {
      "id": "ref_p1q2r3",
      "amount": {
        "value": 25.00,
        "currency": "USD"
      },
      "reason": "Partial return",
      "created_at": "2026-01-20T10:00:00.000Z"
    },
    "total_refunded": {
      "value": 25.00,
      "currency": "USD"
    },
    "country": "CO",
    "merchant_order_id": "order-789",
    "created_at": "2026-01-15T14:30:00.000Z"
  }
}

Subscription Events

subscription.created

A new subscription has been created. Trigger: A subscription is created via the API.
{
  "id": "evt_sub_created_001",
  "event": "subscription.created",
  "timestamp": "2026-01-15T14:30:00.000Z",
  "data": {
    "id": "sub_m1n2o3p4",
    "status": "ACTIVE",
    "plan": {
      "id": "plan_001",
      "name": "Premium Monthly",
      "amount": {
        "value": 29.99,
        "currency": "USD"
      },
      "interval": "MONTHLY"
    },
    "customer": {
      "id": "cust_001"
    },
    "country": "CO",
    "current_period_start": "2026-01-15T00:00:00.000Z",
    "current_period_end": "2026-02-15T00:00:00.000Z",
    "created_at": "2026-01-15T14:30:00.000Z"
  }
}

subscription.updated

A subscription’s configuration has been changed. Trigger: Subscription plan, amount, or billing details are modified.
{
  "id": "evt_sub_updated_001",
  "event": "subscription.updated",
  "timestamp": "2026-01-20T10:00:00.000Z",
  "data": {
    "id": "sub_m1n2o3p4",
    "status": "ACTIVE",
    "plan": {
      "id": "plan_002",
      "name": "Enterprise Monthly",
      "amount": {
        "value": 99.99,
        "currency": "USD"
      },
      "interval": "MONTHLY"
    },
    "customer": {
      "id": "cust_001"
    },
    "country": "CO",
    "updated_at": "2026-01-20T10:00:00.000Z"
  }
}

subscription.paused

A subscription has been paused. No recurring payments will be collected until resumed. Trigger: The merchant or customer pauses the subscription.
{
  "id": "evt_sub_paused_001",
  "event": "subscription.paused",
  "timestamp": "2026-02-01T10:00:00.000Z",
  "data": {
    "id": "sub_m1n2o3p4",
    "status": "PAUSED",
    "plan": {
      "id": "plan_001",
      "name": "Premium Monthly"
    },
    "customer": {
      "id": "cust_001"
    },
    "paused_at": "2026-02-01T10:00:00.000Z"
  }
}

subscription.resumed

A paused subscription has been resumed. Recurring payments will continue. Trigger: The merchant or customer resumes a paused subscription.
{
  "id": "evt_sub_resumed_001",
  "event": "subscription.resumed",
  "timestamp": "2026-02-15T10:00:00.000Z",
  "data": {
    "id": "sub_m1n2o3p4",
    "status": "ACTIVE",
    "plan": {
      "id": "plan_001",
      "name": "Premium Monthly"
    },
    "customer": {
      "id": "cust_001"
    },
    "resumed_at": "2026-02-15T10:00:00.000Z",
    "current_period_start": "2026-02-15T00:00:00.000Z",
    "current_period_end": "2026-03-15T00:00:00.000Z"
  }
}

subscription.cancelled

A subscription has been cancelled. No further payments will be collected. Trigger: The merchant or customer cancels the subscription.
{
  "id": "evt_sub_cancel_001",
  "event": "subscription.cancelled",
  "timestamp": "2026-03-01T10:00:00.000Z",
  "data": {
    "id": "sub_m1n2o3p4",
    "status": "CANCELLED",
    "plan": {
      "id": "plan_001",
      "name": "Premium Monthly"
    },
    "customer": {
      "id": "cust_001"
    },
    "cancelled_at": "2026-03-01T10:00:00.000Z",
    "cancellation_reason": "Customer request"
  }
}

subscription.payment.succeeded

A recurring subscription payment has been processed successfully. Trigger: The scheduled recurring charge succeeds.
{
  "id": "evt_sub_pay_ok_001",
  "event": "subscription.payment.succeeded",
  "timestamp": "2026-02-15T00:05:00.000Z",
  "data": {
    "subscription_id": "sub_m1n2o3p4",
    "payment": {
      "id": "pay_rec_001",
      "status": "SUCCEEDED",
      "amount": {
        "value": 29.99,
        "currency": "USD"
      }
    },
    "billing_period": {
      "start": "2026-02-15T00:00:00.000Z",
      "end": "2026-03-15T00:00:00.000Z"
    }
  }
}

subscription.payment.failed

A recurring subscription payment has failed. Trigger: The scheduled recurring charge is declined or fails.
{
  "id": "evt_sub_pay_fail_001",
  "event": "subscription.payment.failed",
  "timestamp": "2026-02-15T00:05:00.000Z",
  "data": {
    "subscription_id": "sub_m1n2o3p4",
    "payment": {
      "id": "pay_rec_002",
      "status": "FAILED",
      "amount": {
        "value": 29.99,
        "currency": "USD"
      },
      "error": {
        "code": "INSUFFICIENT_FUNDS",
        "message": "The card has insufficient funds"
      }
    },
    "retry_scheduled": true,
    "next_retry_at": "2026-02-18T00:00:00.000Z"
  }
}

subscription.retry_scheduled

A retry has been scheduled after a failed subscription payment. Trigger: The dunning engine schedules a retry attempt.
{
  "id": "evt_sub_retry_sched_001",
  "event": "subscription.retry_scheduled",
  "timestamp": "2026-02-15T00:10:00.000Z",
  "data": {
    "subscription_id": "sub_m1n2o3p4",
    "retry_attempt": 1,
    "max_retries": 3,
    "next_retry_at": "2026-02-18T00:00:00.000Z",
    "original_payment_id": "pay_rec_002"
  }
}

subscription.retry_succeeded

A retry attempt for a failed subscription payment has succeeded. Trigger: A scheduled retry charge is approved.
{
  "id": "evt_sub_retry_ok_001",
  "event": "subscription.retry_succeeded",
  "timestamp": "2026-02-18T00:05:00.000Z",
  "data": {
    "subscription_id": "sub_m1n2o3p4",
    "retry_attempt": 1,
    "payment": {
      "id": "pay_rec_003",
      "status": "SUCCEEDED",
      "amount": {
        "value": 29.99,
        "currency": "USD"
      }
    },
    "original_payment_id": "pay_rec_002"
  }
}

subscription.retry_failed

A retry attempt for a failed subscription payment has also failed. Trigger: A scheduled retry charge is declined or fails.
{
  "id": "evt_sub_retry_fail_001",
  "event": "subscription.retry_failed",
  "timestamp": "2026-02-18T00:05:00.000Z",
  "data": {
    "subscription_id": "sub_m1n2o3p4",
    "retry_attempt": 1,
    "max_retries": 3,
    "payment": {
      "id": "pay_rec_004",
      "status": "FAILED",
      "amount": {
        "value": 29.99,
        "currency": "USD"
      }
    },
    "next_retry_at": "2026-02-21T00:00:00.000Z",
    "original_payment_id": "pay_rec_002"
  }
}

subscription.dunning.final_action

The dunning process has exhausted all retry attempts and taken final action. Trigger: All retry attempts have failed and the subscription is cancelled or paused according to dunning policy.
{
  "id": "evt_sub_dunning_final_001",
  "event": "subscription.dunning.final_action",
  "timestamp": "2026-02-25T00:05:00.000Z",
  "data": {
    "subscription_id": "sub_m1n2o3p4",
    "action_taken": "CANCELLED",
    "total_retry_attempts": 3,
    "original_payment_id": "pay_rec_002",
    "customer": {
      "id": "cust_001"
    }
  }
}

Payout Events

payout.created

A new payout has been initiated. Trigger: A payout is created via the API.
{
  "id": "evt_payout_created_001",
  "event": "payout.created",
  "timestamp": "2026-01-15T14:30:00.000Z",
  "data": {
    "id": "pout_d1e2f3g4",
    "status": "PENDING",
    "amount": {
      "value": 500.00,
      "currency": "BRL"
    },
    "country": "BR",
    "recipient": {
      "id": "rcpt_001",
      "document": {
        "type": "CPF",
        "number": "***.***.***-01"
      }
    },
    "created_at": "2026-01-15T14:30:00.000Z"
  }
}

payout.succeeded

A payout has been completed and funds have been transferred. Trigger: The payout is confirmed by the provider.
{
  "id": "evt_payout_ok_001",
  "event": "payout.succeeded",
  "timestamp": "2026-01-15T15:00:00.000Z",
  "data": {
    "id": "pout_d1e2f3g4",
    "status": "SUCCEEDED",
    "amount": {
      "value": 500.00,
      "currency": "BRL"
    },
    "country": "BR",
    "provider_reference": "prov_pout_ref_001",
    "completed_at": "2026-01-15T15:00:00.000Z",
    "created_at": "2026-01-15T14:30:00.000Z"
  }
}

payout.failed

A payout has failed during processing. Trigger: The provider rejects the payout or a processing error occurs.
{
  "id": "evt_payout_fail_001",
  "event": "payout.failed",
  "timestamp": "2026-01-15T15:00:00.000Z",
  "data": {
    "id": "pout_d1e2f3g4",
    "status": "FAILED",
    "amount": {
      "value": 500.00,
      "currency": "BRL"
    },
    "country": "BR",
    "error": {
      "code": "INVALID_ACCOUNT",
      "message": "The recipient account could not be found"
    },
    "created_at": "2026-01-15T14:30:00.000Z"
  }
}

Customer Events

customer.created

A new customer record has been created. Trigger: A customer is created via the API or during a payment/enrollment flow.
{
  "id": "evt_cust_created_001",
  "event": "customer.created",
  "timestamp": "2026-01-15T14:30:00.000Z",
  "data": {
    "id": "cust_001",
    "email": "customer@example.com",
    "first_name": "Maria",
    "last_name": "Silva",
    "country": "BR",
    "created_at": "2026-01-15T14:30:00.000Z"
  }
}

customer.updated

A customer’s information has been updated. Trigger: Customer details are modified via the API.
{
  "id": "evt_cust_updated_001",
  "event": "customer.updated",
  "timestamp": "2026-01-20T10:00:00.000Z",
  "data": {
    "id": "cust_001",
    "email": "maria.new@example.com",
    "first_name": "Maria",
    "last_name": "Silva",
    "country": "BR",
    "updated_at": "2026-01-20T10:00:00.000Z"
  }
}

customer.deleted

A customer record has been deleted. Trigger: A customer is deleted via the API.
{
  "id": "evt_cust_deleted_001",
  "event": "customer.deleted",
  "timestamp": "2026-01-25T10:00:00.000Z",
  "data": {
    "id": "cust_001",
    "deleted_at": "2026-01-25T10:00:00.000Z"
  }
}

Dispute Events

dispute.created

A chargeback dispute has been opened. Trigger: A cardholder or issuer initiates a dispute against a payment.
{
  "id": "evt_disp_created_001",
  "event": "dispute.created",
  "timestamp": "2026-02-01T10:00:00.000Z",
  "data": {
    "id": "disp_h1i2j3k4",
    "status": "OPEN",
    "payment_id": "pay_a1b2c3d4",
    "amount": {
      "value": 100.00,
      "currency": "USD"
    },
    "reason": "FRAUDULENT",
    "evidence_due_by": "2026-02-15T23:59:59.000Z",
    "created_at": "2026-02-01T10:00:00.000Z"
  }
}

dispute.updated

A dispute’s evidence or status has been updated. Trigger: Evidence is submitted, or the dispute progresses to a new stage.
{
  "id": "evt_disp_updated_001",
  "event": "dispute.updated",
  "timestamp": "2026-02-10T10:00:00.000Z",
  "data": {
    "id": "disp_h1i2j3k4",
    "status": "UNDER_REVIEW",
    "payment_id": "pay_a1b2c3d4",
    "amount": {
      "value": 100.00,
      "currency": "USD"
    },
    "reason": "FRAUDULENT",
    "evidence_submitted": true,
    "updated_at": "2026-02-10T10:00:00.000Z"
  }
}

dispute.won

A dispute has been resolved in the merchant’s favor. Trigger: The card network or issuer rules in the merchant’s favor.
{
  "id": "evt_disp_won_001",
  "event": "dispute.won",
  "timestamp": "2026-02-20T10:00:00.000Z",
  "data": {
    "id": "disp_h1i2j3k4",
    "status": "WON",
    "payment_id": "pay_a1b2c3d4",
    "amount": {
      "value": 100.00,
      "currency": "USD"
    },
    "resolved_at": "2026-02-20T10:00:00.000Z"
  }
}

dispute.lost

A dispute has been resolved in the cardholder’s favor. Funds are returned to the cardholder. Trigger: The card network or issuer rules in the cardholder’s favor.
{
  "id": "evt_disp_lost_001",
  "event": "dispute.lost",
  "timestamp": "2026-02-20T10:00:00.000Z",
  "data": {
    "id": "disp_h1i2j3k4",
    "status": "LOST",
    "payment_id": "pay_a1b2c3d4",
    "amount": {
      "value": 100.00,
      "currency": "USD"
    },
    "resolved_at": "2026-02-20T10:00:00.000Z"
  }
}

BaaS Events

Entity Events

baas.entity.created

A new BaaS entity has been created. Trigger: An entity (individual or business) is created via the BaaS API.
{
  "id": "evt_baas_entity_created_001",
  "event": "baas.entity.created",
  "timestamp": "2026-01-15T14:30:00.000Z",
  "data": {
    "id": "ent_l1m2n3o4",
    "type": "INDIVIDUAL",
    "status": "CREATED",
    "country": "BR",
    "created_at": "2026-01-15T14:30:00.000Z"
  }
}

baas.entity.updated

A BaaS entity’s information has been updated. Trigger: Entity details are modified via the BaaS API.
{
  "id": "evt_baas_entity_updated_001",
  "event": "baas.entity.updated",
  "timestamp": "2026-01-20T10:00:00.000Z",
  "data": {
    "id": "ent_l1m2n3o4",
    "type": "INDIVIDUAL",
    "status": "ACTIVE",
    "country": "BR",
    "updated_at": "2026-01-20T10:00:00.000Z"
  }
}

Onboarding Events

baas.onboarding.created

A new onboarding process has been initiated. Trigger: An onboarding application is submitted via the BaaS API.
{
  "id": "evt_baas_onb_created_001",
  "event": "baas.onboarding.created",
  "timestamp": "2026-01-15T14:30:00.000Z",
  "data": {
    "id": "onb_p1q2r3s4",
    "entity_id": "ent_l1m2n3o4",
    "status": "PENDING",
    "created_at": "2026-01-15T14:30:00.000Z"
  }
}

baas.onboarding.updated

An onboarding process status has changed. Trigger: The onboarding process progresses or additional information is submitted.
{
  "id": "evt_baas_onb_updated_001",
  "event": "baas.onboarding.updated",
  "timestamp": "2026-01-16T10:00:00.000Z",
  "data": {
    "id": "onb_p1q2r3s4",
    "entity_id": "ent_l1m2n3o4",
    "status": "IN_REVIEW",
    "updated_at": "2026-01-16T10:00:00.000Z"
  }
}

baas.onboarding.approved

An onboarding application has been approved. Trigger: The KYC/KYB review process approves the entity.
{
  "id": "evt_baas_onb_approved_001",
  "event": "baas.onboarding.approved",
  "timestamp": "2026-01-18T10:00:00.000Z",
  "data": {
    "id": "onb_p1q2r3s4",
    "entity_id": "ent_l1m2n3o4",
    "status": "APPROVED",
    "approved_at": "2026-01-18T10:00:00.000Z"
  }
}

baas.onboarding.rejected

An onboarding application has been rejected. Trigger: The KYC/KYB review process rejects the entity.
{
  "id": "evt_baas_onb_rejected_001",
  "event": "baas.onboarding.rejected",
  "timestamp": "2026-01-18T10:00:00.000Z",
  "data": {
    "id": "onb_p1q2r3s4",
    "entity_id": "ent_l1m2n3o4",
    "status": "REJECTED",
    "rejection_reason": "Document verification failed",
    "rejected_at": "2026-01-18T10:00:00.000Z"
  }
}

Account Events

baas.account.created

A new BaaS account has been created. Trigger: An account is provisioned for an approved entity.
{
  "id": "evt_baas_acct_created_001",
  "event": "baas.account.created",
  "timestamp": "2026-01-19T10:00:00.000Z",
  "data": {
    "id": "acct_t1u2v3w4",
    "entity_id": "ent_l1m2n3o4",
    "status": "ACTIVE",
    "currency": "BRL",
    "country": "BR",
    "created_at": "2026-01-19T10:00:00.000Z"
  }
}

baas.account.updated

A BaaS account has been updated. Trigger: Account details or status are modified.
{
  "id": "evt_baas_acct_updated_001",
  "event": "baas.account.updated",
  "timestamp": "2026-01-20T10:00:00.000Z",
  "data": {
    "id": "acct_t1u2v3w4",
    "entity_id": "ent_l1m2n3o4",
    "status": "ACTIVE",
    "updated_at": "2026-01-20T10:00:00.000Z"
  }
}

baas.account.closed

A BaaS account has been closed. Trigger: The account is closed by the entity or the platform.
{
  "id": "evt_baas_acct_closed_001",
  "event": "baas.account.closed",
  "timestamp": "2026-02-01T10:00:00.000Z",
  "data": {
    "id": "acct_t1u2v3w4",
    "entity_id": "ent_l1m2n3o4",
    "status": "CLOSED",
    "closure_reason": "Entity request",
    "closed_at": "2026-02-01T10:00:00.000Z"
  }
}

Transfer Events

baas.transfer.created

A new BaaS transfer has been initiated. Trigger: A transfer is created between accounts or to an external destination.
{
  "id": "evt_baas_xfer_created_001",
  "event": "baas.transfer.created",
  "timestamp": "2026-01-20T14:30:00.000Z",
  "data": {
    "id": "xfer_x1y2z3a4",
    "status": "PENDING",
    "amount": {
      "value": 1000.00,
      "currency": "BRL"
    },
    "source_account_id": "acct_t1u2v3w4",
    "destination": {
      "type": "EXTERNAL",
      "bank_code": "001",
      "account_number": "****5678"
    },
    "created_at": "2026-01-20T14:30:00.000Z"
  }
}

baas.transfer.completed

A BaaS transfer has been completed successfully. Trigger: The transfer is confirmed by the banking provider.
{
  "id": "evt_baas_xfer_done_001",
  "event": "baas.transfer.completed",
  "timestamp": "2026-01-20T15:00:00.000Z",
  "data": {
    "id": "xfer_x1y2z3a4",
    "status": "COMPLETED",
    "amount": {
      "value": 1000.00,
      "currency": "BRL"
    },
    "source_account_id": "acct_t1u2v3w4",
    "completed_at": "2026-01-20T15:00:00.000Z",
    "created_at": "2026-01-20T14:30:00.000Z"
  }
}

baas.transfer.failed

A BaaS transfer has failed. Trigger: The transfer is rejected by the banking provider or a processing error occurs.
{
  "id": "evt_baas_xfer_fail_001",
  "event": "baas.transfer.failed",
  "timestamp": "2026-01-20T15:00:00.000Z",
  "data": {
    "id": "xfer_x1y2z3a4",
    "status": "FAILED",
    "amount": {
      "value": 1000.00,
      "currency": "BRL"
    },
    "source_account_id": "acct_t1u2v3w4",
    "error": {
      "code": "INSUFFICIENT_BALANCE",
      "message": "Account balance is insufficient for this transfer"
    },
    "created_at": "2026-01-20T14:30:00.000Z"
  }
}

baas.transfer.cancelled

A BaaS transfer has been cancelled before completion. Trigger: The transfer is cancelled by the entity or the platform.
{
  "id": "evt_baas_xfer_cancel_001",
  "event": "baas.transfer.cancelled",
  "timestamp": "2026-01-20T14:45:00.000Z",
  "data": {
    "id": "xfer_x1y2z3a4",
    "status": "CANCELLED",
    "amount": {
      "value": 1000.00,
      "currency": "BRL"
    },
    "source_account_id": "acct_t1u2v3w4",
    "cancellation_reason": "Entity request",
    "cancelled_at": "2026-01-20T14:45:00.000Z",
    "created_at": "2026-01-20T14:30:00.000Z"
  }
}

Event Reference Table

EventCategoryDescription
payment.createdPaymentNew payment initiated
payment.authorizedPaymentPayment authorized, capture pending
payment.succeededPaymentPayment completed successfully
payment.failedPaymentPayment processing failed
payment.declinedPaymentPayment declined by provider/issuer
payment.cancelledPaymentPayment cancelled or voided
payment.expiredPaymentPayment authorization expired
payment.refundedPaymentFull refund processed
payment.partially_refundedPaymentPartial refund processed
subscription.createdSubscriptionNew subscription created
subscription.updatedSubscriptionSubscription configuration changed
subscription.pausedSubscriptionSubscription paused
subscription.resumedSubscriptionSubscription resumed
subscription.cancelledSubscriptionSubscription cancelled
subscription.payment.succeededSubscriptionRecurring payment succeeded
subscription.payment.failedSubscriptionRecurring payment failed
subscription.retry_scheduledSubscriptionRetry scheduled after failure
subscription.retry_succeededSubscriptionRetry attempt succeeded
subscription.retry_failedSubscriptionRetry attempt failed
subscription.dunning.final_actionSubscriptionFinal dunning action taken
payout.createdPayoutPayout initiated
payout.succeededPayoutPayout completed
payout.failedPayoutPayout failed
customer.createdCustomerCustomer record created
customer.updatedCustomerCustomer information updated
customer.deletedCustomerCustomer record deleted
dispute.createdDisputeChargeback dispute opened
dispute.updatedDisputeDispute evidence/status updated
dispute.wonDisputeDispute resolved for merchant
dispute.lostDisputeDispute resolved for cardholder
baas.entity.createdBaaSEntity created
baas.entity.updatedBaaSEntity updated
baas.onboarding.createdBaaSOnboarding initiated
baas.onboarding.updatedBaaSOnboarding status changed
baas.onboarding.approvedBaaSOnboarding approved
baas.onboarding.rejectedBaaSOnboarding rejected
baas.account.createdBaaSAccount provisioned
baas.account.updatedBaaSAccount updated
baas.account.closedBaaSAccount closed
baas.transfer.createdBaaSTransfer initiated
baas.transfer.completedBaaSTransfer completed
baas.transfer.failedBaaSTransfer failed
baas.transfer.cancelledBaaSTransfer cancelled

Best Practices

  • Process idempotently. Use the event id to detect and skip duplicate deliveries.
  • Handle out-of-order events. Use the timestamp field to ensure you process events in the correct sequence. A payment.succeeded event may arrive before payment.created in rare cases.
  • Verify signatures. Validate the webhook signature header to confirm events originate from Yuno.
  • Respond quickly. Return a 200 status within 5 seconds. Process events asynchronously if your logic takes longer.
  • Log all events. Store raw event payloads for debugging and audit purposes.
  • Handle retries. Yuno retries failed deliveries with exponential backoff. If your endpoint returns a non-2xx status, Yuno will retry up to 5 times.