Download OpenAPI specification:Download
A Woovi é 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.
accountId required | string Example: 6290ccfd42831958a405debc ID of the Account |
const http = require('https'); const options = { method: 'GET', hostname: 'api.woovi.com', port: null, path: '/api/v1/account/6290ccfd42831958a405debc', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "account": {
- "accountId": "6290ccfd42831958a405debc",
- "isDefault": true,
- "balance": {
- "total": 129430,
- "blocked": 0,
- "available": 129430
}
}
}
const http = require('https'); const options = { method: 'GET', hostname: 'api.woovi.com', port: null, path: '/api/v1/account/', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "accounts": [
- {
- "accountId": "6290ccfd42831958a405debc",
- "isDefault": true,
- "balance": {
- "total": 129430,
- "blocked": 0,
- "available": 129430
}
}, - {
- "accountId": "6286b467a7910113577e00ce",
- "isDefault": false,
- "balance": {
- "total": 130,
- "blocked": 100,
- "available": 30
}
}
]
}
Creates a new bank account for the company. Requires the bank account feature to be enabled.
object (PayloadAccount) | |||||
|
{- "companyBankAccount": {
- "accountId": "string",
- "isDefault": true
}
}
{- "account": {
- "accountId": "6290ccfd42831958a405debc",
- "isDefault": true,
- "balance": {
- "total": 129430,
- "blocked": 0,
- "available": 129430
}
}
}
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
accountId required | string Example: 6290ccfd42831958a405debc ID of the Account |
value | number Value in cents |
{- "value": 7000
}
{- "withdraw": {
- "account": {
- "accountId": "6290ccfd42831958a405debc",
- "isDefault": true,
- "balance": {
- "total": 122430,
- "blocked": 0,
- "available": 122430
}
}, - "transaction": {
- "endToEndId": "E23114447202205191817cx6VMrbwtw6",
- "transaction": 7000
}
}
}
Deletes an account registration that is in PENDING status
id required | string non-empty Tax ID of the account register to delete |
{- "message": "Account register successfully deleted",
- "accountRegisterId": "12345678901234"
}
Updates documents and representatives for an existing account registration in PENDING status
id required | string non-empty Tax ID of the account register to update |
Array of objects Company documents to update | |
Array of objects Company representatives to update | |
businessDescription | string Business segment/industry |
businessProduct | string Services the company provides |
businessLifetime | string How long the company has been operating in the market |
businessGoal | string Objective when using Woovi |
{- "businessDescription": "Updated Technology and Financial Services",
- "businessProduct": "Updated digital payment solutions and banking services",
- "businessLifetime": "5 years",
- "businessGoal": "Updated goal to expand digital payment capabilities",
- "representatives": [
- {
- "name": "Jane Smith",
- "birthDate": "1985-05-15",
- "taxID": "98765432100",
- "type": "ADMIN",
- "documents": [
], - "address": {
- "zipcode": "87654321",
- "street": "Updated Street",
- "number": "456",
- "neighborhood": "Updated Neighborhood",
- "city": "Updated City",
- "state": "SP",
- "taxID": "98765432100"
}
}
]
}
{- "officialName": "Company Official Name",
- "tradeName": "Company Trade Name",
- "taxID": {
- "taxID": "12345678901234"
}, - "status": "PENDING",
- "requestedDocuments": [
- "string"
], - "missingDocumentsDescription": "string"
}
Retrieves an existing account registration by Tax ID
taxID required | string Example: taxID=12345678901234 Tax ID of the company to retrieve |
const http = require('https'); const options = { method: 'GET', hostname: 'api.woovi.com', port: null, path: '/api/v1/account-register?taxID=12345678901234', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "officialName": "Company Official Name",
- "tradeName": "Company Trade Name",
- "type": "BAAS",
- "taxID": {
- "taxID": "12345678901234",
- "type": "BR_CNPJ"
}, - "status": "PENDING"
}
Creates a new account registration with the provided details
officialName required | string non-empty Official name of the company |
tradeName required | string non-empty Trade name of the company |
taxID required | string non-empty Tax ID of the company |
Array of objects Company documents | |
Array of objects Company representatives (sócio) | |
required | object |
businessDescription | string Business segment/industry |
businessProduct | string Services the company provides |
businessLifetime | string How long the company has been operating in the market |
businessGoal | string Objective when using Woovi |
{- "officialName": "Company Official Name",
- "tradeName": "Company Trade Name",
- "taxID": "12345678901234",
- "billingAddress": {
- "zipcode": "12345678",
- "street": "Test Street",
- "number": "123",
- "neighborhood": "Test Neighborhood",
- "city": "Test City"
}, - "businessDescription": "Technology and Financial Services",
- "businessProduct": "Digital payment solutions and banking services",
- "businessLifetime": "3 years",
- "businessGoal": "To expand digital payment capabilities and improve customer experience",
- "representatives": [
- {
- "name": "John Doe",
- "birthDate": "1990-01-01",
- "taxID": "12345678901",
- "type": "ADMIN",
- "address": {
- "zipcode": "12345678",
- "street": "Test Street",
- "number": "123",
- "neighborhood": "Test Neighborhood",
- "city": "Test City",
- "state": "ST",
- "taxID": {
- "taxID": "12345678901",
- "type": "BR_CPF"
}
}
}
]
}
{- "officialName": "Company Official Name",
- "tradeName": "Company Trade Name",
- "taxID": {
- "taxID": "12345678901234"
}, - "status": "PENDING",
- "requestedDocuments": [
- "string"
], - "missingDocumentsDescription": "string"
}
Deactivates an application by setting isActive to false and adding a removedAt timestamp
const http = require('https'); const options = { method: 'DELETE', hostname: 'api.woovi.com', port: null, path: '/api/v1/application', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "success": true
}
Creates a new application for a company
Data to create a new application
accountId | string The ID of the company bank account |
object |
{- "accountId": "507f1f77bcf86cd799439011",
- "application": {
- "name": "Test API",
- "type": "API"
}
}
{- "application": {
- "name": "Test API",
- "isActive": true,
- "type": "API",
- "clientId": "client_123abc",
- "clientSecret": "secret_456def",
- "appID": "app_789ghi",
- "companyBankAccount": "507f1f77bcf86cd799439011"
}
}
taxID required | string Examples:
The raw tax ID from the customer you want to get the balance. |
const http = require('https'); const options = { method: 'GET', hostname: 'api.woovi.com', port: null, path: '/api/v1/cashback-fidelity/balance/60151449000182', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "balance": 0,
- "status": "string"
}
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.
Customer's taxID and the cash
taxID | string Customer taxID (CPF or CNPJ) |
value | number Cashback value in centavos |
{- "value": 100,
- "taxID": 11111111111
}
{- "cashback": {
- "value": 0
}, - "message": "string"
}
id required | string Examples:
charge link payment ID |
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. |
const http = require('https'); const options = { method: 'GET', hostname: 'api.woovi.com', port: null, path: '/openpix/charge/brcode/image/fe7834b4060c488a9b0f89811be5f5cf.png?size=768', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "error": "string"
}
id required | string Examples:
charge ID, payment link ID, or QR code ID |
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. |
const http = require('https'); const options = { method: 'GET', hostname: 'api.woovi.com', port: null, path: '/api/image/qrcode/base64/fe7834b4060c488a9b0f89811be5f5cf?size=768', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "success": true,
- "imageBase64": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
}
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 (%, #, /). |
const http = require('https'); const options = { method: 'DELETE', hostname: 'api.woovi.com', port: null, path: '/api/v1/charge/Q2hhcmdlOjYwM2U3NDlhNDI1NjAyYmJiZjRlN2JlZA==', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "status": "OK",
- "id": "fe7834b4060c488a9b0f89811be5f5cf"
}
id required | string Examples:
correlation ID. You will need URI encoding if your correlation ID has characters outside the ASCII set or reserved characters (%, #, /). |
Expires date to update charge
expiresDate | string Expiration date of the charge. Only in ISO 8601 format. |
{- "expiresDate": "2021-04-01T17:28:51.882Z"
}
{- "charge": {
- "status": "ACTIVE",
- "customer": {
- "name": "Dan",
- "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",
}
}
}
}
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 (%, #, /). |
const http = require('https'); const options = { method: 'GET', hostname: 'api.woovi.com', port: null, path: '/api/v1/charge/fe7834b4060c488a9b0f89811be5f5cf', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "charge": {
- "status": "ACTIVE",
- "customer": {
- "name": "Dan",
- "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",
- "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",
}
}
}
}
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 |
const http = require('https'); const options = { method: 'GET', hostname: 'api.woovi.com', 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: 'REPLACE_KEY_VALUE' } }; 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();
{- "pageInfo": {
- "skip": 0,
- "limit": 10,
- "totalCount": 20,
- "hasPreviousPage": false,
- "hasNextPage": true
}, - "charges": {
- "status": "ACTIVE",
- "customer": {
- "name": "Dan",
- "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",
}
}
}
}
Endpoint to create a new Charge for a customer
return_existing | boolean Examples:
Make the endpoint idempotent, will return an existent charge if already has a one with the correlationID |
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" 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 15 minutes) |
expiresDate | string Expiration date of the charge. Only 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. |
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 | |
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 |
{- "correlationID": "9134e286-6f71-427a-bf00-241681624587",
- "value": 100,
- "comment": "good",
- "customer": {
- "name": "Dan",
- "taxID": "31324227036",
- "phone": "5511999999999"
}, - "additionalInfo": [
- {
- "key": "Product",
- "value": "Pencil"
}, - {
- "key": "Invoice",
- "value": "18476"
}, - {
- "key": "Order",
- "value": "302"
}
]
}
{- "charge": {
- "status": "ACTIVE",
- "customer": {
- "name": "Dan",
- "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",
}
}
}
}
Endpoint to get all refunds of a charge
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 (%, #, /). |
const http = require('https'); const options = { method: 'GET', hostname: 'api.woovi.com', port: null, path: '/api/v1/charge/cf4012c9-b2ac-484d-8121-deedd1c6d8af/refund', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "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"
}
]
}
Endpoint to create a new refund for a charge
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 (%, #, /). |
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. |
{- "correlationID": "a273e72c-9547-4c75-a213-3b0a2735b8d5",
- "value": 100,
- "comment": "Comentário do reembolso"
}
{- "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"
}
}
const http = require('https'); const options = { method: 'GET', hostname: 'api.woovi.com', port: null, path: '/api/v1/company', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "company": {
- "officialName": "Company Official Name",
- "tradeName": "Company Trade Name",
- "taxID": "12345678901234",
- "correlationID": "corr-123456"
}
}
id required | string Examples:
Correlation ID or Tax ID |
const http = require('https'); const options = { method: 'GET', hostname: 'api.woovi.com', port: null, path: '/api/v1/customer/fe7834b4060c488a9b0f89811be5f5cf', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "customer": {
- "name": "Dan",
- "phone": "5511999999999",
- "taxID": {
- "taxID": "31324227036",
- "type": "BR:CPF"
}, - "correlationID": "fe7834b4060c488a9b0f89811be5f5cf"
}
}
const http = require('https'); const options = { method: 'GET', hostname: 'api.woovi.com', port: null, path: '/api/v1/customer', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "pageInfo": {
- "skip": 0,
- "limit": 10,
- "totalCount": 20,
- "hasPreviousPage": false,
- "hasNextPage": true
}, - "customers": {
- "customer": {
- "name": "Dan",
- "phone": "5511999999999",
- "taxID": {
- "taxID": "31324227036",
- "type": "BR:CPF"
}
}
}
}
Endpoint to create a new Customer
Data to create a new customer
name required | string |
string | |
phone | string |
taxID required | string |
correlationID | string |
object |
{- "name": "Dan",
- "taxID": "31324227036",
- "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"
}
}
{- "customer": {
- "name": "Dan",
- "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"
}
}
}
Endpoint to update a Customer
correlationID required | string Examples:
correlation ID |
Data to update a existent customer
name | string |
string | |
phone | string |
taxID | string |
object |
{- "name": "Dan",
- "phone": "5511999999999",
- "address": {
- "zipcode": "30421322",
- "street": "Street",
- "number": "100",
- "neighborhood": "Neighborhood",
- "city": "Belo Horizonte",
- "state": "MG",
- "complement": "APTO",
- "country": "BR"
}
}
{- "customer": {
- "name": "Dan",
- "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 evidence files for dispute/med.
Array of objects documents for upload | |||||||
Array
|
{- "documents": [
- {
- "url": "string",
- "correlationID": "string",
- "description": "string"
}
]
}
{- "documents": [
- {
- "correlationID": "id123456789",
- "description": "description for my document"
}
]
}
id required | string Example: Ea9c291526ae54b4cb41d9909bdf6d792 The id must be the endToEndId of the transaction that originated the Dispute |
const http = require('https'); const options = { method: 'GET', hostname: 'api.woovi.com', port: null, path: '/api/v1/dispute/Ea9c291526ae54b4cb41d9909bdf6d792', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "dispute": {
- "status": "ACCEPTED",
- "name": "John Doe",
- "phoneNumber": "+5511999999999",
- "value": 10000,
- "disputeReason": "Product not received",
- "endToEndId": "E7d401907cacd4d7fb9290345b93deac7"
}
}
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. |
const http = require('https'); const options = { method: 'GET', hostname: 'api.woovi.com', port: null, path: '/api/v1/dispute?start=2020-01-01T00%3A00%3A00Z&end=2020-12-01T17%3A00%3A00Z', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "pageInfo": {
- "skip": 0,
- "limit": 10,
- "totalCount": 20,
- "hasPreviousPage": false,
- "hasNextPage": true
}, - "disputes": [
- {
- "disputeReason": "Dispute reason test",
- "name": "Seu Jorge",
- "phoneNumber": "+551199999999",
- "status": "IN_REVIEW",
- "value": 100,
- "createdAt": "2021-03-02T17:28:51.882Z",
- "updatedAt": "2021-03-02T17:28:51.882Z"
}
]
}
Partners integrate affiliated companies.
They can register new companies, manage them, and earn money from them.
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.
The request body to create a pre registration.
object | |
object (TaxIDObjectPayload) |
{- "application": {
- "name": "MyAPIAccess",
- "type": "API"
}, - "taxID": {
- "taxID": "65914571000187",
- "type": "BR:CNPJ"
}
}
{- "application": {
- "name": "string",
- "isActive": true,
- "type": "API",
- "clientId": "string",
- "clientSecret": "string"
}
}
taxID required | string Examples:
The raw tax ID from the preregistration that you want to get. |
const http = require('https'); const options = { method: 'GET', hostname: 'api.woovi.com', port: null, path: '/api/v1/partner/company/60151449000182', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "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"
}
}
}
const http = require('https'); const options = { method: 'GET', hostname: 'api.woovi.com', port: null, path: '/api/v1/partner/company', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "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,
- "totalCount": 0,
- "hasPreviousPage": true,
- "hasNextPage": true
}
}
As a partner company, you can create a new pre registration referencing your company as a partner.
The request body to create a pre registration.
object (PreRegistrationObject) | |
object (PreRegistrationUserObject) |
{- "preRegistration": {
- "name": "Example LLC",
- "taxID": {
- "taxID": "11111111111111",
- "type": "BR:CNPJ"
}, - "website": "examplellc.com"
}, - "user": {
- "firstName": "John",
- "lastName": "Doe",
- "phone": "+5511912345678",
- "taxID": {
- "taxID": "1111111111",
- "type": "BR:CPF"
}
}
}
{- "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"
}
}
}
Endpoint to approve a payment
Data to approve a payment request
correlationID | string the correlation ID of the payment to be approved |
{- "correlationID": "payment1"
}
{- "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"
}
}
id required | string Examples:
payment ID or correlation ID |
const http = require('https'); const options = { method: 'GET', hostname: 'api.woovi.com', port: null, path: '/api/v1/payment/Q2hhcmdlOjYwM2U3NDlhNDI1NjAyYmJiZjRlN2JlZA==', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "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"
}, - "destination": {
- "name": "Dan",
- "taxID": "31324227036",
- "pixKey": "c4249323-b4ca-43f2-8139-8232aab09b93",
- "bank": "A Bank",
- "branch": "1",
- "account": "123456"
}
}
const http = require('https'); const options = { method: 'GET', hostname: 'api.woovi.com', port: null, path: '/api/v1/payment', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "pageInfo": {
- "skip": 0,
- "limit": 10,
- "totalCount": 20,
- "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"
}, - "destination": {
- "name": "Dan",
- "taxID": "31324227036",
- "pixKey": "c4249323-b4ca-43f2-8139-8232aab09b93",
- "bank": "A Bank",
- "branch": "1",
- "account": "123456"
}
}
}
Endpoint to request a payment
Data to create a payment request
type required | string Value: "PIX_KEY" 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 an 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 send alongisde your payment |
object additional metadata for the payment (max 30 keys) |
{- "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"
}
}
{- "payment": {
- "value": 100,
- "status": "CREATED",
- "destinationAlias": "c4249323-b4ca-43f2-8139-8232aab09b93",
- "destinationAliasType": "RANDOM",
- "comment": "payment comment",
- "correlationID": "payment1"
}
}
Get data from a Pix key if it exists
pixKey required | string The Pix key to check |
{- "pixKey": "string",
- "type": "CPF",
- "pixKeyEndToEndId": "string",
- "owner": {
- "account": "string",
- "branch": "string",
- "psp": "string",
- "name": "string",
- "taxID": "string"
}
}
Charges the FRAUD_VALIDATE_FEE from the linked account and queries DICT (BACEN) to obtain fraud marker statistics for the provided Pix key, returning a parsed summary. Requires a linked Woovi bank account and valid token.
pixKey required | string Pix key to be verified (email, phone, EVP, CPF/CNPJ etc.) |
{- "success": true,
- "data": {
- "keyStatistics": {
- "fraudMarkers": {
- "watermark": "2025-08-04T17:18:21.716Z",
- "applicationFrauds": {
- "d90": "1",
- "m12": "1",
- "m60": "1"
}, - "muleAccounts": {
- "d90": "0",
- "m12": "0",
- "m60": "0"
}, - "scammerAccounts": {
- "d90": "11",
- "m12": "10",
- "m60": "10"
}, - "otherFrauds": {
- "d90": "0",
- "m12": "0",
- "m60": "0"
}, - "unknownFrauds": {
- "d90": "0",
- "m12": "0",
- "m60": "0"
}, - "totalFraudTransactionAmount": {
- "d90": "723",
- "m12": "723",
- "m60": "723"
}, - "distinctFraudReporters": {
- "d90": "1",
- "m12": "1",
- "m60": "1"
}
}, - "infractionReports": {
- "watermark": "2025-08-04T17:18:21.756Z",
- "openReports": "2",
- "openReportsDistinctReporters": "1",
- "rejectedReports": {
- "d90": "3",
- "m12": "3",
- "m60": "3"
}
}
}, - "ownerStatistics": {
- "fraudMarkers": {
- "watermark": "2025-08-04T17:18:21.716Z",
- "applicationFrauds": {
- "d90": "1",
- "m12": "5",
- "m60": "5"
}, - "muleAccounts": {
- "d90": "0",
- "m12": "1",
- "m60": "1"
}, - "scammerAccounts": {
- "d90": "15",
- "m12": "21",
- "m60": "21"
}, - "otherFrauds": {
- "d90": "0",
- "m12": "0",
- "m60": "0"
}, - "unknownFrauds": {
- "d90": "0",
- "m12": "0",
- "m60": "0"
}, - "totalFraudTransactionAmount": {
- "d90": "1023",
- "m12": "1517",
- "m60": "1517"
}, - "distinctFraudReporters": {
- "d90": "1",
- "m12": "1",
- "m60": "1"
}
}, - "infractionReports": {
- "watermark": "2025-08-04T17:18:21.756Z",
- "openReports": "2",
- "openReportsDistinctReporters": "1",
- "rejectedReports": {
- "d90": "3",
- "m12": "32",
- "m60": "32"
}
}
}
}
}
const http = require('https'); const options = { method: 'GET', hostname: 'api.woovi.com', port: null, path: '/api/v1/pix-keys', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "pixKeys": [
- {
- "key": "string",
- "type": "CPF",
- "isDefault": true
}
], - "account": {
- "accountId": "string",
- "isDefault": true,
- "balance": {
- "total": 0,
- "blocked": 0,
- "available": 0
}
}
}
Creates a new Pix key
key required | string |
type required | string Enum: "CNPJ" "EVP" |
{- "key": "string",
- "type": "CNPJ"
}
{- "key": "string",
- "type": "CPF",
- "isDefault": true
}
const http = require('https'); const options = { method: 'GET', hostname: 'api.woovi.com', port: null, path: '/api/v1/pix-keys/tokens', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "tokens": 0,
- "maxTokens": 0,
- "nextRefresh": "string",
- "tokensAfterRefresh": 0,
- "refreshRate": 0
}
id required | string Examples:
pixQrCode ID, correlation ID or emv identifier |
const http = require('https'); const options = { method: 'GET', hostname: 'api.woovi.com', port: null, path: '/api/v1/qrcode-static/Q2hhcmdlOjYwM2U3NDlhNDI1NjAyYmJiZjRlN2JlZA==', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "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"
}
}
const http = require('https'); const options = { method: 'GET', hostname: 'api.woovi.com', port: null, path: '/api/v1/qrcode-static', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "pageInfo": {
- "skip": 0,
- "limit": 10,
- "totalCount": 20,
- "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"
}
}
Endpoint to create a new Pix QrCode Static
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 |
{- "name": "my-qr-code",
- "correlationID": "9134e286-6f71-427a-bf00-241681624586",
- "value": 100,
- "comment": "good"
}
{- "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"
}
}
id required | string you can use the transaction id from openpix or the endToEndId of transaction from bank |
{- "transaction": {
- "customer": {
- "name": "Dan",
- "phone": "5511999999999",
- "taxID": {
- "taxID": "31324227036",
- "type": "BR:CPF"
}, - "correlationID": "9134e286-6f71-427a-bf00-241681624586"
}, - "payer": {
- "name": "Dan",
- "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"
}
}
}
}
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 |
const http = require('https'); const options = { method: 'GET', hostname: 'api.woovi.com', port: null, path: '/api/v1/transaction?start=2020-01-01T00%3A00%3A00Z&end=2020-12-01T17%3A00%3A00Z&charge=Q2hhcmdlOjYwM2U3NDlhNDI1NjAyYmJiZjRlN2JlZA&pixQrCode=Q2hhcmdlOjYwM2U3NDlhNDI1NjAyYmJiZjRlN2JlZA&withdrawal=Q2hhcmdlOjYwM2U3NDlhNDI1NjAyYmJiZjRlN2JlZA', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "pageInfo": {
- "skip": 0,
- "limit": 10,
- "totalCount": 20,
- "hasPreviousPage": false,
- "hasNextPage": true
}, - "transactions": {
- "customer": {
- "name": "Dan",
- "phone": "5511999999999",
- "taxID": {
- "taxID": "31324227036",
- "type": "BR:CPF"
}, - "correlationID": "9134e286-6f71-427a-bf00-241681624586"
}, - "payer": {
- "name": "Dan",
- "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"
}
}
id required | string Examples:
refund ID or correlation ID |
const http = require('https'); const options = { method: 'GET', hostname: 'api.woovi.com', port: null, path: '/api/v1/refund/Q2hhcmdlOjYwM2U3NDlhNDI1NjAyYmJiZjRlN2JlZA==', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "pixTransactionRefund": {
- "value": 100,
- "correlationID": "7777-6f71-427a-bf00-241681624586",
- "refundId": "11bf5b37e0b842e08dcfdc8c4aefc000",
- "returnIdentification": "D09089356202108032000a543e325902",
- "comment": "Comentário do reembolso"
}
}
const http = require('https'); const options = { method: 'GET', hostname: 'api.woovi.com', port: null, path: '/api/v1/refund', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "pageInfo": {
- "skip": 0,
- "limit": 10,
- "totalCount": 20,
- "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"
}
]
}
Endpoint to create a new refund for a customer
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. |
{- "transactionEndToEndId": "9134e286-6f71-427a-bf00-241681624586",
- "correlationID": "9134e286-6f71-427a-bf00-241681624586",
- "value": 100,
- "comment": "Comentário do reembolso"
}
{- "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.
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 |
const http = require('https'); const options = { method: 'GET', hostname: 'api.woovi.com', port: null, path: '/api/v1/psp?ispb=3030310&name=brasil&compe=001', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "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"
}
]
}
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. |
const http = require('https'); const options = { method: 'GET', hostname: 'api.woovi.com', port: null, path: '/api/v1/receipt/pix-in/E12345678202406201221abcdef12345', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "error": "string"
}
Withdraw from a Sub Account and return the withdrawal transaction information
id required |
Data to make a withdraw partial
value | number Value of the withdrawal in cents if want to make a partial withdrawal |
{- "value": 1000
}
{- "transaction": {
- "status": "CREATED",
- "value": 100,
- "endToEndId": "ENDTOENDID_1234567890",
- "correlationID": "TESTING1323",
- "comment": "testing-transaction"
}
}
Deletes a Sub Account if it has no remaining balance
id required |
const http = require('https'); const options = { method: 'DELETE', hostname: 'api.woovi.com', port: null, path: '/api/v1/subaccount/[email protected]', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "status": "OK",
- "pixKey": "[email protected]"
}
id required | string Examples:
pix key registered to the subaccount |
const http = require('https'); const options = { method: 'GET', hostname: 'api.woovi.com', port: null, path: '/api/v1/subaccount/c4249323-b4ca-43f2-8139-8232aab09b93', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "SubAccount": {
- "name": "test-sub-account",
- "pixKey": "c4249323-b4ca-43f2-8139-8232aab09b93",
- "balance": 100
}
}
const http = require('https'); const options = { method: 'GET', hostname: 'api.woovi.com', port: null, path: '/api/v1/subaccount', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "subAccounts": [
- {
- "name": "test-sub-account",
- "pixKey": "c4249323-b4ca-43f2-8139-8232aab09b93",
- "balance": 100
}
], - "pageInfo": {
- "skip": 0,
- "limit": 10,
- "totalCount": 20,
- "hasPreviousPage": false,
- "hasNextPage": true
}
}
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 |
{- "pixKey": "9134e286-6f71-427a-bf00-241681624587",
- "name": "Test Account"
}
{- "SubAccount": {
- "name": "test-sub-account",
- "pixKey": "c4249323-b4ca-43f2-8139-8232aab09b93"
}
}
Transfers the amount from the subaccount to the main account.
id required |
value required | number Amount to debit from the account |
description | string Optional description for the debit operation |
{- "value": 50,
- "description": "Monthly payment"
}
{- "value": 50,
- "description": "Monthly payment",
- "success": "Sub-account withdrawal has been successfully debited, 50"
}
Transfer between subaccounts
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 |
{- "value": 65,
- "fromPixKey": "c4249323-b4ca-43f2-8139-874baab09b93",
- "fromPixKeyType": "RANDOM",
- "toPixKey": "3143da48-2bc7-49a4-89bd-4e22f73bfb0c",
- "toPixKeyType": "RANDOM"
}
{- "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
}
}
id required | string Example: UGF5bWVudFN1YnNjcmlwdGlvbjo2M2UzYjJiNzczZDNkOTNiY2RkMzI5OTM= The globalID of the installment. |
const http = require('https'); const options = { method: 'GET', hostname: 'api.woovi.com', port: null, path: '/api/v1/installments/UGF5bWVudFN1YnNjcmlwdGlvbjo2M2UzYjJiNzczZDNkOTNiY2RkMzI5OTM=', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "installment": {
- "globalID": "UGF5bWVudFN1YnNjcmlwdGlvbjo2M2UzYjJiNzczZDNkOTNiY2RkMzI5OTM=",
- "dateGenerateCharge": "date",
- "expiration": 1400,
- "installmentNumber": 1,
- "value": 5,
- "status": "CREATED",
- "createdAt": "date",
- "cobr": {
- "identifierId": "Dan",
- "installmentId": "5511999999999",
- "rejectCode": "DTED",
- "status": "CREATED",
- "value": 5,
- "createdAt": "subscription#1",
- "paymentDate": "date",
- "description": "description"
}
}
}
const http = require('https'); const options = { method: 'GET', hostname: 'api.woovi.com', port: null, path: '/api/v1/subscriptions', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "pageInfo": {
- "skip": 0,
- "limit": 10,
- "totalCount": 20,
- "hasPreviousPage": false,
- "hasNextPage": true
}
}
Endpoint to create a new Subcription
Data to create a new Subscription
required | object Customer of this subscription |
value required | number Value in cents of this subscription |
comment | string Comment to be added in infoPagador |
Array of objects Additional info of the charge | |
dayGenerateCharge | number [ 1 .. 31 ] Default: 5 Day of the month that the charges will be generated. Maximum of 31. |
frequency | string Enum: "WEEKLY" "MONTHLY" "BIMONTHLY" "TRIMONTHLY" "SEMIANNUALY" "ANNUALY" Frequency of the subscription |
chargeType | string Default: "DYNAMIC" Enum: "DYNAMIC" "OVERDUE" The charge type is used to determine whether charges generated by the subscription will have fines and interests |
dayDue | number >= 3 Default: 7 Days that the charge will take to expire from the generation day. |
correlationID required | string Your correlation ID to keep track of this subscription |
{- "value": 100,
- "customer": {
- "name": "Dan",
- "taxID": "31324227036",
- "phone": "5511999999999"
}, - "dayGenerateCharge": 15
}
{- "subscription": {
- "globalID": "UGF5bWVudFN1YnNjcmlwdGlvbjo2M2UzYjJiNzczZDNkOTNiY2RkMzI5OTM=",
- "customer": {
- "name": "Dan",
- "phone": "5511999999999",
- "taxID": {
- "taxID": "31324227036",
- "type": "BR:CPF"
}
}, - "value": 100,
- "dayGenerateCharge": 5
}
}
id required | string Example: UGF5bWVudFN1YnNjcmlwdGlvbjo2M2UzYjJiNzczZDNkOTNiY2RkMzI5OTM= The globalID or correlationID of the subscription. |
const http = require('https'); const options = { method: 'GET', hostname: 'api.woovi.com', port: null, path: '/api/v1/subscriptions/UGF5bWVudFN1YnNjcmlwdGlvbjo2M2UzYjJiNzczZDNkOTNiY2RkMzI5OTM=', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "subscription": {
- "globalID": "UGF5bWVudFN1YnNjcmlwdGlvbjo2M2UzYjJiNzczZDNkOTNiY2RkMzI5OTM=",
- "customer": {
- "name": "Dan",
- "phone": "5511999999999",
- "taxID": {
- "taxID": "31324227036",
- "type": "BR:CPF"
}
}, - "value": 100,
- "dayGenerateCharge": 5,
- "correlationID": "subscription#1",
- "status": "ACTIVE"
}
}
Endpoint to to transfer values between accounts
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 |
{- "value": 100,
- "correlationID": "123e4567-e89b-12d3-a456-426614174000"
}
{- "transaction": {
- "value": 100,
- "time": "2023-06-22T15:33:27.165Z,",
- "correlationID": "c782e0ac-833d-4a89-9e73-9b60b2b41d3a"
}
}
Endpoint to delete a Webhook
id required | string Examples:
webhook ID |
const http = require('https'); const options = { method: 'DELETE', hostname: 'api.woovi.com', port: null, path: '/api/v1/webhook/Q2hhcmdlOjYwM2U3NDlhNDI1NjAyYmJiZjRlN2JlZA==', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "status": "string"
}
url | string Example: url=https://mycompany.com.br/webhook You can use the url to filter all webhooks |
const http = require('https'); const options = { method: 'GET', hostname: 'api.woovi.com', port: null, path: '/api/v1/webhook?url=https%3A%2F%2Fmycompany.com.br%2Fwebhook', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "pageInfo": {
- "skip": 0,
- "limit": 100,
- "totalCount": 2,
- "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"
}
]
}
Endpoint to create a new Webhook
Data to create a new webhook
object (WebhookPayload) | |||||||||||
|
{- "webhook": {
- "name": "webhookName",
- "event": "OPENPIX:CHARGE_CREATED",
- "authorization": "openpix",
- "isActive": true
}
}
{- "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"
}
}
{- "charge": {
- "status": "COMPLETED",
- "customer": {
- "name": "Julio",
- "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",
- "phone": "5511999999999",
- "taxID": {
- "taxID": "31928282008",
- "type": "BR:CPF"
}, - "correlationID": "9134e286-6f71-427a-bf00-241681624586"
}, - "payer": {
- "name": "Julio",
- "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
}
const http = require('https'); const options = { method: 'GET', hostname: 'api.woovi.com', port: null, path: '/api/v1/webhook/ips', headers: { Authorization: 'REPLACE_KEY_VALUE' } }; 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();
{- "ips": [
- "189.51.60.9",
- "138.97.124.129",
- "177.71.136.66"
]
}
Retrieves the statement/ledger entries for a company's bank account
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 |
const http = require('https'); const options = { method: 'GET', hostname: 'api.woovi.com', 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: 'REPLACE_KEY_VALUE' } }; 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();
[- {
- "id": "507f1f77bcf86cd799439011",
- "time": "2023-12-01T10:30:00.000Z",
- "description": "Payment received from customer",
- "balance": 1500.5,
- "value": 100,
- "type": "CREDIT",
- "transactionId": "txn_123456789"
}
]