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

# Nova.Pay Payment Methods: Credit Card, Pix, and Boleto

> Nova.Pay supports credit cards (single and split), Pix instant payments, and bank slips (boleto). Learn how each method works and what the API returns.

Nova.Pay supports three payment methods: credit card, Pix, and bank slip (boleto). Credit cards can be processed through either Pagar.me or Stripe, support saved cards, and allow the customer's total to be split across two cards. Pix generates a QR code for instant payment. Bank slips produce a printable boleto URL and settle asynchronously. All three methods are available across the Checkout Page, Cart, and Charge paths — the `payment_method` field on each payment plan tells you which methods are offered for a given product configuration.

## Credit Card

Nova.Pay routes credit card payments through either **Pagar.me** or **Stripe** depending on your account configuration.

### Pagar.me

To protect raw card data, tokenize the card client-side using the Pagar.me.js SDK before sending the payment request. Pass the resulting token in `credit_card_0_token`. For a returning customer with a saved card, use `credit_card_0_card_id` instead.

### Stripe

Tokenize the card using Stripe.js and pass the resulting confirmation token in `confirmation_token_id`.

### Split payments (two cards)

You can split a single order across two credit cards by sending both `credit_card_0_*` and `credit_card_1_*` field sets. Include a `credit_card_0_amount` and `credit_card_1_amount` to specify how much to charge to each card. The amounts must sum to the order total.

<Tabs>
  <Tab title="Credit Card (Pagar.me)">
    ```json theme={null}
    {
      "payment_method": "credit_card",
      "payment_plan_id": "42-1",
      "checkout_page_id": 42,
      "credit_card_0_token": "tok_abc123",
      "credit_card_0_holder_name": "Jane Doe",
      "credit_card_0_cvv": "123"
    }
    ```
  </Tab>

  <Tab title="Credit Card (Stripe)">
    ```json theme={null}
    {
      "payment_method": "credit_card",
      "payment_plan_id": "42-1",
      "checkout_page_id": 42,
      "confirmation_token_id": "ctoken_xyz789"
    }
    ```
  </Tab>

  <Tab title="Split (Two Cards)">
    ```json theme={null}
    {
      "payment_method": "credit_card",
      "payment_plan_id": "42-1",
      "checkout_page_id": 42,
      "credit_card_0_token": "tok_abc123",
      "credit_card_0_amount": 5000,
      "credit_card_1_token": "tok_def456",
      "credit_card_1_amount": 5000
    }
    ```
  </Tab>

  <Tab title="Saved Card">
    ```json theme={null}
    {
      "payment_method": "credit_card",
      "payment_plan_id": "42-1",
      "checkout_page_id": 42,
      "credit_card_0_card_id": "card_xxxxxxxx"
    }
    ```
  </Tab>
</Tabs>

### Credit card response

<ResponseField name="order_status" type="string">
  The resulting order status after the payment attempt. Typically `paid` on immediate approval or `pending` if further action is required.
</ResponseField>

<ResponseField name="payments" type="array">
  <Expandable title="payment object">
    <ResponseField name="id" type="string">
      The gateway-assigned payment ID (Pagar.me charge ID or Stripe PaymentIntent ID).
    </ResponseField>

    <ResponseField name="status" type="string">
      Individual payment status: `pending`, `waiting_payment`, `paid`, `cancelled`, `failed`, or `waiting_cancellation`.
    </ResponseField>

    <ResponseField name="is_subscription" type="boolean">
      `true` if this payment is part of a subscription order.
    </ResponseField>
  </Expandable>
</ResponseField>

***

## Pix

Pix is Brazil's instant payment network. When a customer selects Pix, Nova.Pay generates a QR code and a copy-paste string. The customer scans or pastes the code in their banking app, and payment is confirmed in seconds.

