> ## 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.

# Usage and configuration

> Add the Conekta node to your Canvas flow, configure its inputs, and test payments in the test environment.

Once the integration is connected, the **Conekta** node is available in Canvas and lets you create collection experiences with **embedded WebView** within the conversational flow.

<Tip>
  If you have not installed the integration yet, follow [Connect in Brain Studio](/en/guides/integraciones/pagos/proveedores/conekta/conectar-en-brain-studio) first.
</Tip>

***

## Add the node to Canvas

<Steps>
  <Step title="Open your flow in Canvas">
    Open in Brain Studio the flow where you want to add Conekta collection.
  </Step>

  <Step title="Add the Conekta node">
    Add **Conekta** from the **Canvas** toolbar, in the **Payments** node, or from available payment providers once the integration is installed.

    The exact entry point may vary depending on whether you started installation from Marketplace, Jelou Agent, the Payments node in Canvas, or a template.
  </Step>

  <Step title="Connect the node at the collection point">
    Connect the Conekta node after the flow already has the amount and purchase confirmation.
  </Step>

  <Step title="Open the configuration panel">
    Select the node to open the right sidebar and complete **inputs** and review available **outputs**.

    <Frame caption="Conekta node in Canvas with the side panel open on Payment data">
      <img src="https://mintcdn.com/jelouai/BJIoathnR7ANCT6N/assets/images/integraciones/pagos/conekta-nodo-sidebar-configuracion.png?fit=max&auto=format&n=BJIoathnR7ANCT6N&q=85&s=f381e8e3d5d359ca5730454b91d10c0e" alt="Conekta node in Canvas with payment outputs and side panel on Payment data tab with Customization disabled" width="1024" height="682" data-path="assets/images/integraciones/pagos/conekta-nodo-sidebar-configuracion.png" />
    </Frame>
  </Step>
</Steps>

***

## Configure the node

