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

# Uso y configuración

> Agrega el nodo de PayPal a tu flujo en Canvas, configura sus inputs y prueba pagos en Sandbox.

Una vez conectada la integración, el nodo de **PayPal** queda disponible en Canvas y te permite crear experiencias de cobro con **WebView embebido** dentro del flujo conversacional.

<Tip>
  Si todavía no instalaste la integración, sigue primero [Conectar en Brain Studio](/guides/integraciones/pagos/proveedores/paypal/conectar-en-brain-studio).
</Tip>

***

## Agregar el nodo al Canvas

<Steps>
  <Step title="Abrir tu flujo en Canvas">
    Abre en Brain Studio el flujo donde quieres incorporar el cobro con PayPal.
  </Step>

  <Step title="Agregar el nodo PayPal">
    Agrega **PayPal** desde la barra de herramientas de **Canvas**, en el nodo **Pagos**, o desde los proveedores de pago disponibles una vez instalada la integración.

    El punto exacto puede variar según si iniciaste la instalación desde Marketplace, Jelou Agent, el nodo de pagos en Canvas o un template.
  </Step>

  <Step title="Conectar el nodo al punto de cobro">
    Conecta el nodo de PayPal después de que el flujo ya tenga el monto, los datos del comprador y la confirmación de compra.
  </Step>

  <Step title="Abrir el panel de configuración">
    Selecciona el nodo para abrir el panel lateral derecho y completar los **inputs** y revisar las **salidas** disponibles.

    <Frame caption="Nodo PayPal con el panel lateral de configuración abierto">
      <img src="https://mintcdn.com/jelouai/qfuCOV36dV96m5-d/assets/images/integraciones/pagos/paypal-nodo-canvas-configuracion.jpg?fit=max&auto=format&n=qfuCOV36dV96m5-d&q=85&s=347c26f00d95434435c14059731cd5ac" alt="Nodo PayPal en Canvas con el panel lateral de configuración abierto" width="1024" height="843" data-path="assets/images/integraciones/pagos/paypal-nodo-canvas-configuracion.jpg" />
    </Frame>
  </Step>
</Steps>

***

## Configurar el nodo

