# Create a Card Present Pix Payment

Generate a **Pix QR Code** at a physical terminal in a **Card Present (CP)** environment using the Getnet Global API. The terminal displays the QR Code as a scannable image (Pix Copy and paste). It can also present the QR Code over **NFC (contactless Pix)**. The customer authorizes the payment from their banking app.

## How it works

This flow generates a Pix QR Code at the terminal and confirms the payment asynchronously.

- The terminal requests a dynamic Pix QR Code from the gateway and receives both a scannable `qr_code` string and a `qr_code_nfc` payload for contactless (NFC) presentation.
- Use this flow for **Brazil (BRL)** Pix acceptance at the point of sale, when you want the customer to pay from their bank account instead of with a card.
- At the end you have a `payment_id` to track the transaction and a QR Code (visual and NFC) to present to the customer.

| Stage | Actor | Action |
| --- | --- | --- |
| **1. Generate** | Terminal → API | The terminal sends a `POST` request to the Pix endpoint and receives the QR Code payloads (`HTTP 201`). |
| **2. Present** | Terminal → Customer | The terminal renders `qr_code` as a scannable image or emits `qr_code_nfc` over NFC. The customer confirms the payment in their banking app. |
| **3. Confirm** | API → Terminal | Getnet authorizes the payment asynchronously. The terminal confirms the final status via [webhooks](/en/global-api/webhooks-global/callbacks-notifications) or the Get Transaction endpoint. |

<Callout type="warning">

`status: "WAITING"` means the **QR Code was generated**. It does **not** mean the customer has paid. Confirm the actual payment status separately using the `payment_id`.

</Callout>

## Before You Begin

Before you start, make sure you have:

