Estamos revisando estes procedimentos. Pessoas técnicas podem encontrar ajustes em códigos de erro ou mapeamentos de payload; valide com os logs e o OpenAPI mais recente. Pessoas não técnicas podem continuar usando o passo a passo e acionar o time de suporte caso algo pareça diferente do descrito.
📄 Consulta de Faturas e Transações
Este guia apresenta os endpoints para consultar faturas e suas transações detalhadas (débitos e créditos) na API de Arrecadação Lojista.
🎯 Visão Geral
Os endpoints de faturas permitem que você:
- 📋 Consulte faturas do cliente
- 🔍 Consulte detalhes de uma fatura em específica para obter informações para pagamento, como QR Code PIX, linha digitável e etc.
- 💳 Liste transações de uma fatura em específica para obter informaoes de débitos e créditos.
URLs Base:
- Homologação:
https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2 - Produção:
https://api.credsystem.com.br/arrecadacao-lojista/api/v2
🔐 Autenticação
Todos os endpoints requerem autenticação via Bearer Token (JWT).
Header obrigatório:
Authorization: Bearer <seu_token_jwt>
Tokens inválidos ou expirados retornarão erro 401 Unauthorized.
📚 Endpoints Disponíveis
1️⃣ Consultar Faturas do Cliente
Retorna a lista de faturas vinculadas ao cliente.
Endpoint: GET /faturas
Parâmetros de consulta:
codigoEstabelecimento(string, obrigatório) – Código da loja que está consultando.cpfCliente(string, opcional) – CPF sem formatação.numeroCartao(string, opcional) – Número do cartão com 12 a 19 dígitos.
Informe pelo menos um identificador do cliente (cpfCliente ou numeroCartao). Quando ambos forem enviados, o backend prioriza validações com o número do cartão.
Exemplos de requisição:
- cURL
- JavaScript
- Python
- Java
- C#
- PHP
- Go
curl -X GET "https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2/faturas?codigoEstabelecimento=12345&cpfCliente=12345678901" \
-H "Authorization: Bearer SEU_TOKEN_JWT"
async function consultarFaturas({ codigoEstabelecimento, cpfCliente, numeroCartao }) {
const API_BASE = 'https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2';
const TOKEN = 'SEU_TOKEN_JWT';
const params = new URLSearchParams({ codigoEstabelecimento });
if (cpfCliente) params.append('cpfCliente', cpfCliente);
if (numeroCartao) params.append('numeroCartao', numeroCartao);
const response = await fetch(`${API_BASE}/faturas?${params.toString()}`, {
headers: { Authorization: `Bearer ${TOKEN}` }
});
if (!response.ok) {
const error = await response.json();
throw new Error(`HTTP ${response.status}: ${error.detalhe || error.mensagem}`);
}
return response.json();
}
consultarFaturas({ codigoEstabelecimento: '12345', cpfCliente: '12345678901' })
.then(faturas => console.log('✅ Faturas encontradas:', faturas.extrato?.length || 0))
.catch(err => console.error('❌ Erro:', err.message));
import requests
API_BASE = 'https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2'
TOKEN = 'SEU_TOKEN_JWT'
def consultar_faturas(codigo_estabelecimento, cpf_cliente=None, numero_cartao=None):
params = {'codigoEstabelecimento': codigo_estabelecimento}
if cpf_cliente:
params['cpfCliente'] = cpf_cliente
if numero_cartao:
params['numeroCartao'] = numero_cartao
response = requests.get(f'{API_BASE}/faturas', params=params, headers={'Authorization': f'Bearer {TOKEN}'}, timeout=15)
response.raise_for_status()
return response.json()
resultado = consultar_faturas('12345', cpf_cliente='12345678901')
print('✅ Faturas encontradas:', len(resultado.get('extrato', [])))
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class ConsultaFaturas {
private static final String API_BASE = "https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2";
private static final String TOKEN = "SEU_TOKEN_JWT";
public static void main(String[] args) throws Exception {
String url = API_BASE + "/faturas?codigoEstabelecimento=12345&cpfCliente=12345678901";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer " + TOKEN)
.GET()
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() == 200) {
System.out.println("✅ Faturas encontradas:");
System.out.println(response.body());
} else {
System.out.printf("❌ Erro HTTP %d: %s%n", response.statusCode(), response.body());
}
}
}
using System;
using System.Net.Http;
using System.Threading.Tasks;
var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer SEU_TOKEN_JWT");
var response = await client.GetAsync(
"https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2/faturas?codigoEstabelecimento=12345&cpfCliente=12345678901"
);
if (response.IsSuccessStatusCode)
{
Console.WriteLine("✅ Faturas encontradas:");
Console.WriteLine(await response.Content.ReadAsStringAsync());
}
else
{
Console.WriteLine($"❌ Erro HTTP {(int)response.StatusCode}: {await response.Content.ReadAsStringAsync()}");
}
<?php
$url = 'https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2/faturas?codigoEstabelecimento=12345&cpfCliente=12345678901';
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer SEU_TOKEN_JWT'],
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode === 200) {
echo "✅ Faturas encontradas:\n";
echo $response;
} else {
echo "❌ Erro HTTP {$httpCode}: {$response}\n";
}
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, err := http.NewRequest(
http.MethodGet,
"https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2/faturas",
nil,
)
if err != nil {
panic(err)
}
q := req.URL.Query()
q.Set("codigoEstabelecimento", "12345")
q.Set("cpfCliente", "12345678901")
req.URL.RawQuery = q.Encode()
req.Header.Set("Authorization", "Bearer SEU_TOKEN_JWT")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode == http.StatusOK {
fmt.Println("✅ Faturas encontradas:")
fmt.Println(string(body))
} else {
fmt.Printf("❌ Erro HTTP %d: %s\n", resp.StatusCode, string(body))
}
}
Exemplo de resposta (200 Success):
{
"status": 200,
"mensagem": "Consulta retornado com sucesso.",
"extrato": [
{
"numeroExtrato": 123341123,
"dataProcessamento": "2023-10-28T00:00:00.000Z",
"dataVencimento": "2023-11-10T00:00:00.000Z",
"valorMinimo": 18.38,
"valorSaldoAtual": 0,
"valorTotalCredito": 71.43,
"valorTotalDebito": 71.43,
"valorTotalFechamento": -69.93,
"valorSaldoAnterior": 0,
"descricaoSituacao": "Liquidado"
}
]
}
Consulte o 🔧 Guia - Faturas (GET) para validar mensagens de erro e combinações de parâmetros.
2️⃣ Consultar Faturas detalhadas
Obtém uma fatura específica em PDF, além de linha digitável, QR Code e código PIX Copia e Cola.
Endpoint: GET /faturas/extrato/{numeroExtrato}/vencimento/{dataVencimento}
Parâmetros:
numeroExtrato(inteiro, obrigatório) – Número do extrato retornado na consulta de faturas.dataVencimento(string, obrigatório) – Data do vencimento (YYYY-MM-DD).codigoEstabelecimento(string, obrigatório).cpfCliente(string, obrigatório).
Garanta que numeroExtrato e dataVencimento correspondam ao registro retornado pela listagem anterior. Inconsistências geram erro
Exemplos de requisição:
- cURL
- JavaScript
- Python
- Java
- C#
- PHP
- Go
curl -X GET "https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2/faturas/extrato/789012/vencimento/2025-12-05?codigoEstabelecimento=12345&cpfCliente=12345678901" \
-H "Authorization: Bearer SEU_TOKEN_JWT"
async function baixarFatura(numeroExtrato, dataVencimento, codigoEstabelecimento, cpfCliente) {
const API_BASE = 'https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2';
const TOKEN = 'SEU_TOKEN_JWT';
const params = new URLSearchParams({ codigoEstabelecimento });
if (cpfCliente) params.append('cpfCliente', cpfCliente);
const url = `${API_BASE}/faturas/extrato/${numeroExtrato}/vencimento/${dataVencimento}?${params.toString()}`;
const response = await fetch(url, {
headers: { Authorization: `Bearer ${TOKEN}` }
});
if (!response.ok) {
const error = await response.json();
throw new Error(`HTTP ${response.status}: ${error.detalhe || error.mensagem}`);
}
return response.json();
}
baixarFatura(789012, '2025-12-05', '12345', '12345678901')
.then(dados => console.log('📄 Fatura recebida:', !!dados.respostaFatura?.faturaBase64))
.catch(err => console.error('❌ Erro:', err.message));
import requests
API_BASE = 'https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2'
TOKEN = 'SEU_TOKEN_JWT'
def baixar_fatura(numero_extrato, data_vencimento, codigo_estabelecimento, cpf_cliente):
params = {
'codigoEstabelecimento': codigo_estabelecimento,
'cpfCliente': cpf_cliente,
}
url = f"{API_BASE}/faturas/extrato/{numero_extrato}/vencimento/{data_vencimento}"
response = requests.get(url, params=params, headers={'Authorization': f'Bearer {TOKEN}'}, timeout=20)
response.raise_for_status()
return response.json()
dados = baixar_fatura(789012, '2025-12-05', '12345', '12345678901')
print('📄 Fatura recebida:', bool(dados.get('faturaBase64')))
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class BaixarFatura {
private static final String API_BASE = "https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2";
private static final String TOKEN = "SEU_TOKEN_JWT";
public static void main(String[] args) throws Exception {
String url = API_BASE + "/faturas/extrato/789012/vencimento/2025-12-05?codigoEstabelecimento=12345&cpfCliente=12345678901";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer " + TOKEN)
.GET()
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() == 200) {
System.out.println("📄 Fatura recebida:");
System.out.println(response.body());
} else {
System.out.printf("❌ Erro HTTP %d: %s%n", response.statusCode(), response.body());
}
}
}
using System;
using System.Net.Http;
using System.Threading.Tasks;
var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer SEU_TOKEN_JWT");
var response = await client.GetAsync(
"https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2/faturas/extrato/789012/vencimento/2025-12-05?codigoEstabelecimento=12345&cpfCliente=12345678901"
);
if (response.IsSuccessStatusCode)
{
Console.WriteLine("📄 Fatura recebida:");
Console.WriteLine(await response.Content.ReadAsStringAsync());
}
else
{
Console.WriteLine($"❌ Erro HTTP {(int)response.StatusCode}: {await response.Content.ReadAsStringAsync()}");
}
<?php
$url = 'https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2/faturas/extrato/789012/vencimento/2025-12-05?codigoEstabelecimento=12345&cpfCliente=12345678901';
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer SEU_TOKEN_JWT'],
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode === 200) {
echo "📄 Fatura recebida:\n";
echo $response;
} else {
echo "❌ Erro HTTP {$httpCode}: {$response}\n";
}
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, err := http.NewRequest(
http.MethodGet,
"https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2/faturas/extrato/789012/vencimento/2025-12-05",
nil,
)
if err != nil {
panic(err)
}
q := req.URL.Query()
q.Set("codigoEstabelecimento", "12345")
q.Set("cpfCliente", "12345678901")
req.URL.RawQuery = q.Encode()
req.Header.Set("Authorization", "Bearer SEU_TOKEN_JWT")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode == http.StatusOK {
fmt.Println("📄 Fatura recebida:")
fmt.Println(string(body))
} else {
fmt.Printf("❌ Erro HTTP %d: %s\n", resp.StatusCode, string(body))
}
}
Exemplo de resposta (200 Success):
{
"status": 200,
"mensagem": "Consulta de dados retornada com sucesso.",
"faturaBase64": "JVBERi0xLjUKJeLjz9MKMyc1BlckNvbXBvbmVudCA4Pj5zdHJlYW0KaN7tmm9MG2Ucx2...",
"qrCodeBase64": "JVBERi0xLjUKJeLjz9MKMyc1BlckNvbXBvbmVudCA4Pj5zdHJlYW0KaN7tmm9MG2Ucx2...",
"pixCopiaCola": "00020101021226820014BR.GOV.BCB.PIX2560api.banco123/pix/qr/v2/cobv/d8e434bd-3e02-445a"
}
Verifique o 🔧 Troubleshooting - Fatura Detalhada para divergências de parâmetros ou indisponibilidade.
3️⃣ Listar Transações da Fatura
Retorna os lançamentos de débito e crédito vinculados ao extrato selecionado.
Endpoint: GET /faturas/extrato/{numeroExtrato}/vencimento/{dataVencimento}/transacoes
Parâmetros:
numeroExtrato(inteiro, obrigatório) – Número do extrato retornado na consulta de faturas.dataVencimento(string, obrigatório) – Data do vencimento (YYYY-MM-DD).codigoEstabelecimento(string, obrigatório).cpfCliente(string, obrigatório).
Exemplos de requisição:
- cURL
- JavaScript
- Python
- Java
- C#
- PHP
- Go
curl -X GET "https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2/faturas/extrato/789012/vencimento/2025-12-05/transacoes?codigoEstabelecimento=12345&cpfCliente=12345678901" \
-H "Authorization: Bearer SEU_TOKEN_JWT"
async function listarTransacoesFatura(numeroExtrato, dataVencimento, codigoEstabelecimento, cpfCliente) {
const API_BASE = 'https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2';
const TOKEN = 'SEU_TOKEN_JWT';
const params = new URLSearchParams({ codigoEstabelecimento });
if (cpfCliente) params.append('cpfCliente', cpfCliente);
const url = `${API_BASE}/faturas/extrato/${numeroExtrato}/vencimento/${dataVencimento}/transacoes?${params.toString()}`;
const response = await fetch(url, {
headers: { Authorization: `Bearer ${TOKEN}` }
});
if (!response.ok) {
const error = await response.json();
throw new Error(`HTTP ${response.status}: ${error.detalhe || error.mensagem}`);
}
return response.json();
}
listarTransacoesFatura(789012, '2025-12-05', '12345', '12345678901')
.then(dados => console.log('📊 Transações retornadas:', dados.transacoes?.debitoExtrato_transacoes?.length || 0))
.catch(err => console.error('❌ Erro:', err.message));
import requests
API_BASE = 'https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2'
TOKEN = 'SEU_TOKEN_JWT'
def listar_transacoes(numero_extrato, data_vencimento, codigo_estabelecimento, cpf_cliente):
params = {
'codigoEstabelecimento': codigo_estabelecimento,
'cpfCliente': cpf_cliente,
}
url = f"{API_BASE}/faturas/extrato/{numero_extrato}/vencimento/{data_vencimento}/transacoes"
response = requests.get(url, params=params, headers={'Authorization': f'Bearer {TOKEN}'}, timeout=20)
response.raise_for_status()
return response.json()
dados = listar_transacoes(789012, '2025-12-05', '12345', '12345678901')
print('📊 Transações retornadas:', len(dados.get('debitoExtratos', [])))
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class ListarTransacoes {
private static final String API_BASE = "https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2";
private static final String TOKEN = "SEU_TOKEN_JWT";
public static void main(String[] args) throws Exception {
String url = API_BASE + "/faturas/extrato/789012/vencimento/2025-12-05/transacoes?codigoEstabelecimento=12345&cpfCliente=12345678901";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer " + TOKEN)
.GET()
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() == 200) {
System.out.println("📊 Transações retornadas:");
System.out.println(response.body());
} else {
System.out.printf("❌ Erro HTTP %d: %s%n", response.statusCode(), response.body());
}
}
}
using System;
using System.Net.Http;
using System.Threading.Tasks;
var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer SEU_TOKEN_JWT");
var response = await client.GetAsync(
"https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2/faturas/extrato/789012/vencimento/2025-12-05/transacoes?codigoEstabelecimento=12345&cpfCliente=12345678901"
);
if (response.IsSuccessStatusCode)
{
Console.WriteLine("📊 Transações retornadas:");
Console.WriteLine(await response.Content.ReadAsStringAsync());
}
else
{
Console.WriteLine($"❌ Erro HTTP {(int)response.StatusCode}: {await response.Content.ReadAsStringAsync()}");
}
<?php
$url = 'https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2/faturas/extrato/789012/vencimento/2025-12-05/transacoes?codigoEstabelecimento=12345&cpfCliente=12345678901';
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer SEU_TOKEN_JWT'],
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode === 200) {
echo "📊 Transações retornadas:\n";
echo $response;
} else {
echo "❌ Erro HTTP {$httpCode}: {$response}\n";
}
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, err := http.NewRequest(
http.MethodGet,
"https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2/faturas/extrato/789012/vencimento/2025-12-05/transacoes",
nil,
)
if err != nil {
panic(err)
}
q := req.URL.Query()
q.Set("codigoEstabelecimento", "12345")
q.Set("cpfCliente", "12345678901")
req.URL.RawQuery = q.Encode()
req.Header.Set("Authorization", "Bearer SEU_TOKEN_JWT")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if resp.StatusCode == http.StatusOK {
fmt.Println("📊 Transações retornadas:")
fmt.Println(string(body))
} else {
fmt.Printf("❌ Erro HTTP %d: %s\n", resp.StatusCode, string(body))
}
}
Exemplo de resposta (200 Success):
{
"status": 200,
"mensagem": "Consulta de dados retornada com sucesso.",
"debitoExtratos": [
{
"codigoCliente": 97079980,
"codigoTransacao": 1,
"dataHoraDebito": "2024-09-29T00:00:00.000Z",
"dataVencimento": "2024-11-29T00:00:00.000Z",
"numeroBin": 960339,
"numeroExtrato": 333118837,
"valorDebito": 57.94,
"codigoEstabelecimento": 29586,
"numeroContrato": 692156469,
"numeroParcela": 2,
"flagPermiteCNR": false
}
],
"creditoExtratos": [
{
"codigoCliente": 97079980,
"codigoTransacao": 1,
"dataCredito": "2024-09-29T00:00:00.000Z",
"dataVencimento": "2024-11-29T00:00:00.000Z",
"flagDesfazimento": false,
"numeroBin": 960339,
"numeroCreditoExtrato": 51123451,
"numeroExtrato": 12333221,
"valorCredito": 57.94,
}
]
}
Veja o 🔧 Troubleshooting - Transações da Fatura para validações adicionais.
💡 Dicas e Boas Práticas
✅ Recomendações
- Valide os dados antes de enviar - Verifique CPF, número do cartão, valores e códigos localmente antes de fazer a requisição
- Armazene o traceId - Use para rastrear problemas com o suporte técnico
- Implemente retry com backoff - Em caso de erro 503, tente novamente após alguns segundos
- Cache de tokens - Evite gerar novos tokens a cada requisição
- Valide pré-autorizações - Sempre consulte o status antes de efetivar
- Desfazimento no mesmo dia - Implemente controle para permitir desfazimento apenas no dia da efetivação
❌ Evite
- ❌ Não exponha o token JWT no frontend
- ❌ Não tente efetivar pré-autorizações PIX manualmente
- ❌ Não ignore os códigos de status HTTP
- ❌ Não faça polling excessivo no endpoint de status
🆘 Suporte
Contato Técnico
- Email: suporte.tecnico@credsystem.com.br
- Horário: Segunda a Sexta, 8h às 18h (BRT)
Em Caso de Erro
- Anote o traceId retornado no erro
- Capture a requisição completa (sem dados sensíveis)
- Descreva o comportamento esperado vs. obtido
- Envie para o email de suporte com assunto:
[API Arrecadação v2] - Descrição do Problema
📄 Licença
Apache 2.0
Última atualização: 24 de Fevereiro de 2026 Versão da API: 2.0