Pular para o conteúdo principal

Woovi - Indireto (1.0.0)

Download OpenAPI specification:Download

Documentação infraestrutura pix indireto.

pixCharge

Endpoint to manage Pix Charges

Check if a Pix charge is allowed to be paid

Check if a Pix charge is allowed to be paid

path Parameters
txid
required
string

Unique transaction identifier

Request Body schema: application/json
required
DPP
string

Optional payment date-time for calculation

codMun
string

Optional municipality code

paymentValue
integer

Payment value to validate

taxID
string

Optional payer taxID when ensureSameTaxID is enabled

Responses

Request samples

Content type
application/json
{
  • "DPP": "string",
  • "codMun": "string",
  • "paymentValue": 0,
  • "taxID": "string"
}

Response samples

Content type
application/json
{
  • "error": {
    }
}

Get Pix charges by location

Retrieve all Pix charges associated with a specific location

path Parameters
locId
required
string

Location identifier

query Parameters
DPP
string

Optional payment date-time for calculation

codMun
string

Optional municipality code for business-day calculation

Responses

Request samples

const http = require('https');

const options = {
  method: 'GET',
  hostname: '',
  port: null,
  path: '%3Cname%3E.indireto.woovi-indireto.dev/pix-charge/v1/charge/location/%7BlocId%7D?DPP=SOME_STRING_VALUE&codMun=SOME_STRING_VALUE',
  headers: {}
};