- **API Credentials**: Get your `client_id` and `client_secret` from the Integration Support team.
- **Authentication**: Generate a Bearer token via the [Authentication endpoint](https://docs.globalgetnet.com/en/products/online-payments/regional-api/swagger#tag/authentication), using the `digital-platform:gateway-api` scope.
- **Pix enabled**: Your merchant account must be enabled for Pix in Brazil (`BRL`).
- **Terminal capability**: A physical device that can render a QR Code image and emit the `qr_code_nfc` payload over NFC. For device display and NFC/EMV requirements, see [Terminal Requirements](/en/global-api/reference-global/terminal-requirements) and [EMV Tags](/en/global-api/reference-global/emv-tags).

## Step 1: Build the request

### Endpoint

`POST /dpm/payments-gwproxy/v2/payments/qrcode/pix`

You can customize the QR Code expiration with the optional `x-qrcode-expiration-time` header (value in seconds; default `180`, maximum `1800`).

### Required fields

Send these fields in every request:

| Field | Type | Constraints | Description |
| --- | --- | --- | --- |
| `amount` | Integer | In cents | Transaction amount (e.g., `10050` = 100.50). |
| `currency` | String | ISO 4217 | Currency code. Use `BRL`. |
| `customer_id` | String | ≤ 36 chars | Buyer identifier used by your platform. Passed on in the Pix payment notification. |

### Optional fields

Include these fields when your integration needs them:

| Field | Type | Description |
| --- | --- | --- |
| `order_id` | String | Your internal order reference. |
| `idempotency_key` | String (1-64) | Unique key to prevent duplicate requests. Recommended for every request. |
| `data.additional_data.split.subseller_list_payment` | Array | Distributes the amount across subsellers. Required only for split payments. |

For split payments, each entry in `subseller_list_payment` carries `subseller_id`, `document_type`, `document_number`, `subseller_sale_amount`, and an `items` array. The full example below shows the complete structure.

## Step 2: Send the request

### Minimal example

Send the smallest valid payload with only the required fields:

```bash
curl --request POST \
  --url https://api.pre.globalgetnet.com/dpm/payments-gwproxy/v2/payments/qrcode/pix \
  --header 'authorization: Bearer <ACCESS_TOKEN>' \
  --header 'content-type: application/json' \
  --data '{
  "amount": 10050,
  "currency": "BRL",
  "customer_id": "customer_21081826"
}'
```

### Full example (with split)

This payload distributes the amount across subsellers with `split`:

```json
{
  "amount": 10050,
  "currency": "BRL",
  "customer_id": "customer_21081826",
  "order_id": "Order-00123",
  "idempotency_key": "1eb2412c-165a-41cd-b1d9-76c575d30a21",
  "data": {
    "additional_data": {
      "split": {
        "subseller_list_payment": [
          {
            "subseller_id": "700104158",
            "document_type": "CNPJ",
            "document_number": "12345678000195",
            "subseller_sale_amount": 5025,
            "items": [
              { "id": "MR1", "description": "Product MR1", "currency": "BRL", "amount": 5025 }
            ]
          }
        ]
      }
    }
  }
}
```

## Step 3: Handle the response

### Success response (HTTP 201)

A successful request returns `HTTP 201` with the QR Code payloads inside `additional_data`. Render `qr_code` as a scannable image, or present `qr_code_nfc` over NFC.

| Field | Type | Description |
| --- | --- | --- |
| `payment_id` | String (UUID) | Unique identifier for the created payment. Use it to poll the final status. |
| `status` | String | Current status of the payment (e.g., `WAITING`). |
| `description` | String | Message confirming the QR Code generation. |
| `additional_data.transaction_id` | String | Internal transaction identifier. |
| `additional_data.qr_code` | String | Pix QR Code payload (Pix Copy and paste). Render it as a scannable image. |
| `additional_data.qr_code_nfc` | String | Pix EMV payload for the NFC (contactless Pix) QR Code. Present it over NFC alongside the standard `qr_code`. |
| `additional_data.aids` | Array of strings | Application Identifiers (AIDs) associated with the NFC QR Code. |
| `additional_data.creation_date_qrcode` | String (max 24) | Timestamp when the QR Code was created. |
| `additional_data.expiration_date_qrcode` | String (max 24) | Timestamp when the QR Code expires. |
| `additional_data.psp_code` | String | PSP (Payment Service Provider) code used for the transaction. |
| `additional_data.extra_time_qrcode` | Integer | Additional time, in seconds, granted for the QR Code payment. |
| `is_split` | Boolean | Indicates whether the payment is subject to splitting. |
| `idempotency_key` | String | Echoes the `idempotency_key` sent in the request. |

```json
{
  "payment_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "status": "WAITING",
  "description": "QR Code successfully generated and awaiting payment.",
  "additional_data": {
    "transaction_id": "9000TRXIDdnmnefxzmvfckki",
    "qr_code": "00020101021226740014br.gov.bcb.pix...6304ABCD",
    "qr_code_nfc": "00020101021226870014br.gov.bcb.pix2565pix-h.santander.com.br/qr/nfc/...6304....",
    "aids": ["A00000047643276C1FDE7A39B9C05716"],
    "creation_date_qrcode": "2025-10-20T18:55:55",
    "expiration_date_qrcode": "2025-10-20T18:58:58",
    "psp_code": "033",
    "extra_time_qrcode": 180
  },
  "is_split": false,
  "idempotency_key": "1eb2412c-165a-41cd-b1d9-76c575d30a21"
}
```

To present the payment, render `qr_code` as a scannable image, or emit `qr_code_nfc` over NFC using the identifiers in `aids`. For terminal display and NFC/EMV requirements, see [Terminal Requirements](/en/global-api/reference-global/terminal-requirements) and [EMV Tags](/en/global-api/reference-global/emv-tags).

The endpoint returns `status: "WAITING"`, which means the QR Code was generated but not yet paid. Getnet confirms the customer's payment asynchronously. Subscribe to the [`PIX_UPDATED_TRANSACTIONS` webhook](/en/global-api/webhooks-global/callbacks-notifications) for real-time confirmation, or poll [Get Transaction Status](/en/global-api/sep-card-present/payment-guides-cp/get-transaction-status-cp) with the `payment_id`.

## Next steps

Continue with related Card Present tasks:

- **[Get Transaction Status](/en/global-api/sep-card-present/payment-guides-cp/get-transaction-status-cp)**: Confirm whether the customer has paid.
- **[Create Card Present QR Code Payments (Account-to-Account)](/en/global-api/sep-card-present/payment-guides-cp/qr-code-cp)**: The Visa/Mastercard QR flow (Chile).
- **[Single-Step Payments](/en/global-api/sep-card-present/payment-guides-cp/single-step-payment-cp)**: Process standard chip and magnetic stripe sales.

*Global API · Last updated: July 2026*