<Tabs>
  <Tab title="Inputs">
    ### Payment data

    <AccordionGroup>
      <Accordion title="Customization" icon="message">
        <ParamField body="Customization" type="boolean" default="false">
          Turn it on to define the messages that accompany the payment button in the conversation.

          When disabled, Brain Studio uses the default collection message texts.
        </ParamField>
      </Accordion>

      <Accordion title="Header" icon="heading">
        <ParamField body="Header" type="string">
          Title of the payment button message.

          Shown when **Customization** is enabled. Appears in the message preview.
        </ParamField>
      </Accordion>

      <Accordion title="Content" icon="align-left">
        <ParamField body="Content" type="string">
          Main text of the payment button message.

          Shown when **Customization** is enabled. Appears in the message preview.
        </ParamField>
      </Accordion>

      <Accordion title="Footer" icon="minus">
        <ParamField body="Footer" type="string">
          Closing text of the payment button message.

          Shown when **Customization** is enabled. Appears in the message preview.
        </ParamField>
      </Accordion>

      <Accordion title="Payment reason" icon="file-lines">
        <ParamField body="Payment reason" type="string" required>
          Descriptive text for the charge. Examples: order number, product, service, or internal reference.

          You can map it from flow variables, for example `{{$memory.paymentBreakdown.summary}}`.
        </ParamField>
      </Accordion>

      <Accordion title="Taxable amount" icon="receipt">
        <ParamField body="Taxable amount" type="number" required>
          Amount subject to VAT. Numbers only.

          You can map it from flow variables.
        </ParamField>
      </Accordion>

      <Accordion title="Tax-free amount" icon="dollar-sign">
        <ParamField body="Tax-free amount" type="number" required>
          Tax-exempt amount. If not applicable, use `0`. Numbers only.

          You can map it from flow variables.
        </ParamField>
      </Accordion>
    </AccordionGroup>

    <Frame caption="Payment data with payment button customization enabled">
      <img src="https://mintcdn.com/jelouai/BJIoathnR7ANCT6N/assets/images/integraciones/pagos/conekta-nodo-datos-del-pago.png?fit=max&auto=format&n=BJIoathnR7ANCT6N&q=85&s=398352cf3e29add002f02ad435af48c6" alt="Conekta node side panel on Payment data tab with Customization enabled, Header, Content, Footer fields, message preview, and charge amounts" width="516" height="1024" data-path="assets/images/integraciones/pagos/conekta-nodo-datos-del-pago.png" />
    </Frame>

    <Note>
      With **Customization** disabled, the panel shows the charge fields directly. The node in Canvas exposes the outputs **Successful payment**, **Pending payment**, **Payment message sent**, **Failed payment**, and **Error**.
    </Note>

    ### Advanced

    <AccordionGroup>
      <Accordion title="Environment" icon="server">
        The **Environment** block shows whether Conekta runs in **Development** or **Production**.

        If the integration is in **Development**, you can start the **Go live** flow from there.

        If the integration is in **Production**, the block reflects that Conekta already operates with production credentials.

        <Warning>
          The environment depends on installed credentials. Do not go live without preparing production credentials.
        </Warning>
      </Accordion>

      <Accordion title="Payment experience" icon="window">
        <ParamField body="Payment experience" type="string" default="WebView">
          Indicates that the Conekta checkout opens as **embedded WebView** within the conversational experience.
        </ParamField>
      </Accordion>

      <Accordion title="Payment button expiration" icon="clock">
        <ParamField body="Payment button expiration" type="number">
          Defines how long the payment button remains valid after being sent.

          Available values depend on the configuration visible in Brain Studio.
        </ParamField>
      </Accordion>

      <Accordion title="Currency" icon="coins">
        <ParamField body="Currency" type="string" required>
          Defines the collection currency.

          For Conekta Mexico, you will normally use `MXN`.
        </ParamField>
      </Accordion>

      <Accordion title="VAT percentage" icon="percent">
        <ParamField body="VAT percentage" type="number">
          Defines the VAT percentage applied to the collection operation.
        </ParamField>
      </Accordion>

      <Accordion title="Payment metadata" icon="tag">
        <ParamField body="Payment metadata" type="string">
          Optional field to store internal reference such as order ID, sequence number, user ID, or booking ID.
        </ParamField>
      </Accordion>

      <Accordion title="Save response" icon="database">
        <ParamField body="Save response" type="string">
          Defines the memory variable name where Brain Studio will store the node response.

          The response will be available in later flow nodes, for example `{{$memory.paymentResponse}}`.
        </ParamField>

        <Tip>
          Useful for traceability, later validations, or flow decisions.
        </Tip>
      </Accordion>
    </AccordionGroup>

    <Frame caption="Conekta node Advanced tab">
      <img src="https://mintcdn.com/jelouai/BJIoathnR7ANCT6N/assets/images/integraciones/pagos/conekta-nodo-avanzado.png?fit=max&auto=format&n=BJIoathnR7ANCT6N&q=85&s=0d7fa9937073a41570743a53ed59abef" alt="Conekta node side panel showing the Advanced tab with button expiration, MXN currency, VAT, metadata, and save response" width="516" height="1024" data-path="assets/images/integraciones/pagos/conekta-nodo-avanzado.png" />
    </Frame>
  </Tab>

  <Tab title="Outputs">
    <AccordionGroup>
      <Accordion title="Successful payment" icon="circle-check">
        Activates when Conekta confirms the transaction was approved.

        **Recommendations:**

        * confirm the order
        * issue receipt or update status in external systems
      </Accordion>

      <Accordion title="Pending payment" icon="clock">
        Activates when the transaction is in process or requires later confirmation.

        **Recommendations:**

        * inform the user clearly
        * avoid creating a second charge while the status is being resolved
        * wait for event update when applicable
      </Accordion>

      <Accordion title="Payment message sent" icon="paper-plane">
        Activates when the message with the payment button is sent successfully in the conversation.

        This output does **not** confirm payment. It only indicates the message with the payment button was sent successfully in the conversation.

        You can connect this output to a **post-payment-message support AI Agent** to assist the user while they decide to open checkout or if they have questions before paying.

        **Recommendations:**

        * resolve questions about how to open the payment button
        * help if the WebView does not load or the user does not understand the step
        * avoid creating a new charge without context
        * do not confirm payments from this output

        **Example prompt (reference):**

        ```txt theme={null}
        IMMEDIATE INTERRUPTION:
        - If the user's last message contains the structure of a payment receipt (includes elements such as "Pago aprobado", "N° de operación", "Pagamento aprovado", "Operação", the ✅ symbol followed by transaction data, ━━━ separators, or patterns like "Monto:", "Valor:", "Medio de pago:", "Método:"), do NOT respond at all. Run end_function immediately with status "payment_completed".


        You are "Payment Support", a help assistant for completing test payments inside WhatsApp. Context: the user just received a button (CTA) to make a test payment along with fictitious card data. Your role is NOT to sell or recalculate amounts: only help complete the payment or resolve button issues.


        KEY BEHAVIOR

        - This agent can run even if the user has not written anything.
        - If there is NO explicit question or problem from the user in the last message, send ONLY this proactive message (once) and then stay in reactive mode: "If you have any questions about your payment, message me here and I'll help."
        - If the user DOES write (question/problem), respond directly, briefly, and clearly.
        - Do not restart the process. Do not recalculate amounts. Do not generate new links. Do not invent information.
        - Maximum 1 emoji per message.

        WHAT YOU SUPPORT
        - How to pay from the button.
        - Button does not open / loading error.
        - Questions about test card data.
        - Pending or rejected payment.
        - Issues with the payment form.

        If the user reports a problem:
        1) Ask for a short description.
        2) If helpful, ask for a screenshot (they can send images).
        3) Suggest trying again or indicate the query can be escalated.

        DEMO CONTEXT
        - The card data the user received is fictitious and safe; it does not generate real charges.
        - The payment form opens from the CTA button they already received.
        - This is a test environment to demonstrate how payments work in Brain Studio.

        CLOSING / END OF TASK
        If the user says they already paid and do not need more help (e.g. "listo", "gracias", "ya pagué", "era eso", "todo bien"), reply briefly and close:
          Spanish: "Perfecto. Si necesitas algo más, aquí estaré."
          Portuguese: "Perfeito. Se precisar de algo mais, estarei por aqui."
        Then run end_function with status "completed".

        ## TERMINATION

        Run end_function in these cases:
        - WHEN: The message contains payment receipt structure (✅, ━━━, "Pago aprobado", "Pagamento aprovado", "N° de operación", "Operação") → status: "payment_completed", message: "" (empty, do not respond)
        - WHEN: The user indicates they are done or do not need more help → status: "completed", message: "<farewell message>"

        ## Operational Rules

        - Always run end_function with this format:
          {
            "output_schema": "{\"status\": \"payment_completed|completed\", \"message\": \"...\"}"
          }
        - For payment_completed: message MUST be an empty string "". Do not generate any response text before running end_function.
        ```
      </Accordion>

      <Accordion title="Failed payment" icon="circle-xmark">
        Activates when the transaction was rejected, declined, denied, or not completed.

        **Recommendations:**

        * allow controlled retry
        * offer support or an alternative path
      </Accordion>

      <Accordion title="Error" icon="triangle-exclamation">
        Activates on technical errors, provider errors, or communication failures during payment creation or processing.

        **Recommendations:**

        * log the error
        * show contingency message
        * retry in a controlled way and escalate if it persists
      </Accordion>
    </AccordionGroup>
  </Tab>