<Tabs>
  <Tab title="Inputs">
    ### Datos del pago

    <AccordionGroup>
      <Accordion title="Personalizar textos botón de pago" icon="message">
        <ParamField body="Personalizar textos botón de pago" type="boolean" default="false">
          Permite definir el mensaje que acompaña el botón de pago en la conversación.

          Si se activa, habilita **Header**, **Body** y **Footer** cuando estén disponibles en tu versión del nodo.
        </ParamField>
      </Accordion>

      <Accordion title="Header" icon="heading">
        <ParamField body="Header" type="string">
          Título del mensaje del botón de pago.

          Se muestra cuando **Personalizar textos botón de pago** está activo y el campo está disponible en tu versión del nodo.
        </ParamField>
      </Accordion>

      <Accordion title="Body" icon="align-left">
        <ParamField body="Body" type="string">
          Texto principal del mensaje del botón de pago.

          Se muestra cuando **Personalizar textos botón de pago** está activo y el campo está disponible en tu versión del nodo.
        </ParamField>
      </Accordion>

      <Accordion title="Footer" icon="minus">
        <ParamField body="Footer" type="string">
          Texto de cierre del mensaje del botón de pago.

          Se muestra cuando **Personalizar textos botón de pago** está activo y el campo está disponible en tu versión del nodo.
        </ParamField>
      </Accordion>

      <Accordion title="Contiene producto tangible" icon="box">
        <ParamField body="Contiene producto tangible" type="string">
          Define si la compra incluye un producto físico que requiere datos de envío.

          Si está en **Sí**, el nodo exige completar los campos de envío.
          Si está en **No**, esos campos no son obligatorios.

          Usa **Sí** solo cuando la compra incluya un producto físico que deba enviarse.
        </ParamField>

        <Note>
          Si vendes servicios, productos digitales o cobros sin envío físico, selecciona **No**.
        </Note>
      </Accordion>

      <Accordion title="País de envío" icon="globe">
        <ParamField body="País de envío" type="string">
          Requerido cuando **Contiene producto tangible** está en **Sí**.
          Indica el país de envío del producto según la dirección del comprador.
        </ParamField>
      </Accordion>

      <Accordion title="Estado de envío" icon="map">
        <ParamField body="Estado de envío" type="string">
          Requerido cuando **Contiene producto tangible** está en **Sí**.
          Indica el estado o provincia de envío según la dirección del comprador.
        </ParamField>
      </Accordion>

      <Accordion title="Ciudad de envío" icon="city">
        <ParamField body="Ciudad de envío" type="string">
          Requerido cuando **Contiene producto tangible** está en **Sí**.
          Indica la ciudad de envío según la dirección del comprador.
        </ParamField>
      </Accordion>

      <Accordion title="Dirección de envío" icon="location-dot">
        <ParamField body="Dirección de envío" type="string">
          Requerido cuando **Contiene producto tangible** está en **Sí**.
          Indica la dirección de envío del producto.
        </ParamField>
      </Accordion>

      <Accordion title="Código postal de envío" icon="mailbox">
        <ParamField body="Código postal de envío" type="string">
          Requerido cuando **Contiene producto tangible** está en **Sí**.
          Indica el código postal de envío según la dirección del comprador.
        </ParamField>
      </Accordion>

      <Accordion title="Motivo de pago" icon="file-lines">
        <ParamField body="Motivo de pago" type="string" required>
          Describe el motivo del cobro (por ejemplo, orden, servicio o referencia interna).
        </ParamField>
      </Accordion>

      <Accordion title="Monto sujeto a impuestos" icon="receipt">
        <ParamField body="Monto sujeto a impuestos" type="number" required>
          Monto sobre el que aplica el impuesto.
        </ParamField>
      </Accordion>

      <Accordion title="Monto libre de impuestos" icon="dollar-sign">
        <ParamField body="Monto libre de impuestos" type="number" required>
          Monto exento de impuestos.

          Si no aplica, usa `0`.
        </ParamField>
      </Accordion>

      <Accordion title="Nombre(s) comprador" icon="user">
        <ParamField body="Nombre(s) comprador" type="string" required>
          Nombre o nombres del comprador.
        </ParamField>
      </Accordion>

      <Accordion title="Apellido(s) comprador" icon="user">
        <ParamField body="Apellido(s) comprador" type="string" required>
          Apellido o apellidos del comprador.
        </ParamField>
      </Accordion>

      <Accordion title="Email comprador" icon="at">
        <ParamField body="Email comprador" type="string" required>
          Correo del comprador que usará el checkout.

          En **Sandbox**, debe ser el email de una cuenta **Sandbox Personal** de PayPal.
          En **producción**, usa el email real del comprador.
        </ParamField>
      </Accordion>
    </AccordionGroup>

    ### Avanzado

    <AccordionGroup>
      <Accordion title="Ambiente" icon="server">
        El bloque **Ambiente** muestra si PayPal opera en **Desarrollo** o **Producción**.

        Si la integración está en **Desarrollo**, desde ahí puedes iniciar el flujo para **Pasar a producción**.

        Si la integración está en **Producción**, el bloque refleja que PayPal ya opera con credenciales productivas.

        <Warning>
          No pases a producción sin tener credenciales **Live** y webhook **Live** configurados en PayPal.
        </Warning>
      </Accordion>

      <Accordion title="Experiencia de pago" icon="window">
        <ParamField body="Experiencia de pago" type="string" default="WebView">
          Indica que el checkout de PayPal se abre como **WebView embebido** dentro de la experiencia conversacional.
        </ParamField>
      </Accordion>

      <Accordion title="Expiración del botón de pagos [minutos]" icon="clock">
        <ParamField body="Expiración del botón de pagos [minutos]" type="number">
          Define cuánto tiempo permanece vigente el botón de pago después de enviarlo.

          Los valores disponibles dependen de la configuración visible en Brain Studio.
        </ParamField>
      </Accordion>

      <Accordion title="Moneda" icon="coins">
        <ParamField body="Moneda" type="string" required>
          Define la moneda del cobro.

          Debe ser compatible con la configuración de la integración.
        </ParamField>
      </Accordion>

      <Accordion title="Porcentaje de IVA" icon="percent">
        <ParamField body="Porcentaje de IVA" type="number" required>
          Ingresa el porcentaje de IVA que se aplicará en el cálculo del pago.
        </ParamField>
      </Accordion>

      <Accordion title="Metadata del pago" icon="tag">
        <ParamField body="Metadata del pago" type="string">
          Campo opcional para guardar una referencia interna (por ejemplo, ID de orden o correlativo de operación).
        </ParamField>
      </Accordion>

      <Accordion title="Guardar resultado como" icon="database">
        <ParamField body="Guardar resultado como" type="string">
          Define el nombre de la variable donde Brain Studio guardará el **JSON completo** de respuesta del nodo.
        </ParamField>

        <Tip>
          Úsalo para trazabilidad, validaciones posteriores o decisiones del flujo.
        </Tip>
      </Accordion>
    </AccordionGroup>
  </Tab>

  <Tab title="Outputs">
    <AccordionGroup>
      <Accordion title="Pago exitoso" icon="circle-check">
        Se activa cuando PayPal confirma que el pago/captura se completó correctamente.

        Recomendaciones:

        * confirmar la orden
        * emitir comprobante o notificación
        * actualizar estado de compra en tus sistemas
      </Accordion>

      <Accordion title="Pago pendiente" icon="clock">
        Se activa cuando la transacción queda en estado pendiente.

        Recomendaciones:

        * informar al usuario que el pago está en revisión/proceso
        * evitar crear un segundo cobro mientras se resuelve el estado
      </Accordion>

      <Accordion title="Mensaje de pago enviado" icon="paper-plane">
        Se activa cuando el mensaje con el botón de pago se envía correctamente en la conversación.

        Esta salida **no** confirma el pago. Solo indica que el mensaje con el botón de pago fue enviado correctamente en la conversación.

        Puedes conectar esta salida a un **AI Agent de soporte post-envío del mensaje de pago** para asistir al usuario mientras decide abrir el checkout o si tiene dudas antes de pagar.

        **Recomendaciones:**

        * resolver dudas sobre cómo abrir el botón de pago
        * ayudar si el WebView no carga o el usuario no entiende el paso
        * evitar crear un nuevo cobro sin contexto
        * no confirmar pagos desde esta salida

        **Ejemplo de prompt (referencial):**

        ```txt theme={null}
        Actúa como “Soporte de Pago”, un asistente breve para ayudar al usuario después de recibir un mensaje con botón de pago dentro de WhatsApp.

        Contexto:
        El usuario acaba de recibir un mensaje con botón de pago para abrir un checkout en WebView. Tu rol es responder dudas simples antes de que el usuario complete el pago.

        ────────────────────
        INTERRUPCIÓN INMEDIATA
        ────────────────────
        Si el último mensaje o evento recibido contiene señales de resultado de pago, NO respondas.

        Señales de resultado de pago:
        - pago exitoso, pago aprobado, pago completado
        - pago pendiente
        - pago fallido, rechazado, declinado o denegado
        - error de pago
        - confirmación automática del proveedor
        - recibo, comprobante, número de operación, transaction ID, payment ID
        - mensajes con estructura de comprobante, montos, método de pago o estado final

        Cuando detectes cualquiera de estas señales, detén tu ejecución inmediatamente. El resultado del pago debe ser manejado por las salidas oficiales del nodo de pago, no por este agente.

        ────────────────────
        COMPORTAMIENTO
        ────────────────────
        - Si el usuario no hizo una pregunta o no reportó un problema, no respondas.
        - Si el usuario tiene una duda, responde de forma breve, clara y útil.
        - No confirmes pagos.
        - No inventes estados de pago.
        - No recalcules montos.
        - No prometas reversos, aprobaciones, reembolsos ni tiempos de acreditación.
        - No generes nuevos links ni nuevos cobros.
        - Si el usuario necesita ayuda humana, indícale que puede esperar soporte o continuar por el canal definido por el flujo.

        ────────────────────
        QUÉ PUEDES RESPONDER
        ────────────────────
        Puedes ayudar con:
        - cómo abrir el botón de pago
        - qué hacer si el WebView no carga
        - qué hacer si el usuario cerró el checkout
        - dudas básicas sobre completar el formulario de pago
        - orientación general si el pago aparece pendiente o rechazado, sin confirmar el estado

        ────────────────────
        RESPUESTAS SUGERIDAS
        ────────────────────
        Si el usuario pregunta cómo pagar:
        “Abre el botón de pago y sigue las instrucciones del checkout. Cuando termines, vuelve a esta conversación.”

        Si el WebView no carga:
        “Intenta abrir el botón nuevamente y revisa tu conexión. Si el problema continúa, puedes intentar más tarde o pedir ayuda por este mismo chat.”

        Si el usuario dice que el pago fue rechazado:
        “Puedes revisar los datos ingresados e intentarlo nuevamente. Si el problema continúa, usa otro método de pago o solicita ayuda por este canal.”

        Si el usuario dice que ya pagó:
        No confirmes el pago. No respondas si el mensaje parece ser un resultado automático o comprobante. Si es solo una frase del usuario, responde:
        “Gracias. Esperemos la confirmación del pago para continuar.”

        ────────────────────
        CIERRE
        ────────────────────
        Si el usuario dice que ya no necesita ayuda, responde breve:
        “Perfecto. Si necesitas algo más, aquí estaré.”
        ```
      </Accordion>

      <Accordion title="Pago fallido" icon="circle-xmark">
        Se activa cuando el pago falla, es rechazado, denegado o no se completa.

        Recomendaciones:

        * permitir reintento controlado
        * ofrecer ruta de soporte o un camino alterno
      </Accordion>

      <Accordion title="Error" icon="triangle-exclamation">
        Se activa ante errores técnicos, errores del proveedor o fallas de comunicación durante la creación o el procesamiento del pago.

        Recomendaciones:

        * registrar el error
        * mostrar mensaje de contingencia
        * reintentar de forma controlada y escalar si persiste
      </Accordion>
    </AccordionGroup>
  </Tab>
