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

# Cómo funciona Reval: del plan elegido al pedido en Shopify

> Recorrido completo del ciclo de vida de una suscripción en Reval: alta, cobros automáticos, portal del cliente y reintentos de pago.

Reval coordina tres sistemas —el navegador del comprador, Mercado Pago y Shopify— para que cada suscripción funcione de punta a punta sin intervención manual. Esta página explica cómo fluye la información en cada etapa, tanto desde la perspectiva de tu tienda como desde la del suscriptor.

<Note>
  **Shopify es la única fuente de verdad.** Cada cobro aprobado genera un pedido real en Shopify con sus líneas de producto, costo de envío e impuestos calculados en vivo. No hay base de datos paralela ni pedidos "fantasma": lo que ves en tu panel de Shopify es lo que realmente se cobró y despachará.
</Note>

## Flujo completo de una suscripción

```text theme={null} theme={null}
Comprador elige plan
        │
        ▼
  Checkout custom de Reval
  (tokenización en navegador)
        │
        ▼
  Mandato con monto libre creado en MP
        │
        ▼
  Cobro automático en cada ciclo
        │
        ▼
  Webhook de MP → Reval valida idempotencia
        │
        ▼
  Pedido real creado en Shopify
  (líneas + envío + impuestos en vivo)
        │
        ▼
  Fulfillment por tu flujo habitual
```

***