<Tabs>
  <Tab title="Request">
    ```json theme={null}
    {
      "payment_method": "pix",
      "payment_plan_id": "42-pix",
      "checkout_page_id": 42
    }
    ```
  </Tab>

  <Tab title="Response">
    ```json theme={null}
    {
      "order_status": "waiting_payment",
      "pix_qr_code": "00020126580014br.gov.bcb.pix...",
      "pix_qr_code_url": "https://pay.nova.money/pix/qr/abc123.png",
      "pix_expires_at": "2024-08-01T18:00:00Z",
      "payments": [
        {
          "id": "pix_txn_abc123",
          "status": "waiting_payment"
        }
      ]
    }
    ```
  </Tab>
</Tabs>

### Pix response fields

<ResponseField name="pix_qr_code" type="string">
  The Pix Copia e Cola string. Display this in a text box so the customer can copy it into their banking app.
</ResponseField>

<ResponseField name="pix_qr_code_url" type="string">
  URL of the QR code image. Render this as an `<img>` so the customer can scan it with their phone camera.
</ResponseField>

<ResponseField name="pix_expires_at" type="string (ISO 8601)">
  The date and time at which the Pix charge expires. After this timestamp the QR code is no longer valid and the order will transition to `cancelled`.
</ResponseField>

<Note>
  The order status after a Pix payment request is `waiting_payment`. It transitions to `paid` once the customer completes the transfer in their banking app. Poll `GET /orders/{id}` or listen for the webhook event to detect confirmation.
</Note>

***

## Bank Slip (Boleto)

A bank slip (boleto bancário) is a Brazilian payment voucher that the customer prints or saves and pays at a bank branch, ATM, or internet banking portal. Settlement is not instant — confirmation typically arrives within one to two business days.

<Tabs>
  <Tab title="Request">
    ```json theme={null}
    {
      "payment_method": "bank_slip",
      "payment_plan_id": "42-boleto",
      "checkout_page_id": 42
    }
    ```
  </Tab>

  <Tab title="Response">
    ```json theme={null}
    {
      "order_status": "waiting_payment",
      "bank_slip_url": "https://pay.nova.money/boleto/abc123.pdf",
      "payments": [
        {
          "id": "boleto_txn_abc123",
          "status": "waiting_payment"
        }
      ]
    }
    ```
  </Tab>
</Tabs>

### Bank slip response fields

<ResponseField name="bank_slip_url" type="string">
  Direct URL to the printable boleto PDF. Redirect the customer to this URL or embed it in your confirmation page so they can print or save the voucher.
</ResponseField>

<Warning>
  The order status is `waiting_payment` immediately after boleto generation and remains there until the bank confirms payment. Do not fulfill the order until the status transitions to `paid`.
</Warning>

***

## Choosing a Payment Plan

Before presenting payment options to the customer, fetch the available plans for the current checkout context:

```http theme={null}
GET https://pay.nova.money/api/v1/payment_plans?checkout_page_id=42
```

Each plan object in the response includes a `payment_method` field — use it to group or filter the options you display:

```json theme={null}
[
  { "id": "42-1", "payment_method": "credit_card", "installments": 1, "amount": 10000 },
  { "id": "42-3", "payment_method": "credit_card", "installments": 3, "amount": 3400 },
  { "id": "42-pix", "payment_method": "pix", "installments": 1, "amount": 9500 },
  { "id": "42-boleto", "payment_method": "bank_slip", "installments": 1, "amount": 10000 }
]
```

Pass the chosen plan's `id` as `payment_plan_id` when you submit the payment request.


## Related topics

- [Nova.Pay API: Payments, Checkout & Order Management](/introduction.md)
- [Create and Process Your First Payment with Nova.Pay](/guides/create-payment.md)
- [Carts API — Create, Retrieve, and Pay Nova.Pay Carts](/api-reference/carts.md)
- [Order Lifecycle and Status Transitions in Nova.Pay](/concepts/orders-lifecycle.md)
- [Nova.Pay Checkout Flow: Pages, Carts, and Charge Links](/concepts/checkout-flow.md)
