> ## Documentation Index
> Fetch the complete documentation index at: https://help.kajabi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Cambios en webhooks y API con los Order Bumps múltiples

Este artículo repasa los cambios realizados en los webhooks salientes de Kajabi como resultado de la introducción de los [<u>Order Bumps múltiples</u>](https://help.kajabi.com/add-order-bumps-to-an-offer#multiple-order-bumps). Si tus flujos de trabajo dependen de los webhooks **Payment Succeeded** o **Purchase Created** — por ejemplo, a través de una integración con Zapier o una integración personalizada — revisa los cambios a continuación para asegurarte de que tus automatizaciones sigan funcionando como se espera.

## **Cómo se procesan ahora los Order Bumps**

Las Ofertas principales de pago único y los Order Bumps de pago único ahora se agrupan en una sola transacción de pago. Esto aplica a todos los checkouts con precios de pago único, incluidas las Ofertas con un solo Order Bump. Antes, cada Oferta de un pedido se cobraba como una transacción separada.

Esto representa una mejora importante para los clientes: el precio total se muestra en un solo lugar en el checkout, y se les cobra un único monto. También reduce los costos de procesamiento de pagos, ya que la comisión fija por transacción se aplica una sola vez en lugar de una vez por Oferta.

Sin embargo, como las transacciones ahora se estructuran de forma diferente, los webhooks que transportan datos de transacciones u Ofertas han cambiado en consecuencia. Revisa las siguientes secciones para entender qué es diferente.

## **Webhook de Payment Succeeded**

El webhook Payment Succeeded se dispara cada vez que se recibe un pago. Con la introducción de los Order Bumps múltiples, **las Ofertas principales y los Order Bumps de precio único ahora se combinan en una sola transacción**, lo que significa que **solo se envía un evento por transacción**, sin importar cuántas Ofertas se hayan comprado.

### **Qué cambió**

Antes, si un cliente compraba una Oferta principal y un Order Bump, se creaban dos transacciones separadas y se disparaban dos eventos `payment_succeeded`.

Ahora, se crea una sola transacción que cubre todos los artículos de precio único en el pedido, y **se dispara un solo** `payment_succeeded `**evento**. Los detalles de la Oferta — incluyendo el ID de Oferta, el título externo, el título interno y el tipo de precio — contendrán **valores separados por comas** cuando la transacción incluya más de una Oferta. Esto aplica sin importar si el pedido incluye uno o varios bumps: cualquier checkout en el que se seleccione una Oferta principal de pago único y un bump de pago único ahora producirá una sola transacción y un solo evento Payment Succeeded.

Si estás consumiendo este webhook en Zapier o en una integración personalizada y haces referencia a alguno de estos campos de Oferta, ahora recibirás valores separados por comas donde antes recibías un solo valor.

<Note>
  **Nota:** Esto aplica solo a precios de pago único. Los bumps de suscripción y de plan de pago se cobran como transacciones separadas y siguen disparando su propio Payment Succeeded, sin cambios.
</Note>

### Antes (una sola Oferta, una sola transacción)

```text theme={null}
{
 "offer": {
   "id": 11111,
   "title": "Main Course",
   "internal_title": "Main Course - Internal",
   "type": "one-time"
 },
 "member": {
   "id": 99999,
   "email": "member@example.com",
   "name": "Jane Smith",
   "first_name": "Jane",
   "last_name": "Smith"
 },
 "payment_transaction": {
   "id": 55555,
   "created_at": "2025-04-01T10:00:00Z",
   "currency": "USD",
   "amount_paid": 5000,
   "amount_paid_decimal": 50.00,
   "subtotal": 5000,
   "subtotal_decimal": 50.00,
   "discount_amount": 0,
   "discount_amount_decimal": 0.0,
   "coupon_code": null,
   "payment_method": "visa",
   "payment_processor": "Kajabi Payments"
 }
}
```

### Después (Oferta principal + dos Order Bumps, una sola transacción)

```text theme={null}
{
 "offer": {
   "id": "11111,22222,33333",
   "title": "Main Course,Order Bump 1,Order Bump 2",
   "internal_title": "Main Course - Internal,Order Bump 1 - Internal,Order Bump 2 - Internal",
   "type": "one-time,one-time,one-time"
 },
 "member": {
   "id": 99999,
   "email": "member@example.com",
   "name": "Jane Smith",
   "first_name": "Jane",
   "last_name": "Smith"
 },
 "payment_transaction": {
   "id": 55555,
   "created_at": "2025-04-01T10:00:00Z",
   "currency": "USD",
   "amount_paid": 9000,
   "amount_paid_decimal": 90.00,
   "subtotal": 9000,
   "subtotal_decimal": 90.00,
   "discount_amount": 0,
   "discount_amount_decimal": 0.0,
   "coupon_code": null,
   "payment_method": "visa",
   "payment_processor": "Kajabi Payments"
 }
}
```

## **Webhook de Purchase Created**

El webhook Purchase Created sigue disparando **un evento por cada Oferta comprada**. Si el pedido de un cliente incluyó la Oferta principal y dos Order Bumps, seguirás viendo tres eventos separados en este webhook, el mismo comportamiento que antes.

### **Qué cambió**

Aunque el número de eventos no ha cambiado, los **campos de monto de la transacción** ahora reflejan el **valor total de toda la transacción**, no el valor de la Oferta individual de ese evento.

Cada evento también incluye un campo de monto a nivel de Oferta que muestra el precio específico de esa Oferta. **Si usas este webhook para llevar el registro de ingresos — por ejemplo, sumando** `amount_paid `**en todos los registros — debes usar el campo de monto a nivel de Oferta en lugar del monto a nivel de transacción**, o estarás contando de más. De nuevo, esto aplica sin importar si el pedido incluye uno o varios bumps: cualquier checkout en el que se seleccione una Oferta principal de pago único y un bump de pago único producirá una sola transacción, y todos los eventos Purchase Created de esa transacción reflejarán el total de la transacción completa en lugar del monto de la Oferta individual.

<Note>
  **Nota:** Esto aplica solo a precios de pago único. Los bumps de suscripción y de plan de pago se cobran como transacciones separadas y siguen disparando sus propios eventos Purchase Created, sin cambios.
</Note>

### Ejemplo

Un cliente compra una Oferta principal de \$50 y dos Order Bumps de \$20 cada uno. Valor total de la transacción: \$90.

Recibirás tres eventos `purchase`. Cada uno se verá así:

### **Evento 1: Oferta principal (\$50)**

```text theme={null}
{
 "id": 10001,
 "offer": {
   "id": 11111,
   "title": "Main Course"
    "internal_title": "Main Course",
    "quantity": 1,
    "unit_cost": 5000,
    "unit_cost_decimal": "50.00",
    "subtotal": 5000,
    "subtotal_decimal": "50.00",
    "total_amount": 5000,
    "total_amount_decimal": "50.00"
 },
 "member": {
   "id": 99999,
   "email": "member@example.com",
   "name": "Jane Smith",
   "first_name": "Jane",
   "last_name": "Smith"
 },
 "transaction": {
   "transaction_id": 55555,
   "transaction_created_at": "2025-04-01T10:00:00Z",
   "offer_type": "one-time",
   "subtotal": 9000,
   "subtotal_decimal": 90.00,
   "amount_paid": 9000,
   "amount_paid_decimal": 90.00,
   "currency": "USD",
   "payment_method": "visa",
   "payment_processor": "Kajabi Payments",
   "coupon_code": null
 },
 "opt_in": false,
 "trial": false
}
```

### **Evento 2: Order Bump 1 (\$20)**

```text theme={null}
{
 "id": 10002,
 "offer": {
   "id": 22222,
   "title": "Order Bump 1"
    "internal_title": "Order Bump 1",
    "quantity": 1,
    "unit_cost": 2000,
    "unit_cost_decimal": "20.00",
    "subtotal": 2000,
    "subtotal_decimal": "20.00",
    "total_amount": 2000,
    "total_amount_decimal": "20.00
 },
 "transaction": {
   "transaction_id": 55555,
   "subtotal": 9000,
   "subtotal_decimal": 90.00,
   "amount_paid": 9000,
   "amount_paid_decimal": 90.00,
   "currency": "USD",
   ...
 }
}
```

### Evento 3: Order Bump 2 (\$20)

```text theme={null}
{
 "id": 10003,
 "offer": {
   "id": 33333,
   "title": "Order Bump 2"
    "internal_title": "Order Bump 2",
    "quantity": 1,
    "unit_cost": 2000,
    "unit_cost_decimal": "20.00",
    "subtotal": 2000,
    "subtotal_decimal": "20.00",
    "total_amount": 2000,
    "total_amount_decimal": "20.00
 },
 "transaction": {
   "transaction_id": 55555,
   "subtotal": 9000,
   "subtotal_decimal": 90.00,
   "amount_paid": 9000,
   "amount_paid_decimal": 90.00,
   "currency": "USD",
   ...
 }
}
```

<Warning>
  **Importante:** Los tres eventos comparten el mismo `transaction_id` y el mismo `amount_paid` de 9000 (\$90.00). Para evitar contar los ingresos de más, usa `offer.total_amount` / `offer.total_amount_decimal`   — que refleja el precio de la Oferta individual — en lugar de `transaction.amount_paid`.
</Warning>

## **Endpoint de transacciones de la API**

Con los Order Bumps múltiples, una sola transacción ahora puede incluir más de una Oferta. Como resultado, la relación `offer` en el [endpoint de Transacciones](https://help.kajabi.com/api-reference/transactions/transaction-details) ha cambiado.

### **Qué cambió**

* El campo singular `offer` ya no devolverá datos para transacciones que incluyan Ofertas agrupadas
* Ahora hay disponible una nueva relación `purchases`, que devuelve todas las compras de Ofertas asociadas a una transacción

Si usas la API de Kajabi y haces referencia al campo `offer` en tu integración, revisa el [registro de cambios de la API](https://help.kajabi.com/api-reference/changelog#june-10-2026) para conocer los detalles de implementación.

###
