# Cupones para agentes de IA: qué dicen ACP, UCP y AP2

> Qué son los cupones para agentes de IA, por qué no hay un estándar propio y cómo tratan los códigos de descuento el ACP, el UCP y el AP2 al pagar.

URL: https://clione.ai/es/glosario/cupones-para-agentes/
Lang: es

Cupones para agentes no es una categoría nueva de cupones ni una extensión del navegador que busca códigos por ti. Es la pregunta de qué pasa con el campo «¿tienes un código de descuento?» cuando quien compra es un [agente de IA](/es/glosario/agente-de-ia/) y no una persona. La respuesta corta: **no existe un estándar con ese nombre**. Lo que hay son extensiones de descuento dentro de los protocolos de [comercio agéntico](/es/glosario/comercio-agentico/), que convierten el código en un dato de la petición de compra y obligan a la tienda a contestar si lo acepta y, si no, por qué. A una tienda le importa porque un código rechazado en silencio es una compra que el agente no puede explicar a su cliente.

## Qué dicen los protocolos

### ACP: una extensión del checkout

El [ACP (Agentic Commerce Protocol)](/es/glosario/acp/) ya traía un soporte básico: un campo `coupons` en las peticiones y el detalle de descuento en cada línea del pedido. Sobre eso, su Discount Extension, con fecha 2026-01-27 y marcada como borrador, es **la primera extensión del marco de extensiones del ACP**.[^acp-discount-rfc] Llegó con la versión de la especificación del 30 de enero de 2026, como pieza opcional que cada implementación adopta cuando quiere,[^acp-changelog] y sigue en la versión estable del 17 de abril de 2026.[^acp-discount-examples]

Lo que define:[^acp-discount-rfc]

- **El agente manda los códigos** en `discounts.codes`. Cada envío sustituye a los anteriores, un array vacío los quita todos y la tienda los compara sin distinguir mayúsculas. El antiguo `coupons` queda como alias obsoleto.
- **La tienda responde con lo aplicado**: cada descuento con su cupón (nombre, porcentaje o importe fijo), el importe descontado y, si hace falta, cómo se reparte entre las líneas del pedido y en qué orden se acumula con otros.
- **Los descuentos automáticos**, los que la tienda aplica sin código, salen en la misma lista.
- **Los códigos rechazados** salen aparte, con un motivo de una lista cerrada, y la tienda **debería** avisar también en los mensajes de la sesión con tipo `warning`, para que el usuario sepa que no recibirá el descuento que esperaba.

Los motivos de rechazo son ocho: código caducado, no válido, ya aplicado, no combinable con otro descuento activo, compra mínima no alcanzada, usuario sin sesión iniciada, usuario no elegible y límite de usos alcanzado.[^acp-discount-rfc] Y la propia especificación deja fuera **las API para crear y gestionar descuentos, las reglas de validación de cupones y el canje de puntos de fidelidad**.[^acp-discount-rfc]

Hay un cambio en preparación, todavía sin versión publicada: un campo para que el agente diga de qué feed sacó el precio que enseñó al comprador, de modo que la tienda pueda respetar el precio de catálogo. La política de cuándo respetarlo la decide el vendedor, no el protocolo.[^acp-suggested-price]

### UCP: el mismo esquema, con descuentos automáticos intocables

El [UCP (Universal Commerce Protocol)](/es/glosario/ucp/) tiene su propia extensión, `dev.ucp.shopping.discount`, en la versión de la especificación del 25 de agosto de 2026. Permite enviar uno o varios códigos, recibir los descuentos aplicados con un título legible y su importe, y conocer los rechazados por los mensajes de la sesión, con códigos de error como caducado, no válido o no combinable. Depende de la capacidad de carrito o de la de pago, o de las dos. Los descuentos automáticos aparecen marcados como tales, sin código, y **la plataforma no puede quitarlos**. Y deja claro quién manda: **la tienda decide si un código es válido**, con sus propias reglas.[^ucp-discount]

Google, en su guía para conectar el UCP con el [Modo IA](/es/glosario/modo-ia-google/) y [Gemini](/es/glosario/gemini/), pide a la tienda declarar esa capacidad en su perfil para recibir códigos, comunicar los códigos no válidos como avisos en los mensajes en lugar de rechazar la petición entera, y anotar los descuentos en los totales con valores negativos mientras los importes de la lista de aplicados siguen siendo positivos.[^google-ucp-promo]

### AP2: el descuento es cosa de la tienda

El [AP2 (Agent Payments Protocol)](/es/glosario/ap2/) no define cupones. En su reparto de papeles, la tienda **responde de la integridad del inventario, de los precios y de cualquier descuento propio**.[^ap2-spec] Cuando el agente compra sin la persona delante, con [pagos delegados](/es/glosario/pagos-delegados/), la tienda tiene además que comprobar que el pedido final cumple todas las condiciones que la persona firmó de antemano.[^ap2-spec] Un descuento que cambia el pedido entra en esa comprobación como cualquier otro cambio.