const req = http.request(options, function (res) {
  const chunks = [];

  res.on('data', function (chunk) {
    chunks.push(chunk);
  });

  res.on('end', function () {
    const body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();

Response samples

Content type
application/json
{
  • "charge": {
    }
}

Complete a Pix charge

Mark a Pix charge as completed by recording the payment date and payment value.

This endpoint updates the charge status to COMPLETED and stores the payment information (paidAt and paidAmount). The charge amount values are recalculated based on the payment date.

path Parameters
txid
required
string

Unique transaction identifier

Request Body schema: application/json
required
paymentDate
required
string

Payment date-time in ISO format (timezone-aware)

paymentValue
required
number

Payment value in cents

Responses

Request samples

Content type
application/json
{
  • "paymentDate": "2025-03-20T10:30:00-03:00",
  • "paymentValue": 10000
}

Response samples

Content type
application/json
{
  • "charge": {
    }
}

Delete a Pix charge

Delete a specific Pix charge

path Parameters
txid
required
string

Unique transaction identifier

Responses

Request samples

const http = require('https');

const options = {
  method: 'DELETE',
  hostname: '',
  port: null,
  path: '%3Cname%3E.indireto.woovi-indireto.dev/pix-charge/v1/charge/%7Btxid%7D',
  headers: {}
};

const req = http.request(options, function (res) {
  const chunks = [];

  res.on('data', function (chunk) {
    chunks.push(chunk);
  });

  res.on('end', function () {
    const body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();

Response samples

Content type
application/json
{
  • "error": {
    }
}

Get a pix charge

Retrieve details of a specific Pix charge

path Parameters
txid
required
string
Example: 6290ccfd42831958a405debc

pix charge txid

query Parameters
DPP
string

Optional payment date-time for calculation

codMun
string

Optional municipality code for business-day calculation

Responses

Request samples

const http = require('https');

const options = {
  method: 'GET',
  hostname: '',
  port: null,
  path: '%3Cname%3E.indireto.woovi-indireto.dev/pix-charge/v1/charge/6290ccfd42831958a405debc?DPP=SOME_STRING_VALUE&codMun=SOME_STRING_VALUE',
  headers: {}
};

const req = http.request(options, function (res) {
  const chunks = [];

  res.on('data', function (chunk) {
    chunks.push(chunk);
  });

  res.on('end', function () {
    const body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();

Response samples

Content type
application/json
{
  • "account": {
    }
}

Create a new Pix charge

Create a new Pix charge with the specified parameters

path Parameters
txid
required
string

Unique transaction identifier

Request Body schema: application/json
required
chargeType
string (ChargeType)
Enum: "cob" "cobv" "rec"

Charge type

object (Calendar)
Array of objects (AdditionalInfo) <= 50 items
comment
string <= 140 characters
object (Amount)
pixKey
string [ 1 .. 255 ] characters
object or null
ensureSameTaxID
boolean
object (Debtor)
object (Receiver)

Responses

Request samples

Content type
application/json
{
  • "chargeType": "cob",
  • "calendar": {
    },
  • "additionalInfo": [
    ],
  • "comment": "string",
  • "amount": {
    },
  • "pixKey": "string",
  • "location": {
    },
  • "ensureSameTaxID": true,
  • "debtor": {
    },
  • "receiver": {
    }
}

Response samples

Content type
application/json
{
  • "charge": {
    }
}

Update an existing Pix charge

Update an existing Pix charge with new parameters

path Parameters
txid
required
string

Unique transaction identifier

Request Body schema: application/json
required
chargeType
string (ChargeType)
Enum: "cob" "cobv" "rec"

Charge type

object (Calendar)

Responses

Request samples

Content type
application/json
{
  • "chargeType": "cob",
  • "calendar": {
    }
}

Response samples

Content type
application/json
{
  • "charge": {
    }
}

Generate EMV QR Code for PIX

Generates an EMV QR Code string in TLV (Tag-Length-Value) format for PIX payments. This endpoint creates a standardized QR code that can be used for PIX instant payments in Brazil. The generated EMV string contains all necessary information for PIX transactions including merchant details and location URL.

Key Features:

  • Validation: Strict validation of merchant name and city (no diacritics, length limits)
  • Default Values: Automatically applies standard PIX EMV values when not provided
  • TLV Format: Returns EMV string in proper TLV format for QR code generation
  • Brazilian Standards: Compliant with Brazilian PIX instant payment standards

Validation Rules:

  • merchantName: Required, 1-25 characters, no diacritics
  • merchantCity: Required, 1-15 characters, no diacritics
  • merchantAccountInformationPix.url: Required, valid URI format

Default Values Applied:

  • payloadFormatIndicator: "01"
  • pointOfInitiationMethod: "12" (dynamic QR)
  • merchantCategoryCode: "0000"
  • transactionCurrency: "986" (Brazilian Real)
  • countryCode: "BR"
  • additionalDataFieldTemplate.referenceLabel: "***"

The endpoint will return validation errors for any field that doesn't meet the requirements.

Request Body schema: application/json
required
merchantName
required
string [ 1 .. 25 ] characters

Name of the merchant. Must not contain diacritics (accented characters). Will be validated and rejected if longer than 25 characters or contains diacritics.

merchantCity
required
string [ 1 .. 15 ] characters

City where the merchant is located. Must not contain diacritics (accented characters). Will be validated and rejected if longer than 15 characters or contains diacritics.

required
object
payloadFormatIndicator
string

EMV QR Code payload format indicator (usually '01')

pointOfInitiationMethod
string

Point of initiation method (usually '12' for dynamic QR)

merchantCategoryCode
string

Merchant category code (MCC) for business classification

transactionCurrency
string

Transaction currency code (986 for Brazilian Real)

countryCode
string

Country code (BR for Brazil)

object
object

Responses

Request samples

Content type
application/json
Example
{
  • "merchantName": "Test Merchant",
  • "merchantCity": "Sao Paulo",
  • "merchantAccountInformationPix": {}
}

Response samples

Content type
application/json
Example
{
  • "emv": "00020101021226450014br.gov.bcb.pix2523https://example.com/pix5204000053039865802BR5913Test Merchant6009Sao Paulo62070503***6304E69E"
}

Core

Get account balance

Retrieves the balance for the configured ledger account

Responses

Request samples

const http = require('https');

const options = {
  method: 'GET',
  hostname: '',
  port: null,
  path: '%3Cname%3E.indireto.woovi-indireto.dev/core/balance',
  headers: {}
};

const req = http.request(options, function (res) {
  const chunks = [];

  res.on('data', function (chunk) {
    chunks.push(chunk);
  });

  res.on('end', function () {
    const body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();

Response samples

Content type
application/json
{
  • "balance": 1000
}

Create a PIX Charge with Location and EMV

Creates a PIX charge using the Pix Charge provider schemas, links it to a PIX location, and returns the generated BR Code (EMV).

path Parameters
txid
required
string^[a-zA-Z0-9]{1,35}$

Unique transaction identifier (1–35 alphanumeric chars).

Request Body schema: application/json
required
required
object

Raw Pix charge payload forwarded to the Pix Charge service.

required
object

Payload forwarded to the Pix Location service.

required
object

Merchant information used to generate the BR Code (EMV).

property name*
additional property
any

Responses

Request samples

Content type
application/json
{
  • "pixCharge": {},
  • "pixLocation": {
    },
  • "brCodeInfo": {
    }
}

Response samples

Content type
application/json
{
  • "charge": {
    },
  • "location": {},
  • "brCode": "00020101021243650016COM.MERCADOLIVRE02008..."
}

pixLocation

Get Pix location QR code information

Retrieve Pix location information and generate QR code data based on the location type and access token. This endpoint returns JOSE (JSON Object Signing and Encryption) formatted data for QR code generation.

path Parameters
locType
required
string
Enum: "cob" "cobv" "rec"

Type of Pix location

pixUrlAccessToken
required
string

Access token for the Pix location

query Parameters
codMun
string

Municipality code for location-specific data

DPP
string

Additional location parameter

Responses

Request samples

const http = require('https');

const options = {
  method: 'GET',
  hostname: '',
  port: null,
  path: '%3Cname%3E.indireto.woovi-indireto.dev/qr/v2/%7BlocType%7D/%7BpixUrlAccessToken%7D?codMun=SOME_STRING_VALUE&DPP=SOME_STRING_VALUE',
  headers: {}
};

const req = http.request(options, function (res) {
  const chunks = [];

  res.on('data', function (chunk) {
    chunks.push(chunk);
  });

  res.on('end', function () {
    const body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();

Response samples

Content type
application/json
{
  • "error": {
    }
}

Get Pix location payload

Retrieve the processed Pix location payload translated to Portuguese and filtered according to the location type. This endpoint returns the same payload that is used to sign the JOSE response, but in JSON format for internal integrations.

path Parameters
locType
required
string
Enum: "cob" "cobv" "rec"

Type of Pix location

pixUrlAccessToken
required
string

Access token for the Pix location

query Parameters
codMun
string

Municipality code for location-specific data

DPP
string

Additional location parameter

Responses

Request samples

const http = require('https');

const options = {
  method: 'GET',
  hostname: '',
  port: null,
  path: '%3Cname%3E.indireto.woovi-indireto.dev/qr/v2/%7BlocType%7D/%7BpixUrlAccessToken%7D/payload?codMun=SOME_STRING_VALUE&DPP=SOME_STRING_VALUE',
  headers: {}
};

const req = http.request(options, function (res) {
  const chunks = [];

  res.on('data', function (chunk) {
    chunks.push(chunk);
  });

  res.on('end', function () {
    const body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();

Response samples

Content type
application/json
{ }

Get API status

Retrieve the health status of the Pix Location service.

Responses

Request samples

const http = require('https');

const options = {
  method: 'GET',
  hostname: '',
  port: null,
  path: '%3Cname%3E.indireto.woovi-indireto.dev/status',
  headers: {}
};

const req = http.request(options, function (res) {
  const chunks = [];

  res.on('data', function (chunk) {
    chunks.push(chunk);
  });

  res.on('end', function () {
    const body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.end();

Response samples

Content type
application/json
{
  • "status": "OK",
  • "timestamp": "2019-08-24T14:15:22Z",
  • "version": "1.0.0"
}