<Tabs>
  <Tab title="Vista del merchant">
    ### Lo que ocurre en tu tienda

    Como merchant, tu interacción principal con Reval sucede en dos momentos: la configuración inicial (planes, descuentos, frecuencias) y la revisión de reportes. El día a día corre automáticamente.

    #### Alta de suscripción

    <Steps>
      <Step title="El comprador elige un plan en el buy box">
        En la página de producto aparece un selector de planes con frecuencia (semanal, mensual, bimestral, etc.) y el descuento asociado a cada uno. El comprador selecciona el plan y hace clic en "Suscribirse".
      </Step>

      <Step title="Checkout custom de Reval">
        El comprador ingresa sus datos de tarjeta directamente en el checkout de Reval. **La tokenización ocurre en el navegador**, sin redirección a Mercado Pago. El servidor de Reval nunca ve el número de tarjeta completo.
      </Step>

      <Step title="Creación del mandato de cobro recurrente con monto libre">
        Reval crea un mandato de cobro recurrente (preapproval) en Mercado Pago usando la modalidad de **monto libre**, es decir, sin atarlo a un plan fijo de Mercado Pago. Esto es indispensable porque un mandato atado a un plan de MP solo puede cobrar un monto fijo, sin capacidad de sumar envío, impuestos ni descuentos por cliente. Con monto libre, cada ciclo cobra el monto exacto (producto + envío + impuestos) consultado en vivo a las tarifas reales de tu tienda en Shopify.
      </Step>

      <Step title="Primer cobro y pedido en Shopify">
        El primer cobro se ejecuta de inmediato. Cuando Mercado Pago confirma el pago via webhook, Reval crea el primer pedido en Shopify con todas las líneas, el envío y los impuestos. Ese pedido entra a tu flujo de fulfillment normal.
      </Step>
    </Steps>

    #### Ciclo recurrente

    <Steps>
      <Step title="Cobro automático por el mandato">
        En la fecha del ciclo, Mercado Pago ejecuta el cobro usando el mandato activo. El monto es el que quedó fijado en el mandato —producto, envío e impuesto calculados al momento del alta— y solo cambia si alguien lo actualiza explícitamente desde el admin o el portal.
      </Step>

      <Step title="Webhook de MP llega a Reval">
        Mercado Pago notifica el resultado del cobro (aprobado o rechazado) mediante un webhook. Reval verifica la idempotencia: si el evento ya fue procesado, lo descarta sin crear un pedido duplicado.
      </Step>

      <Step title="Pedido creado en Shopify (cobro aprobado)">
        Si el cobro fue aprobado, Reval crea inmediatamente un pedido en Shopify con las líneas actuales de la suscripción, el costo de envío y los impuestos. El pedido queda disponible para fulfillment al instante.
      </Step>

      <Step title="Cobro rechazado">
        Reval registra el fallo con su motivo y lo muestra en el admin y en el portal. **Mercado Pago reintenta el cobro por su cuenta**; si los reintentos se agotan, cancela el mandato y Reval marca la suscripción como cancelada. No se crea ningún pedido hasta que haya un cobro aprobado.
      </Step>
    </Steps>

    <Tip>
      Podés ver el estado de cada suscripción, los intentos de cobro y el historial de pedidos directamente en el panel de Reval dentro de tu admin de Shopify.
    </Tip>
  </Tab>

  <Tab title="Vista del suscriptor">
    ### Lo que experimenta el comprador

    El suscriptor no necesita crear una cuenta separada ni instalar nada. Todo ocurre dentro de tu tienda Shopify.

    #### Alta de suscripción

    <Steps>
      <Step title="Elige el plan en el producto">
        En la página del producto, el comprador ve el buy box de Reval con las opciones de suscripción disponibles: frecuencias y descuentos. Elige la que más le conviene.
      </Step>

      <Step title="Ingresa sus datos de tarjeta">
        El checkout custom de Reval aparece dentro del theme de tu tienda. El comprador ingresa número de tarjeta, vencimiento y CVV. Los datos se tokenizan directamente en su navegador.
      </Step>

      <Step title="Confirma la suscripción">
        Al confirmar, el primer cobro se procesa de inmediato. El comprador recibe una confirmación y queda activo en el portal de autogestión.
      </Step>
    </Steps>

    #### Portal de autogestión

    El portal del suscriptor vive dentro del tema de tu tienda (no es una página externa). Desde ahí, cada cliente puede:

    <CardGroup cols={2}>
      <Card title="Ver próximo cobro" icon="calendar">
        Fecha del próximo ciclo, monto estimado y productos incluidos en ese envío.
      </Card>

      <Card title="Cambiar productos o cantidades" icon="pen-to-square">
        Hacer swap de variante (otro sabor, otra talla) o ajustar la cantidad de cada ítem.
      </Card>

      <Card title="Agregar un add-on" icon="circle-plus">
        Sumar un producto puntual al próximo ciclo. Se cobra en el momento y se despacha junto con el pedido recurrente.
      </Card>

      <Card title="Pausar o cancelar" icon="circle-pause">
        Pausar los cobros y reanudarlos manualmente cuando quiera, o cancelar indicando el motivo.
      </Card>

      <Card title="Editar la dirección de envío" icon="location-dot">
        Actualizar los datos de entrega, que se aplican desde el próximo envío.
      </Card>

      <Card title="Ver historial" icon="clock-rotate-left">
        Consultar los pedidos generados por la suscripción y cuánto lleva ahorrado respecto del precio sin plan.
      </Card>
    </CardGroup>

    <Info>
      El portal usa **links firmados criptográficamente**, lo que significa que el comprador accede desde el email de confirmación sin necesidad de crear una contraseña. Los links tienen expiración configurable.
    </Info>
  </Tab>
</Tabs>

***

## Seguridad y confiabilidad

Reval está diseñado para que cada operación sea segura y no genere estados inconsistentes:

<CardGroup cols={2}>
  <Card title="Tokenización en el navegador" icon="shield-halved">
    Los datos de tarjeta nunca pasan por los servidores de Reval. El SDK de Mercado Pago tokeniza directamente en el navegador del comprador.
  </Card>

  <Card title="Webhooks idempotentes" icon="check-double">
    Cada evento de Mercado Pago se procesa una sola vez. Si el webhook llega duplicado, Reval lo detecta y no crea un pedido extra.
  </Card>

  <Card title="Links firmados" icon="key">
    El portal y el checkout usan links con firma criptográfica. Sin la firma correcta, no hay acceso.
  </Card>

  <Card title="Pedidos que no se pierden" icon="rotate">
    Si un cobro se aprueba pero el pedido no se puede crear —por ejemplo, porque un producto quedó sin stock— queda en cola y un proceso diario lo reintenta hasta lograrlo. El cliente ya pagó: su pedido no se cae.
  </Card>
</CardGroup>
