OpenPix (1.0.0)
Download OpenAPI specification:Download
A OpenPix é uma Plataforma de Gestão de Pagamentos.
Para utilizar nossa API de Produção, utilize exclusivamente o seguinte endpoint:
Além disso, oferecemos também um ambiente de sandbox (ambiente de testes), ideal para desenvolvimento e validação de integrações sem impactar dados reais.
👉 https://api.woovi-sandbox.com/
Veja como configurar seu acesso a nossa API aqui.
Close an Account
Closes an Account.
Notes:
- Accounts with balance cannot be closed.
Authorizations:
path Parameters
| accountId required | string Example: 6290ccfd42831958a405debc ID of the Account |
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: 'api.openpix.com.br', port: null, path: '/api/v1/account/6290ccfd42831958a405debc', headers: { Authorization: '{APP_ID}' } }; 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
- 403
- 404
- 500
{- "status": "OK",
- "accountId": "6290ccfd42831958a405debc"
}Get an Account
Authorizations:
path Parameters
| accountId required | string Example: 6290ccfd42831958a405debc ID of the Account |
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: 'api.openpix.com.br', port: null, path: '/api/v1/account/6290ccfd42831958a405debc', headers: { Authorization: '{APP_ID}' } }; 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
{- "account": {
- "accountId": "6290ccfd42831958a405debc",
- "isDefault": true,
- "balance": {
- "total": 129430,
- "blocked": 0,
- "available": 129430,
- "blockedBySecurity": 0,
- "blockedByWithdrawSafety": 0
}, - "taxId": "12345678901",
- "officialName": "Company Name LLC",
- "tradeName": "Company Trade Name",
- "branch": "0001",
- "account": "123456",
- "accountName": "Main Account"
}
}Get a list of Accounts
Authorizations:
query Parameters
string Example: email=email0@example.com You can use the email to filter accounts | |
| skip | number Number of items to skip for pagination |
| limit | number Example: limit=10 Maximum number of items to return |
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: 'api.openpix.com.br', port: null, path: '/api/v1/account/?email=email0%40example.com&skip=0&limit=10', headers: { Authorization: '{APP_ID}' } }; 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
{- "pageInfo": {
- "skip": 0,
- "limit": 10,
- "hasPreviousPage": false,
- "hasNextPage": true
}, - "accounts": [
- {
- "accountId": "6290ccfd42831958a405debc",
- "isDefault": true,
- "balance": {
- "total": 129430,
- "blocked": 0,
- "available": 129430
}
}, - {
- "accountId": "6286b467a7910113577e00ce",
- "isDefault": false,
- "balance": {
- "total": 130,
- "blocked": 100,
- "available": 30
}
}
]
}Duplicates the Account
Duplicates the account associated with the authorization appId. Requires the bank account feature to be enabled.
Authorizations:
Responses
Request samples
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
const http = require('https'); const options = { method: 'POST', hostname: 'api.openpix.com.br', port: null, path: '/api/v1/account', headers: { Authorization: '{APP_ID}' } }; 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
- 403
{- "account": {
- "accountId": "6290ccfd42831958a405debc",
- "isDefault": true,
- "balance": {
- "total": 129430,
- "blocked": 0,
- "available": 129430
}
}
}Withdraw from an Account
An additional fee may be charged depending on the minimum free withdrawal amount. See more about at https://developers.openpix.com.br/docs/FAQ/faq-virtual-account/#onde-posso-consultar-as-taxas-da-minha-conta-virtual
Authorizations:
path Parameters
| accountId required | string Example: 6290ccfd42831958a405debc ID of the Account |
Request Body schema: application/jsonrequired
| value | number Value in cents |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "value": 7000
}Response samples
- 200
- 400
{- "withdraw": {
- "account": {
- "accountId": "6290ccfd42831958a405debc",
- "isDefault": true,
- "balance": {
- "total": 122430,
- "blocked": 0,
- "available": 122430
}
}, - "transaction": {
- "endToEndId": "E23114447202205191817cx6VMrbwtw6",
- "transaction": 7000
}
}
}Delete an account registration
Deletes an account registration that is in PENDING status
Authorizations:
path Parameters
| correlationID required | string non-empty CorrelationID of the account register to delete |
Responses
Response samples
- 200
- 400
- 404
- 500
{- "message": "Account register successfully deleted",
- "accountRegisterId": "12345678901234"
}Get account register by CorrelationID
Retrieves an existing account registration by CorrelationID
Authorizations:
path Parameters
| CorrelationID required | string Example: 6fe18d8e-5009-4f57-8f1d-5b084b6b83ac CorrelationID of the account register |
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: 'api.openpix.com.br', port: null, path: '/api/v1/account-register', headers: { Authorization: '{APP_ID}' } }; 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
- 404
- 500
{- "officialName": "Company Official Name",
- "tradeName": "Company Trade Name",
- "type": "BAAS",
- "taxID": {
- "taxID": "12345678901234",
- "type": "BR_CNPJ"
}, - "status": "PENDING",
- "correlationID": "6fe18d8e-5009-4f57-8f1d-5b084b6b83ac"
}Delete an application
Deactivates an application by setting isActive to false and adding a removedAt timestamp
Authorizations:
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: 'api.openpix.com.br', port: null, path: '/api/v1/application', headers: { Authorization: '{APP_ID}' } }; 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
- 404
- 500
{- "success": true
}Create a new application
Creates a new application for a company. If the company has the APPLICATION_SCOPES_REQUIRED feature enabled, the scopes field is required.
Authorizations:
Request Body schema: application/jsonrequired
Data to create a new application
| accountId | string The ID of the company bank account |
object |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "accountId": "507f1f77bcf86cd799439011",
- "application": {
- "name": "Test API",
- "type": "API"
}
}Response samples
- 201
- 400
- 403
- 500
{- "application": {
- "name": "Test API with Scopes",
- "isActive": true,
- "type": "API",
- "clientId": "client_123abc",
- "clientSecret": "secret_456def",
- "appID": "app_789ghi",
- "scopes": [
- "CHARGE_POST",
- "CHARGE_GET"
]
}
}Endpoints to validate and pay boletos (Boleto OUT).
The Boleto OUT flow has three steps:
- Validate the boleto by its barcode (
POST /api/v1/boleto/validate) to confirm the amount, due date and beneficiary. - Create the payment (
POST /api/v1/payment) withtype: "BOLETO"and theboletoBarcode. - Approve the payment (
POST /api/v1/payment/approve), unless it was created withautoApprove: true.
Requires the BOLETO_VALIDATE_POST scope on the application.
Validate a boleto by barcode
Validates a boleto by its barcode before paying it. This is step 1 of the Boleto OUT flow: it confirms the amount, due date and beneficiary so you can review the boleto before creating the payment.
The barcode must have 44, 47 or 48 digits. All monetary values are returned in cents.
Requires the BOLETO_VALIDATE_POST scope on the application.
After validating, create the payment with POST /api/v1/payment using
type: "BOLETO" and the boletoBarcode.
Authorizations:
Request Body schema: application/jsonrequired
| barcode required | string The boleto barcode. Must have 44, 47 or 48 digits. |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "barcode": "34195148200000003001095517077320772982609000"
}Response samples
- 200
- 400
- 401
- 403
{- "boleto": {
- "barcode": "34195148200000003001095517077320772982609000",
- "expiresDate": "2026-06-27T02:59:59.999Z",
- "totalValue": 300,
- "issuingEntity": {
- "code": "341",
- "name": "ITAU UNIBANCO S/A"
}, - "finalBeneficiary": {
- "name": "WOOVI",
- "taxID": "44720743000101"
}
}
}Get the exclusive cashback amount an user still has to receive by taxID.
Authorizations:
path Parameters
| taxID required | string Examples:
The raw tax ID from the customer you want to get the balance. |
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: 'api.openpix.com.br', port: null, path: '/api/v1/cashback-fidelity/balance/60151449000182', headers: { Authorization: '{APP_ID}' } }; 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
{- "balance": 0,
- "status": "string"
}Get or create cashback for a customer.
Create a new cashback exclusive for the customer with a given taxID. If the customer already has a pending excluisve cashback, this endpoint will return it instead.
Authorizations:
Request Body schema: application/jsonrequired
Customer's taxID and the cash
| taxID | string Customer taxID (CPF or CNPJ) |
| value | number Cashback value in centavos |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "value": 100,
- "taxID": 11111111111
}Response samples
- 200
- 201
- 400
{- "cashback": {
- "value": 0
}, - "message": "string"
}Get an image of Qr Code from a Charge
Authorizations:
path Parameters
| id required | string Examples:
charge link payment ID |
query Parameters
| size | string Examples:
Size for the image. This size should be between 600 and 4096. if the size parameter was not passed, the default value will be 1024. |
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: 'api.openpix.com.br', port: null, path: '/openpix/charge/brcode/image/fe7834b4060c488a9b0f89811be5f5cf.png?size=768', headers: { Authorization: '{APP_ID}' } }; 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
- 400
{- "error": "string"
}Get a base64 encoded QR Code image from a Charge
Authorizations:
path Parameters
| id required | string Examples:
charge ID, payment link ID, or QR code ID |
query Parameters
| size | string Examples:
Size for the image. This size should be between 600 and 4096. If the size parameter is not passed, the default value will be 1024. |
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: 'api.openpix.com.br', port: null, path: '/api/image/qrcode/base64/fe7834b4060c488a9b0f89811be5f5cf?size=768', headers: { Authorization: '{APP_ID}' } }; 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
- 500
{- "success": true,
- "imageBase64": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
}Delete a charge
Authorizations:
path Parameters
| id required | string Examples:
charge ID or correlation ID. You will need URI encoding if your correlation ID has characters outside the ASCII set or reserved characters (%, #, /). |
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: 'api.openpix.com.br', port: null, path: '/api/v1/charge/Q2hhcmdlOjYwM2U3NDlhNDI1NjAyYmJiZjRlN2JlZA==', headers: { Authorization: '{APP_ID}' } }; 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
{- "status": "OK",
- "id": "fe7834b4060c488a9b0f89811be5f5cf"
}Edit expiration date of a charge
Authorizations:
path Parameters
| id required | string Examples:
correlation ID. You will need URI encoding if your correlation ID has characters outside the ASCII set or reserved characters (%, #, /). |
Request Body schema: application/jsonrequired
Expires date to update charge
| expiresDate | string Expiration date of the charge. Only in ISO 8601 format. |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "expiresDate": "2021-04-01T17:28:51.882Z"
}Response samples
- 200
- 400
{- "charge": {
- "status": "ACTIVE",
- "customer": {
- "name": "Dan",
- "email": "email0@example.com",
- "phone": "5511999999999",
- "taxID": {
- "taxID": "31324227036",
- "type": "BR:CPF"
}
}, - "value": 100,
- "comment": "good",
- "correlationID": "9134e286-6f71-427a-bf00-241681624586",
- "paymentLinkID": "7777a23s-6f71-427a-bf00-241681624586",
- "expiresIn": 2592000,
- "expiresDate": "2021-04-01T17:28:51.882Z",
- "createdAt": "2021-03-02T17:28:51.882Z",
- "updatedAt": "2021-03-02T17:28:51.882Z",
- "brCode": "000201010212261060014br.gov.bcb.pix2584https://api.woovi.com/openpix/testing?transactionID=867ba5173c734202ac659721306b38c952040000530398654040.015802BR5909LOCALHOST6009Sao Paulo62360532867ba5173c734202ac659721306b38c963044BCA",
- "additionalInfo": [
- {
- "key": "Product",
- "value": "Pencil"
}, - {
- "key": "Invoice",
- "value": "18476"
}, - {
- "key": "Order",
- "value": "302"
}
], - "paymentMethods": {
- "pix": {
- "method": "PIX_COB",
- "transactionID": "9134e286-6f71-427a-bf00-241681624586",
- "identifier": "9134e286-6f71-427a-bf00-241681624586",
- "additionalInfo": [ ],
- "fee": 50,
- "value": 200,
- "status": "ACTIVE",
- "txId": "9134e286-6f71-427a-bf00-241681624586",
- "brCode": "000201010212261060014br.gov.bcb.pix2584https://api.woovi.com/openpix/testing?transactionID=867ba5173c734202ac659721306b38c952040000530398654040.015802BR5909LOCALHOST6009Sao Paulo62360532867ba5173c734202ac659721306b38c963044BCA",
}
}
}
}Get one charge
Authorizations:
path Parameters
| id required | string Example: fe7834b4060c488a9b0f89811be5f5cf charge ID or correlation ID. You will need URI encoding if your correlation ID has characters outside the ASCII set or reserved characters (%, #, /). |
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: 'api.openpix.com.br', port: null, path: '/api/v1/charge/fe7834b4060c488a9b0f89811be5f5cf', headers: { Authorization: '{APP_ID}' } }; 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
{- "charge": {
- "status": "ACTIVE",
- "customer": {
- "name": "Dan",
- "email": "email0@example.com",
- "phone": "5511999999999",
- "taxID": {
- "taxID": "31324227036",
- "type": "BR:CPF"
}
}, - "value": 100,
- "comment": "good",
- "correlationID": "9134e286-6f71-427a-bf00-241681624586",
- "paymentLinkID": "7777-6f71-427a-bf00-241681624586",
- "globalID": "Q2hhcmdlOjcxOTFmMWIwMjA0NmJmNWY1M2RjZmEwYg==",
- "brCode": "000201010212261060014br.gov.bcb.pix2584https://api.woovi.com/openpix/testing?transactionID=867ba5173c734202ac659721306b38c952040000530398654040.015802BR5909LOCALHOST6009Sao Paulo62360532867ba5173c734202ac659721306b38c963044BCA",
- "additionalInfo": [
- {
- "key": "Product",
- "value": "Pencil"
}, - {
- "key": "Invoice",
- "value": "18476"
}, - {
- "key": "Order",
- "value": "302"
}
], - "expiresIn": 2592000,
- "expiresDate": "2021-04-01T17:28:51.882Z",
- "dueDate": "2021-04-01T17:28:51.882Z",
- "createdAt": "2021-03-02T17:28:51.882Z",
- "updatedAt": "2021-03-02T17:28:51.882Z",
- "paymentMethods": {
- "pix": {
- "method": "PIX_COB",
- "transactionID": "9134e286-6f71-427a-bf00-241681624586",
- "identifier": "9134e286-6f71-427a-bf00-241681624586",
- "additionalInfo": [ ],
- "fee": 50,
- "value": 200,
- "status": "ACTIVE",
- "txId": "9134e286-6f71-427a-bf00-241681624586",
- "brCode": "000201010212261060014br.gov.bcb.pix2584https://api.woovi.com/openpix/testing?transactionID=867ba5173c734202ac659721306b38c952040000530398654040.015802BR5909LOCALHOST6009Sao Paulo62360532867ba5173c734202ac659721306b38c963044BCA",
}
}
}
}Get a list of charges
Authorizations:
query Parameters
| start | string <date-time> (Start Date) Example: start=2020-01-01T00:00:00Z Start date used in the query. Complies with RFC 3339. |
| end | string <date-time> (End Date) Example: end=2020-12-01T17:00:00Z End date used in the query. Complies with RFC 3339. |
| status | string Enum: "ACTIVE" "COMPLETED" "EXPIRED" |
| customer | string Customer Correlation ID |
| subscription | string Subscription Correlation ID |
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: 'api.openpix.com.br', port: null, path: '/api/v1/charge?start=2020-01-01T00%3A00%3A00Z&end=2020-12-01T17%3A00%3A00Z&status=SOME_STRING_VALUE&customer=SOME_STRING_VALUE&subscription=SOME_STRING_VALUE', headers: { Authorization: '{APP_ID}' } }; 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
{- "pageInfo": {
- "skip": 0,
- "limit": 10,
- "hasPreviousPage": false,
- "hasNextPage": true
}, - "charges": {
- "status": "ACTIVE",
- "customer": {
- "name": "Dan",
- "email": "email0@example.com",
- "phone": "5511999999999",
- "taxID": {
- "taxID": "31324227036",
- "type": "BR:CPF"
}
}, - "value": 100,
- "comment": "good",
- "correlationID": "9134e286-6f71-427a-bf00-241681624586",
- "paymentLinkID": "7777a23s-6f71-427a-bf00-241681624586",
- "brCode": "000201010212261060014br.gov.bcb.pix2584https://api.woovi.com/openpix/testing?transactionID=867ba5173c734202ac659721306b38c952040000530398654040.015802BR5909LOCALHOST6009Sao Paulo62360532867ba5173c734202ac659721306b38c963044BCA",
- "additionalInfo": [
- {
- "key": "Product",
- "value": "Pencil"
}, - {
- "key": "Invoice",
- "value": "18476"
}, - {
- "key": "Order",
- "value": "302"
}
], - "expiresIn": 2592000,
- "expiresDate": "2021-04-01T17:28:51.882Z",
- "createdAt": "2021-03-02T17:28:51.882Z",
- "updatedAt": "2021-03-02T17:28:51.882Z",
- "paymentMethods": {
- "pix": {
- "method": "PIX_COB",
- "transactionID": "9134e286-6f71-427a-bf00-241681624586",
- "identifier": "9134e286-6f71-427a-bf00-241681624586",
- "additionalInfo": [ ],
- "fee": 50,
- "value": 200,
- "status": "ACTIVE",
- "txId": "9134e286-6f71-427a-bf00-241681624586",
- "brCode": "000201010212261060014br.gov.bcb.pix2584https://api.woovi.com/openpix/testing?transactionID=867ba5173c734202ac659721306b38c952040000530398654040.015802BR5909LOCALHOST6009Sao Paulo62360532867ba5173c734202ac659721306b38c963044BCA",
}
}
}
}Create a new Charge
Endpoint to create a new Charge for a customer
Authorizations:
query Parameters
| return_existing | boolean Examples:
Make the endpoint idempotent, will return an existent charge if already has a one with the correlationID |
Request Body schema: application/jsonrequired
Data to create a new charge
| correlationID required | string Your correlation ID to keep track of this charge |
| value required | number Value in cents of this charge |
| type | string Enum: "DYNAMIC" "OVERDUE" "BOLETO" Charge type is used to determine whether a charge will have a deadline, fines and interests |
| comment | string Comment to be added in infoPagador |
| expiresIn | number Expires the charge in seconds (minimum is 5 minutes) |
| expiresDate | string Expiration date of the charge. Only in ISO 8601 format. |
| dueDate | string Due date for OVERDUE, BOLETO, or subscription charges in ISO 8601 format. |
object or object or object (CustomerPayload) Customer field is not required. However, if you decide to send it, you must send at least one of the following combinations, name + taxID or name + email or name + phone. | |
| ensureSameTaxID | boolean true to ensure that the payer taxID must be the same as the customer taxID. |
| fixedLocation | boolean true to fix the qrcode of the charge, same qrcode to all future charges. |
| paymentLinkID | string Payment Link ID, used to link charges to the same qrCode. |
| daysForDueDate | number Time in days until the charge hits the deadline so fines and interests start applying. This property is only considered for charges of type OVERDUE |
| daysAfterDueDate | number Time in days that a charge is still payable after the deadline. This property is only considered for charges of type OVERDUE |
object Interests configuration. This property is only considered for charges of type OVERDUE | |
object Fines configuration. This property is only considered for charges of type OVERDUE | |
object Discount settings for the charge. This property is only considered for charges of type OVERDUE. How it interacts with Modality enum follows the BACEN COBV (Cobrança com Vencimento) spec — see bacen.github.io/pix-api for the upstream reference. Shape of the object depends on
Rounding. Computed discount and interest amounts are rounded to the nearest cent. | |
Array of objects Additional info of the charge | |
| enableCashbackPercentage | boolean true to enable cashback and false to disable. |
| enableCashbackExclusivePercentage | boolean true to enable fidelity cashback and false to disable. |
| subaccount | string Pix key of the subaccount to receive the charge |
Array of objects This is the array that will configure how will be splitted the value of the charge |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "correlationID": "9134e286-6f71-427a-bf00-241681624587",
- "value": 100,
- "comment": "good",
- "customer": {
- "name": "Dan",
- "taxID": "31324227036",
- "email": "email0@example.com",
- "phone": "5511999999999"
}, - "additionalInfo": [
- {
- "key": "Product",
- "value": "Pencil"
}, - {
- "key": "Invoice",
- "value": "18476"
}, - {
- "key": "Order",
- "value": "302"
}
]
}Response samples
- 200
- 400
{- "charge": {
- "status": "ACTIVE",
- "customer": {
- "name": "Dan",
- "email": "email0@example.com",
- "phone": "5511999999999",
- "taxID": {
- "taxID": "31324227036",
- "type": "BR:CPF"
}
}, - "value": 100,
- "comment": "good",
- "correlationID": "9134e286-6f71-427a-bf00-241681624586",
- "paymentLinkID": "7777a23s-6f71-427a-bf00-241681624586",
- "expiresIn": 2592000,
- "expiresDate": "2021-09-01T17:28:51.882Z",
- "dueDate": "2021-04-01T17:28:51.882Z",
- "createdAt": "2021-03-02T17:28:51.882Z",
- "updatedAt": "2021-03-02T17:28:51.882Z",
- "brCode": "000201010212261060014br.gov.bcb.pix2584https://api.woovi.com/openpix/testing?transactionID=867ba5173c734202ac659721306b38c952040000530398654040.015802BR5909LOCALHOST6009Sao Paulo62360532867ba5173c734202ac659721306b38c963044BCA",
- "additionalInfo": [
- {
- "key": "Product",
- "value": "Pencil"
}, - {
- "key": "Invoice",
- "value": "18476"
}, - {
- "key": "Order",
- "value": "302"
}
], - "paymentMethods": {
- "pix": {
- "method": "PIX_COB",
- "transactionID": "9134e286-6f71-427a-bf00-241681624586",
- "identifier": "9134e286-6f71-427a-bf00-241681624586",
- "additionalInfo": [ ],
- "fee": 50,
- "value": 200,
- "status": "ACTIVE",
- "txId": "9134e286-6f71-427a-bf00-241681624586",
- "brCode": "000201010212261060014br.gov.bcb.pix2584https://api.woovi.com/openpix/testing?transactionID=867ba5173c734202ac659721306b38c952040000530398654040.015802BR5909LOCALHOST6009Sao Paulo62360532867ba5173c734202ac659721306b38c963044BCA",
}
}
}
}Get all refunds of a charge
Endpoint to get all refunds of a charge
Authorizations:
path Parameters
| id required | string Examples:
The correlation ID of the charge. You will need URI encoding if your correlation ID has characters outside the ASCII set or reserved characters (%, #, /). |
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: 'api.openpix.com.br', port: null, path: '/api/v1/charge/cf4012c9-b2ac-484d-8121-deedd1c6d8af/refund', headers: { Authorization: '{APP_ID}' } }; 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
{- "refunds": [
- {
- "status": "IN_PROCESSING",
- "value": 10,
- "correlationID": "9134e286-6f71-427a-bf00-241681624586",
- "endToEndId": "E23114447202304181826HJNwY577YDX",
- "time": "2021-03-02T17:28:51.882Z"
}, - {
- "status": "CONFIRMED",
- "value": 40,
- "correlationID": "589a378e-ab45-4f30-bd4d-4496c60f88cf",
- "endToEndId": "E23114447202304181057pOhPMsp2pJZ",
- "time": "2021-03-05T14:49:02.922Z",
- "comment": "Comentário do reembolso"
}
]
}Create a new refund for a charge
Endpoint to create a new refund for a charge
Authorizations:
path Parameters
| id required | string Examples:
The correlation ID of the charge. You will need URI encoding if your correlation ID has characters outside the ASCII set or reserved characters (%, #, /). |
Request Body schema: application/jsonrequired
Data to create a new refund for a charge
| correlationID required | string Your correlation ID to keep track for this refund |
| value | number Value in cents for this refund |
| comment | string <= 140 Comment for this refund. Maximum length of 140 characters. |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "correlationID": "a273e72c-9547-4c75-a213-3b0a2735b8d5",
- "value": 100,
- "comment": "Comentário do reembolso"
}Response samples
- 200
- 400
{- "refund": {
- "status": "IN_PROCESSING",
- "value": 100,
- "correlationID": "a273e72c-9547-4c75-a213-3b0a2735b8d5",
- "endToEndId": "E23114447202304181826HJNwY577YDX",
- "time": "2023-03-02T17:28:51.882Z",
- "comment": "Comentário do reembolso"
}
}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: 'api.openpix.com.br', port: null, path: '/api/v1/company', headers: { Authorization: '{APP_ID}' } }; 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
{- "company": {
- "officialName": "Company Official Name",
- "tradeName": "Company Trade Name",
- "taxID": "12345678901234",
- "correlationID": "corr-123456"
}
}Get one customer
Authorizations:
path Parameters
| id required | string Examples:
Correlation ID or Tax ID |
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: 'api.openpix.com.br', port: null, path: '/api/v1/customer/fe7834b4060c488a9b0f89811be5f5cf', headers: { Authorization: '{APP_ID}' } }; 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
{- "customer": {
- "name": "Dan",
- "email": "email0@example.com",
- "phone": "5511999999999",
- "taxID": {
- "taxID": "31324227036",
- "type": "BR:CPF"
}, - "correlationID": "fe7834b4060c488a9b0f89811be5f5cf"
}
}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: 'api.openpix.com.br', port: null, path: '/api/v1/customer', headers: { Authorization: '{APP_ID}' } }; 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
{- "pageInfo": {
- "skip": 0,
- "limit": 10,
- "hasPreviousPage": false,
- "hasNextPage": true
}, - "customers": {
- "customer": {
- "name": "Dan",
- "email": "email0@example.com",
- "phone": "5511999999999",
- "taxID": {
- "taxID": "31324227036",
- "type": "BR:CPF"
}
}
}
}Create a new Customer
Endpoint to create a new Customer
Authorizations:
Request Body schema: application/jsonrequired
Data to create a new customer
| name required | string |
string | |
| phone | string |
| taxID required | string |
| correlationID | string |
object |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "name": "Dan",
- "taxID": "31324227036",
- "email": "email0@example.com",
- "phone": "5511999999999",
- "correlationID": "9134e286-6f71-427a-bf00-241681624586",
- "address": {
- "zipcode": "30421322",
- "street": "Street",
- "number": "100",
- "neighborhood": "Neighborhood",
- "city": "Belo Horizonte",
- "state": "MG",
- "complement": "APTO",
- "country": "BR"
}
}Response samples
- 200
- 400
{- "customer": {
- "name": "Dan",
- "email": "email0@example.com",
- "phone": "5511999999999",
- "taxID": {
- "taxID": "31324227036",
- "type": "BR:CPF"
}, - "address": {
- "zipcode": "30421322",
- "street": "Street",
- "number": "100",
- "neighborhood": "Neighborhood",
- "city": "Belo Horizonte",
- "state": "MG",
- "complement": "APTO",
- "country": "BR"
}
}
}Update a Customer
Endpoint to update a Customer
Authorizations:
path Parameters
| correlationID required | string Examples:
correlation ID |
Request Body schema: application/jsonrequired
Data to update a existent customer
| name | string |
string | |
| phone | string |
| taxID | string |
object |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "name": "Dan",
- "email": "email0@example.com",
- "phone": "5511999999999",
- "address": {
- "zipcode": "30421322",
- "street": "Street",
- "number": "100",
- "neighborhood": "Neighborhood",
- "city": "Belo Horizonte",
- "state": "MG",
- "complement": "APTO",
- "country": "BR"
}
}Response samples
- 200
- 400
{- "customer": {
- "name": "Dan",
- "email": "email0@example.com",
- "phone": "5511999999999",
- "taxID": {
- "taxID": "31324227036",
- "type": "BR:CPF"
}, - "address": {
- "zipcode": "30421322",
- "street": "Street",
- "number": "100",
- "neighborhood": "Neighborhood",
- "city": "Belo Horizonte",
- "state": "MG",
- "complement": "APTO",
- "country": "BR"
}
}
}Upload new evidence
Upload evidence files for dispute/med. \nOBS para obter esse o id da disputa, veja esse artigo https://developers.woovi.com/docs/disputa/how-add-new-evidence-in-dispute#1-obter-o-id-da-disputa
Authorizations:
Request Body schema: application/jsonrequired
Array of objects documents for upload | |||||||
Array
| |||||||
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "documents": [
- {
- "url": "string",
- "correlationID": "string",
- "description": "string"
}
]
}Response samples
- 200
- 400
{- "documents": [
- {
- "correlationID": "id123456789",
- "description": "description for my document"
}
]
}Get one dispute
Authorizations:
path Parameters
| id required | string Example: Ea9c291526ae54b4cb41d9909bdf6d792 The id must be the endToEndId of the transaction that originated the Dispute |
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: 'api.openpix.com.br', port: null, path: '/api/v1/dispute/Ea9c291526ae54b4cb41d9909bdf6d792', headers: { Authorization: '{APP_ID}' } }; 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
- 500
{- "dispute": {
- "status": "ACCEPTED",
- "name": "John Doe",
- "email": "john.doe@example.com",
- "phoneNumber": "+5511999999999",
- "value": 10000,
- "disputeReason": "Product not received",
- "endToEndId": "Ea9c291526ae54b4cb41d9909bdf6d792",
- "type": "MED"
}
}Get a list of disputes
Authorizations:
query Parameters
| start | string <date-time> (Start Date) Example: start=2020-01-01T00:00:00Z Start date used in the query. Complies with RFC 3339. |
| end | string <date-time> (End Date) Example: end=2020-12-01T17:00:00Z End date used in the query. Complies with RFC 3339. |
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: 'api.openpix.com.br', port: null, path: '/api/v1/dispute?start=2020-01-01T00%3A00%3A00Z&end=2020-12-01T17%3A00%3A00Z', headers: { Authorization: '{APP_ID}' } }; 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
{- "pageInfo": {
- "skip": 0,
- "limit": 10,
- "hasPreviousPage": false,
- "hasNextPage": true
}, - "disputes": [
- {
- "disputeReason": "Dispute reason test",
- "email": "jorge@test.com",
- "name": "Seu Jorge",
- "phoneNumber": "+551199999999",
- "status": "IN_REVIEW",
- "value": 100,
- "createdAt": "2021-03-02T17:28:51.882Z",
- "updatedAt": "2021-03-02T17:28:51.882Z"
}
]
}Endpoints to manage funds recoveries (MED — Mecanismo Especial de Devolução).
A funds recovery lets you request the return of a Pix transaction sent from your account in case of scam or fraud. The Central Bank tracks the money path across Pix participants and opens refund solicitations on the accounts the funds went through.
These endpoints require the MED API feature enabled on your account. Contact our support to enable it.
Cancel a funds recovery (MED)
Endpoint to cancel a funds recovery (MED). The request does not need a body.
Only funds recoveries opened by your account that have not reached a terminal status (COMPLETED or CANCELLED) can be cancelled.
Authorizations:
path Parameters
| id required | string <uuid> Example: 3e760cd5-39b2-45da-8ab6-b212cf205568 The |
Responses
Request samples
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
const http = require('https'); const options = { method: 'POST', hostname: 'api.openpix.com.br', port: null, path: '/api/v1/funds-recovery/3e760cd5-39b2-45da-8ab6-b212cf205568/cancel', headers: { Authorization: '{APP_ID}' } }; 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
- 403
- 404
- 422
{- "rootTransactionId": "E31680151202606101530AbCdEf12345",
- "situationType": "SCAM",
- "reportDetails": "Payment made to a fake seller. After the payment, the seller stopped responding and never delivered the product.",
- "dictId": "3e760cd5-39b2-45da-8ab6-b212cf205568",
- "status": "CANCELLED",
- "direction": "SENT",
- "reporterParticipant": "31680151",
- "creationTime": "2026-06-11T00:30:00.000Z",
- "lastModified": "2026-06-11T01:10:00.000Z",
- "createdAt": "2026-06-11T00:30:00.000Z",
- "updatedAt": "2026-06-11T01:10:00.000Z"
}Get one funds recovery (MED)
Endpoint to get a funds recovery (MED). Use it to follow the progress of the funds recovery through the status and events fields.
Authorizations:
path Parameters
| id required | string <uuid> Example: 3e760cd5-39b2-45da-8ab6-b212cf205568 The |
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: 'api.openpix.com.br', port: null, path: '/api/v1/funds-recovery/3e760cd5-39b2-45da-8ab6-b212cf205568', headers: { Authorization: '{APP_ID}' } }; 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
- 403
- 404
{- "rootTransactionId": "E31680151202606101530AbCdEf12345",
- "situationType": "SCAM",
- "reportDetails": "Payment made to a fake seller. After the payment, the seller stopped responding and never delivered the product.",
- "dictId": "3e760cd5-39b2-45da-8ab6-b212cf205568",
- "status": "AWAITING_ANALYSIS",
- "direction": "SENT",
- "reporterParticipant": "31680151",
- "creationTime": "2026-06-11T00:30:00.000Z",
- "lastModified": "2026-06-11T00:35:00.000Z",
- "events": [
- {
- "id": "f3a1c9d2-8b47-4e6a-9c21-5d7e0a4b8f13",
- "event": "AWAITING_ANALYSIS",
- "timestamp": "2026-06-11T00:35:00.000Z"
}
], - "createdAt": "2026-06-11T00:30:00.000Z",
- "updatedAt": "2026-06-11T00:35:00.000Z"
}Open a funds recovery (MED)
Endpoint to open a funds recovery (MED) for a Pix transaction sent from your account.
Only one funds recovery can be opened per transaction. The transaction must have been sent from your account and cannot have been rejected.
Authorizations:
Request Body schema: application/jsonrequired
Data to open a funds recovery
| transactionEndToEndId required | string The endToEndId of the Pix transaction sent from your account that you want to recover |
| situationType required | string Enum: "SCAM" "ACCOUNT_TAKEOVER" "COERCION" "FRAUDULENT_ACCESS" "OTHER" "UNKNOWN" The situation that motivated the funds recovery:
|
| details required | string Detailed description of what happened. The more context, the better for the analysis. |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "transactionEndToEndId": "E31680151202606101530AbCdEf12345",
- "situationType": "SCAM",
- "details": "Payment made to a fake seller. After the payment, the seller stopped responding and never delivered the product."
}Response samples
- 201
- 400
- 401
- 403
- 404
- 422
{- "rootTransactionId": "E31680151202606101530AbCdEf12345",
- "situationType": "SCAM",
- "reportDetails": "Payment made to a fake seller. After the payment, the seller stopped responding and never delivered the product.",
- "dictId": "3e760cd5-39b2-45da-8ab6-b212cf205568",
- "status": "CREATED",
- "direction": "SENT",
- "reporterParticipant": "31680151",
- "creationTime": "2026-06-11T00:30:00.000Z",
- "lastModified": "2026-06-11T00:30:00.000Z",
- "events": [ ],
- "createdAt": "2026-06-11T00:30:00.000Z",
- "updatedAt": "2026-06-11T00:30:00.000Z"
}Create a KYC onboarding
Creates a new KYC onboarding for a merchant. Returns a link that should be sent to the merchant so they can fill in their registration data.
The API is idempotent by correlationID. If the same correlationID is sent again
for the same company, the API returns the existing onboarding link (200 OK) instead
of creating a new one.
The fields officialName, tradeName and representatives[].name are automatically
populated via data enrichment when available. You do not need to send them in the request.
If redirectUrl is provided, the merchant is automatically redirected to that URL
5 seconds after completing the onboarding flow (terminal states: submitted, approved,
or rejected). The redirectUrl is bound to the onboarding link at creation time and
cannot be changed later — subsequent idempotent calls will return the original value.
Authorizations:
Request Body schema: application/jsonrequired
| taxID required | string CNPJ da empresa do merchant (com ou sem mascara) |
| correlationID | string Identificador unico para idempotencia. Se nao informado, o CNPJ sera usado. |
| redirectUrl | string <uri> URL para onde o merchant sera redirecionado apos concluir o onboarding. Quando informado, a pagina final do fluxo KYC redireciona automaticamente apos 5 segundos. |
Array of objects (KycOnboardingRepresentative) Socios/representantes da empresa |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "taxID": "XX.XXX.XXX/0001-XX"
}Response samples
- 200
- 201
- 400
- 401
- 403
- 500
{- "accountRegister": {
- "status": "PENDING",
- "officialName": "RAZAO_SOCIAL_DA_EMPRESA",
- "tradeName": "NOME_FANTASIA_DA_EMPRESA",
- "taxID": {
- "taxID": "XXXXXXXXXXXXXX",
- "type": "BR:CNPJ"
}, - "correlationID": "my-unique-id",
- "representatives": [
- {
- "name": "NOME_DO_SOCIO",
- "taxID": {
- "taxID": "XXXXXXXXXXX",
- "type": "BR:CPF"
}
}
]
}
}Get account limits
Retrieves the most recent account limits configured for a given bank account. Only the public-safe fields are returned; internal-only fields are stripped from the response.
Authorizations:
path Parameters
| accountId required | string Examples:
Bank account identifier (ObjectId) for which limits should be returned |
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: 'api.openpix.com.br', port: null, path: '/api/v1/limits/65f1c2e9a1b2c3d4e5f60718', headers: { Authorization: '{APP_ID}' } }; 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
- 403
- 404
{- "limits": {
- "pixDayLimit": 4000000,
- "pixNightLimit": 100000,
- "pixOutSameHolderDayLimit": 4000000,
- "pixOutDifferentHolderDayLimit": 4000000,
- "pixOutSameHolderNightLimit": 100000,
- "pixOutDifferentHolderNightLimit": 100000,
- "pixInSameHolderDayLimit": 100000000,
- "pixInDifferentHolderDayLimit": 100000000,
- "pixInSameHolderNightLimit": 100000000,
- "pixInDifferentHolderNightLimit": 100000000,
- "dayStartAt": "06:00",
- "nightStartAt": "20:00",
- "boletoEmissionLimit": 200,
- "boletoMaximumValueLimit": 1000000
}
}Partners integrate affiliated companies.
They can register new companies, manage them, and earn money from them.
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: 'api.openpix.com.br', port: null, path: '/api/v1/partner/affiliate', headers: { Authorization: '{APP_ID}' } }; 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
{- "affiliates": [
- {
- "company": {
- "id": "Q29tcGFueTo2MDE1MTQ0OWUzYzlhNDAwMTJhYjM0Y2Q=",
- "name": "Affiliate Company One LTDA",
- "taxID": "65914571000187",
- "createdAt": "2026-01-15T13:22:41.000Z"
}, - "account": {
- "clientId": "Client_Id_5f3a1c9e8b7d4a2f",
- "name": "Conta 1234",
- "accountId": "60151449e3c9a40012ab34cd",
- "branch": "0001",
- "account": "1234567"
}
}, - {
- "company": {
- "id": "Q29tcGFueTo2MDE1MTQ0OWUzYzlhNDAwMTJjZDU2ZWY=",
- "name": "Affiliate Company Two LTDA",
- "taxID": "14380200000121",
- "createdAt": "2026-01-12T09:05:18.000Z"
}
}
], - "pageInfo": {
- "skip": 0,
- "limit": 100,
- "hasPreviousPage": false,
- "hasNextPage": true
}
}Create a new application to some of your preregistration's company.
As a partner company, you can create a new application to some of your companies. The application should give access to our API to this companies, so they can use it too.
Authorizations:
Request Body schema: application/jsonrequired
The request body to create a pre registration.
object | |
object (TaxIDObjectPayload) |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "application": {
- "name": "MyAPIAccessWithScopes",
- "type": "API",
- "scopes": [
- "CHARGE_POST",
- "CHARGE_GET"
]
}, - "taxID": {
- "taxID": "65914571000187",
- "type": "BR:CNPJ"
}
}Response samples
- 200
- 201
- 400
- 403
{- "application": {
- "name": "MyAPIAccessWithScopes",
- "isActive": true,
- "type": "API",
- "clientId": "client_123abc",
- "clientSecret": "secret_456def",
- "scopes": [
- "CHARGE_POST",
- "CHARGE_GET"
]
}
}Get an specific preregistration via taxID param.
Authorizations:
path Parameters
| taxID required | string Examples:
The raw tax ID from the preregistration that you want to get. |
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: 'api.openpix.com.br', port: null, path: '/api/v1/partner/company/60151449000182', headers: { Authorization: '{APP_ID}' } }; 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
{- "preRegistration": {
- "preRegistration": {
- "name": "string",
- "taxID": {
- "taxID": "string",
- "type": "BR:CNPJ"
}
}, - "user": {
- "firstName": "string",
- "lastName": "string",
- "email": "string",
- "phone": "string",
- "taxID": {
- "taxID": "string",
- "type": "BR:CNPJ"
}
}, - "company": {
- "id": "string",
- "name": "string",
- "taxID": {
- "taxID": "string",
- "type": "BR:CNPJ"
}
}, - "account": {
- "clientId": "string"
}
}
}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: 'api.openpix.com.br', port: null, path: '/api/v1/partner/company', headers: { Authorization: '{APP_ID}' } }; 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
{- "preRegistrations": [
- {
- "preRegistration": {
- "name": "string",
- "taxID": {
- "taxID": "string",
- "type": "BR:CNPJ"
}
}, - "user": {
- "firstName": "string",
- "lastName": "string",
- "email": "string",
- "phone": "string",
- "taxID": {
- "taxID": "string",
- "type": "BR:CNPJ"
}
}, - "company": {
- "id": "string",
- "name": "string",
- "taxID": {
- "taxID": "string",
- "type": "BR:CNPJ"
}
}, - "account": {
- "clientId": "string"
}
}
], - "pageInfo": {
- "errors": [
- {
- "message": "string",
- "data": {
- "skip": 0,
- "limit": 0
}
}
], - "skip": 0,
- "limit": 0,
- "hasPreviousPage": true,
- "hasNextPage": true
}
}Create a pre registration with a partner reference (your company)
As a partner company, you can create a new pre registration referencing your company as a partner.
Authorizations:
Request Body schema: application/jsonrequired
The request body to create a pre registration.
object (PreRegistrationObject) | |
object (PreRegistrationUserObject) |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "preRegistration": {
- "name": "Example LLC",
- "taxID": {
- "taxID": "11111111111111",
- "type": "BR:CNPJ"
}, - "website": "examplellc.com"
}, - "user": {
- "firstName": "John",
- "lastName": "Doe",
- "email": "johndoe@examplellc.com",
- "phone": "+5511912345678",
- "taxID": {
- "taxID": "1111111111",
- "type": "BR:CPF"
}
}
}Response samples
- 200
- 201
- 400
- 403
{- "preRegistration": {
- "name": "string",
- "website": "string",
- "taxID": {
- "taxID": "string",
- "type": "BR:CNPJ"
}
}, - "user": {
- "firstName": "string",
- "lastName": "string",
- "email": "string",
- "phone": "string",
- "taxID": {
- "taxID": "string",
- "type": "BR:CNPJ"
}
}
}Endpoints to create and manage Pix payment requests. Supports three payment types:
1. Pix Key (PIX_KEY) - Pay directly to a Pix key (CPF, CNPJ, email, phone, or random key).
2. QR Code (QR_CODE) - Pay a Pix QR Code (BR Code). Send the raw QR Code string and the system will decode it, extract the destination and value automatically.
3. Manual (MANUAL) - Pay by providing the destination bank account details directly (holder, account, branch, PSP).
QR Code Payment Flow
To pay a QR Code, follow these steps:
- Create the payment - Call
POST /api/v1/paymentwithtype: "QR_CODE"and theqrCodefield containing the BR Code string. The value is automatically extracted from the QR Code. You can optionally provide avaluefield to override it (for QR Codes without a fixed value). - Review the response - The response includes the decoded payment details (destination, value, status
CREATED). - Approve the payment - Call
POST /api/v1/payment/approvewith thecorrelationIDto execute the payment. - Check the status - Call
GET /api/v1/payment/{id}with the correlationID to verify the payment status and get transaction details.
Approve a Payment Request
Endpoint to approve a payment
Authorizations:
Request Body schema: application/jsonrequired
Data to approve a payment request
| correlationID | string the correlation ID of the payment to be approved |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "correlationID": "payment1"
}Response samples
- 200
- 400
{- "payment": {
- "value": 100,
- "status": "APPROVED",
- "destinationAlias": "c4249323-b4ca-43f2-8139-8232aab09b93",
- "comment": "payment comment",
- "correlationID": "payment1"
}, - "transaction": {
- "value": 100,
- "endToEndId": "transaction-end-to-end-id",
- "time": "2023-03-20T13:14:17.000Z"
}, - "destination": {
- "name": "Dan",
- "taxID": "31324227036",
- "pixKey": "c4249323-b4ca-43f2-8139-8232aab09b93",
- "bank": "A Bank",
- "branch": "1",
- "account": "123456"
}
}Get one Payment
Authorizations:
path Parameters
| id required | string Examples:
payment ID or correlation ID |
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: 'api.openpix.com.br', port: null, path: '/api/v1/payment/Q2hhcmdlOjYwM2U3NDlhNDI1NjAyYmJiZjRlN2JlZA==', headers: { Authorization: '{APP_ID}' } }; 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
{- "payment": {
- "value": 100,
- "status": "CONFIRMED",
- "destinationAlias": "c4249323-b4ca-43f2-8139-8232aab09b93",
- "comment": "payment comment",
- "correlationID": "payment1",
- "sourceAccountId": "my-source-account-id"
}, - "transaction": {
- "value": 100,
- "endToEndId": "transaction-end-to-end-id",
- "debitParty": {
- "account": {
- "branch": "0001",
- "account": "00000000000000023280",
- "accountType": "TRAN"
}, - "psp": {
- "id": "123456",
- "name": "COMPANY DEBIT LTDA",
- "code": "123456789"
}, - "holder": {
- "name": "name holder",
- "nameFriendly": "name friendly holder"
}, - "taxID": {
- "taxID": "1212345600198",
- "type": "BR:CNPJ"
}
}, - "creditParty": {
- "pixKey": {
- "pixKey": "email@email.com.br",
- "type": "EMAIL"
}, - "account": {
- "branch": "0001",
- "account": "00000000000000012345",
- "accountType": "TRAN"
}, - "psp": {
- "id": "123456",
- "name": "COMPANY CREDIT LTDA"
}, - "holder": {
- "name": "name holder",
- "nameFriendly": "name friendly",
- "taxID": {
- "taxID": "00123456000199",
- "type": "BR:CNPJ"
}
}
}, - "time": "2023-03-20T13:14:17.000Z"
}, - "destination": {
- "name": "Dan",
- "taxID": "31324227036",
- "pixKey": "c4249323-b4ca-43f2-8139-8232aab09b93",
- "bank": "A Bank",
- "branch": "1",
- "account": "123456"
}
}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: 'api.openpix.com.br', port: null, path: '/api/v1/payment', headers: { Authorization: '{APP_ID}' } }; 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
{- "pageInfo": {
- "skip": 0,
- "limit": 10,
- "hasPreviousPage": false,
- "hasNextPage": true
}, - "payments": {
- "payment": {
- "value": 100,
- "status": "CONFIRMED",
- "destinationAlias": "c4249323-b4ca-43f2-8139-8232aab09b93",
- "comment": "payment comment",
- "correlationID": "payment1",
- "sourceAccountId": "my-source-account-id"
}, - "transaction": {
- "value": 100,
- "endToEndId": "transaction-end-to-end-id",
- "time": "2023-03-20T13:14:17.000Z",
- "debitParty": {
- "account": {
- "branch": "0001",
- "account": "00000000000000023280",
- "accountType": "TRAN"
}, - "psp": {
- "id": "123456",
- "name": "COMPANY DEBIT LTDA",
- "code": "123456789"
}, - "holder": {
- "name": "name holder",
- "nameFriendly": "name friendly holder"
}, - "taxID": {
- "taxID": "1212345600198",
- "type": "BR:CNPJ"
}
}, - "creditParty": {
- "pixKey": {
- "pixKey": "email@email.com.br",
- "type": "EMAIL"
}, - "account": {
- "branch": "0001",
- "account": "00000000000000012345",
- "accountType": "TRAN"
}, - "psp": {
- "id": "123456",
- "name": "COMPANY CREDIT LTDA"
}, - "holder": {
- "name": "name holder",
- "nameFriendly": "name friendly",
- "taxID": {
- "taxID": "00123456000199",
- "type": "BR:CNPJ"
}
}
}
}, - "destination": {
- "name": "Dan",
- "taxID": "31324227036",
- "pixKey": "c4249323-b4ca-43f2-8139-8232aab09b93",
- "bank": "A Bank",
- "branch": "1",
- "account": "123456"
}
}
}Create a Payment Request
Endpoint to request a payment. Supports four payment types: Pix Key (PIX_KEY), QR Code (QR_CODE), Manual (MANUAL), and Boleto (BOLETO).
For QR Code payments, the system decodes the BR Code string and extracts the destination and value automatically.
For Boleto payments, send type: "BOLETO" and the boletoBarcode. The amount, due date and beneficiary are resolved from the boleto, so value and destination are not sent in the body. Validate the barcode first with POST /api/v1/boleto/validate.
Set autoApprove: true to create and immediately approve the payment in a single call, returning the enriched response with transaction and destination data. Without this flag, the payment is created in CREATED status and can be approved later via POST /api/v1/payment/approve.
Authorizations:
Request Body schema: application/jsonrequired
Data to create a payment request
| type required | string Enum: "PIX_KEY" "QR_CODE" "MANUAL" "BOLETO" type of the payment |
| value required | number value of the requested payment in cents |
| destinationAlias required | string the pix key the payment should be sent to |
| destinationAliasType required | string Enum: "CPF" "CNPJ" "EMAIL" "PHONE" "RANDOM" the type of the pix key the payment should be sent to |
| correlationID required | string a unique identifier for your payment |
| pixKeyEndToEndId | string the end to end id of the pix key used for track pix key consultations |
| comment | string the comment that will be sent alongside your payment |
object additional metadata for the payment (max 30 keys) | |
| autoApprove | boolean When true, creates and approves the payment in a single call returning the enriched response. Defaults to false. |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "type": "PIX_KEY",
- "value": 100,
- "destinationAlias": "c4249323-b4ca-43f2-8139-8232aab09b93",
- "destinationAliasType": "RANDOM",
- "comment": "payment comment",
- "correlationID": "payment1",
- "pixKeyEndToEndId": "E1234567890",
- "metadata": {
- "orderId": "order-123",
- "userId": "user-456",
- "source": "mobile-app"
}
}Response samples
- 200
- 400
{- "payment": {
- "type": "PIX_KEY",
- "value": 100,
- "status": "CREATED",
- "destinationAlias": "c4249323-b4ca-43f2-8139-8232aab09b93",
- "destinationAliasType": "RANDOM",
- "comment": "payment comment",
- "correlationID": "payment1"
}
}Check data from a Pix key
Get data from a Pix key if it exists
Authorizations:
path Parameters
| pixKey required | string The Pix key to check |
Responses
Response samples
- 200
- 400
- 401
- 403
- 404
- 429
{- "pixKey": "string",
- "type": "CPF",
- "pixKeyEndToEndId": "string",
- "owner": {
- "account": "string",
- "branch": "string",
- "psp": "string",
- "name": "string",
- "taxID": "string"
}
}Check data from a Pix key
Get data from a Pix key if it exists
Authorizations:
Request Body schema: application/jsonrequired
| pixKey required | string The Pix key to check |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "pixKey": "string"
}Response samples
- 200
- 400
- 401
- 403
- 404
- 429
{- "pixKey": "string",
- "type": "CPF",
- "pixKeyEndToEndId": "string",
- "owner": {
- "account": "string",
- "branch": "string",
- "psp": "string",
- "name": "string",
- "taxID": "string"
}
}Get all Pix keys
Retrieves a list of all Pix keys
Authorizations:
query Parameters
| skip | number |
| limit | number |
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: 'api.openpix.com.br', port: null, path: '/api/v1/pix-keys?skip=SOME_NUMBER_VALUE&limit=SOME_NUMBER_VALUE', headers: { Authorization: '{APP_ID}' } }; 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
{- "pixKeys": [
- {
- "key": "string",
- "type": "CPF",
- "isDefault": true
}
], - "account": {
- "accountId": "string",
- "isDefault": true,
- "balance": {
- "total": 0,
- "blocked": 0,
- "available": 0,
- "blockedBySecurity": 0,
- "blockedByWithdrawSafety": 0
}, - "taxId": "string",
- "officialName": "string",
- "tradeName": "string",
- "branch": "string",
- "account": "string",
- "accountName": "string"
}
}Create a new Pix key
Creates a new Pix key
Authorizations:
Request Body schema: application/jsonrequired
| key required | string |
| type required | string Enum: "CNPJ" "EVP" |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "key": "string",
- "type": "CNPJ"
}Response samples
- 201
{- "key": "string",
- "type": "CPF",
- "isDefault": true
}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: 'api.openpix.com.br', port: null, path: '/api/v1/pix-keys/tokens', headers: { Authorization: '{APP_ID}' } }; 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
{- "tokens": 0,
- "maxTokens": 0,
- "nextRefresh": "string",
- "tokensAfterRefresh": 0,
- "refreshRate": 0
}Get token bucket logs
Get a list of token bucket operation logs
Authorizations:
query Parameters
| skip | number |
| limit | number |
| companyBankAccount | string Filter logs by company bank account ID |
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: 'api.openpix.com.br', port: null, path: '/api/v1/pix-keys/tokens/logs?skip=SOME_NUMBER_VALUE&limit=SOME_NUMBER_VALUE&companyBankAccount=SOME_STRING_VALUE', headers: { Authorization: '{APP_ID}' } }; 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
{- "pageInfo": {
- "skip": 0,
- "limit": 100,
- "hasPreviousPage": false,
- "hasNextPage": false
}, - "logs": [
- {
- "operation": "REMOVE",
- "reason": "pixKeyCheck",
- "tokens": 1,
- "tokensBefore": 100,
- "tokensAfter": 99,
- "endToEndId": "E18236120202012032010s0133872GZA",
- "pixKey": "31324227036",
- "createdAt": "2024-01-15T10:30:00.000Z",
- "updatedAt": "2024-01-15T10:30:00.000Z"
}, - {
- "operation": "ADD",
- "reason": "refill",
- "tokens": 10,
- "tokensBefore": 90,
- "tokensAfter": 100,
- "createdAt": "2024-01-15T11:00:00.000Z",
- "updatedAt": "2024-01-15T11:00:00.000Z"
}
]
}Delete a Pix QrCode Static
Endpoint to delete a Pix QrCode Static
Authorizations:
path Parameters
| id required | string Examples:
QrCode ID, correlationID or 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: 'api.openpix.com.br', port: null, path: '/api/v1/qrcode-static/fe7834b4060c488a9b0f89811be5f5cf', headers: { Authorization: '{APP_ID}' } }; 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
{- "status": "OK",
- "id": "fe7834b4060c488a9b0f89811be5f5cf"
}Get one Pix QrCode
Authorizations:
path Parameters
| id required | string Examples:
pixQrCode ID, correlation ID or emv 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: 'GET', hostname: 'api.openpix.com.br', port: null, path: '/api/v1/qrcode-static/Q2hhcmdlOjYwM2U3NDlhNDI1NjAyYmJiZjRlN2JlZA==', headers: { Authorization: '{APP_ID}' } }; 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
{- "pixQrCode": {
- "name": "pix qrcode static",
- "value": 100,
- "comment": "pix qrcode static",
- "correlationID": "fe7834b4060c488a9b0f89811be5f5cf",
- "identifier": "zr7833b4060c488a9b0f89811",
- "paymentLinkID": "7777-6f71-427a-bf00-241681624586",
- "brCode": "000201010212261060014br.gov.bcb.pix2584https://api.woovi.com/openpix/testing?transactionID=867ba5173c734202ac659721306b38c952040000530398654040.015802BR5909LOCALHOST6009Sao Paulo62360532867ba5173c734202ac659721306b38c963044BCA",
- "createdAt": "2021-03-02T17:28:51.882Z",
- "updatedAt": "2021-03-02T17:28:51.882Z"
}
}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: 'api.openpix.com.br', port: null, path: '/api/v1/qrcode-static', headers: { Authorization: '{APP_ID}' } }; 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
{- "pageInfo": {
- "skip": 0,
- "limit": 10,
- "hasPreviousPage": false,
- "hasNextPage": true
}, - "pixQrCodes": {
- "name": "pix qrcode",
- "value": 100,
- "comment": "good",
- "correlationID": "9134e286-6f71-427a-bf00-241681624586",
- "identifier": "zr7833b4060c488a9b0f89811",
- "paymentLinkID": "7777a23s-6f71-427a-bf00-241681624586",
- "brCode": "000201010212261060014br.gov.bcb.pix2584https://api.woovi.com/openpix/testing?transactionID=867ba5173c734202ac659721306b38c952040000530398654040.015802BR5909LOCALHOST6009Sao Paulo62360532867ba5173c734202ac659721306b38c963044BCA",
- "createdAt": "2021-03-02T17:28:51.882Z",
- "updatedAt": "2021-03-02T17:28:51.882Z"
}
}Create a new Pix QrCode Static
Endpoint to create a new Pix QrCode Static
Authorizations:
Request Body schema: application/jsonrequired
Data to create a new Pix QrCode Static
| name required | string Name of this pix qrcode |
| correlationID | string Your correlation ID to keep track of this qrcode |
| value | number Value in cents of this qrcode |
| comment | string Comment to be added in infoPagador |
| pixKey | string The pix key that this qrcode is associated with |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "name": "my-qr-code",
- "correlationID": "9134e286-6f71-427a-bf00-241681624586",
- "value": 100,
- "comment": "good"
}Response samples
- 200
- 400
{- "pixQrCode": {
- "value": 100,
- "comment": "good",
- "correlationID": "9134e286-6f71-427a-bf00-241681624586",
- "identifier": "zr7833b4060c488a9b0f89811",
- "paymentLinkID": "7777a23s-6f71-427a-bf00-241681624586",
- "createdAt": "2021-03-02T17:28:51.882Z",
- "updatedAt": "2021-03-02T17:28:51.882Z",
- "brCode": "000201010212261060014br.gov.bcb.pix2584https://api.woovi.com/openpix/testing?transactionID=867ba5173c734202ac659721306b38c952040000530398654040.015802BR5909LOCALHOST6009Sao Paulo62360532867ba5173c734202ac659721306b38c963044BCA"
}
}Get a Transaction
Authorizations:
path Parameters
| id required | string you can use the transaction id from openpix or the endToEndId of transaction from bank |
Responses
Response samples
- 200
- 400
{- "transaction": {
- "customer": {
- "name": "Dan",
- "email": "email0@example.com",
- "phone": "5511999999999",
- "taxID": {
- "taxID": "31324227036",
- "type": "BR:CPF"
}, - "correlationID": "9134e286-6f71-427a-bf00-241681624586"
}, - "payer": {
- "name": "Dan",
- "email": "email0@example.com",
- "phone": "5511999999999",
- "taxID": {
- "taxID": "31324227036",
- "type": "BR:CPF"
}, - "correlationID": "9134e286-6f71-427a-bf00-241681624586"
}, - "charge": {
- "status": "ACTIVE",
- "customer": "603f81fcc6bccc24326ffb43",
- "correlationID": "9134e286-6f71-427a-bf00-241681624586",
- "createdAt": "2021-03-03T12:33:00.546Z",
- "updatedAt": "2021-03-03T12:33:00.546Z"
}, - "withdraw": {
- "value": 100,
- "time": "2021-03-03T12:33:00.536Z",
- "infoPagador": "payer info 1",
- "endToEndId": "E18236120202012032010s01345689XBY",
- "createdAt": "2021-03-03T12:33:00.546Z"
}, - "infoPagador": "payer info 0",
- "value": 100,
- "time": "2021-03-03T12:33:00.536Z",
- "transactionID": "transactionID",
- "type": "PAYMENT",
- "endToEndId": "E18236120202012032010s0133872GZA",
- "globalID": "UGl4VHJhbnNhY3Rpb246NzE5MWYxYjAyMDQ2YmY1ZjUzZGNmYTBi",
- "creditParty": {
- "account": {
- "account": "00000000000005469660",
- "accountType": "CACC",
- "branch": "8615"
}, - "holder": {
- "name": "CREDIT PARTY NAME",
- "nameFriendly": "CREDIT PARTY NAME FRIENDLY",
- "taxID": {
- "taxID": "28613271892",
- "type": "BR:CPF"
}
}, - "psp": {
- "id": "00000001",
- "name": "BCO DO BRASIL S.A."
}
}, - "debitParty": {
- "account": {
- "account": "1235678",
- "accountType": "TRAN",
- "branch": "1"
}, - "holder": {
- "name": "Awesome Company 1",
- "nameFriendly": "Call me Awesome"
}, - "psp": {
- "code": "54811417",
- "id": "FROZEN-ID",
- "name": "WOOVI IP LTDA"
}
}
}
}Get a list of transactions
Authorizations:
query Parameters
| start | string <date-time> (Start Date) Example: start=2020-01-01T00:00:00Z Start date used in the query. Complies with RFC 3339. |
| end | string <date-time> (End Date) Example: end=2020-12-01T17:00:00Z End date used in the query. Complies with RFC 3339. |
| charge | string Example: charge=Q2hhcmdlOjYwM2U3NDlhNDI1NjAyYmJiZjRlN2JlZA You can use the charge ID or correlation ID or transaction ID of charge to get a list of transactions related of this transaction |
| pixQrCode | string Example: pixQrCode=Q2hhcmdlOjYwM2U3NDlhNDI1NjAyYmJiZjRlN2JlZA You can use the QrCode static ID or correlation ID or identifier field of QrCode static to get a list of QrCode related of this transaction |
| withdrawal | string Example: withdrawal=Q2hhcmdlOjYwM2U3NDlhNDI1NjAyYmJiZjRlN2JlZA You can use the ID or EndToEndId of a withdrawal transaction to get all transactions related to the withdrawal |
| hasWebhook | boolean Example: hasWebhook=true Filter transactions by webhook delivery status. Use true to get only transactions that had a successful webhook delivery (HTTP 200), or false to get transactions without successful webhook delivery. |
| type | string Enum: "PAYMENT" "WITHDRAW" "REFUND" "FEE" "INTERNAL_TRANSFER" "BALANCE_BLOCK" "BALANCE_UNBLOCK" "REVERSAL" Example: type=REFUND Filter transactions by type |
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: 'api.openpix.com.br', port: null, path: '/api/v1/transaction?start=2020-01-01T00%3A00%3A00Z&end=2020-12-01T17%3A00%3A00Z&charge=Q2hhcmdlOjYwM2U3NDlhNDI1NjAyYmJiZjRlN2JlZA&pixQrCode=Q2hhcmdlOjYwM2U3NDlhNDI1NjAyYmJiZjRlN2JlZA&withdrawal=Q2hhcmdlOjYwM2U3NDlhNDI1NjAyYmJiZjRlN2JlZA&hasWebhook=true&type=REFUND', headers: { Authorization: '{APP_ID}' } }; 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
{- "pageInfo": {
- "skip": 0,
- "limit": 10,
- "hasPreviousPage": false,
- "hasNextPage": true
}, - "transactions": {
- "customer": {
- "name": "Dan",
- "email": "email0@example.com",
- "phone": "5511999999999",
- "taxID": {
- "taxID": "31324227036",
- "type": "BR:CPF"
}, - "correlationID": "9134e286-6f71-427a-bf00-241681624586"
}, - "payer": {
- "name": "Dan",
- "email": "email0@example.com",
- "phone": "5511999999999",
- "taxID": {
- "taxID": "31324227036",
- "type": "BR:CPF"
}, - "correlationID": "9134e286-6f71-427a-bf00-241681624586"
}, - "charge": {
- "status": "ACTIVE",
- "customer": "603f81fcc6bccc24326ffb43",
- "correlationID": "9134e286-6f71-427a-bf00-241681624586",
- "createdAt": "2021-03-03T12:33:00.546Z",
- "updatedAt": "2021-03-03T12:33:00.546Z"
}, - "withdraw": {
- "value": 100,
- "time": "2021-03-03T12:33:00.536Z",
- "infoPagador": "payer info 1",
- "endToEndId": "E18236120202012032010s01345689XBY"
}, - "type": "PAYMENT",
- "infoPagador": "payer info 0",
- "value": 100,
- "time": "2021-03-03T12:33:00.536Z",
- "transactionID": "transactionID",
- "endToEndId": "E18236120202012032010s0133872GZA",
- "webhookSent": [
- {
- "OPENPIX:TRANSACTION_RECEIVED": {
- "status": 200,
- "time": "2021-03-03T12:33:00.546Z"
}, - "isRetry": false
}
]
}
}Get one refund
Authorizations:
path Parameters
| id required | string Examples:
refund ID or correlation ID |
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: 'api.openpix.com.br', port: null, path: '/api/v1/refund/Q2hhcmdlOjYwM2U3NDlhNDI1NjAyYmJiZjRlN2JlZA==', headers: { Authorization: '{APP_ID}' } }; 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
{- "pixTransactionRefund": {
- "value": 100,
- "correlationID": "7777-6f71-427a-bf00-241681624586",
- "refundId": "11bf5b37e0b842e08dcfdc8c4aefc000",
- "returnIdentification": "D09089356202108032000a543e325902",
- "comment": "Comentário do reembolso"
}
}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: 'api.openpix.com.br', port: null, path: '/api/v1/refund', headers: { Authorization: '{APP_ID}' } }; 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
{- "pageInfo": {
- "skip": 0,
- "limit": 10,
- "hasPreviousPage": false,
- "hasNextPage": true
}, - "refunds": [
- {
- "status": "IN_PROCESSING",
- "value": 100,
- "correlationID": "9134e286-6f71-427a-bf00-241681624586",
- "refundId": "9134e2866f71427abf00241681624586",
- "time": "2021-03-02T17:28:51.882Z",
- "comment": "Comentário do reembolso"
}
]
}Create a new refund
Endpoint to create a new refund for a customer
Authorizations:
Request Body schema: application/jsonrequired
Data to create a new refund
| value | number |
| transactionEndToEndId | string Your transaction ID, or endToEnd ID, to keep track of this refund |
| correlationID | string Your correlation ID, unique identifier refund |
| comment | string <= 140 Comment of this refund. Maximum length of 140 characters. |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "transactionEndToEndId": "9134e286-6f71-427a-bf00-241681624586",
- "correlationID": "9134e286-6f71-427a-bf00-241681624586",
- "value": 100,
- "comment": "Comentário do reembolso"
}Response samples
- 200
- 400
{- "refund": {
- "status": "IN_PROCESSING",
- "value": 100,
- "correlationID": "9134e286-6f71-427a-bf00-241681624586",
- "refundId": "9134e2866f71427abf00241681624586",
- "time": "2021-03-02T17:28:51.882Z",
- "comment": "Comentário do reembolso"
}
}Endpoints to manage Payment Service Providers (PSPs) in the PIX ecosystem.
PSPs are financial institutions that can process PIX payments. Each PSP has unique identifiers like ISPB and COMPE codes used for identification and validation.
Get a list of PSPs (Payment Service Providers)
Authorizations:
query Parameters
| ispb | string Example: ispb=3030310 Filter PSPs by ISPB code |
| name | string Example: name=brasil Filter PSPs by name |
| compe | string Example: compe=001 Filter PSPs by COMPE code |
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: 'api.openpix.com.br', port: null, path: '/api/v1/psp?ispb=3030310&name=brasil&compe=001', headers: { Authorization: '{APP_ID}' } }; 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
- 500
{- "success": true,
- "psps": [
- {
- "name": "BCO DO BRASIL S.A.",
- "ispb": "00000000",
- "code": "00000000",
- "compe": "001"
}, - {
- "name": "CAIXA ECONOMICA FEDERAL",
- "ispb": "00360305",
- "code": "00360305",
- "compe": "104"
}
]
}Get a PDF document related to a payment transaction formatted as a receipt by type (pix-in, pix-out or pix-refund).
Authorizations:
path Parameters
| ReceiptType required | string Enum: "pix-in" "pix-out" "pix-refund" Examples:
The ReceiptType from the payment transaction to export. |
| EndToEndId required | string Examples:
The EndToEndId from the payment transaction to export. |
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: 'api.openpix.com.br', port: null, path: '/api/v1/receipt/pix-in/E12345678202406201221abcdef12345', headers: { Authorization: '{APP_ID}' } }; 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
- 400
- 401
- 404
{- "error": "string"
}Approve (settle) a stablecoin deposit
Approves a previously created stablecoin deposit identified by its correlationId,
triggering the on-chain settlement (pay the stable qrcode) for the company's deposit.
The deposit moves to PROCESSING while settlement is in flight. The call is rejected
with 400 when the deposit cannot be approved, e.g. it was already COMPLETED, it is
already PROCESSING, there is no source account to pay it, or the provider quote/payment
fails.
Requires the STABLECOIN_DEPOSIT_CREATE scope.
Authorizations:
Request Body schema: application/jsonrequired
| correlationId required | string non-empty The correlationId supplied when the deposit was created. |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "correlationId": "my-unique-id"
}Response samples
- 200
- 400
- 401
{- "status": "PROCESSING",
- "correlationId": "my-unique-id",
- "depositId": "6650abc1234def567890aaaa"
}Create a stablecoin deposit
Creates a stablecoin deposit (PIX-in to stable-out) for a company. The deposit converts a BRL amount (in cents) into the requested stablecoin on the chosen network and returns a quote with the applied fees.
The company must have a stable subaccount in CONFIRMED status (a completed KYB).
Otherwise the request is rejected with a 400.
Not every asset is available on every network. The supported matrix is:
- USDT: POLYGON, ETHEREUM, CELO, TRON
- USDC: POLYGON, ETHEREUM, BASE, CELO
- BRLA: POLYGON, ETHEREUM, BASE, CELO
If network is omitted it defaults to POLYGON. Sending an asset/network combination
outside the matrix above returns a 400.
Idempotency is supported via correlationId.
Authorizations:
Request Body schema: application/jsonrequired
| value required | number Amount to deposit, in cents (BRL). Must be positive. |
| currency required | string Enum: "USDT" "USDC" "BRLA" Stablecoin to receive. |
| network | string Default: "POLYGON" Enum: "POLYGON" "ETHEREUM" "BASE" "CELO" "TRON" Network to receive the stablecoin on. Defaults to POLYGON. Must be supported for the chosen currency. |
| subAccountId | string Stable subaccount id to use. Optional; resolved from the company when omitted. |
| correlationId | string Unique identifier for idempotency. Optional. |
| destinationWalletAddress | string Explicit destination wallet address for the stablecoin. Optional. |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "value": 10000,
- "currency": "USDT"
}Response samples
- 200
- 400
- 401
{- "status": "PENDING",
- "depositId": "6650...",
- "correlationId": "my-unique-id",
- "expiration": "2026-06-05T12:00:00.000Z",
- "quote": {
- "inputAmount": 10000,
- "inputCurrency": "BRL",
- "outputAmount": 18.45,
- "outputCurrency": "USDT",
- "rate": 5.42,
- "fee": 50
}
}Get a stablecoin quote without creating a deposit
Returns a PIX (BRL) -> stablecoin quote for the given value and
currency without creating a deposit. Use it to display the exact amount
of stablecoin the customer would receive before confirming.
The quote is fetched from the provider and cached for 60 seconds.
Requires the STABLECOIN_DEPOSIT_CREATE scope.
Authorizations:
query Parameters
| value required | number >= 1 Example: value=10000 Amount to quote, in cents (BRL). Must be positive. |
| currency | string Default: "USDT" Enum: "USDT" "USDC" "BRLA" Example: currency=USDT Stablecoin to receive. Defaults to USDT. |
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: 'api.openpix.com.br', port: null, path: '/api/v1/stablecoin/quote?value=10000¤cy=USDT', headers: { Authorization: '{APP_ID}' } }; 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
- 502
{- "status": "ok",
- "quote": {
- "basePrice": 5.25,
- "inputAmount": 100,
- "inputCurrency": "BRL",
- "outputAmount": 19.04,
- "outputCurrency": "USDT",
- "appliedFees": [
- {
- "type": "In Fee",
- "amount": 1.5,
- "currency": "BRL"
}
], - "pairName": "BRL/USDT"
}
}Get a stablecoin subaccount by id
Fetches a single stablecoin subaccount for the authenticated company by its provider
subAccountId.
Returns 404 when no subaccount with that subAccountId exists for the company.
Requires the STABLECOIN_SUBACCOUNT_LIST scope.
Authorizations:
path Parameters
| subAccountId required | string non-empty The provider subaccount id. |
Responses
Response samples
- 200
- 401
- 404
{- "status": "ok",
- "subAccount": {
- "id": "6650abc1234def567890aaaa",
- "subAccountId": "sub_01HZ...",
- "account": "6650def1234abc567890bbbb",
- "createdAt": "2026-06-05T12:00:00.000Z"
}
}List a company's stablecoin subaccounts
Lists the authenticated company's stablecoin subaccounts, most recent first.
A subaccount is created when the company completes a KYB with the stablecoin provider.
Use this endpoint to discover the subAccountId values available to the company.
Requires the STABLECOIN_SUBACCOUNT_LIST scope.
Authorizations:
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: 'api.openpix.com.br', port: null, path: '/api/v1/stablecoin/subaccount', headers: { Authorization: '{APP_ID}' } }; 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
{- "status": "ok",
- "subAccounts": [
- {
- "id": "6650abc1234def567890aaaa",
- "subAccountId": "sub_01HZ...",
- "account": "6650def1234abc567890bbbb",
- "createdAt": "2026-06-05T12:00:00.000Z"
}
]
}Request a new stablecoin subaccount (KYB)
Requests the creation of a stablecoin subaccount for the authenticated company, reusing the KYC data already on the referenced account register.
Pass the company's accountRegisterId; the provider subaccount is created
immediately and a StableSubAccount is persisted with status IN_REVIEW while
the KYB is processed. When the KYB resolves, the merchant receives a
STABLECOIN_SUBACCOUNT_CONFIRMED or STABLECOIN_SUBACCOUNT_REJECTED webhook.
The request is idempotent on accountRegisterId: a repeat call returns the
existing subaccount (HTTP 200) instead of creating a duplicate. The first,
creating call returns HTTP 201.
Requires the STABLECOIN_SUBACCOUNT_CREATE scope and the company STABLECOIN
feature.
Authorizations:
Request Body schema: application/jsonrequired
| accountRegisterId required | string The account register id whose KYC data backs the KYB. |
| companyBankAccountId | string Company bank account to associate with the subaccount. Defaults to the company's default bank account when omitted. |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "accountRegisterId": "6650abc1234def567890aaaa"
}Response samples
- 200
- 201
- 400
- 401
- 502
{- "subAccountId": "sub_01HZ...",
- "status": "IN_REVIEW",
- "correlationId": "3f1a2b3c-4d5e-6f70-8a9b-0c1d2e3f4a5b"
}Withdraw from a Sub Account
Withdraw from a Sub Account and return the withdrawal transaction information
Authorizations:
path Parameters
| id required | string Example: destination@test.com pix key registered to the subaccount |
Request Body schema: application/jsonrequired
Data to make a withdraw partial
| value | number Value of the withdrawal in cents if want to make a partial withdrawal |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "value": 1000
}Response samples
- 200
- 400
{- "transaction": {
- "status": "CREATED",
- "value": 100,
- "endToEndId": "ENDTOENDID_1234567890",
- "correlationID": "TESTING1323",
- "destinationAlias": "pixKeyTest@test.com",
- "comment": "testing-transaction"
}
}Delete a Sub Account
Deletes a Sub Account if it has no remaining balance
Authorizations:
path Parameters
| id required | string Example: destination@test.com Pix key registered to the subaccount |
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: 'api.openpix.com.br', port: null, path: '/api/v1/subaccount/destination@test.com', headers: { Authorization: '{APP_ID}' } }; 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
- 403
{- "status": "OK",
- "pixKey": "destination@test.com"
}Get subaccount details
Authorizations:
path Parameters
| id required | string Examples:
pix key registered to the subaccount |
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: 'api.openpix.com.br', port: null, path: '/api/v1/subaccount/c4249323-b4ca-43f2-8139-8232aab09b93', headers: { Authorization: '{APP_ID}' } }; 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
{- "SubAccount": {
- "name": "test-sub-account",
- "pixKey": "c4249323-b4ca-43f2-8139-8232aab09b93",
- "balance": 100,
- "withdrawBlocked": false
}
}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: 'api.openpix.com.br', port: null, path: '/api/v1/subaccount', headers: { Authorization: '{APP_ID}' } }; 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
{- "subAccounts": [
- {
- "name": "test-sub-account",
- "pixKey": "c4249323-b4ca-43f2-8139-8232aab09b93",
- "balance": 100,
- "withdrawBlocked": false
}
], - "pageInfo": {
- "skip": 0,
- "limit": 10,
- "hasPreviousPage": false,
- "hasNextPage": true
}
}Create a subaccount
Authorizations:
Request Body schema: application/jsonrequired
Data to create a new subAccount or retrieve existing one
| pixKey | string The pix key for the sub account |
| name | string Name of the sub account |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "pixKey": "9134e286-6f71-427a-bf00-241681624587",
- "name": "Test Account"
}Response samples
- 200
- 400
{- "SubAccount": {
- "name": "test-sub-account",
- "pixKey": "c4249323-b4ca-43f2-8139-8232aab09b93"
}
}Credit subaccount
Transfers the amount from the main account to the subaccount.
Authorizations:
path Parameters
| id required | string Example: subaccount@test.com Pix key registered to the subaccount |
Request Body schema: application/jsonrequired
| value required | number Amount to credit to the account |
| description | string Optional description for the credit operation |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "value": 100,
- "description": "Monthly deposit"
}Response samples
- 200
- 400
- 403
{- "pixKey": "subaccount@test.com",
- "value": 100,
- "description": "Monthly deposit",
- "success": "Sub-account withdrawal has been successfully credited, 100"
}Debit subaccount
Transfers the amount from the subaccount to the main account.
Authorizations:
path Parameters
| id required | string Example: subaccount@test.com Pix key registered to the subaccount |
Request Body schema: application/jsonrequired
| value required | number Amount to debit from the account |
| description | string Optional description for the debit operation |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "value": 50,
- "description": "Monthly payment"
}Response samples
- 200
- 400
- 403
{- "pixKey": "subaccount@test.com",
- "value": 50,
- "description": "Monthly payment",
- "success": "Sub-account withdrawal has been successfully debited, 50"
}Transfer between subaccounts
Transfer between subaccounts
Authorizations:
Request Body schema: application/jsonrequired
Data to make a new transfer between subaccounts
| value required | number The value of the transfer in cents |
| fromPixKey required | string The transfer origin pix key |
| fromPixKeyType required | string Enum: "CPF" "CNPJ" "EMAIL" "PHONE" "RANDOM" The transfer origin pix key type |
| toPixKey required | string The transfer destination pix key |
| toPixKeyType required | string Enum: "CPF" "CNPJ" "EMAIL" "PHONE" "RANDOM" The transfer destination pix key type |
| correlationID | string Your correlation ID to keep track of this transfer |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "value": 65,
- "fromPixKey": "c4249323-b4ca-43f2-8139-874baab09b93",
- "fromPixKeyType": "RANDOM",
- "toPixKey": "3143da48-2bc7-49a4-89bd-4e22f73bfb0c",
- "toPixKeyType": "RANDOM"
}Response samples
- 200
- 400
{- "value": 65,
- "destinationSubaccount": {
- "name": "test-sub-account-1",
- "pixKey": "c4249323-b4ca-43f2-8139-874baab09b93",
- "balance": 100
}, - "originSubaccount": {
- "name": "test-sub-account-2",
- "pixKey": "3143da48-2bc7-49a4-89bd-4e22f73bfb0c",
- "balance": 100
}
}Get Sub Account statement
Returns the ledger entries (statement) for a specific subaccount.
Authorizations:
path Parameters
| id required | string Example: subaccount@test.com Pix key registered to the subaccount |
query Parameters
| skip | integer >= 0 Number of entries to skip for pagination |
| limit | integer >= 1 Example: limit=20 Maximum number of entries to return |
| start | string <date-time> Example: start=2023-01-01T00:00:00.000Z Start date for filtering entries (ISO 8601 format) |
| end | string <date-time> Example: end=2023-12-31T23:59:59.999Z End date for filtering entries (ISO 8601 format) |
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: 'api.openpix.com.br', port: null, path: '/api/v1/subaccount/subaccount@test.com/statement?skip=0&limit=20&start=2023-01-01T00%3A00%3A00.000Z&end=2023-12-31T23%3A59%3A59.999Z', headers: { Authorization: '{APP_ID}' } }; 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
- 403
[- {
- "id": "507f1f77bcf86cd799439011",
- "time": "2023-12-01T10:30:00.000Z",
- "description": "Payment received from customer",
- "balance": 1500,
- "value": 100,
- "type": "CREDIT",
- "operationType": "CREDIT"
}
]Get one installment
Authorizations:
path Parameters
| id required | string Example: UGF5bWVudFN1YnNjcmlwdGlvbjo2M2UzYjJiNzczZDNkOTNiY2RkMzI5OTM= The globalID of the installment or the endToEndId from transaction. |
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: 'api.openpix.com.br', port: null, path: '/api/v1/installments/UGF5bWVudFN1YnNjcmlwdGlvbjo2M2UzYjJiNzczZDNkOTNiY2RkMzI5OTM=', headers: { Authorization: '{APP_ID}' } }; 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
{- "installment": {
- "dateGenerateCharge": "2019-08-24T14:15:22Z",
- "expiration": 0,
- "installmentNumber": 0,
- "value": 0,
- "status": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "cobr": {
- "identifierId": "string",
- "recurrencyId": "string",
- "installmentId": "string",
- "endToEndId": "string",
- "rejectCode": "string",
- "status": "string",
- "value": 0,
- "tries": [
- {
- "tryStatus": "string",
- "finalityPurpose": "string",
- "rejectCode": "string",
- "value": 0,
- "requestedExecutionDate": "2019-08-24T14:15:22Z",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "paymentDate": "string",
- "chargeDate": "string",
- "expiryDate": "string",
- "description": "string",
- "createdAt": "string"
}, - "paymentSubscriptionGlobalID": "string",
- "correlationID": "string",
- "globalID": "string"
}
}Get a list of installments by subscription
Authorizations:
path Parameters
| id required | string Example: UGF5bWVudFN1YnNjcmlwdGlvbjo2M2UzYjJiNzczZDNkOTNiY2RkMzI5OTM= The globalID of the subscription. |
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: 'api.openpix.com.br', port: null, path: '/api/v1/subscriptions/UGF5bWVudFN1YnNjcmlwdGlvbjo2M2UzYjJiNzczZDNkOTNiY2RkMzI5OTM=/installments', headers: { Authorization: '{APP_ID}' } }; 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
{- "installments": [
- {
- "dateGenerateCharge": "2019-08-24T14:15:22Z",
- "expiration": 0,
- "installmentNumber": 0,
- "value": 0,
- "status": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "cobr": {
- "identifierId": "string",
- "recurrencyId": "string",
- "installmentId": "string",
- "endToEndId": "string",
- "rejectCode": "string",
- "status": "string",
- "value": 0,
- "tries": [
- {
- "tryStatus": "string",
- "finalityPurpose": "string",
- "rejectCode": "string",
- "value": 0,
- "requestedExecutionDate": "2019-08-24T14:15:22Z",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
], - "paymentDate": "string",
- "chargeDate": "string",
- "expiryDate": "string",
- "description": "string",
- "createdAt": "string"
}, - "paymentSubscriptionGlobalID": "string",
- "correlationID": "string",
- "globalID": "string"
}
], - "pageInfo": {
- "errors": [
- {
- "message": "string",
- "data": {
- "skip": 0,
- "limit": 0
}
}
], - "skip": 0,
- "limit": 0,
- "hasPreviousPage": true,
- "hasNextPage": true
}
}Cancel an Subscription
Authorizations:
path Parameters
| id required | string Example: UGF5bWVudFN1YnNjcmlwdGlvbjo2M2UzYjJiNzczZDNkOTNiY2RkMzI5OTM= The globalID or correlationID of the subscription. |
Responses
Request samples
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
const http = require('https'); const options = { method: 'PUT', hostname: 'api.openpix.com.br', port: null, path: '/api/v1/subscriptions/UGF5bWVudFN1YnNjcmlwdGlvbjo2M2UzYjJiNzczZDNkOTNiY2RkMzI5OTM=/cancel', headers: { Authorization: '{APP_ID}' } }; 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
{ }Get one subscription
Authorizations:
path Parameters
| id required | string Example: UGF5bWVudFN1YnNjcmlwdGlvbjo2M2UzYjJiNzczZDNkOTNiY2RkMzI5OTM= The globalID or correlationID of the subscription. |
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: 'api.openpix.com.br', port: null, path: '/api/v1/subscriptions/UGF5bWVudFN1YnNjcmlwdGlvbjo2M2UzYjJiNzczZDNkOTNiY2RkMzI5OTM=', headers: { Authorization: '{APP_ID}' } }; 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
{- "subscription": {
- "globalID": "UGF5bWVudFN1YnNjcmlwdGlvbjo2M2UzYjJiNzczZDNkOTNiY2RkMzI5OTM=",
- "customer": {
- "name": "Dan",
- "email": "email0@example.com",
- "phone": "5511999999999",
- "taxID": {
- "taxID": "31324227036",
- "type": "BR:CPF"
}
}, - "value": 100,
- "dayGenerateCharge": 5,
- "correlationID": "subscription#1",
- "status": "ACTIVE"
}
}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: 'api.openpix.com.br', port: null, path: '/api/v1/subscriptions', headers: { Authorization: '{APP_ID}' } }; 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
{- "pageInfo": {
- "skip": 0,
- "limit": 10,
- "hasPreviousPage": false,
- "hasNextPage": true
}
}Create a new Subscription
Endpoint to create a new Subcription
Authorizations:
Request Body schema: application/jsonrequired
Data to create a new Subscription
required | object Customer of this subscription |
| value required | number Value in cents of this subscription |
| name | string Name of the subscription |
| comment | string Comment to be show in QR Code |
number or string | |
| frequency | string Enum: "WEEKLY" "MONTHLY" "BIMONTHLY" "QUARTERLY" "SEMIANNUALLY" "ANNUALLY" Frequency of the subscription — the interval between charges (defaults to
|
| type required | string Enum: "PIX_RECURRING" "RECURRENT" Type of the subscription |
| dayDue | number >= 3 Default: 7 Days that the charge will take to expire from the generation day. |
| installmentCount | number number of installments (optional) |
| correlationID required | string Your correlation ID to keep track of this subscription |
Array of objects | |
object Pix automatic options | |
| chargeType | string Enum: "DYNAMIC" "OVERDUE" "BOLETO" Charge method used for each charge generated by the subscription (defaults to
|
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "name": "Pix Automático",
- "value": 100,
- "customer": {
- "name": "Dan",
- "taxID": "31324227036",
- "email": "email0@example.com",
- "phone": "5511999999999",
- "address": {
- "zipcode": "04556300",
- "street": "rua de são paulo",
- "number": "3432",
- "neighborhood": "BROOKLIN PAULISTA",
- "city": "SAO PAULO",
- "state": "SP",
- "complement": "CONJ 26"
}
}, - "correlationID": "My-UniqueID",
- "comment": "Comentários",
- "frequency": "WEEKLY",
- "type": "PIX_RECURRING",
- "pixRecurringOptions": {
- "journey": "ONLY_RECURRENCY",
- "retryPolicy": "NON_PERMITED"
}, - "dayGenerateCharge": 25,
- "dayDue": 3
}Response samples
- 200
- 400
{- "subscription": {
- "customer": {
- "name": "Dan",
- "email": "email0@example.com",
- "phone": "+5511999999999",
- "address": {
- "zipcode": "04556300",
- "street": "rua de são paulo",
- "number": "3432",
- "neighborhood": "BROOKLIN PAULISTA",
- "city": "SAO PAULO",
- "state": "SP",
- "complement": "CONJ 26",
- "country": "BR",
- "location": {
- "coordinates": [ ]
}, - "_id": "68acbcd4a95653ef243b66eb"
}, - "taxID": {
- "taxID": "31324227036",
- "type": "BR:CPF"
}, - "correlationID": "6f4131ea-b816-4b08-8ba6-11cf6b622a6e"
}, - "dayGenerateCharge": 25,
- "value": 100,
- "status": "ACTIVE",
- "correlationID": "My-UniqueID",
- "pixRecurring": {
- "recurrencyId": "RN5481141720250825yPWxVcFfpA1",
- "emv": "00020101021226870014br.gov.bcb.pix2565qr-h.woovi.digital/qr/v2/cob/faabf55e-8000-40e2-80d8-9651749a6abb5204000053039865802BR5911Pedro Woovi6007VITORIA62070503***80870014br.gov.bcb.pix2565qr-h.woovi.digital/qr/v2/rec/fb59c6eb-fb99-4ff6-8f4c-17e2cd042c346304FE57",
- "journey": "ONLY_RECURRENCY",
- "status": "CREATED"
}, - "globalID": "UGF5bWVudFN1YnNjcmlwdGlvbjo2OGFjYmNkNGE5NTY1M2VmMjQzYjY2Zjc="
}
}Update the value of the next installments of the subscription. It is only possible if pix automatic accepts dynamic value.
Authorizations:
path Parameters
| id required | string Example: UGF5bWVudFN1YnNjcmlwdGlvbjo2M2UzYjJiNzczZDNkOTNiY2RkMzI5OTM= The globalID or correlationID of the subscription. |
Responses
Request samples
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
const http = require('https'); const options = { method: 'PUT', hostname: 'api.openpix.com.br', port: null, path: '/api/v1/subscriptions/UGF5bWVudFN1YnNjcmlwdGlvbjo2M2UzYjJiNzczZDNkOTNiY2RkMzI5OTM=/value', headers: { Authorization: '{APP_ID}' } }; 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
{ }Create a new Cobr Manually
Create a new Cobr Manually.
Authorizations:
path Parameters
| id required | string Example: UGF5bWVudFN1YnNjcmlwdGlvbjo2M2UzYjJiNzczZDNkOTNiY2RkMzI5OTM= The globalID of the installment. |
Request Body schema: application/jsonoptional
Data to create a new Cobr
| value | number Valor da cobrança (Opcional) |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "value": 0
}Response samples
- 200
- 400
{ }Create a new Retry Manually
Create a new Retry Manually.
Authorizations:
path Parameters
| id required | string Example: UGF5bWVudFN1YnNjcmlwdGlvbjo2M2UzYjJiNzczZDNkOTNiY2RkMzI5OTM= The globalID of the installment. |
Request Body schema: application/jsonoptional
Data to create a new Cobr
| value | number Valor da cobrança (Opcional) |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "value": 0
}Response samples
- 200
- 400
{ }Create a Transfer
Endpoint to to transfer values between accounts
Authorizations:
Request Body schema: application/jsonrequired
Data to create a transfer
| value | number value of the transfer in cents |
| fromPixKey | string the pix key of the account the value of the transfer will come out from |
| toPixKey | string the pix key of the account the value of the transfer will go to |
| correlationID | string your correlation ID to keep track of this transfer |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "value": 100,
- "fromPixKey": "from@openpix.com.br",
- "toPixKey": "to@openpix.com.br",
- "correlationID": "123e4567-e89b-12d3-a456-426614174000"
}Response samples
- 200
- 400
{- "transaction": {
- "value": 100,
- "time": "2023-06-22T15:33:27.165Z,",
- "correlationID": "c782e0ac-833d-4a89-9e73-9b60b2b41d3a"
}
}Delete a Webhook
Endpoint to delete a Webhook
Authorizations:
path Parameters
| id required | string Examples:
webhook ID |
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: 'api.openpix.com.br', port: null, path: '/api/v1/webhook/Q2hhcmdlOjYwM2U3NDlhNDI1NjAyYmJiZjRlN2JlZA==', headers: { Authorization: '{APP_ID}' } }; 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
{- "status": "string"
}Get a list of webhooks
Authorizations:
query Parameters
| url | string Example: url=https://mycompany.com.br/webhook You can use the url to filter all webhooks |
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: 'api.openpix.com.br', port: null, path: '/api/v1/webhook?url=https%3A%2F%2Fmycompany.com.br%2Fwebhook', headers: { Authorization: '{APP_ID}' } }; 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
{- "pageInfo": {
- "skip": 0,
- "limit": 100,
- "hasPreviousPage": false,
- "hasNextPage": true
}, - "webhooks": [
- {
- "id": "V2ViaG9vazo2MDNlYmUxZWRlYjkzNWU4NmQyMmNmMTg=",
- "name": "webhookName",
- "authorization": "openpix",
- "event": "OPENPIX:TRANSACTION_RECEIVED",
- "isActive": true,
- "createdAt": "2021-03-02T22:29:10.720Z",
- "updatedAt": "2021-03-02T22:29:10.720Z"
}, - {
- "id": "V2ViaG9vazo2MDNlYmUxZWRlYjkzNWU4NmQyMmNmOTk=",
- "name": "webhookName",
- "authorization": "openpix",
- "event": "OPENPIX:CHARGE_CREATED",
- "isActive": true,
- "createdAt": "2021-03-02T22:29:10.720Z",
- "updatedAt": "2021-03-02T22:29:10.720Z"
}
]
}Create a new Webhook
Endpoint to create a new Webhook
Authorizations:
Request Body schema: application/jsonrequired
Data to create a new webhook
object (WebhookPayload) | |||||||||||
| |||||||||||
Responses
Callbacks
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "webhook": {
- "name": "webhookName",
- "event": "OPENPIX:CHARGE_CREATED",
- "authorization": "openpix",
- "isActive": true
}
}Response samples
- 200
- 400
{- "webhook": {
- "id": "V2ViaG9vazo2MDNlYmUxZWRlYjkzNWU4NmQyMmNmMTg=",
- "name": "webhookName",
- "authorization": "openpix",
- "isActive": true,
- "event": "OPENPIX:TRANSACTION_RECEIVED",
- "createdAt": "2021-03-02T22:29:10.720Z",
- "updatedAt": "2021-03-02T22:29:10.720Z"
}
}Callback payload samples
{- "charge": {
- "status": "COMPLETED",
- "customer": {
- "name": "Julio",
- "email": "email0@example.com",
- "phone": "5511999999999",
- "taxID": {
- "taxID": "31928282008",
- "type": "BR:CPF"
}, - "correlationID": "9134e286-6f71-427a-bf00-241681624586"
}, - "correlationID": "9134e286-6f71-427a-bf00-241681624586",
- "transactionID": "9134e2866f71427abf00241681624586",
- "brCode": "000201010212261060014br.gov.bcb.pix2584https://api.woovi.com/openpix/testing?transactionID=867ba5173c734202ac659721306b38c952040000530398654040.015802BR5909LOCALHOST6009Sao Paulo62360532867ba5173c734202ac659721306b38c963044BCA",
- "createdAt": "2021-03-03T20:49:23.605Z",
- "updatedAt": "2021-03-03T20:49:23.668Z"
}, - "pix": {
- "pixQrCode": null,
- "charge": {
- "status": "COMPLETED",
- "customer": "604002035cce3b60132343cb",
- "correlationID": "9134e286-6f71-427a-bf00-241681624586",
- "brCode": "000201010212261060014br.gov.bcb.pix2584https://api.woovi.com/openpix/testing?transactionID=867ba5173c734202ac659721306b38c952040000530398654040.015802BR5909LOCALHOST6009Sao Paulo62360532867ba5173c734202ac659721306b38c963044BCA",
- "createdAt": "2021-03-03T21:39:15.831Z",
- "updatedAt": "2021-03-03T21:39:15.896Z"
}, - "customer": {
- "name": "Julio",
- "email": "email0@example.com",
- "phone": "5511999999999",
- "taxID": {
- "taxID": "31928282008",
- "type": "BR:CPF"
}, - "correlationID": "9134e286-6f71-427a-bf00-241681624586"
}, - "payer": {
- "name": "Julio",
- "email": "email0@example.com",
- "phone": "5511999999999",
- "taxID": {
- "taxID": "31928282008",
- "type": "BR:CPF"
}, - "correlationID": "9134e286-6f71-427a-bf00-241681624586"
}, - "time": "2020-09-09T20:15:00.358Z",
- "value": 9999,
- "transactionID": "9134e2866f71427abf00241681624586",
- "infoPagador": "conta",
- "raw": {
- "endToEndId": "9134e2866f71427abf00241681624586",
- "txid": "9134e2866f71427abf00241681624586",
- "valor": "99.99",
- "horario": "2020-09-09T20:15:00.358Z",
- "infoPagador": "conta"
}
}, - "pixQrCode": null
}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: 'api.openpix.com.br', port: null, path: '/api/v1/webhook/events', headers: { Authorization: '{APP_ID}' } }; 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
{- "events": [
- {
- "name": "OPENPIX:CHARGE_CREATED"
}, - {
- "name": "OPENPIX:TRANSACTION_RECEIVED"
}
]
}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: 'api.openpix.com.br', port: null, path: '/api/v1/webhook/ips', headers: { Authorization: '{APP_ID}' } }; 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
{- "ips": [
- "189.51.60.9",
- "138.97.124.129",
- "177.71.136.66"
]
}Parse EMV (PIX) QR code and optionally resolve COB/REC locations
Authorizations:
Request Body schema: application/jsonrequired
| emv required | string Raw EMV / PIX QR payload (text) |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "emv": "00020126780014br.gov.bcb.pix0136f4c6089a-bfde-4c00-a2d9-9eaa584b02190216CobrancaEstatica5204000053039865406546.285802BR5903Pix6008BRASILIA6229052584767c56c2ab4e65b6670de2a80950014br.gov.bcb.pix2573qr-h.sandbox.pix.bcb.gov.br/rest/api/rec/4b62d4a088fe4f51bcb4c64cf078869163044486"
}Response samples
- 200
- 400
- 500
{- "emv": {
- "payloadFormatIndicator": "01",
- "merchantAccountInformationPix": {
- "gui": "br.gov.bcb.pix",
- "pixKey": "f4c6089a-bfde-4c00-a2d9-9eaa584b0219",
- "additionalInformation": "CobrancaEstatica"
}, - "merchantCategoryCode": "0000",
- "transactionCurrency": "986",
- "transactionAmount": "546.28",
- "countryCode": "BR",
- "merchantName": "Pix",
- "merchantCity": "BRASILIA",
- "additionalDataFieldTemplate": {
- "referenceLabel": "84767c56c2ab4e65b6670de2a"
}, - "unreservedTemplates": {
- "gui": "br.gov.bcb.pix",
- "url": "qr-h.sandbox.pix.bcb.gov.br/rest/api/rec/4b62d4a088fe4f51bcb4c64cf0788691"
}, - "crc": "4486"
}, - "cobLocation": null,
- "recLocation": {
- "isValid": true,
- "locationErrors": [ ],
- "payload": {
- "updates": [
- {
- "date": "2025-10-24T18:42:58Z",
- "status": "CRIADA"
}
], - "calendar": {
- "startDate": "2025-10-24",
- "periodicity": "SEMANAL"
}, - "idRec": "RN5481141720251024BnwNHejs9h9",
- "retryPolicy": "NAO_PERMITE",
- "receiver": {
- "cnpj": "44720743000101",
- "participantIspb": "54811417",
- "name": "Woovi Demo"
}, - "value": {
- "valueRec": "0.01"
}, - "link": {
- "contract": "Woovi Demo - Pix Automático",
- "debtor": {
- "cpf": "15775023706",
- "name": "Pedro Cliente"
}
}
}, - "url": "qr-h.sandbox.pix.bcb.gov.br/rest/api/rec/4b62d4a088fe4f51bcb4c64cf0788691"
}
}Get invoices
Authorizations:
query Parameters
| start | string Example: start=2021-01-01 |
| end | string Example: end=2021-01-01 |
| skip | number |
| limit | number Example: limit=100 |
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: 'api.openpix.com.br', port: null, path: '/api/v1/invoice?start=2021-01-01&end=2021-01-01&skip=0&limit=100', headers: { Authorization: '{APP_ID}' } }; 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
- 403
{- "invoices": [
- {
- "id": "67001bbf0b0621890af7dc28",
- "value": 500,
- "date": "2024-10-04T16:45:51.058Z",
- "billingDate": "2024-10-04T16:45:51.058Z",
- "status": "CONFIRMED",
- "statusRaw": null,
- "correlationID": "INV-123",
- "customer": {
- "correlationID": "6f46c15a-f471-4d54-bb28-207fe2568f69",
- "name": "Gabriel"
}, - "charge": {
- "correlationID": "0c2df47d-4a90-4ef2-b04a-1f8673f1dbdd",
- "value": 500,
- "status": "COMPLETED",
- "paidAt": "2024-10-04T16:44:18.000Z",
- "date": "2024-10-04T16:43:20.931Z"
}
}
]
}Create a new invoice
Authorizations:
Request Body schema: application/jsonrequired
| description | string |
| billingDate required | string <date-time> |
| correlationID required | string |
| charge | string |
| value required | number |
| customerId | string |
object |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "description": "string",
- "billingDate": "2019-08-24T14:15:22Z",
- "correlationID": "string",
- "charge": "string",
- "value": 0,
- "customerId": "string",
- "customer": {
- "taxID": "string",
- "name": "string",
- "email": "user@example.com",
- "phone": "string",
- "address": {
- "country": "string",
- "zipcode": "string",
- "street": "string",
- "number": "string",
- "state": "string"
}
}
}Response samples
- 201
- 400
- 403
{- "invoice": {
- "id": "string",
- "value": 0,
- "date": "2019-08-24T14:15:22Z",
- "billingDate": "2019-08-24T14:15:22Z",
- "status": "string",
- "statusRaw": "string",
- "customer": {
- "correlationID": "string",
- "name": "string"
}, - "charge": {
- "correlationID": "string",
- "value": 0,
- "status": "string",
- "paidAt": "2019-08-24T14:15:22Z",
- "date": "2019-08-24T14:15:22Z"
}
}
}Upload the NFe.io A1 certificate for the invoice integration
Uploads the company's NFe.io A1 certificate (base64-encoded pkcs12) to the configured NFEIO integration. The response returns only the resulting integration status and never echoes the certificate, passphrase or credentials.
Authorizations:
Request Body schema: application/jsonrequired
| pcks12 required | string <byte> The A1 certificate (pkcs12) encoded as a base64 string |
| passphrase required | string The certificate password |
| test | boolean If true, the certificate is not uploaded to NFe.io (validation and upload are skipped) |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "pcks12": "string",
- "passphrase": "string",
- "test": true
}Response samples
- 200
- 400
- 403
- 404
{- "integration": {
- "status": "string"
}
}Get the NFe.io integration status and config for the authenticated company
Authorizations:
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: 'api.openpix.com.br', port: null, path: '/api/v1/invoice/integration', headers: { Authorization: '{APP_ID}' } }; 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
- 403
- 404
{- "integration": {
- "id": "67001bbf0b0621890af7dc28",
- "type": "NFEIO",
- "status": "CONFIGURED",
- "isActive": true,
- "metadata": {
- "nfeio": {
- "nfeioCompanyId": "nfeio-company-id",
- "cityServiceCode": "2690",
- "municipalSubscription": "123456",
- "taxRegime": "SimplesNacional"
}
}
}
}Activate or deactivate the NFe.io integration for the authenticated company
Authorizations:
Request Body schema: application/jsonrequired
| isActive required | boolean |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "isActive": true
}Response samples
- 200
- 400
- 403
- 404
{- "integration": {
- "id": "67001bbf0b0621890af7dc28",
- "type": "NFEIO",
- "status": "CONFIGURED",
- "isActive": true
}
}Create or upsert the NFe.io integration for the authenticated company
Upserts the NFe.io integration for the authenticated company and sets its tax fields. Optionally activates it (only allowed once configured).
Authorizations:
Request Body schema: application/jsonoptional
| cityServiceCode | string |
| municipalSubscription | string |
| rpsNumber | string |
| specialTax | string |
| taxRegime | string |
| federalTaxDetermination | string |
| municipalTaxDetermination | string |
| isPortalNacional | boolean |
| isActive | boolean |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "cityServiceCode": "string",
- "municipalSubscription": "string",
- "rpsNumber": "string",
- "specialTax": "string",
- "taxRegime": "string",
- "federalTaxDetermination": "string",
- "municipalTaxDetermination": "string",
- "isPortalNacional": true,
- "isActive": true
}Response samples
- 201
- 400
- 403
- 404
- 409
{- "integration": {
- "id": "67001bbf0b0621890af7dc28",
- "type": "NFEIO",
- "status": "CONFIGURING",
- "isActive": false,
- "metadata": {
- "nfeio": {
- "cityServiceCode": "2690",
- "municipalSubscription": "123456"
}
}
}
}Update the tax fields of the invoice integration
Updates the tax configuration of the authenticated company's existing NFEIO integration (city service code, municipal subscription, rps number, special tax, tax regime, legal nature and tax determination fields). The integration must already exist; otherwise a 404 is returned. The response never echoes credentials.
Authorizations:
Request Body schema: application/jsonrequired
| cityServiceCode | string |
| municipalSubscription | string |
| rpsNumber | string |
| specialTax | string |
| taxRegime | string |
| legalNature | string |
| federalTaxDetermination | string |
| municipalTaxDetermination | string |
| isPortalNacional | boolean |
Responses
Request samples
- Payload
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
{- "cityServiceCode": "string",
- "municipalSubscription": "string",
- "rpsNumber": "string",
- "specialTax": "string",
- "taxRegime": "string",
- "legalNature": "string",
- "federalTaxDetermination": "string",
- "municipalTaxDetermination": "string",
- "isPortalNacional": true
}Response samples
- 200
- 400
- 404
{- "integration": { }
}Issue a NFe.io test invoice for the invoice integration
Issues a test NFe.io invoice for the authenticated company's NFEIO integration. This is the bootstrap step that moves the integration to VALIDATING; once NFe.io confirms the test note via webhook the integration becomes CONFIGURED and active, which unblocks real invoice issuance. A configured integration can no longer issue test invoices.
Authorizations:
Responses
Request samples
- Node + Native
- Shell + Curl
- Php + Curl
- Python + Python3
- Go + Native
- Java + Okhttp
- Ruby + Native
const http = require('https'); const options = { method: 'POST', hostname: 'api.openpix.com.br', port: null, path: '/api/v1/invoice/integration/test', headers: { Authorization: '{APP_ID}' } }; 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
- 404
{- "invoice": {
- "id": "string"
}, - "integration": {
- "id": "string"
}
}Get statement by company
Retrieves the statement/ledger entries for a company's bank account
Authorizations:
query Parameters
| start | string <date-time> (Start Date) Example: start=2020-01-01T00:00:00Z Start date used in the query. Complies with RFC 3339. |
| end | string <date-time> (End Date) Example: end=2020-12-01T17:00:00Z End date used in the query. Complies with RFC 3339. |
| skip | number |
| limit | number |
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: 'api.openpix.com.br', port: null, path: '/api/v1/statement?start=2020-01-01T00%3A00%3A00Z&end=2020-12-01T17%3A00%3A00Z&skip=SOME_NUMBER_VALUE&limit=SOME_NUMBER_VALUE', headers: { Authorization: '{APP_ID}' } }; 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
- 500
[- {
- "id": "507f1f77bcf86cd799439011",
- "time": "2023-12-01T10:30:00.000Z",
- "description": "Payment received from customer",
- "balance": 1500.5,
- "value": 100,
- "type": "CREDIT",
- "transactionId": "txn_123456789"
}
]