QR Code Payments

This document applies to the following country:

Argentina

In Getnet’s Web Checkout, the buyer doesn't enter card details. Instead, they scan a dynamic QR Code displayed on the Web Checkout screen. On mobile, they can open the wallet app through the deeplink. They then confirm the payment inside the wallet of their choice. The QR Code is generated in Argentine pesos (ARS), with the purchase amount from the payment intent.

Because confirmation happens inside the wallet, the payment is asynchronous. The Web Checkout displays the QR Code and keeps the transaction pending until the wallet confirms or declines the payment. You receive the final result through the webhook notification.
information icon
⚠️ Important: The Web Checkout screen (iFrame, Lightbox, or Redirect) displays the QR Code. Your integration needs no QR Code-specific API call. You create the payment intent as you already do today, and the method appears as one more option for the buyer.

How it works

A QR Code payment follows these steps:

  1. Your back-end creates the payment intent as usual, without specifying a payment method.
  2. The buyer opens the Web Checkout (iFrame, Lightbox, or Redirect) and selects QR Code among the available options.
  3. The Web Checkout generates and displays a dynamic QR Code, with the purchase amount and currency, and presents the wallet deeplink for buyers on mobile.
  4. The buyer scans the QR Code (or opens the deeplink), chooses the payment method inside the wallet, and confirms the operation.
  5. Getnet receives the confirmation from the wallet, updates the payment, and sends the webhook notification to the configured URL.

The end-to-end flow involves the buyer, the Web Checkout screen, and the Getnet Web Checkout API:

Before you start

Before you integrate QR Code payments, make sure you have the following:

  • Configure your Web Checkout by Portal or by API (depending on your location).
  • Generate your token as described in the Authentication document.
  • Have the qr_code_checkout product enabled and configured for the seller.
  • Have a webhook URL configured in the technical setup, because the QR Code payment result is always delivered asynchronously.
information icon
Info: If you try to configure a product that is not enabled for the seller, you get the following message:
JSON
{ "code": "payment_method_not_enabled_in_seller", "message": "Payment method 'qr_code_checkout' is not enabled for this seller. Please enable it in seller configuration first.", "details": [] }

Create the payment intent

Enabling the QR Code requires no new attribute or contract change. The payment intent is the same one you already use for the other methods. The following attributes affect how the QR Code is displayed.

Request fields
FieldTypeDescriptionExample
modeStringPayment intent mode. Must be instant (default) so that the buyer pays through the checkout screen.instant
payment.currencyStringCurrency code. The QR Code is processed in Argentine pesos.ARS
payment.amountIntegerPurchase amount in integer format, where the last 2 digits represent the cents.1410000
Request example
JSON
curl https://api-sbx.pre.globalgetnet.com/dpy/web-checkout/v1/payment-intent \ --request POST \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer YOUR_SECRET_TOKEN' \ --data '{ "mode": "instant", "order_id": "PEDIDO_AR_97531", "payment": { "currency": "ARS", "amount": 1410000 }, "product": [ { "product_type": "cash_carry", "title": "Bota de couro Look Fashion", "value": 1410000, "quantity": 1 } ], "customer": { "customer_id": "cliente_ar_005", "first_name": "Laura", "last_name": "Fernández", "name": "Laura Fernández", "email": "laura.fernandez@example.com.ar", "document_type": "dni", "document_number": "45678912", "billing_address": { "street": "Av. Corrientes", "number": "1234", "city": "Buenos Aires", "state": "Buenos Aires", "country": "AR", "postal_code": "1043" } }, "soft_descriptor": "Loja AR", "expires_at": "1h" }'

Response

Example response:

JSON
{ "payment_intent_id": "f6ee8bc7-229d-4d9d-bced-7dd2371a1f57", "trade_name": "GetNet Store", "redirect_url": "https://www.pre.globalgetnet.com/checkout/f6ee8bc7-229d-4d9d-bced-7dd2371a1f57" }
With the payment_intent_id, load the Web Checkout with the integration option you already use (iFrame, Lightbox, or Redirect), as described in integration options.

Buyer experience

During a QR Code payment, the buyer experiences the following:

  • The QR Code is dynamic: it already contains the purchase amount and currency, so the buyer does not enter any values.
  • On desktop, the buyer scans the code with the wallet app. On mobile, the checkout also offers the deeplink that opens the wallet directly.
  • The buyer chooses the payment method (account balance or card) and any installment plan in the wallet. You don't set them in your request.
  • Until the payment is confirmed, the checkout keeps showing the waiting screen. If the buyer leaves the screen, the payment stays pending. It remains pending until the buyer confirms it in the wallet or the payment intent expires.

Status lifecycle

The following table lists the statuses of a QR Code payment.

StatusMeaning
ApprovedThe wallet confirmed the payment. The payment intent moves to paid and Getnet sends the notification.
DeniedThe wallet declined or canceled the payment, the QR Code was deactivated, or the QR Code could not be generated.

Reconciliation

To reconcile the notification with your order, use the order_id you sent when you created the payment intent. You can also use the payment_intent_id itself. The payment_id in the notification identifies the transaction. Use it for queries and for any cancellation and refund operations.

Next steps