Getnet DocsGetnet Docs

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.
StageActorAction
1. GenerateTerminal → APIThe terminal sends a POST request to the Pix endpoint and receives the QR Code payloads (HTTP 201).
2. PresentTerminal → CustomerThe 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. ConfirmAPI → TerminalGetnet authorizes the payment asynchronously. The terminal confirms the final status via webhooks or the Get Transaction endpoint.

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.

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, 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 and 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:

FieldTypeConstraintsDescription
amountIntegerIn centsTransaction amount (e.g., 10050 = 100.50).
currencyStringISO 4217Currency code. Use BRL.
customer_idString≤ 36 charsBuyer identifier used by your platform. Passed on in the Pix payment notification.

Optional fields

Include these fields when your integration needs them:

FieldTypeDescription
order_idStringYour internal order reference.
idempotency_keyString (1-64)Unique key to prevent duplicate requests. Recommended for every request.
data.additional_data.split.subseller_list_paymentArrayDistributes 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:

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:

{
  "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.

FieldTypeDescription
payment_idString (UUID)Unique identifier for the created payment. Use it to poll the final status.
statusStringCurrent status of the payment (e.g., WAITING).
descriptionStringMessage confirming the QR Code generation.
additional_data.transaction_idStringInternal transaction identifier.
additional_data.qr_codeStringPix QR Code payload (Pix Copy and paste). Render it as a scannable image.
additional_data.qr_code_nfcStringPix EMV payload for the NFC (contactless Pix) QR Code. Present it over NFC alongside the standard qr_code.
additional_data.aidsArray of stringsApplication Identifiers (AIDs) associated with the NFC QR Code.
additional_data.creation_date_qrcodeString (max 24)Timestamp when the QR Code was created.
additional_data.expiration_date_qrcodeString (max 24)Timestamp when the QR Code expires.
additional_data.psp_codeStringPSP (Payment Service Provider) code used for the transaction.
additional_data.extra_time_qrcodeIntegerAdditional time, in seconds, granted for the QR Code payment.
is_splitBooleanIndicates whether the payment is subject to splitting.
idempotency_keyStringEchoes the idempotency_key sent in the request.
{
  "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 and 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 for real-time confirmation, or poll Get Transaction Status with the payment_id.

Next steps

Continue with related Card Present tasks:

Global API · Last updated: July 2026