</Tabs>

***

## Test payments in the test environment

If Conekta is connected with **test** credentials, you can test checkout with test data published by Conekta.

<Note>
  In the test environment, payment is fictitious and does not move real money.
</Note>

<Steps>
  <Step title="Confirm test credentials">
    Verify Conekta is installed with test environment credentials.
  </Step>

  <Step title="Configure the node in the test environment">
    In the **Advanced** tab, verify the environment corresponds to development/test.
  </Step>

  <Step title="Test from WhatsApp">
    Trigger the flow from WhatsApp, open the Conekta WebView checkout, and select a test payment method.
  </Step>

  <Step title="Validate flow output">
    Verify which output the flow continues through:

    * **Successful payment**
    * **Pending payment**
    * **Failed payment**
    * **Error**
  </Step>
</Steps>

***

## Go live

If you installed Conekta with **development/test** credentials, you can start going live from the **Advanced** tab of the Conekta node in **Canvas** or from the **Conekta** page in **Marketplace**.

In both cases the same modal opens to enter production credentials and confirm the corresponding configuration.

Before operating with real payments:

* Make sure you have complete **production** credentials: public key and private key.
* Use the **Go live** flow described in [Connect in Brain Studio](/en/guides/integraciones/pagos/proveedores/conekta/conectar-en-brain-studio).
* Replace any test data in the node with real flow data.
* Run a low-amount real test before scaling.

***

## Important considerations

<AccordionGroup>
  <Accordion title="Environment depends on installation">
    If you installed Conekta with test credentials, test with test data. If you installed with production credentials, use real data.
  </Accordion>

  <Accordion title="Avoid duplicate payments">
    In pending or failed scenarios, inform clearly before starting another collection attempt. Keep retries controlled.
  </Accordion>

  <Accordion title="Test data does not work in production">
    Test cards and methods only apply in the test environment. In production the user must use real data.
  </Accordion>
</AccordionGroup>

***

## Next step

<Card title="Coverage and pricing" href="/en/guides/integraciones/pagos/proveedores/conekta/cobertura-y-precios" icon="globe">
  Review Conekta availability, currency, payment methods, and commercial considerations.
</Card>
