QR Code Payment
This guide explains how to perform payments using QR Code with an Integrated POS. QR Code payments use the same Sale operation with SaleType set to QR code; they behave identically across USB and Network connections.
What is a QR code payment
A QR Code payment is a sale where the customer scans a QR code displayed on the POS with a supported wallet or app. The automation system sends a Sale request with SaleType set to QR code (or equivalent enum). The terminal displays the QR code and waits for the customer to scan and approve; then it returns the same response structure as a card sale, with card-specific fields omitted or null.
The QR Code payment method does not support tips. Installments for QR are handled by the cardholder’s wallet; do not send Installments, PlanId, Interest, OperationMode, or Tip for QR Code sales—if provided, they are ignored.
Before you begin
Before performing a QR Code payment:
- A Connector must be created and validated using
Polling - Integrated POS Mode must be active
- The terminal must support QR Code payments
Step 1: Initiate a QR code payment
To initiate a QR Code payment, call the Sale operation with the SaleType parameter set to QrCode.
Parameters for a QR code sale
| Parameter | Type | Required | Description |
|---|---|---|---|
Amount | Long | No | Transaction amount in local currency (e.g. 7500 = 75.00). If omitted, the POS prompts for the amount. |
SaleType | Enum | No | Set to QrCode (or equivalent enum/integer). If omitted, the terminal shows the payment-type selection screen. |
PrintOnPos | Bool | No | Indicates whether the POS should print a receipt when applicable. Behaviour may vary depending on wallet flow. |
EmployeeId | Int | No | Optional operator identification. |
SkipReceipt | Bool | No | If true, skips the customer receipt screen when applicable. |
CallerId | String | No | ID generated by the automation system, used to later query the transaction with Check Status. No special or Unicode characters. |
As mentioned in the overview, installment and tip parameters are not supported for QR Code sales and should be omitted.
Example: QR code sale request
The following example demonstrates how to call a QR Code payment:
var saleRequest = new SaleRequest
{
Amount = 7500, // 75.00 in local currency
SaleType = SaleType.QrCode,
PrintOnPos = true,
SkipReceipt = false
};
var saleResult = await connector.SaleAsync(saleRequest);Once the request is sent, the POS will process the input and display the QR code on screen for the customer to scan.
Step 2: Customer interaction
The customer scans the QR code using a supported payment application (wallet). Then the POS waits for confirmation of payment from the wallet.
Timeout and cancellation behaviour is managed by the POS. The operation can be canceled only until the customer scans the QR code; once the terminal detects the scan, the cancel button is disabled and the sale can no longer be canceled on the terminal. If the customer cancels before scanning or the operation is aborted, the flow returns to standby.
Step 3: Handle the response
Once the customer completes the payment in their wallet, the POS returns a structured response. Below is an example of a complete response for a QR Code sale:
{
"Code": 0,
"Message": "APPROVED",
"AuthorizationCode": "123456",
"Amount": 7500,
"OriginalAmount": 7500,
"AccountingDate": "2025-08-25T16:11:23.0000000Z",
"RealDate": "2025-08-25T13:11:50.8570000-03:00",
"SaleType": "QrCode",
"CommerceCode": "1234567890",
"TerminalId": "GET00123",
"CardType": null,
"CardBrand": null,
"Last4Digits": null
}As shown in the example, card-specific fields (such as card type, brand, or last 4 digits) are not applicable to QR Code transactions and are returned as null or empty.
When the customer completes a QR Code sale through a wallet application, some response attributes may be returned as null.
Checking status later: A QR PCT (Point of Capture) transaction queried with Check Status always returns
AUTHORIZED(code1) — neverAPPROVED. A QR Code processed with card details returnsAPPROVED(code0) once captured.
Always verify the Code parameter and the SaleType before processing the result.
Next steps
- For card-based payments and a complete overview of Sale parameters, see the Single-Step Payment guide.
- To process refunds for QR code transactions, refer to the Refund guide.