Generate EMV QR Code for PIX
Generates an EMV QR Code string in TLV (Tag-Length-Value) format for PIX payments. This endpoint creates a standardized QR code that can be used for PIX instant payments in Brazil. The generated EMV string contains all necessary information for PIX transactions including merchant details and location URL.
Key Features:
- Validation: Strict validation of merchant name and city (no diacritics, length limits)
- Default Values: Automatically applies standard PIX EMV values when not provided
- TLV Format: Returns EMV string in proper TLV format for QR code generation
- Brazilian Standards: Compliant with Brazilian PIX instant payment standards
Validation Rules:
merchantName
: Required, 1-25 characters, no diacriticsmerchantCity
: Required, 1-15 characters, no diacriticsmerchantAccountInformationPix.url
: Required, valid URI format
Default Values Applied:
payloadFormatIndicator
: "01"pointOfInitiationMethod
: "12" (dynamic QR)merchantCategoryCode
: "0000"transactionCurrency
: "986" (Brazilian Real)countryCode
: "BR"additionalDataFieldTemplate.referenceLabel
: "***"
The endpoint will return validation errors for any field that doesn't meet the requirements.
Request Body schema: application/jsonrequired
merchantName required | string [ 1 .. 25 ] characters Name of the merchant. Must not contain diacritics (accented characters). Will be validated and rejected if longer than 25 characters or contains diacritics. |
merchantCity required | string [ 1 .. 15 ] characters City where the merchant is located. Must not contain diacritics (accented characters). Will be validated and rejected if longer than 15 characters or contains diacritics. |
required | object |
payloadFormatIndicator | string EMV QR Code payload format indicator (usually '01') |
pointOfInitiationMethod | string Point of initiation method (usually '12' for dynamic QR) |
merchantCategoryCode | string Merchant category code (MCC) for business classification |
transactionCurrency | string Transaction currency code (986 for Brazilian Real) |
countryCode | string Country code (BR for Brazil) |
object | |
object |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "merchantName": "Test Merchant",
- "merchantCity": "Sao Paulo",
}
Response samples
- 201
- 400
- 401
{- "emv": "00020101021226450014br.gov.bcb.pix2523https://example.com/pix5204000053039865802BR5913Test Merchant6009Sao Paulo62070503***6304E69E"
}
Create a new Pix charge
Create a new Pix charge with the specified parameters
path Parameters
txid required | string Unique transaction identifier |
Request Body schema: application/jsonrequired
chargeType | string (ChargeType) Enum: "cob" "cobv" "rec" Charge type |
object (Calendar) | |
Array of objects (AdditionalInfo) <= 50 items | |
comment | string <= 140 characters |
object (Amount) | |
pixKey | string [ 1 .. 255 ] characters |
object or null | |
ensureSameTaxID | boolean |
object (Debtor) | |
object (Receiver) |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "chargeType": "cob",
- "calendar": {
- "dueDate": "string",
- "expiration": 1,
- "validateAfterExpiration": 0,
- "presentation": "string",
- "creation": "string"
}, - "additionalInfo": [
- {
- "name": "string",
- "value": "string"
}
], - "comment": "string",
- "amount": {
- "customerCanChangeValue": true,
- "chargeValue": 0,
- "interestRules": {
- "modality": 1,
- "value": 0
}, - "discountRules": {
- "modality": 1,
- "discountFixedDate": [
- {
- "data": "string",
- "value": 0
}
], - "value": 0
}, - "rebateRules": {
- "modality": 1,
- "value": 0
}, - "fineRules": {
- "modality": 1,
- "value": 0
}, - "withdrawal": {
- "withdraw": {
- "value": 0,
- "agentMode": "string",
- "changeMode": 0,
- "withdrawalServiceProvider": "string"
}, - "change": {
- "value": 0,
- "agentMode": "string",
- "changeMode": 0,
- "withdrawalServiceProvider": "string"
}
}
}, - "pixKey": "string",
- "location": {
- "id": "string",
- "isLinked": false
}, - "ensureSameTaxID": true,
- "debtor": {
- "name": "string",
- "taxID": "string",
- "taxIDType": "BR:CNPJ"
}, - "receiver": {
- "name": "string",
- "taxID": "string",
- "taxIDType": "BR:CNPJ",
- "tradeName": "string",
- "email": "string",
- "street": "string",
- "city": "string",
- "state": "st",
- "zipcode": "string"
}
}
Response samples
- 201
- 400
- 401
- 409
{- "charge": {
- "txid": "string",
- "status": "ACTIVE",
- "value": 0,
- "key": "string",
- "keyType": "CPF",
- "expiresAt": "2019-08-24T14:15:22Z",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "txi": "string"
}
}
Update an existing Pix charge
Update an existing Pix charge with new parameters
path Parameters
txid required | string Unique transaction identifier |
Request Body schema: application/jsonrequired
chargeType | string (ChargeType) Enum: "cob" "cobv" "rec" Charge type |
object (Calendar) |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "chargeType": "cob",
- "calendar": {
- "dueDate": "string",
- "expiration": 1,
- "validateAfterExpiration": 0,
- "presentation": "string",
- "creation": "string"
}
}
Response samples
- 200
- 400
- 401
- 404
{- "charge": {
- "txid": "string",
- "status": "ACTIVE",
- "value": 0,
- "key": "string",
- "keyType": "CPF",
- "expiresAt": "2019-08-24T14:15:22Z",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "txi": "string"
}
}
Delete a Pix charge
Delete a specific Pix charge
path Parameters
txid required | string Unique transaction identifier |
Responses
Request samples
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
const http = require('https'); const options = { method: 'DELETE', hostname: '', port: null, path: '%3Cname%3E.indireto.woovi-indireto.dev/pix-charge/v1/charge/%7Btxid%7D', headers: {} }; const req = http.request(options, function (res) { const chunks = []; res.on('data', function (chunk) { chunks.push(chunk); }); res.on('end', function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.end();
Response samples
- 401
- 404
{- "error": {
- "issues": [
- {
- "code": "string",
- "expected": "string",
- "received": "string",
- "path": [
- "string"
], - "message": "string",
- "validation": "string"
}
], - "name": "ZodError",
- "message": "Validation error"
}
}
Get Pix charges by location
Retrieve all Pix charges associated with a specific location
path Parameters
locId required | string Location identifier |
query Parameters
DPP | string Optional payment date-time for calculation |
codMun | string Optional municipality code for business-day calculation |
Responses
Request samples
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
const http = require('https'); const options = { method: 'GET', hostname: '', port: null, path: '%3Cname%3E.indireto.woovi-indireto.dev/pix-charge/v1/charge/location/%7BlocId%7D?DPP=SOME_STRING_VALUE&codMun=SOME_STRING_VALUE', headers: {} }; const req = http.request(options, function (res) { const chunks = []; res.on('data', function (chunk) { chunks.push(chunk); }); res.on('end', function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.end();
Response samples
- 200
- 401
- 404
{- "charge": {
- "txid": "string",
- "status": "ACTIVE",
- "value": 0,
- "key": "string",
- "keyType": "CPF",
- "expiresAt": "2019-08-24T14:15:22Z",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "txi": "string"
}
}
Check if a Pix charge is allowed to be paid
Check if a Pix charge is allowed to be paid
path Parameters
txid required | string Unique transaction identifier |
Request Body schema: application/jsonrequired
DPP | string Optional payment date-time for calculation |
codMun | string Optional municipality code |
paymentValue | integer Payment value to validate |
taxID | string Optional payer taxID when ensureSameTaxID is enabled |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "DPP": "string",
- "codMun": "string",
- "paymentValue": 0,
- "taxID": "string"
}
Response samples
- 400
- 401
- 404
{- "error": {
- "issues": [
- {
- "code": "string",
- "expected": "string",
- "received": "string",
- "path": [
- "string"
], - "message": "string",
- "validation": "string"
}
], - "name": "ZodError",
- "message": "Validation error"
}
}
Get a pix charge
Retrieve details of a specific Pix charge
path Parameters
txid required | string Example: 6290ccfd42831958a405debc pix charge txid |
query Parameters
DPP | string Optional payment date-time for calculation |
codMun | string Optional municipality code for business-day calculation |
Responses
Request samples
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
const http = require('https'); const options = { method: 'GET', hostname: '', port: null, path: '%3Cname%3E.indireto.woovi-indireto.dev/pix-charge/v1/charge/6290ccfd42831958a405debc?DPP=SOME_STRING_VALUE&codMun=SOME_STRING_VALUE', headers: {} }; const req = http.request(options, function (res) { const chunks = []; res.on('data', function (chunk) { chunks.push(chunk); }); res.on('end', function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); }); req.end();
Response samples
- 200
- 400
- 401
- 404
{- "account": {
- "accountId": "6290ccfd42831958a405debc",
- "isDefault": true,
- "balance": {
- "total": 129430,
- "blocked": 0,
- "available": 129430
}
}
}