</Tabs>

***

## Probar pagos en Sandbox

Si PayPal está conectado con credenciales de **desarrollo/Sandbox**, el checkout debe completarse con una cuenta compradora de prueba de PayPal.

La cuenta **Personal** representa al comprador y la cuenta **Business** representa al comercio en pruebas.

<Frame caption="PayPal Sandbox: usar una cuenta Personal para probar pagos">
  <img src="https://mintcdn.com/jelouai/qfuCOV36dV96m5-d/assets/images/integraciones/pagos/paypal-sandbox-test-account.gif?s=365d664b13dc730d34fa0bec6b2c1ac0" alt="Animación en PayPal Developer mostrando Sandbox Accounts, selección de una cuenta Personal y revisión de sus datos para usarla como comprador de prueba" width="1440" height="638" data-path="assets/images/integraciones/pagos/paypal-sandbox-test-account.gif" />
</Frame>

<Steps>
  <Step title="Abrir Sandbox Accounts">
    En PayPal Developer Dashboard, ve a **Testing Tools** → **Sandbox Accounts**.
  </Step>

  <Step title="Seleccionar una cuenta Personal">
    Elige una cuenta **Personal** de Sandbox y toma su email.

    Ese email será el comprador de prueba.
  </Step>

  <Step title="Revisar o cambiar la contraseña">
    Abre el detalle de la cuenta Personal y usa **Change password** si necesitas actualizarla.

    Para facilitar pruebas internas, puedes definir una contraseña temporal conocida por tu equipo de QA.

    <Warning>
      No uses esa contraseña en cuentas reales ni en producción.
    </Warning>
  </Step>

  <Step title="Verificar el ambiente de desarrollo">
    En la pestaña **Avanzado**, confirma que PayPal esté operando en Desarrollo antes de ejecutar la prueba.
  </Step>

  <Step title="Configurar el Email comprador en el nodo">
    En el nodo de PayPal, usa el email de la cuenta Sandbox Personal en **Email comprador** o mapéalo desde una variable de prueba.
  </Step>

  <Step title="Probar desde WhatsApp">
    Dispara el flujo desde WhatsApp, abre el checkout WebView de PayPal e inicia sesión con la cuenta Sandbox Personal.

    <Frame caption="Checkout de PayPal en WhatsApp usando una cuenta Sandbox Personal">
      <img src="https://mintcdn.com/jelouai/qfuCOV36dV96m5-d/assets/images/integraciones/pagos/paypal-webview-whatsapp-sandbox.gif?s=05ff7bf5364c76d9a2915bc0a2f8cea7" alt="Animación del checkout WebView de PayPal abierto desde WhatsApp para completar un pago de prueba con una cuenta Sandbox Personal" style={{ maxWidth: '280px', margin: '0 auto' }} width="540" height="1170" data-path="assets/images/integraciones/pagos/paypal-webview-whatsapp-sandbox.gif" />
    </Frame>
  </Step>

  <Step title="Validar la salida del flujo">
    Verifica por qué salida continúa el flujo:

    * **Pago exitoso**
    * **Pago pendiente**
    * **Pago fallido**
    * **Error**
  </Step>
