Vendor signer group
The signer group defines who signs expense contracts on behalf of the vendor and how many signatures are enough (minimum_required_signers).
- Individual vendor: automatically receives a default group containing itself on creation, and a new one on each approval. Nothing needs to be declared.
- Legal entity vendor: usually receives the group from its own analysis, which QI Tech infers from the corporate documents or an analyst declares. Use this call to declare the group yourself.
A group declared through this call is created as valid and does not depend on the analysis. Each vendor has at most one default group (is_default: true).
When an analysis is approved:
- A group whose
expiration_dateis earlier than the approval date does not count, whether it is the analysis's group or the default one: it is neither promoted nor copied. - Legal entity with its own group in the analysis: the last group of the analysis becomes the default, and the previous default stops being the default.
- Legal entity without its own group in the analysis: the current default group is copied into a new default group linked to the analysis.
- Legal entity without any group within its validity: the analysis is not approved and stays in manual review.
Declare a signer group
| Profile | Host | Required permission |
|---|---|---|
| Manager | manager-api | Write |
| Consultant | consultant-api | Active integration |
Base URL for each host: Environments (Hosts).
Path parameters
| Parameter | Type | Description |
|---|---|---|
vendor_key | string | Vendor key (UUID). |
{
"minimum_required_signers": 1,
"signers": [
{
"name": "João da Silva",
"document_number": "123.456.789-09",
"email": "joao.silva@auditoresexemplo.com.br"
},
{
"name": "Maria Souza",
"document_number": "987.654.321-00",
"email": "maria.souza@auditoresexemplo.com.br"
}
],
"is_default": true,
"expiration_date": "2027-12-31"
}
Body attributes
| Field | Type | Required | Description |
|---|---|---|---|
minimum_required_signers | integer | Yes | How many signatures are enough. Minimum 1, at most the number of signers. |
signers | array | Yes | At least one signer. |
signers[].name | string | Yes | Name, from 1 to 255 characters. |
signers[].document_number | string | Yes | CPF with punctuation (123.456.789-09). Must be the CPF of an active or pending_registry related party of the vendor or, for an individual vendor, the vendor's own CPF. name and email are stored as sent. |
signers[].is_required_signer | boolean | No | Accepted but ignored: QI Tech recalculates the value (see response attributes). |
signers[].email | string | Yes | Email, from 1 to 255 characters. |
is_default | boolean | No | Makes this the default group, demoting the previous one. Default: false. The vendor's first group is always the default. |
expiration_date | string | No | Group expiration date, YYYY-MM-DD. It cannot be earlier than today's date in UTC (400, VRG000096); today's date itself is accepted. |
Response
{
"signer_group_key": "7e6d5c4b-3a2f-4e1d-9c8b-7a6f5e4d3c2b",
"minimum_required_signers": 1,
"is_default": true,
"signers": [
{
"name": "João da Silva",
"document_number": "123.456.789-09",
"email": "joao.silva@auditoresexemplo.com.br",
"is_required_signer": false
},
{
"name": "Maria Souza",
"document_number": "987.654.321-00",
"email": "maria.souza@auditoresexemplo.com.br",
"is_required_signer": false
}
],
"status": "valid",
"analysis_key": null,
"expiration_date": "2027-12-31"
}
Response attributes
| Field | Type | Description |
|---|---|---|
signer_group_key | string | Group key (UUID). |
minimum_required_signers | integer | Required signatures. |
is_default | boolean | Vendor's default group. |
signers | array | Signers. is_required_signer is calculated by QI Tech: true for all of them when the number of signers equals the required minimum; false for all of them otherwise. |
status | string | valid for groups declared through this call. Groups coming from the analysis go through pending and become valid on approval or invalid on rejection, cancellation or withdrawal from the queue. |
analysis_key | string | Analysis that originated the group, or null for groups declared through this call and for the automatic group created with an individual vendor. |
expiration_date | string | Expiration date, YYYY-MM-DD. Present only when provided. |
List signer groups
| Profile | Host | Required permission |
|---|---|---|
| Manager | manager-api | Read |
| Consultant | consultant-api | Active integration |
Base URL for each host: Environments (Hosts).
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | No | Items per page, from 0 to 1000. Default: 10. |
page | integer | No | Page, starting at 0. Default: 0. |
Returns all of the vendor's groups, in any status, from oldest to newest.
Response
{
"data": [
{
"signer_group_key": "7e6d5c4b-3a2f-4e1d-9c8b-7a6f5e4d3c2b",
"minimum_required_signers": 1,
"is_default": true,
"signers": [
{
"name": "João da Silva",
"document_number": "123.456.789-09",
"email": "joao.silva@auditoresexemplo.com.br",
"is_required_signer": true
}
],
"status": "valid",
"analysis_key": "8c2a6f0e-1b3d-4f7a-9c1e-2a4b6d8f0c13"
}
],
"limit": 10,
"page": 0,
"is_last_page": true
}
Errors
Insufficient signers
signers has fewer signers than minimum_required_signers.
{
"title": "Signer Group Quorum Not Met",
"description": "At least 2 signers are required, but only 1 were sent.",
"translation": "Sao necessarios pelo menos 2 signatarios, mas apenas 1 foram enviados.",
"code": "VRG000049"
}
Expiration date in the past
expiration_date is earlier than today's date (UTC).
{
"title": "Signer Group Expiration Date In Past",
"description": "The signer group expiration date (2026-11-08) cannot be earlier than today.",
"translation": "A data de expiracao do grupo de assinantes (2026-11-08) nao pode ser anterior a hoje.",
"code": "VRG000096"
}
Signer CPF does not belong to the vendor
A signer's CPF belongs neither to an active or pending_registry related party of the vendor nor to the individual vendor itself.
{
"title": "Signer Document Number Not Found",
"description": "The document number (123.456.789-09) does not match the vendor's own document number or any of its active related parties.",
"translation": "O numero de documento (123.456.789-09) nao corresponde ao documento do proprio fornecedor nem ao de nenhuma de suas partes relacionadas ativas.",
"code": "VRG000050"
}
Vendor not found
The vendor_key does not exist or the vendor is not visible to you.
{
"title": "Vendor not found",
"description": "Vendor with the key 5d2e7b9a-3c4f-4e8a-b1d6-9f0a2c3e4b57 was not found.",
"translation": "O fornecedor com a chave 5d2e7b9a-3c4f-4e8a-b1d6-9f0a2c3e4b57 nao foi encontrada.",
"code": "VRG000014"
}
Authentication, permission and host errors: see API Errors.