Download OpenAPI specification:Download
Data | Versão | Descrição |
---|---|---|
18/05/2020 | 1.0 | Versão para a Release 2 do PagTesouro. |
10/08/2020 | 1.1 | Mudança nos Tipos de Pagamento aceitos para o credenciamento. |
05/02/2021 | 1.2 | Informações complementares na seção 4, novas observações no "valorTarifa" enviado na solicitação de pagamento (API), além da remoção da "bandeira" (não mais enviada pelo PagTesouro). |
22/02/2021 | 1.3 | Inclusão do campo "valorServiço" no serviço Consulta de Pagamento. Inclusão do campo "informacoesAdicionais" no serviço Solicitação de Pagamento. |
04/03/2021 | 1.4 | Alteração do formato dos campos de datas nos serviços da API. Melhorias no texto da seção 6 e de alguns campos dos serviços da API. Alteração das URLs do serviço de Notificação do Pagamento. |
15/03/2021 | 1.5 | Atualização das URLs de Produção e de Testes do serviço de Notificação do Pagamento. |
09/06/2021 | 1.6 | Nova observação referente ao parâmetro "dataVencimento" na solicitação de pagamento. |
09/02/2022 | 1.7 | Alteração na seção 4 para contemplar as formas de armazenamento do CNPJ do PSP, conforme o Certificado ICP-Brasil seja de equipamento ou de aplicação. |
Este documento tem por objetivo definir as especificações e os critérios técnicos necessários para adesão dos Prestadores de Serviços de Pagamento (PSPs) ao Modelo de Credenciamento do sistema PagTesouro que foi instituído pela Secretaria do Tesouro Nacional (STN), tendo como principal objetivo o pagamento das Guias de Recolhimento da União (GRUs) pelos contribuintes de forma digital como, por exemplo, via cartão de crédito.
O conteúdo deste manual destina-se a programadores e desenvolvedores de plataformas de comércio eletrônico que desejam integrar-se ao PagTesouro para recebimento de pagamentos de GRUs, a partir do desenvolvimento e disponibilização de serviços web conforme documentados na seção "API".
Para a perfeita integração do PSP com o PagTesouro, as seguintes premissas deverão ser atendidas:
Os dados serão enviados e recebidos via serviços Web e será adotado o estilo arquitetural REST (Representational State Transfer) na construção dos serviços Web. A tabela abaixo lista os padrões de comunicação definidos para a integração do PSP com o PagTesouro:
Componente | Especificação | Observação |
---|---|---|
Tipo de Comunicação | Síncrona | |
Protocolo | HTTP v1.1 | RFC 2616 |
Formato dos dados | JSON | RFC 7159 |
Para os serviços disponíveis, a comunicação deverá contemplar os seguintes itens de segurança:
Os tipos de pagamento que estarão disponíveis no PagTesouro, para os quais o PSP poderá se integrar, são os seguintes:
No acionamento do serviço de Solicitação de Pagamento, o PagTesouro enviará para o PSP a relação dos tipos permitidos para aquele pagamento de GRU e, dessa forma, este deverá disponibilizar para o contribuinte apenas estas opções em seu ambiente de pagamento.
O domínio de valores possíveis para os tipos de pagamento permitidos no serviço de Solicitação de Pagamento será o seguinte:
Para o PagTesouro um pagamento possuirá apenas três situações possíveis após realizada a solicitação ao PSP, são estas:
As situações CONCLUIDO e REJEITADO para o PagTesouro são estados finalísticos, ou seja, não poderão mais ser alterados após o pagamento assumir essa situação.
O serviço de Consulta de Pagamento a ser implementado pelo PSP deverá retornar ao PagTesouro a situação atual do pagamento conforme seu domínio próprio.
Internamente o PagTesouro fará o mapeamento da situação retornada pelo PSP, conforme configuração prévia, para uma das três situações previstas no PagTesouro.
O PSP deverá notificar o PagTesouro, através do serviço Notificação do Pagamento, quando o pagamento for finalizado no PSP ou quando sua situação sofrer alteração.
O PSP terá um prazo de até 24 horas para que a situação do pagamento assuma um estado finalístico, em que este não possa mais ser alterado. Assim, após esse prazo, caso o pagamento não esteja finalizado, o PSP deverá cancelá-lo e notificar o PagTesouro.
Serviço para solicitar um pagamento.
Accept required | string Default: application/json;charset=UTF-8 Tipo do conteúdo aceito. |
Content-Type required | string Default: application/json;charset=UTF-8 Tipo do conteúdo enviado. |
idReferencia required | string <= 36 characters Identificador de referência do pagamento no PagTesouro. |
descricao required | string <= 250 characters Descrição do pagamento. Serviço do órgão público para o qual o contribuinte está efetuando o pagamento. |
dataVencimento | string <date-time> YYYY-MM-DD'T'hh:mm:ss'Z' Data de vencimento do pagamento (Formato ISO-8601). A hora enviada estará no horário de Brasília-DF. Caso a hora esteja zerada, deve ser considerada apenas a data para fins de validação do vencimento. Observação: O PSP não deverá permitir o pagamento após a data de vencimento enviada. Caso o vencimento não tenha sido informado ou seja uma data maior que a data corrente, o PSP deverá finalizar o pagamento em até 24h. |
valorServico required | number <decimal> <= 13.2 characters Valor do serviço (valor total da GRU). Esse é o valor cobrado pelo órgão público pela prestação do serviço ao contribuinte, sem a aplicação da tarifa do PSP. Esse valor é enviado pelo órgão ao PagTesouro na solicitação do pagamento e o mesmo deverá ser repassado ao Tesouro Nacional pelo PSP. |
valorTarifa required | number <decimal> <= 13.2 characters Valor da tarifa a ser cobrada pelo PSP sobre o valor do serviço. O valor da tarifa pode ser igual a 0 (zero). Observação 1: O valor do pagamento será calculado pelo PSP (valorServico + valorTarifa) e apresentado ao contribuinte. Observação 2: O PSP deverá validar o valorTarifa calculado pelo PagTesouro, seguindo uma regra de arredondamento semelhante a RoundingMode.HALF_UP (Java) e com 2 casas decimais (como exemplo, um valorTarifa calculado de 2.345 seria arredondado para 2.35, mas 2.344 ficaria 2.34). Em caso de divergência, o PSP deverá retornar um erro de validação (status HTTP 422). Observação 3: O valor da tarifa à vista cobrado pelo PSP (geralmente um percentual) deve ser mantido atualizado na base do PagTesouro, devendo este valor ser previamente informado à STN antes de sua vigência. |
urlRetorno required | string <= 255 characters URL de retorno para o PagTesouro após pagamento na tela do PSP. |
urlNotificacao | string <= 255 characters URL do PagTesouro para que seja notificado pelo PSP sobre o resultado final do pagamento. Observação: Apesar desta informação ser sempre enviada, o PSP não estará obrigado a tratá-la, desde que disponibilize em seu próprio site o cadastro da URL do PagTesouro para notificação. |
tipos | Array of strings <items <= 20 characters> Items Value: "CARTAO_CREDITO" Tipos de pagamento que deverão ser exibidos na tela do PSP. Observação: O não envio dessa informação implicará na exibição de todos os tipos de pagamento disponíveis. |
Array of objects <= 500 characters Informações adicionais. |
{- "idReferencia": "4pFwrmd6QLdktVyuvjAki9",
- "descricao": "Taxa de emissão de passaporte",
- "dataVencimento": "2021-03-30T00:00:00Z",
- "valorServico": 149.99,
- "valorTarifa": 7.49,
- "tipos": [
- "CARTAO_CREDITO"
], - "informacoesAdicionais": [
- {
- "nome": "Nome do Órgão",
- "valor": "ANVISA"
}
]
}
{- "idPagamento": "123456"
}
Serviço para consultar a situação de um pagamento, além de outras informações.
idReferencia required | string <= 36 characters Identificador de referência do pagamento no PagTesouro. |
Accept required | string Default: application/json;charset=UTF-8 Tipo do conteúdo aceito. |
{- "idPagamento": "123456",
- "dataCriacao": "2021-03-04T11:30:15.000Z",
- "dataAtualizacaoSituacao": "2021-03-04T11:31:08.000Z",
- "tipo": "CARTAO_CREDITO",
- "situacao": "OK",
- "valorServico": 149.99
}
Serviço para notificar ao PagTesouro a finalização de um pagamento ou uma mudança de sua situação.
Content-Type | string Default: application/json;charset=UTF-8 Tipo do conteúdo. |
idReferencia required | string <= 36 characters Identificador de referência do pagamento no PagTesouro. |
idPagamento | string <= 50 characters Identificador do pagamento no PSP. |
{- "idReferencia": "4pFwrmd6QLdktVyuvjAki9",
- "idPagamento": "123456"
}
{- "erros": [
- {
- "codigo": "001",
- "descricao": "Solicitação inválida."
}
]
}