</Steps>

<Note>
  En Sandbox, el pago es ficticio y no mueve dinero real.
</Note>

***

## Pasar a producción

Si PayPal fue instalado con credenciales de **desarrollo/Sandbox**, puedes iniciar el paso a producción desde la pestaña **Avanzado** del nodo PayPal en **Canvas** o desde la página de **PayPal** en **Marketplace**.

En ambos casos se abre el mismo modal para ingresar credenciales productivas y confirmar la configuración correspondiente.

Antes de operar con pagos reales:

* Asegúrate de tener credenciales **Live** y webhook **Live** correctamente configurados.
* Usa el flujo **Pasar a producción** descrito en [Conectar en Brain Studio](/guides/integraciones/pagos/proveedores/paypal/conectar-en-brain-studio).
* Reemplaza en el nodo cualquier dato de prueba por datos reales del flujo.
* En producción, usa el email real del comprador.
* Ejecuta una prueba real de bajo monto antes de escalar.

***

## Consideraciones importantes

<AccordionGroup>
  <Accordion title="El ambiente depende de la instalación">
    Si instalaste PayPal con credenciales Sandbox/desarrollo, prueba con una cuenta compradora Sandbox.

    Si instalaste PayPal con credenciales Live/producción, usa datos reales de comprador.
  </Accordion>

  <Accordion title="El Email comprador es crítico en Sandbox">
    En pruebas, el campo **Email comprador** debe pertenecer a una cuenta **Sandbox Personal** de PayPal.

    Si usas un email real en Sandbox, el checkout puede fallar o no continuar por la salida esperada.
  </Accordion>

  <Accordion title="Evita pagos duplicados">
    En escenarios pendientes o fallidos, informa con claridad al usuario antes de iniciar un nuevo intento de cobro.

    Mantén una lógica de reintento controlada para evitar cobros repetidos.
  </Accordion>

  <Accordion title="Webhooks y estados del pago">
    El estado final del pago depende de los webhooks de PayPal configurados en el mismo ambiente que las credenciales usadas por el nodo.
  </Accordion>
</AccordionGroup>

***

## Próximo paso

<Card title="Cobertura y precios" href="/guides/integraciones/pagos/proveedores/paypal/cobertura-y-precios" icon="globe">
  Revisa disponibilidad, condiciones comerciales y consideraciones de operación por mercado.
</Card>