### Y antes de pagar: las promociones en el feed

En el [feed para ChatGPT](/es/glosario/feed-chatgpt/), la rebaja se declara con `sale_price`, que tiene que ser mayor que cero, menor que el precio normal y en la misma moneda. Se puede añadir el periodo con `sale_price_effective_date`, pero OpenAI avisa de que esa fecha **no programa la rebaja**: hay que actualizar el feed cuando empieza y cuando acaba.[^openai-feed-spec] En Google, las promociones de [Google Merchant Center](/es/glosario/google-merchant-center/) existen desde antes de los agentes: se muestran en la Búsqueda de Google, la pestaña Shopping, Chrome y otras superficies, España está entre los países admitidos, y tienen que poder canjearse al pagar, durar como mucho 183 días y descontar al menos 5 dólares o un 5 %. Su página de ayuda no menciona el Modo IA.[^gmc-promotions]

## En una tienda

Una tienda **ejemplo ficticio** que admite la extensión de descuentos del ACP. El agente envía dos códigos al crear la sesión de pago; uno vale y el otro caducó. Los importes van en céntimos, como pide la especificación:[^acp-discount-rfc][^acp-discount-examples]

```json
{
  "request": {
    "line_items": [{ "id": "moka-inox-6", "quantity": 1 }],
    "currency": "eur",
    "discounts": { "codes": ["OTONO10", "VERANO25"] }
  },
  "response": {
    "discounts": {
      "codes": ["OTONO10", "VERANO25"],
      "applied": [
        {
          "id": "di_otono10",
          "code": "OTONO10",
          "coupon": { "id": "cp_otono10", "name": "10 % en otoño", "percent_off": 10 },
          "amount": 399
        }
      ],
      "rejected": [
        {
          "code": "VERANO25",
          "reason": "discount_code_expired",
          "message": "El código VERANO25 caducó el 30 de septiembre."
        }
      ]
    },
    "messages": [
      {
        "type": "warning",
        "code": "discount_code_expired",
        "param": "$.discounts.codes[1]",
        "content_type": "plain",
        "content": "El código VERANO25 caducó el 30 de septiembre."
      }
    ]
  }
}
```

Lo que el agente puede contarle a su cliente sale de ahí: se aplicó un 10 %, **el segundo código no, porque caducó**, y con fecha. Sin el bloque `rejected` y el aviso, el agente solo vería un total más alto del que esperaba.


Creer que poner fechas a una rebaja en el feed la activa y la desactiva sola. En el feed de OpenAI, `sale_price_effective_date` se acepta como dato, pero **no programa la rebaja**: si no actualizas el feed al terminar la promoción, el agente sigue viendo el precio rebajado.[^openai-feed-spec] Y después, en el pago, la tienda puede no aplicarlo.


## Cómo comprobarlo

1. **Pregunta a tu plataforma o a tu proveedor de pagos** si su implementación del ACP o del UCP declara la extensión de descuentos. En el ACP aparece en las extensiones de la respuesta de pago;[^acp-discount-rfc] en el UCP, como `dev.ucp.shopping.discount` en el perfil.[^ucp-discount]
2. **Si tienes perfil UCP, ábrelo** en `https://tu-dominio/.well-known/ucp` y busca esa capacidad. Sin ella, Google no te envía códigos.[^google-ucp-promo]
3. **Prueba tus códigos difíciles**: uno caducado, uno con compra mínima y uno no combinable. Cada rechazo debería volver con su motivo, no como un error genérico.[^acp-discount-rfc]
4. **Revisa tu feed al terminar cada promoción**: el precio rebajado tiene que desaparecer cuando acaba.[^openai-feed-spec]
5. **Si usas promociones de Merchant Center**, comprueba que cumplen sus requisitos de duración y descuento mínimo.[^gmc-promotions]

## Concepto cercano: checkout agéntico

El [checkout agéntico](/es/glosario/checkout-agentico/) es la fase del pago cuando la hace un agente, y los cupones viven dentro de ella: **en el ACP y en el UCP, el descuento es una extensión de la sesión de pago**, no un protocolo aparte.[^acp-discount-rfc][^ucp-discount] Antes del pago, lo que el agente sabe de una rebaja es lo que dice tu feed; eso pertenece al [descubrimiento de productos por IA](/es/glosario/descubrimiento-por-ia/). Y quién decide usar un código, el agente solo o la persona, depende de si el agente es [autónomo o asistido](/es/glosario/agente-autonomo-vs-asistido/).

Para seguir, la [ruta de lectura de comercio agéntico](/es/aprender/comercio-agentico/) ordena los protocolos que llevan a un agente del catálogo al pago.
