Pix and QR codes
Pix uses QR codes—specifically the BR Code format adhering to EMV standards—to embed payment details such as recipient account, Pix key, and in the case of dynamic codes, transaction amount and metadata.
Static QR Codes
- Contain only recipient’s account or Pix key.
- Suitable for recurring or fixed‑amount payments—like at small shops or service stations.
- Payer must enter the amount manually.
Dynamic QR Codes
- Unique per transaction.
- Includes recipient, amount, due date, fines/discounts, and transaction ID.
- Automatically expires after a set time.
- Built to facilitate seamless automation and reconciliation for merchants.
Consumer and merchant flow
- Merchant generates a QR code (static or dynamic) and displays it on-screen, printed receipt, or mobile app.
- Customer opens their banking or wallet app, chooses Pix, scans the QR code.
- The app extracts payment data (amount if dynamic), shows the details, the user confirms, and taps “pay.”
- Funds are transferred in seconds, any time of day.
Use cases
- Person-to-Merchant (P2B)—QR codes are widely adopted in Brazil for merchant payments—over 30% of Pix volume is P2B.
- E-commerce and online checkout—Users scan QR or copy-paste a Pix code to pay instantly.
- Small businesses and service vendors—Use static QR codes on stickers, receipts, or booths for simple payments.
- Large merchants—Use dynamic QR codes tied to back-end billing systems so that each transaction is uniquely identifiable and settled quickly.
Security and architecture
Pix keys (CPF/CNPJ, email, phone number, or random UUID) provide identity linkage via the Central Bank’s DICT database .
BR Codes conform to EMV QR‑code standards and may embed a link to fetch dynamic charge data via a secure endpoint, often encoded as a JWT payload including amount; banks validate the digital signature before proceeding.
Why QR Codes are essential to Pix
- Interoperability—Any Pix‑enabled app across any bank or fintech can scan the same code format.
- No new hardware needed—Merchants don’t need card terminals—just display the code. Consumers just need a smartphone.
- Speed and automation—Dynamic codes support automatic reconciliation and fast settlements; static codes simplify frequent small-value payments.
- Low costs—Especially beneficial for merchants and micro‑businesses, who otherwise face card‑processing fees.
Dynamic QR Code types
COB—immediate payment request
COB is short for cobranca, which means "charge" in Portuguese.
Purpose: Generates a request for a one-time, immediate payment.
Key points:
- Includes a fixed amount and expiration date.
- Can contain fields like
payer_solicitation
(payee text sent to payer) andallows_value_change
(payer can change payment values). - Ideal for one-off transactions such as e-commerce or in-person payments.
- When combined with a COBR in a composite QR Code, it triggers Pix Automatic Journey 3 (
AUT3
).
COBV—due date payment request
Purpose: Payment request with a due date, supporting interest, fines, and discounts.
Key points:
- Supports fields like
due_date
(payment due date) andcharges
(charge information). - Enables automatic reconciliation and delinquency control.
- Commonly used as a replacement for traditional boletos.
- When combined with a COBR in a composite QR Code, it triggers Pix Automatic journey 4 (
AUT4
).
COBR—recurring payment request
Purpose: Used to configure recurring payment authorizations in Pix Automatic.
Key points:
- Identified with
recurrence_id
field. - Can be used:
Withdrawal—cash withdrawal
Purpose: Enables cash withdrawal via Pix at authorized commercial establishments.
Key points:
- The customer makes a Pix payment and receives the equivalent amount in cash.
- Can be used with dynamic or static QR Codes.
- Requires accreditation as a Cash Withdrawal Service Facilitator (FSS) with the Central Bank of Brazil (BCB)—a Pix-participating financial or payment institution authorized to enable cash withdrawals and cash back during purchases.
- Content structure in the QR Code payload:
"withdraw": { "agent_modality": "AGTEC", "ispb_service_provider": "85478745", "amount": 10.0, "allows_value_change": true }
Change
Purpose: Enables cashback transactions via Pix.
Key points:
- The customer pays more than the purchase amount and receives the difference in cash.
- Used in commercial environments accredited for this service.
- Requires accreditation as a Cash Withdrawal Service Facilitator (FSS)
- Content structure in the QR Code payload:
"change": { "agent_modality": "AGTEC", "ispb_service_provider": "85478745", "amount": 10.0, }
Using QR Codes
- Call Validate QR Code to validate a QR Code for a Pix-out transfer.
- Pay immediately a COB, COBV, Charge and Withdrawal QR Code for a Pix-out transfer payment.
- Schedule payment for a COB and COBV QR Code using Schedule transfer(s) V2 [beta].
Note: Pismo automatically identifies the transaction_id
when a Pix -in is received and changes a QR Code status to COMPLETED
.
API endpoints and sample payloads
Create dynamic COB QR Code
Create dynamic COB QR code —Generate a new dynamic COB QR Code and EMV (Europay Mastercard Visa) string.
COB is short for cobranca, which means charge in Portuguese. A COB QR Code has an expiration date while a COBV QR Code has a due date, fine, interest, and rebates.
Sample payload
curl -X POST "https://sandbox.pismolabs.io/qrcode/v1/pix/qrcode/cob" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"payee": {
"address": "10 Downing Street, London SW1A 2AB, UK",
"city": "Brasilia",
"key": "[email protected]",
"state": "DF",
"zip_code": "8675309"
},
"payer": {
"name": "Eva Destrukion",
"address": "10 Downing Street, London SW1A 2AB, UK",
"city": "Brasilia",
"document_number": "42761202686",
"state": "DF",
"trade_name": "Acme Widgets",
"type": "NATURAL_PERSON",
"zip_code": "8675309"
},
"transaction_identification": "trans-id-7578994740",
"initial_amount": 86753.09,
"payer_solicitation": "For dinner last night",
"qrcode_expiration_time": 7200,
"allows_value_change": true,
"reusable": true,
"location": {
"url_jwk": "example.com/jwk",
"url_payload": "example.com/pix/8b3da2f3-941-40d1-a91a-bd93113bd441"
},
"additional_information": [
{
"name": "Purity of essence",
"value": "5.00"
}
],
"access_token": "153ed19a-e738-4417-9e98-a515c276a731"
}'
Create dynamic COBV QR Code
Create dynamic COBV QR Code —Generate a new COBV QR Code image and EMV (Europay Mastercard Visa) string.
Sample payload
curl -X POST "https://sandbox.pismolabs.io/qrcode/v1/pix/qrcode/cobv" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"charge": {
"due_date": "2024-01-12",
"discount_type": "FIXED_VALUE_UNTIL_THE_DATES_INFORMED",
"discount_value": 99,
"fine_type": "FIXED_VALUE",
"fine_value": 45.67,
"interest_type": "VALUE_WORKING_DAYS",
"interest_value": 34.09
},
"payee": {
"address": "10 Downing Street, London SW1A 2AB, UK",
"city": "Brasilia",
"key": "[email protected]",
"state": "DF",
"zip_code": "8675309"
},
"payer": {
"name": "Eva Destrukion",
"address": "10 Downing Street, London SW1A 2AB, UK",
"city": "Brasilia",
"document_number": "42761202686",
"state": "DF",
"zip_code": "8675309"
},
"initial_amount": 86753.09,
"transaction_identification": "trans-id-7578994740",
"payer_solicitation": "For dinner last night",
"qrcode_expiration_time": 7200,
"reusable": true,
"allows_value_change": true
}'
Create recurrent compound QR Code (journey 2)
Create recurrent compound QR Code —Create a compound QR Code containing only recurring payment authorization configuration data.
Sample payload
curl -X POST "https://sandbox.pismolabs.io/qrcode/v1/pix/qrcode/recurrence" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"payee": {
"city": "Brasilia",
"state": "DF",
"zip_code": "8675309"
},
"transaction_identification": "trans-id-7578994740",
"recurrence_id": "RN219952X6X02505XXCONTRACTXXX",
"recurrence": {
"frequency_type": "MONTH",
"first_payment_date": "2025-04-25",
"last_payment_date": "2026-06-10",
"amount": 1050.44,
"debtor": {
"document_number": "42761202686",
"document_type": "NATURAL_PERSON",
"name": "Eva Destrukion"
},
"contract_id": "5509-uroo-78944-9987",
"description": "Gym membership",
"retry": true
},
"access_token": "153ed19a-e738-4417-9e98-a515c276a731"
}'
Create recurrent COB QR Code (journey 3)
Create recurrent COB QR Code—Create a COB QR Code for a recurring payment as a EMV (Europay Mastercard Visa) string. Recurring payments are used for such things as subscriptions, school fees, rent, gym memberships and more.
Sample payload
curl -X POST "https://sandbox.pismolabs.io/qrcode/v1/pix/qrcode/cob/recurrence" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"payee": {
"address": "10 Downing Street, London SW1A 2AB, UK",
"city": "Brasilia",
"key": "[email protected]",
"state": "DF",
"zip_code": "8675309"
},
"payer": {
"name": "Eva Destrukion",
"document_number": "42761202686",
"type": "NATURAL_PERSON"
},
"initial_amount": 86753.09,
"transaction_identification": "trans-id-7578994740",
"recurrence": {
"frequency_type": "MONTH",
"first_payment_date": "2025-04-25",
"debtor": {
"document_number": "42761202686",
"document_type": "NATURAL_PERSON",
"name": "Eva Destrukion"
},
"contract_id": "5509-uroo-78944-9987"
}
}'
Create recurrent COBV QR Code (journey 4)
Create recurrent COBV QR Code —Create a COBV QR Code for a recurring payment as a EMV (Europay Mastercard Visa) string
Sample payload
curl -X POST "https://sandbox.pismolabs.io/qrcode/v1/pix/qrcode/cobv/recurrence" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"charge": {
"due_date": "2024-01-12",
"discount_type": "FIXED_VALUE_UNTIL_THE_DATES_INFORMED",
"discount_value": 99,
"fine_type": "FIXED_VALUE",
"fine_value": 45.67,
"interest_type": "VALUE_WORKING_DAYS",
"interest_value": 34.09
},
"payee": {
"address": "10 Downing Street, London SW1A 2AB, UK",
"city": "Brasilia",
"key": "[email protected]",
"state": "DF",
"zip_code": "8675309"
},
"payer": {
"name": "Eva Destrukion",
"document_number": "42761202686",
"type": "NATURAL_PERSON"
},
"initial_amount": 86753.09,
"transaction_identification": "trans-id-7578994740",
"recurrence": {
"frequency_type": "MONTH",
"first_payment_date": "2025-04-25",
"debtor": {
"document_number": "42761202686",
"document_type": "NATURAL_PERSON",
"name": "Eva Destrukion"
},
"contract_id": "5509-uroo-78944-9987"
}
}'
Create recurrent static QR Code (journey 4)
Create recurrent static QR Code —Create a recurrent static QR Code and EMV (Europay Mastercard Visa) string.
Sample payload
curl -X POST "https://sandbox.pismolabs.io/qrcode/v1/pix/qrcode/static/recurrence" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"payee": {
"address": "10 Downing Street, London SW1A 2AB, UK",
"city": "Brasilia",
"key": "[email protected]",
"state": "DF",
"zip_code": "8675309"
},
"amount": 86753.09,
"transaction_identification": "trans-id-7578994740",
"additional_information": "Additional info about this qrcode",
"location": {
"url_jwk": "example.com/jwk",
"url_payload_rec": "example.com/rec/8b3da2f3-941-40d1-a91a-bd93113bd441"
},
"recurrence_id": "RN219952X6X02505XXCONTRACTXXX",
"recurrence": {
"frequency_type": "MONTH",
"first_payment_date": "2025-04-25",
"last_payment_date": "2026-06-10",
"amount": 1050.44,
"min_payment_amount": 10.09,
"debtor": {
"document_number": "42761202686",
"document_type": "NATURAL_PERSON",
"name": "Eva Destrukion"
},
"contract_id": "5509-uroo-78944-9987",
"description": "Gym membership",
"retry": true
},
"access_token": "153ed19a-e738-4417-9e98-a515c276a731"
}'
Summary
QR Code Type | Embedded Data | Use Case/Advantages |
---|---|---|
Static | Pix key or account (no amount) | - Regular small payments - Reusable, simple, ideal for small vendors - Natural and legal person can create - Normal transfer and buy purpose. |
Dynamic | Pix key + amount + txID + expiry | - Automated merchant billing - Precise, traceable, suited to e‑commerce and larger businesses - Legal person can create - Always have buy/charge purpose |
QR codes are integral to how Pix enables seamless, real-time payments in Brazil. Whether you pay at a café, at a checkout terminal, or through an e‑commerce platform, you simply scan—or tap on—a code, confirm the amount, and the transfer happens in seconds. The system’s design emphasizes speed, low cost, and broad compatibility.
Updated about 18 hours ago