Skip to main content

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_date is 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​

Available on
ProfileHostRequired permission
Managermanager-apiWrite
Consultantconsultant-apiActive integration

Base URL for each host: Environments (Hosts).

ENDPOINT
/vendor_registry/vendor/{vendor_key}/signer_group
METHOD
POST

Path parameters​

ParameterTypeDescription
vendor_keystringVendor key (UUID).
Request body
{
"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​

FieldTypeRequiredDescription
minimum_required_signersintegerYesHow many signatures are enough. Minimum 1, at most the number of signers.
signersarrayYesAt least one signer.
signers[].namestringYesName, from 1 to 255 characters.
signers[].document_numberstringYesCPF 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_signerbooleanNoAccepted but ignored: QI Tech recalculates the value (see response attributes).
signers[].emailstringYesEmail, from 1 to 255 characters.
is_defaultbooleanNoMakes this the default group, demoting the previous one. Default: false. The vendor's first group is always the default.
expiration_datestringNoGroup expiration date, YYYY-MM-DD. It cannot be earlier than today's date in UTC (400, VRG000096); today's date itself is accepted.

Response​

STATUS
201
Response body
{
"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​

FieldTypeDescription
signer_group_keystringGroup key (UUID).
minimum_required_signersintegerRequired signatures.
is_defaultbooleanVendor's default group.
signersarraySigners. 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.
statusstringvalid 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_keystringAnalysis that originated the group, or null for groups declared through this call and for the automatic group created with an individual vendor.
expiration_datestringExpiration date, YYYY-MM-DD. Present only when provided.

List signer groups​

Available on
ProfileHostRequired permission
Managermanager-apiRead
Consultantconsultant-apiActive integration

Base URL for each host: Environments (Hosts).

ENDPOINT
/vendor_registry/vendor/{vendor_key}/signer_group
METHOD
GET

Query parameters​

ParameterTypeRequiredDescription
limitintegerNoItems per page, from 0 to 1000. Default: 10.
pageintegerNoPage, starting at 0. Default: 0.

Returns all of the vendor's groups, in any status, from oldest to newest.

Response​

STATUS
200
Response body
{
"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​

STATUS
400
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"
}
STATUS
404
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.

Next step​

Analysis submission.