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.
💳 API de Arrecadação Lojista
Este guia apresenta o passo a passo para integração com o serviço de arrecadação de títulos em estabelecimentos lojistas, incluindo os pagamentos dos t ítulos.
🎯 Visão Geral
A API de Arrecadação Lojista permite que você:
- 📋 Consulte títulos de clientes disponíveis para pagamento
- 🔐 Crie pré-autorizações para validar arrecadações
- 📱 Gere QR Codes PIX para pagamento instantâneo
- ✅ Efetive pagamentos de títulos
- 🔍 Consulte status de pagamentos efetivados
- ❌ Desfaça arrecadações quando necessário
URLs Base:
- Homologação:
https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2 - Produção:
https://api.credsystem.com.br/arrecadacao-lojista/api/v2
- 🔧 Guia de Troubleshooting - Solução de problemas e erros comuns
🔐 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 Títulos do Cliente
Retorna todos os títulos elegíveis para arrecadação em um estabelecimento específico.
Endpoint: GET /consulta-titulo
Parâmetros de consulta:
cpfCliente(string, obrigatório) – CPF do cliente sem formatação.codigoEstabelecimento(string, obrigatório) – Código numérico da loja que está realizando a consulta.
- Utilize sempre o mesmo
codigoEstabelecimentorecebido no cadastro da rede. - Execute uma nova consulta caso o cliente informe novos títulos ou se a página ficar inativa por vários minutos.
Exemplos de requisição:
- cURL
- JavaScript
- Python
- Java
- C#
- PHP
- Go
curl -X GET "https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2/consulta-titulo?cpfCliente=12345678901&codigoEstabelecimento=12345" \
-H "Authorization: Bearer SEU_TOKEN_JWT"
const API_BASE = 'https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2';
const TOKEN = 'SEU_TOKEN_JWT';
async function consultarTitulos() {
const response = await fetch(
`${API_BASE}/consulta-titulo?cpfCliente=12345678901&codigoEstabelecimento=12345`,
{
headers: { Authorization: `Bearer ${TOKEN}` }
}
);
if (!response.ok) {
const error = await response.json();
throw new Error(`HTTP ${response.status}: ${error.detalhe || error.mensagem}`);
}
const data = await response.json();
console.log(`✅ Títulos encontrados: ${data.cliente?.extratos?.length || 0}`);
return data;
}
consultarTitulos().catch(err => console.error('❌ Erro:', err.message));
import requests
API_BASE = 'https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2'
TOKEN = 'SEU_TOKEN_JWT'
response = requests.get(
f'{API_BASE}/consulta-titulo',
params={'cpfCliente': '12345678901', 'codigoEstabelecimento': 12345},
headers={'Authorization': f'Bearer {TOKEN}'},
timeout=15
)
response.raise_for_status()
dados = response.json()
print('✅ Consulta realizada:', dados.get('mensagem'))
print('Extratos retornados:', len(dados.get('cliente', {}).get('extratos', [])))
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class ConsultaTitulos {
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 {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(API_BASE + "/consulta-titulo?cpfCliente=12345678901&codigoEstabelecimento=12345"))
.header("Authorization", "Bearer " + TOKEN)
.GET()
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() == 200) {
System.out.println("✅ Consulta realizada:");
System.out.println(response.body());
} else {
throw new IllegalStateException("Erro HTTP " + response.statusCode() + ": " + response.body());
}
}
}
using System;
using System.Net.Http;
using System.Threading.Tasks;
using 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/consulta-titulo?cpfCliente=12345678901&codigoEstabelecimento=12345"
);
response.EnsureSuccessStatusCode();
Console.WriteLine("✅ Consulta realizada:");
Console.WriteLine(await response.Content.ReadAsStringAsync());
<?php
$ch = curl_init('https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2/consulta-titulo?cpfCliente=12345678901&codigoEstabelecimento=12345');
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 "✅ Consulta realizada:\n";
echo $response, "\n";
} else {
echo "❌ Erro HTTP {$httpCode}: {$response}\n";
}
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest(
http.MethodGet,
"https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2/consulta-titulo",
nil,
)
q := req.URL.Query()
q.Set("cpfCliente", "12345678901")
q.Set("codigoEstabelecimento", "12345")
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)
fmt.Printf("Status: %s\n", resp.Status)
fmt.Println(string(body))
}
Exemplo de resposta (200 OK):
{
"status": 200,
"mensagem": "string",
"cliente": {
"cpf": "string",
"diaMesNascimento": "string",
"nome": "string",
"nomeEstabelecimento": "string",
"extratos": [
{
"numeroExtrato": 0,
"situacao": "string",
"dataVencimento": "2025-01-01T00:00:00.000Z",
"valorOriginal": 0.0,
"valor": 0.0,
"valorEncargos": 0.0,
"valorMinimo": 0.0,
"valorTotal": 0.0,
"valorTotalComSeguro": 0.0,
"valorTotalComAntecipacao": 0.0,
"bin": 0,
"nomeCartao": "string",
"parcelamentoExtrato": [
{
"cabecalho": "string",
"rodape": "string",
"tipoParcelamento": 0,
"parcelas": [
{
"qtdParcelas": 0,
"valorParcela": 0.0
}
]
}
]
}
],
"contratos": [
{
"parcelas": [
{
"loja": 0,
"contrato": 0,
"parcela": 0,
"valor": 0.0,
"vencimento": "2025-01-01T00:00:00.000Z",
"encargos": 0.0,
"desconto": 0.0,
"situacao": "string",
"valorOriginal": 0.0
}
]
}
],
"acordos": [
{
"parcelas": [
{
"loja": 0,
"contrato": 0,
"parcela": 0,
"valor": 0.0,
"vencimento": "2025-01-01T00:00:00.000Z",
"encargos": 0.0,
"desconto": 0.0,
"situacao": "string"
}
]
}
],
"contratosPromocionais": [
{
"loja": 0,
"codigoContrato": "string",
"valorOriginal": 0.0,
"valorEncargos": 0.0,
"valorDesconto": 0.0,
"dividaRemanescente": 0.0,
"valorArrecadado": 0.0,
"parcelasConsolidadas": [
0,
0
]
}
],
"extratosPromocionais": [
{
"numeroExtato": 0,
"valorOriginal": 0.0,
"valorEncargos": 0.0,
"valorDesconto": 0.0,
"dividaRemanescente": 0.0,
"valorPromocao": 0.0
}
]
}
}
Consulte o 🔧 Guia de Troubleshooting - Consulta de Títulos para erros mais comuns e ações recomendadas.
2️⃣ Criar Pré-Autorização
Valida os dados retornados na consulta e gera uma pré-autorização para pagamento.
Endpoint: POST /pre-autorizacao
Corpo da requisição (JSON):
{
"valorTotal": 0,
"cpfCliente": "string",
"codigoEstabelecimento": 0,
"intervaloEntreEfetivacao": 0,
"carne": {
"parcelas": [
{
"loja": 0,
"contrato": 0,
"parcela": 0
}
]
},
"acordo": {
"parcelas": [
{
"loja": 0,
"contrato": 0,
"parcela": 0
}
]
},
"promocaoContrato": [
{
"contrato": 0,
"loja": 0
}
],
"extrato": [
{
"extrato": 0,
"valorPago": 0
}
],
"promocaoExtrato": [
{
"NumeroExtato": 0
}
]
}
- Envie apenas os blocos correspondentes (
carne,extrato,acordo,promocaoContrato,promocaoExtrato) quando eles tiverem sido retornados na consulta de títulos. - codigoEstabelecimento deve ser o mesmo utilizado na consulta; o backend valida divergências.
Exemplos de requisição:
- cURL
- JavaScript
- Python
- Java
- C#
- PHP
- Go
curl -X POST "https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2/pre-autorizacao" \
-H "Authorization: Bearer SEU_TOKEN_JWT" \
-H "Content-Type: application/json" \
-d '{
"valorTotal": 0,
"cpfCliente": "string",
"codigoEstabelecimento": 0,
"carne": {
"parcelas": [
{
"loja": 0,
"contrato": 0,
"parcela": 0
}
]
},
"acordo": {
"parcelas": [
{
"loja": 0,
"contrato": 0,
"parcela": 0
}
]
},
"promocaoContrato": [
{
"contrato": 0,
"loja": 0
}
],
"extrato": [
{
"extrato": 0,
"valorPago": 0
}
],
"promocaoExtrato": [
{
"NumeroExtato": 0
}
]
}'
const API_BASE = 'https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2';
const TOKEN = 'SEU_TOKEN_JWT';
async function criarPreAutorizacao() {
const payload = {
"valorTotal": 0,
"cpfCliente": "string",
"codigoEstabelecimento": 0,
"carne": {
"parcelas": [
{
"loja": 0,
"contrato": 0,
"parcela": 0
}
]
},
"acordo": {
"parcelas": [
{
"loja": 0,
"contrato": 0,
"parcela": 0
}
]
},
"promocaoContrato": [
{
"contrato": 0,
"loja": 0
}
],
"extrato": [
{
"extrato": 0,
"valorPago": 0
}
],
"promocaoExtrato": [
{
"NumeroExtato": 0
}
]
};
const response = await fetch(`${API_BASE}/pre-autorizacao`, {
method: 'POST',
headers: {
Authorization: `Bearer ${TOKEN}`,
'Content-Type': 'application/json'
},
body: JSON.stringify(payload)
});
if (!response.ok) {
const error = await response.json();
throw new Error(`HTTP ${response.status}: ${error.detalhe || error.mensagem}`);
}
const data = await response.json();
console.log('✅ Pré-autorização criada:', data.codigoPreAutorizacao);
return data;
}
criarPreAutorizacao().catch(err => console.error('❌ Erro:', err.message));
import json
import requests
API_BASE = 'https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2'
TOKEN = 'SEU_TOKEN_JWT'
payload = {
"valorTotal": 0,
"cpfCliente": "string",
"codigoEstabelecimento": 0,
"carne": {
"parcelas": [
{
"loja": 0,
"contrato": 0,
"parcela": 0
}
]
},
"acordo": {
"parcelas": [
{
"loja": 0,
"contrato": 0,
"parcela": 0
}
]
},
"promocaoContrato": [
{
"contrato": 0,
"loja": 0
}
],
"extrato": [
{
"extrato": 0,
"valorPago": 0
}
],
"promocaoExtrato": [
{
"NumeroExtato": 0
}
]
}
response = requests.post(
f'{API_BASE}/pre-autorizacao',
headers={
'Authorization': f'Bearer {TOKEN}',
'Content-Type': 'application/json'
},
json=payload,
timeout=30
)
response.raise_for_status()
print(json.dumps(response.json(), indent=2, ensure_ascii=False))
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class PreAutorizacao {
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 payload = """
{
\"codigoEstabelecimento\": 12345,
\"cpfCliente\": \"12345678901\",
\"valorTotal\": 525.0,
\"extrato\": [
{
\"numeroExtrato\": 123456,
\"valorPago\": 525.0
}
],
\"carne\": {
\"parcelasCarnes\": [
{
\"loja\": 12345,
\"contrato\": 987654,
\"parcela\": 1
}
]
},
\"acordo\": {
\"parcelasAcordos\": [
{
\"loja\": 12345,
\"contrato\": 555111,
\"parcela\": 1
}
]
},
\"promocaoContratos\": [
{
\"loja\": 12345,
\"contrato\": 123456789
}
],
\"promocaoExtratos\": [
{
\"numeroExtrato\": 654321
}
]
}
""";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(API_BASE + "/pre-autorizacao"))
.header("Authorization", "Bearer " + TOKEN)
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() == 201) {
System.out.println("✅ Pré-autorização criada: " + response.body());
} else {
throw new IllegalStateException("Erro HTTP " + response.statusCode() + ": " + response.body());
}
}
}
using System;
using System.Net.Http;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
var payload = new
{
codigoEstabelecimento = 12345,
cpfCliente = "12345678901",
valorTotal = 525.0m,
extrato = new[]
{
new { numeroExtrato = 123456, valorPago = 525.0m }
},
carne = new
{
parcelasCarnes = new[]
{
new { loja = 12345, contrato = 987654, parcela = 1 }
}
},
acordo = new
{
parcelasAcordos = new[]
{
new { loja = 12345, contrato = 555111, parcela = 1 }
}
},
promocaoContratos = new[]
{
new { loja = 12345, contrato = 123456789 }
},
promocaoExtratos = new[]
{
new { numeroExtrato = 654321 }
}
};
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer SEU_TOKEN_JWT");
var content = new StringContent(JsonSerializer.Serialize(payload), Encoding.UTF8, "application/json");
var response = await client.PostAsync(
"https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2/pre-autorizacao",
content
);
Console.WriteLine(await response.Content.ReadAsStringAsync());
<?php
$payload = [
'codigoEstabelecimento' => 12345,
'cpfCliente' => '12345678901',
'valorTotal' => 525.0,
'extrato' => [
[
'numeroExtrato' => 123456,
'valorPago' => 525.0,
],
],
'carne' => [
'parcelasCarnes' => [
[
'loja' => 12345,
'contrato' => 987654,
'parcela' => 1,
],
],
],
'acordo' => [
'parcelasAcordos' => [
[
'loja' => 12345,
'contrato' => 555111,
'parcela' => 1,
],
],
],
'promocaoContratos' => [
[
'loja' => 12345,
'contrato' => 123456789,
],
],
'promocaoExtratos' => [
[
'numeroExtrato' => 654321,
],
],
];
$ch = curl_init('https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2/pre-autorizacao');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_HTTPHEADER => [
'Authorization: Bearer SEU_TOKEN_JWT',
'Content-Type: application/json',
],
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response, PHP_EOL;
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)
func main() {
payload := map[string]any{
"codigoEstabelecimento": 12345,
"cpfCliente": "12345678901",
"valorTotal": 525.0,
"extrato": []map[string]any{
{
"numeroExtrato": 123456,
"valorPago": 525.0,
},
},
"carne": map[string]any{
"parcelasCarnes": []map[string]any{
{
"loja": 12345,
"contrato": 987654,
"parcela": 1,
},
},
},
"acordo": map[string]any{
"parcelasAcordos": []map[string]any{
{
"loja": 12345,
"contrato": 555111,
"parcela": 1,
},
},
},
"promocaoContratos": []map[string]any{
{
"loja": 12345,
"contrato": 123456789,
},
},
"promocaoExtratos": []map[string]any{
{
"numeroExtrato": 654321,
},
},
}
body, _ := json.Marshal(payload)
req, _ := http.NewRequest(
http.MethodPost,
"https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2/pre-autorizacao",
bytes.NewReader(body),
)
req.Header.Set("Authorization", "Bearer SEU_TOKEN_JWT")
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println(resp.Status)
}
Exemplo de resposta (201 Created):
{
"status": 201,
"mensagem": "Pré-autorização criada com sucesso.",
"dataHora": "2026-01-26T18:00:04.232Z",
"codigoPreAutorizacao": 502196354,
"traceId": "0yhCec94LD0vd1Xr6KTk"
}
Guarde o codigoPreAutorizacao retornado – ele será necessário para efetivar o pagamento.
Consulte o 🔧 Guia de Troubleshooting - Pré-Autorização para validações detalhadas.
3️⃣ Criar Pré-Autorização com PIX
Valida os dados e gera uma pré-autorização com QR Code PIX para pagamento instantâneo.
Endpoint: POST /pre-autorizacao/pix
Corpo da Requisição (JSON):
{
"estacao": "string",
"usuario": "string",
"codigoEstabelecimento": 0,
"cpfCliente": "string",
"valorTotal": 0,
"extrato": [
{
"numeroExtrato": 0,
"valorPago": 0
}
],
"carne": {
"parcelasCarnes": [
{
"loja": 0,
"contrato": 0,
"parcela": 0
}
]
},
"acordo": {
"parcelasAcordos": [
{
"loja": 0,
"contrato": 0,
"parcela": 0
}
]
},
"promocaoContratos": [
{
"loja": 0,
"contrato": 0
}
],
"promocaoExtratos": [
{
"numeroExtrato": 0
}
],
"emprestimo": {
"parcela": [
{
"loja": 0,
"contrato": 0,
"parcela": 0,
"tipo": "string"
}
]
}
}
- Envie apenas os blocos correspondentes (
carne,extrato,acordo,promocaoContrato,promocaoExtrato,emprestimo) quando eles tiverem sido retornados na consulta de títulos codigoEstabelecimentodeve ser o mesmo utilizado na consulta; o backend valida divergências.- o atributo tipo da parcela do empréstimo, são: NEPL (Empréstimo Pessoal Liquidação) e NEPA (Empréstimo Pessoal antecipação)
Exemplos de Requisição:
- cURL
- JavaScript
- Python
- Java
- C#
- PHP
- Go
curl -X POST "https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2/pre-autorizacao/pix" \
-H "Authorization: Bearer SEU_TOKEN_JWT" \
-H "Content-Type: application/json" \
-d '{
"estacao": "CAIXA-01",
"usuario": "atendente01",
"codigoEstabelecimento": 12345,
"cpfCliente": "12345678901",
"valorTotal": 525.0,
"extrato": [
{
"numeroExtrato": 123456,
"valorPago": 525.0
}
],
"carne": {
"parcelasCarnes": [
{
"loja": 12345,
"contrato": 987654,
"parcela": 1
}
]
},
"acordo": {
"parcelasAcordos": [
{
"loja": 12345,
"contrato": 555111,
"parcela": 1
}
]
},
"promocaoContratos": [
{
"loja": 12345,
"contrato": 123456789
}
],
"promocaoExtratos": [
{
"numeroExtrato": 654321
}
],
"emprestimo": {
"parcela": [
{
"loja": 12345,
"contrato": 777777,
"parcela": 3,
"tipo": "PESSOAL"
}
]
}
}'
const API_BASE = 'https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2';
const TOKEN = 'SEU_TOKEN_JWT';
async function criarPreAutorizacaoPix() {
const payload = {
estacao: 'CAIXA-01',
usuario: 'atendente01',
codigoEstabelecimento: 12345,
cpfCliente: '12345678901',
valorTotal: 525.0,
extrato: [
{
numeroExtrato: 123456,
valorPago: 525.0,
},
],
carne: {
parcelasCarnes: [
{
loja: 12345,
contrato: 987654,
parcela: 1,
},
],
},
acordo: {
parcelasAcordos: [
{
loja: 12345,
contrato: 555111,
parcela: 1,
},
],
},
promocaoContratos: [
{
loja: 12345,
contrato: 123456789,
},
],
promocaoExtratos: [
{
numeroExtrato: 654321,
},
],
emprestimo: {
parcela: [
{
loja: 12345,
contrato: 777777,
parcela: 3,
tipo: 'PESSOAL',
},
],
},
};
try {
const response = await fetch(`${API_BASE}/pre-autorizacao/pix`, {
method: 'POST',
headers: {
Authorization: `Bearer ${TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify(payload),
});
if (!response.ok) {
const error = await response.json();
throw new Error(`HTTP ${response.status}: ${error.detalhe || error.mensagem}`);
}
const data = await response.json();
console.log('✅ Pré-autorização PIX criada:', data.codigoPreAutorizacao);
console.log('📎 PIX Copia e Cola:', data.pixCopiaCola);
return data;
} catch (error) {
console.error('❌ Erro ao criar pré-autorização PIX:', error.message);
throw error;
}
}
criarPreAutorizacaoPix();
import json
import requests
API_BASE = 'https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2'
TOKEN = 'SEU_TOKEN_JWT'
def criar_pre_autorizacao_pix():
url = f'{API_BASE}/pre-autorizacao/pix'
headers = {
'Authorization': f'Bearer {TOKEN}',
'Content-Type': 'application/json'
}
payload = {
'estacao': 'CAIXA-01',
'usuario': 'atendente01',
'codigoEstabelecimento': 12345,
'cpfCliente': '12345678901',
'valorTotal': 525.0,
'extrato': [
{
'numeroExtrato': 123456,
'valorPago': 525.0
}
],
'carne': {
'parcelasCarnes': [
{
'loja': 12345,
'contrato': 987654,
'parcela': 1
}
]
},
'acordo': {
'parcelasAcordos': [
{
'loja': 12345,
'contrato': 555111,
'parcela': 1
}
]
},
'promocaoContratos': [
{
'loja': 12345,
'contrato': 123456789
}
],
'promocaoExtratos': [
{
'numeroExtrato': 654321
}
],
'emprestimo': {
'parcela': [
{
'loja': 12345,
'contrato': 777777,
'parcela': 3,
'tipo': 'PESSOAL'
}
]
}
}
try:
response = requests.post(url, headers=headers, json=payload)
response.raise_for_status()
data = response.json()
print('✅ Pré-autorização PIX criada:', data['codigoPreAutorizacao'])
print('📎 PIX Copia e Cola:', data['pixCopiaCola'])
return data
except requests.exceptions.HTTPError as exc:
detail = exc.response.json() if exc.response else {}
print(f"❌ Erro HTTP {exc.response.status_code}: {detail.get('detalhe', str(exc))}")
raise
except requests.exceptions.RequestException as exc:
print(f'❌ Erro na requisição: {exc}')
raise
criar_pre_autorizacao_pix()
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
public class PreAutorizacaoPix {
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 {
var payload = new JsonObject();
payload.addProperty("estacao", "CAIXA-01");
payload.addProperty("usuario", "atendente01");
payload.addProperty("codigoEstabelecimento", 12345);
payload.addProperty("cpfCliente", "12345678901");
payload.addProperty("valorTotal", 525.0);
var extrato = new JsonObject();
extrato.addProperty("numeroExtrato", 123456);
extrato.addProperty("valorPago", 525.0);
var extratos = new com.google.gson.JsonArray();
extratos.add(extrato);
payload.add("extrato", extratos);
var carne = new JsonObject();
var parcelasCarnes = new com.google.gson.JsonArray();
var parcelaCarne = new JsonObject();
parcelaCarne.addProperty("loja", 12345);
parcelaCarne.addProperty("contrato", 987654);
parcelaCarne.addProperty("parcela", 1);
parcelasCarnes.add(parcelaCarne);
carne.add("parcelasCarnes", parcelasCarnes);
payload.add("carne", carne);
var acordo = new JsonObject();
var parcelasAcordos = new com.google.gson.JsonArray();
var parcelaAcordo = new JsonObject();
parcelaAcordo.addProperty("loja", 12345);
parcelaAcordo.addProperty("contrato", 555111);
parcelaAcordo.addProperty("parcela", 1);
parcelasAcordos.add(parcelaAcordo);
acordo.add("parcelasAcordos", parcelasAcordos);
payload.add("acordo", acordo);
var promocaoContratos = new com.google.gson.JsonArray();
var contratoPromocional = new JsonObject();
contratoPromocional.addProperty("loja", 12345);
contratoPromocional.addProperty("contrato", 123456789);
promocaoContratos.add(contratoPromocional);
payload.add("promocaoContratos", promocaoContratos);
var promocaoExtratos = new com.google.gson.JsonArray();
var extratoPromocional = new JsonObject();
extratoPromocional.addProperty("numeroExtrato", 654321);
promocaoExtratos.add(extratoPromocional);
payload.add("promocaoExtratos", promocaoExtratos);
var emprestimo = new JsonObject();
var parcelasEmprestimo = new com.google.gson.JsonArray();
var parcelaEmprestimo = new JsonObject();
parcelaEmprestimo.addProperty("loja", 12345);
parcelaEmprestimo.addProperty("contrato", 777777);
parcelaEmprestimo.addProperty("parcela", 3);
parcelaEmprestimo.addProperty("tipo", "PESSOAL");
parcelasEmprestimo.add(parcelaEmprestimo);
emprestimo.add("parcela", parcelasEmprestimo);
payload.add("emprestimo", emprestimo);
Gson gson = new Gson();
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(API_BASE + "/pre-autorizacao/pix"))
.header("Authorization", "Bearer " + TOKEN)
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(gson.toJson(payload)))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() == 201) {
System.out.println("✅ Pré-autorização PIX criada!");
System.out.println(response.body());
} else {
throw new RuntimeException("❌ Erro HTTP " + response.statusCode() + " - " + response.body());
}
}
}
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
public class PreAutorizacaoPix
{
private const string ApiBase = "https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2";
private const string Token = "SEU_TOKEN_JWT";
public static async Task Main()
{
var payload = new
{
estacao = "CAIXA-01",
usuario = "atendente01",
codigoEstabelecimento = 12345,
cpfCliente = "12345678901",
valorTotal = 525.0m,
extrato = new[]
{
new
{
numeroExtrato = 123456,
valorPago = 525.0m
}
},
carne = new
{
parcelasCarnes = new[]
{
new { loja = 12345, contrato = 987654, parcela = 1 }
}
},
acordo = new
{
parcelasAcordos = new[]
{
new { loja = 12345, contrato = 555111, parcela = 1 }
}
},
promocaoContratos = new[]
{
new { loja = 12345, contrato = 123456789 }
},
promocaoExtratos = new[]
{
new { numeroExtrato = 654321 }
},
emprestimo = new
{
parcela = new[]
{
new { loja = 12345, contrato = 777777, parcela = 3, tipo = "PESSOAL" }
}
}
};
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", $"Bearer {Token}");
var content = new StringContent(JsonConvert.SerializeObject(payload), Encoding.UTF8, "application/json");
var response = await client.PostAsync(ApiBase + "/pre-autorizacao/pix", content);
if (response.IsSuccessStatusCode)
{
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine("✅ Pré-autorização PIX criada!");
Console.WriteLine(body);
}
else
{
var error = await response.Content.ReadAsStringAsync();
Console.WriteLine($"❌ Erro HTTP {(int)response.StatusCode}: {error}");
}
}
}
<?php
$payload = [
'estacao' => 'CAIXA-01',
'usuario' => 'atendente01',
'codigoEstabelecimento' => 12345,
'cpfCliente' => '12345678901',
'valorTotal' => 525.0,
'extrato' => [
[
'numeroExtrato' => 123456,
'valorPago' => 525.0,
],
],
'carne' => [
'parcelasCarnes' => [
[
'loja' => 12345,
'contrato' => 987654,
'parcela' => 1,
],
],
],
'acordo' => [
'parcelasAcordos' => [
[
'loja' => 12345,
'contrato' => 555111,
'parcela' => 1,
],
],
],
'promocaoContratos' => [
[
'loja' => 12345,
'contrato' => 123456789,
],
],
'promocaoExtratos' => [
[
'numeroExtrato' => 654321,
],
],
'emprestimo' => [
'parcela' => [
[
'loja' => 12345,
'contrato' => 777777,
'parcela' => 3,
'tipo' => 'PESSOAL',
],
],
],
];
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => 'https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2/pre-autorizacao/pix',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer SEU_TOKEN_JWT',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode($payload),
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode === 201) {
echo "✅ Pré-autorização PIX criada!\n";
echo $response . "\n";
} else {
echo "❌ Erro HTTP {$httpCode}: {$response}\n";
}
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
const (
apiBase = "https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2"
token = "SEU_TOKEN_JWT"
)
func main() {
payload := map[string]any{
"estacao": "CAIXA-01",
"usuario": "atendente01",
"codigoEstabelecimento": 12345,
"cpfCliente": "12345678901",
"valorTotal": 525.0,
"extrato": []map[string]any{
{
"numeroExtrato": 123456,
"valorPago": 525.0,
},
},
"carne": map[string]any{
"parcelasCarnes": []map[string]any{
{
"loja": 12345,
"contrato": 987654,
"parcela": 1,
},
},
},
"acordo": map[string]any{
"parcelasAcordos": []map[string]any{
{
"loja": 12345,
"contrato": 555111,
"parcela": 1,
},
},
},
"promocaoContratos": []map[string]any{
{
"loja": 12345,
"contrato": 123456789,
},
},
"promocaoExtratos": []map[string]any{
{
"numeroExtrato": 654321,
},
},
"emprestimo": map[string]any{
"parcela": []map[string]any{
{
"loja": 12345,
"contrato": 777777,
"parcela": 3,
"tipo": "PESSOAL",
},
},
},
}
body, err := json.Marshal(payload)
if err != nil {
panic(err)
}
req, err := http.NewRequest(http.MethodPost, apiBase+"/pre-autorizacao/pix", bytes.NewReader(body))
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+token)
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
respBody, _ := io.ReadAll(resp.Body)
if resp.StatusCode == http.StatusCreated {
fmt.Println("✅ Pré-autorização PIX criada!")
fmt.Println(string(respBody))
} else {
fmt.Printf("❌ Erro HTTP %d: %s\n", resp.StatusCode, string(respBody))
}
}
Exemplo de Resposta (201 Created):
{
"status": 201,
"mensagem": "QR Code PIX gerado com sucesso",
"codigoPreAutorizacao": 789012,
"pixCopiaCola": "00020126360014BR.GOV.BCB.PIX0114+55119999999990204000053039865802BR5915LOJA ABC LTDA6009SAO PAULO622905257a89b3c2d4e56f7g8h9i6304A1B2",
"qrCodeBase64": "iVBORw0KGgoAAAANSUhEUgAAAAUA...",
"traceId": "7a89b3c2-d4e5-6f7g-8h9i-j0k1l2m3n4o5"
}
- pixCopiaCola: Código Copia e Cola que o cliente pode inserir no app do banco
- qrCodeBase64: Imagem do QR Code em Base64 para exibir ao cliente escanear
Consulte o 🔧 Guia de Troubleshooting - Pré-Autorização PIX para detalhes.
4️⃣ Consultar Status da Pré-Autorização
Verifica a situação atual de uma pré-autorização tradicional (pagamentos não PIX).
Endpoint: GET /pre-autorizacao/sonda/status
Parâmetros de consulta:
codigoPreAutorizacao(integer, obrigatório) – Código emitido na criação da pré-autorização.codigoEstabelecimento(integer, obrigatório) – Código da loja que iniciou o fluxo.
E: Efetivado.D: Desfeito.I: Inexistente.
Exemplos de requisição:
- cURL
- JavaScript
curl -X GET "https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2/pre-autorizacao/sonda/status?codigoPreAutorizacao=789012&codigoEstabelecimento=12345" \
-H "Authorization: Bearer SEU_TOKEN_JWT"
const API_BASE = 'https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2';
const TOKEN = 'SEU_TOKEN_JWT';
async function consultarStatusPreAutorizacao(codigoPreAutorizacao, codigoEstabelecimento) {
const url = `${API_BASE}/pre-autorizacao/sonda/status?codigoPreAutorizacao=${codigoPreAutorizacao}&codigoEstabelecimento=${codigoEstabelecimento}`;
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();
}
consultarStatusPreAutorizacao(789012, '12345')
.then(status => console.log('✅ Status da pré-autorização:', status.situacao))
.catch(err => console.error('❌ Erro:', err.message));
Exemplo de resposta (200 Success):
{
"status": 200,
"mensagem": "Consulta realizada com sucesso",
"codigoAutorizacao": 987654,
"dataHora": "2025-12-03T14:35:00.000Z",
"situacao": "E",
"valorTotal": 525.0,
"comprovante": "COMP-2025-123456-789",
"traceId": "j0k1l2m3n4o5"
}
Consulte o 🔧 Guia de Troubleshooting - Pré-Autorização para mensagens de erro e ações recomendadas.
5️⃣ Consultar Status da Pré-Autorização PIX
Acompanha o processamento de uma pré-autorização gerada via PIX. Se tiver sido paga, vai retornar o comprovante.
Endpoint: GET /pre-autorizacao/sonda/status-pix
Parâmetros de consulta:
codigoPreAutorizacao(integer, obrigatório) – Código retornado ao criar o QR Code PIX.codigoEstabelecimento(integer, obrigatório) – Código da loja associado à pré-autorização.
Exemplos de requisição:
- cURL
- JavaScript
- Python
- Java
- C#
- PHP
- Go
curl -X GET "https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2/pre-autorizacao/sonda/status-pix?codigoPreAutorizacao=789012&codigoEstabelecimento=12345" \
-H "Authorization: Bearer SEU_TOKEN_JWT"
async function consultarStatusPix(codigoPreAutorizacao, codigoEstabelecimento) {
const API_BASE = 'https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2';
const TOKEN = 'SEU_TOKEN_JWT';
const url = `${API_BASE}/pre-autorizacao/sonda/status-pix?codigoPreAutorizacao=${codigoPreAutorizacao}&codigoEstabelecimento=${codigoEstabelecimento}`;
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();
}
consultarStatusPix(789012, '12345')
.then(status => console.log('✅ Status PIX:', status.mensagem))
.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_status_pix(codigo_pre_autorizacao, codigo_estabelecimento):
params = {
'codigoPreAutorizacao': codigo_pre_autorizacao,
'codigoEstabelecimento': codigo_estabelecimento,
}
headers = {'Authorization': f'Bearer {TOKEN}'}
response = requests.get(f'{API_BASE}/pre-autorizacao/sonda/status-pix', params=params, headers=headers, timeout=15)
response.raise_for_status()
return response.json()
try:
status = consultar_status_pix(789012, '12345')
print('✅ Pagamento PIX:', status['mensagem'])
except requests.HTTPError as err:
print('❌ Erro HTTP:', err.response.status_code, err.response.json())
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class ConsultaStatusPix {
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 + "/pre-autorizacao/sonda/status-pix?codigoPreAutorizacao=789012&codigoEstabelecimento=12345";
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("✅ Pagamento PIX confirmado:");
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 url = "https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2/pre-autorizacao/sonda/status-pix" +
"?codigoPreAutorizacao=789012&codigoEstabelecimento=12345";
var response = await client.GetAsync(url);
if (response.IsSuccessStatusCode)
{
Console.WriteLine("✅ Pagamento PIX confirmado:");
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/pre-autorizacao/sonda/status-pix' .
'?codigoPreAutorizacao=789012&codigoEstabelecimento=12345';
$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 "✅ Pagamento PIX confirmado:\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/pre-autorizacao/sonda/status-pix",
nil,
)
if err != nil {
panic(err)
}
q := req.URL.Query()
q.Set("codigoPreAutorizacao", "789012")
q.Set("codigoEstabelecimento", "12345")
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("✅ Pagamento PIX confirmado:")
fmt.Println(string(body))
} else {
fmt.Printf("❌ Erro HTTP %d: %s\n", resp.StatusCode, string(body))
}
}
Exemplo de resposta (200 Success):
{
"status": 200,
"mensagem": "Pagamento confirmado",
"dataHoraPagamento": "2025-12-03T14:40:00.000Z",
"comprovante": "PIX-2025-XYZ",
"traceId": "0yhCec94LD0vd1Xr6KTk"
}
Veja o 🔧 Troubleshooting - Pré-Autorização PIX para sinais de expiração ou cancelamento.
6️⃣ Efetivar Arrecadação
Efetiva o pagamento utilizando o código de pré-autorização gerado anteriormente.
Endpoint: POST /efetivacao
Este endpoint NÃO efetiva pré-autorizações geradas via PIX. Pagamentos PIX são efetivados automaticamente quando o cliente realiza o pagamento.
Corpo da Requisição:
{
"codigoPreAutorizacao": 789012,
"codigoEstabelecimento": "12345",
"valorPagamento": 525.00,
"identificador": "LOJA-123456"
}
valorPagamentodeve reproduzir o total efetivamente cobrado da pré-autorização.identificadoré opcional e ajuda a rastrear PDV, caixa ou atendente responsável.
Exemplos de Requisição:
- cURL
- JavaScript
- Python
- Java
- C#
- PHP
- Go
curl -X POST "https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2/efetivacao" \
-H "Authorization: Bearer SEU_TOKEN_JWT" \
-H "Content-Type: application/json" \
-d '{
"codigoPreAutorizacao": 789012,
"codigoEstabelecimento": "12345",
"valorPagamento": 525.00,
"identificador": "LOJA-123456"
}'
async function efetivarArrecadacao(codigoPreAutorizacao, codigoEstabelecimento, valorPagamento, identificador) {
const API_BASE = 'https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2';
const TOKEN = 'SEU_TOKEN_JWT';
try {
const response = await fetch(`${API_BASE}/efetivacao`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${TOKEN}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
codigoPreAutorizacao,
codigoEstabelecimento,
valorPagamento,
identificador
})
});
if (!response.ok) {
const error = await response.json();
throw new Error(`HTTP ${response.status}: ${error.detalhe || error.mensagem}`);
}
const data = await response.json();
console.log('✅ Arrecadação efetivada!');
console.log('Código de Autorização:', data.codigoAutorizacao);
console.log('Comprovante:', data.comprovante);
console.log('Data/Hora:', data.dataHora);
return data;
} catch (error) {
console.error('❌ Erro ao efetivar arrecadação:', error.message);
throw error;
}
}
// Uso
efetivarArrecadacao(789012, '12345', 525.00, 'LOJA-123456')
.then(result => {
console.log('\n📄 Comprovante completo:');
console.log(result.comprovante);
})
.catch(err => console.error('Erro:', err));
import requests
import json
API_BASE = 'https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2'
TOKEN = 'SEU_TOKEN_JWT'
def efetivar_arrecadacao(codigo_pre_autorizacao, codigo_estabelecimento, valor_pagamento, identificador=None):
"""Efetiva o pagamento"""
url = f'{API_BASE}/efetivacao'
headers = {
'Authorization': f'Bearer {TOKEN}',
'Content-Type': 'application/json'
}
payload = {
'codigoPreAutorizacao': codigo_pre_autorizacao,
'codigoEstabelecimento': codigo_estabelecimento,
'valorPagamento': valor_pagamento
}
if identificador is not None:
payload['identificador'] = identificador
try:
response = requests.post(url, headers=headers, json=payload)
response.raise_for_status()
data = response.json()
print('✅ Arrecadação efetivada!')
print(f'Código de Autorização: {data["codigoAutorizacao"]}')
print(f'Data/Hora: {data["dataHora"]}')
print(f'\n📄 Comprovante:\n{data["comprovante"]}')
return data
except requests.exceptions.HTTPError as e:
error_data = e.response.json() if e.response else {}
print(f'❌ Erro HTTP {e.response.status_code}: {error_data.get("detalhe", str(e))}')
raise
except requests.exceptions.RequestException as e:
print(f'❌ Erro na requisição: {e}')
raise
# Uso
try:
resultado = efetivar_arrecadacao(789012, '12345', 525.00, 'LOJA-123456')
except Exception as e:
print(f'Erro: {e}')
import java.net.http.*;
import java.net.URI;
import com.google.gson.*;
public class EfetivacaoArrecadacao {
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 class EfetivacaoRequest {
public int codigoPreAutorizacao;
public String codigoEstabelecimento;
public double valorPagamento;
public String identificador;
}
public static String efetivarArrecadacao(
int codigoPreAutorizacao,
String codigoEstabelecimento,
double valorPagamento,
String identificador) throws Exception {
EfetivacaoRequest request = new EfetivacaoRequest();
request.codigoPreAutorizacao = codigoPreAutorizacao;
request.codigoEstabelecimento = codigoEstabelecimento;
request.valorPagamento = valorPagamento;
request.identificador = identificador;
Gson gson = new Gson();
String jsonBody = gson.toJson(request);
HttpClient client = HttpClient.newHttpClient();
HttpRequest httpRequest = HttpRequest.newBuilder()
.uri(URI.create(API_BASE + "/efetivacao"))
.header("Authorization", "Bearer " + TOKEN)
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(jsonBody))
.build();
HttpResponse<String> response = client.send(
httpRequest,
HttpResponse.BodyHandlers.ofString()
);
if (response.statusCode() == 201) {
JsonObject jsonResponse = JsonParser.parseString(response.body())
.getAsJsonObject();
System.out.println("✅ Arrecadação efetivada!");
System.out.println("Código de Autorização: " +
jsonResponse.get("codigoAutorizacao").getAsInt());
System.out.println("Data/Hora: " +
jsonResponse.get("dataHora").getAsString());
System.out.println("\n📄 Comprovante:");
System.out.println(jsonResponse.get("comprovante").getAsString());
return response.body();
} else {
throw new RuntimeException("Erro HTTP: " + response.statusCode() +
"\nBody: " + response.body());
}
}
public static void main(String[] args) {
try {
efetivarArrecadacao(789012, "12345", 525.00, "LOJA-123456");
} catch (Exception e) {
System.err.println("❌ Erro: " + e.getMessage());
e.printStackTrace();
}
}
}
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
public class EfetivacaoClient
{
private static readonly string API_BASE =
"https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2";
private static readonly string TOKEN = "SEU_TOKEN_JWT";
public class EfetivacaoRequest
{
[JsonProperty("codigoPreAutorizacao")]
public int CodigoPreAutorizacao { get; set; }
[JsonProperty("codigoEstabelecimento")]
public string CodigoEstabelecimento { get; set; }
[JsonProperty("valorPagamento")]
public decimal ValorPagamento { get; set; }
[JsonProperty("identificador")]
public string Identificador { get; set; }
}
public static async Task<string> EfetivarArrecadacao(
int codigoPreAutorizacao,
string codigoEstabelecimento,
decimal valorPagamento,
string identificador)
{
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", $"Bearer {TOKEN}");
var payload = new EfetivacaoRequest
{
CodigoPreAutorizacao = codigoPreAutorizacao,
CodigoEstabelecimento = codigoEstabelecimento,
ValorPagamento = valorPagamento,
Identificador = identificador
};
var json = JsonConvert.SerializeObject(payload);
var content = new StringContent(json, Encoding.UTF8, "application/json");
try
{
var response = await client.PostAsync($"{API_BASE}/efetivacao", content);
var responseBody = await response.Content.ReadAsStringAsync();
if (response.IsSuccessStatusCode)
{
dynamic result = JsonConvert.DeserializeObject(responseBody);
Console.WriteLine("✅ Arrecadação efetivada!");
Console.WriteLine($"Código de Autorização: {result.codigoAutorizacao}");
Console.WriteLine($"Data/Hora: {result.dataHora}");
Console.WriteLine($"\n📄 Comprovante:\n{result.comprovante}");
return responseBody;
}
else
{
throw new HttpRequestException(
$"Erro HTTP {(int)response.StatusCode}: {responseBody}"
);
}
}
catch (HttpRequestException e)
{
Console.WriteLine($"❌ Erro: {e.Message}");
throw;
}
}
public static async Task Main(string[] args)
{
try
{
await EfetivarArrecadacao(789012, "12345", 525.00m, "LOJA-123456");
}
catch (Exception e)
{
Console.WriteLine($"Erro: {e.Message}");
}
}
}
<?php
class EfetivacaoClient {
private const API_BASE = 'https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2';
private const TOKEN = 'SEU_TOKEN_JWT';
public static function efetivarArrecadacao(
$codigoPreAutorizacao,
$codigoEstabelecimento,
$valorPagamento,
$identificador
) {
$url = self::API_BASE . '/efetivacao';
$payload = [
'codigoPreAutorizacao' => $codigoPreAutorizacao,
'codigoEstabelecimento' => $codigoEstabelecimento,
'valorPagamento' => $valorPagamento,
'identificador' => $identificador
];
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . self::TOKEN,
'Content-Type: application/json'
]
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode === 201) {
$data = json_decode($response, true);
echo "✅ Arrecadação efetivada!\n";
echo "Código de Autorização: " . $data['codigoAutorizacao'] . "\n";
echo "Data/Hora: " . $data['dataHora'] . "\n";
echo "\n📄 Comprovante:\n" . $data['comprovante'] . "\n";
return $data;
} else {
$errorData = json_decode($response, true);
throw new Exception(
"Erro HTTP $httpCode: " .
($errorData['detalhe'] ?? $response)
);
}
}
}
// Uso
try {
$resultado = EfetivacaoClient::efetivarArrecadacao(789012, '12345', 525.00, 'LOJA-123456');
} catch (Exception $e) {
echo "❌ Erro: " . $e->getMessage() . "\n";
}
?>
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
const (
API_BASE = "https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2"
TOKEN = "SEU_TOKEN_JWT"
)
type EfetivacaoRequest struct {
CodigoPreAutorizacao int `json:"codigoPreAutorizacao"`
CodigoEstabelecimento string `json:"codigoEstabelecimento"`
ValorPagamento float64 `json:"valorPagamento"`
Identificador string `json:"identificador"`
}
type EfetivacaoResponse struct {
Status int `json:"status"`
Mensagem string `json:"mensagem"`
Comprovante string `json:"comprovante"`
CodigoAutorizacao int `json:"codigoAutorizacao"`
DataHora string `json:"dataHora"`
TraceID string `json:"traceId"`
}
func efetivarArrecadacao(
codigoPreAutorizacao int,
codigoEstabelecimento string,
valorPagamento float64,
identificador string,
) (*EfetivacaoResponse, error) {
payload := EfetivacaoRequest{
CodigoPreAutorizacao: codigoPreAutorizacao,
CodigoEstabelecimento: codigoEstabelecimento,
ValorPagamento: valorPagamento,
Identificador: identificador,
}
jsonData, err := json.Marshal(payload)
if err != nil {
return nil, fmt.Errorf("erro ao serializar JSON: %w", err)
}
url := API_BASE + "/efetivacao"
req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
if err != nil {
return nil, fmt.Errorf("erro ao criar requisição: %w", err)
}
req.Header.Set("Authorization", "Bearer "+TOKEN)
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
return nil, fmt.Errorf("erro ao executar requisição: %w", err)
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
return nil, fmt.Errorf("erro ao ler resposta: %w", err)
}
if resp.StatusCode != http.StatusCreated {
return nil, fmt.Errorf("erro HTTP %d: %s", resp.StatusCode, string(body))
}
var result EfetivacaoResponse
if err := json.Unmarshal(body, &result); err != nil {
return nil, fmt.Errorf("erro ao parsear JSON: %w", err)
}
fmt.Println("✅ Arrecadação efetivada!")
fmt.Printf("Código de Autorização: %d\n", result.CodigoAutorizacao)
fmt.Printf("Data/Hora: %s\n", result.DataHora)
fmt.Printf("\n📄 Comprovante:\n%s\n", result.Comprovante)
return &result, nil
}
func main() {
result, err := efetivarArrecadacao(789012, "12345", 525.00, "LOJA-123456")
if err != nil {
fmt.Printf("❌ Erro: %v\n", err)
return
}
fmt.Printf("\nTrace ID: %s\n", result.TraceID)
}
Exemplo de Resposta (201 Created):
{
"status": 201,
"mensagem": "Arrecadação efetivada com sucesso",
"comprovante": "COMP-2025-123456-789",
"codigoAutorizacao": 987654,
"dataHora": "2025-12-03T14:35:00.000Z",
"traceId": "7a89b3c2-d4e5-6f7g-8h9i-j0k1l2m3n4o5"
}
Guarde o codigoAutorizacao e o comprovante para futuras consultas ou desfazimento.
Consulte o 🔧 Guia de Troubleshooting - Efetivação para detalhes sobre pré-autorizações expiradas, divergências e conflitos.
7️⃣ Consultar Status da Efetivação
Consulta o status e detalhes de um pagamento efetivado.
Endpoint: GET /efetivacao/sonda
Parâmetros de Query:
Parâmetros de consulta:
codigoAutorizacao(integer, obrigatório) – Código retornado da efetivaçao.codigoEstabelecimento(integer, obrigatório) – Código da loja associado à efetivação.
Exemplo de Requisição:
curl -X GET "https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2/efetivacao/sonda?codigoAutorizacao=987654&codigoEstabelecimento=12345" \
-H "Authorization: Bearer SEU_TOKEN_JWT"
Exemplo de Resposta (200 Success):
{
"status": 200,
"mensagem": "Consulta realizada com sucesso",
"codigoAutorizacao": 987654,
"dataHora": "2025-12-03T14:35:00.000Z",
"situacao": "E",
"valorTotal": 525.00,
"comprovante": "COMP-2025-123456-789",
"traceId": "j0k1l2m3n4o5"
}
E: Efetivado.D: Desfeito.I: Inexistente.
Consulte o 🔧 Guia de Troubleshooting - Efetivação para detalhes sobre erros de consulta.
8️⃣ Desfazer Arrecadação
Realiza o estorno (desfazimento) de um pagamento previamente efetivado.
Endpoint: POST /desfazimento
O desfazimento só pode ser realizado no mesmo dia da efetivação e não funciona para efetivações realizadas via PIX.
Corpo da Requisição:
{
"codigoAutorizacao": 987654,
"codigoEstabelecimento": "12345",
"valorTotal": 525.00,
"identificador": "LOJA-12345"
}
Exemplos de Requisição:
- cURL
- JavaScript
- Python
- Java
- C#
- PHP
- Go
curl -X POST "https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2/desfazimento" \
-H "Authorization: Bearer SEU_TOKEN_JWT" \
-H "Content-Type: application/json" \
-d '{
"codigoAutorizacao": 987654,
"codigoEstabelecimento": "12345",
"valorTotal": 525.00,
"identificador": "LOJA-12345"
}'
async function desfazerArrecadacao(codigoAutorizacao, codigoEstabelecimento, valorTotal, identificador) {
const API_BASE = 'https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2';
const TOKEN = 'SEU_TOKEN_JWT';
try {
const response = await fetch(`${API_BASE}/desfazimento`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${TOKEN}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
codigoAutorizacao,
codigoEstabelecimento,
valorTotal,
identificador
})
});
if (!response.ok) {
const error = await response.json();
throw new Error(`HTTP ${response.status}: ${error.detalhe || error.mensagem}`);
}
const data = await response.json();
console.log('✅ Desfazimento realizado!');
console.log('Data/Hora:', data.dataHoraDesfazimento);
console.log('Trace ID:', data.traceId);
return data;
} catch (error) {
console.error('❌ Erro ao desfazer arrecadação:', error.message);
throw error;
}
}
// Uso
desfazerArrecadacao(987654, '12345', 525.00, 'LOJA-12345')
.then(result => console.log('Resultado:', result))
.catch(err => console.error('Erro:', err));
import requests
import json
API_BASE = 'https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2'
TOKEN = 'SEU_TOKEN_JWT'
def desfazer_arrecadacao(codigo_autorizacao, codigo_estabelecimento, valor_total, identificador):
"""Realiza o estorno de um pagamento"""
url = f'{API_BASE}/desfazimento'
headers = {
'Authorization': f'Bearer {TOKEN}',
'Content-Type': 'application/json'
}
payload = {
'codigoAutorizacao': codigo_autorizacao,
'codigoEstabelecimento': codigo_estabelecimento,
'valorTotal': valor_total,
'identificador': identificador
}
try:
response = requests.post(url, headers=headers, json=payload)
response.raise_for_status()
data = response.json()
print('✅ Desfazimento realizado!')
print(f'Data/Hora: {data["dataHoraDesfazimento"]}')
print(f'Trace ID: {data["traceId"]}')
return data
except requests.exceptions.HTTPError as e:
error_data = e.response.json() if e.response else {}
print(f'❌ Erro HTTP {e.response.status_code}: {error_data.get("detalhe", str(e))}')
raise
except requests.exceptions.RequestException as e:
print(f'❌ Erro na requisição: {e}')
raise
# Uso
try:
resultado = desfazer_arrecadacao(987654, '12345', 525.00, 'LOJA-12345')
except Exception as e:
print(f'Erro: {e}')
import java.net.http.*;
import java.net.URI;
import com.google.gson.*;
public class DesfazimentoArrecadacao {
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 class DesfazimentoRequest {
public int codigoAutorizacao;
public String codigoEstabelecimento;
public double valorTotal;
public String identificador;
}
public static String desfazerArrecadacao(
int codigoAutorizacao,
String codigoEstabelecimento,
double valorTotal,
String identificador) throws Exception {
DesfazimentoRequest request = new DesfazimentoRequest();
request.codigoAutorizacao = codigoAutorizacao;
request.codigoEstabelecimento = codigoEstabelecimento;
request.valorTotal = valorTotal;
request.identificador = identificador;
Gson gson = new Gson();
String jsonBody = gson.toJson(request);
HttpClient client = HttpClient.newHttpClient();
HttpRequest httpRequest = HttpRequest.newBuilder()
.uri(URI.create(API_BASE + "/desfazimento"))
.header("Authorization", "Bearer " + TOKEN)
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(jsonBody))
.build();
HttpResponse<String> response = client.send(
httpRequest,
HttpResponse.BodyHandlers.ofString()
);
if (response.statusCode() == 201) {
JsonObject jsonResponse = JsonParser.parseString(response.body())
.getAsJsonObject();
System.out.println("✅ Desfazimento realizado!");
System.out.println("Data/Hora: " +
jsonResponse.get("dataHoraDesfazimento").getAsString());
System.out.println("Trace ID: " +
jsonResponse.get("traceId").getAsString());
return response.body();
} else {
throw new RuntimeException("Erro HTTP: " + response.statusCode() +
"\nBody: " + response.body());
}
}
public static void main(String[] args) {
try {
desfazerArrecadacao(987654, "12345", 525.00, "LOJA-12345");
} catch (Exception e) {
System.err.println("❌ Erro: " + e.getMessage());
e.printStackTrace();
}
}
}
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
public class DesfazimentoClient
{
private static readonly string API_BASE =
"https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2";
private static readonly string TOKEN = "SEU_TOKEN_JWT";
public class DesfazimentoRequest
{
[JsonProperty("codigoAutorizacao")]
public int CodigoAutorizacao { get; set; }
[JsonProperty("codigoEstabelecimento")]
public string CodigoEstabelecimento { get; set; }
[JsonProperty("valorTotal")]
public decimal ValorTotal { get; set; }
[JsonProperty("identificador")]
public string Identificador { get; set; }
}
public static async Task<string> DesfazerArrecadacao(
int codigoAutorizacao,
string codigoEstabelecimento,
decimal valorTotal,
string identificador)
{
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", $"Bearer {TOKEN}");
var payload = new DesfazimentoRequest
{
CodigoAutorizacao = codigoAutorizacao,
CodigoEstabelecimento = codigoEstabelecimento,
ValorTotal = valorTotal,
Identificador = identificador
};
var json = JsonConvert.SerializeObject(payload);
var content = new StringContent(json, Encoding.UTF8, "application/json");
try
{
var response = await client.PostAsync($"{API_BASE}/desfazimento", content);
var responseBody = await response.Content.ReadAsStringAsync();
if (response.IsSuccessStatusCode)
{
dynamic result = JsonConvert.DeserializeObject(responseBody);
Console.WriteLine("✅ Desfazimento realizado!");
Console.WriteLine($"Data/Hora: {result.dataHoraDesfazimento}");
Console.WriteLine($"Trace ID: {result.traceId}");
return responseBody;
}
else
{
throw new HttpRequestException(
$"Erro HTTP {(int)response.StatusCode}: {responseBody}"
);
}
}
catch (HttpRequestException e)
{
Console.WriteLine($"❌ Erro: {e.Message}");
throw;
}
}
public static async Task Main(string[] args)
{
try
{
await DesfazerArrecadacao(987654, "12345", 525.00m, "LOJA-12345");
}
catch (Exception e)
{
Console.WriteLine($"Erro: {e.Message}");
}
}
}
<?php
class DesfazimentoClient {
private const API_BASE = 'https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2';
private const TOKEN = 'SEU_TOKEN_JWT';
public static function desfazerArrecadacao(
$codigoAutorizacao,
$codigoEstabelecimento,
$valorTotal,
$identificador
) {
$url = self::API_BASE . '/desfazimento';
$payload = [
'codigoAutorizacao' => $codigoAutorizacao,
'codigoEstabelecimento' => $codigoEstabelecimento,
'valorTotal' => $valorTotal,
'identificador' => $identificador
];
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . self::TOKEN,
'Content-Type: application/json'
]
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode === 201) {
$data = json_decode($response, true);
echo "✅ Desfazimento realizado!\n";
echo "Data/Hora: " . $data['dataHoraDesfazimento'] . "\n";
echo "Trace ID: " . $data['traceId'] . "\n";
return $data;
} else {
$errorData = json_decode($response, true);
throw new Exception(
"Erro HTTP $httpCode: " .
($errorData['detalhe'] ?? $response)
);
}
}
}
// Uso
try {
$resultado = DesfazimentoClient::desfazerArrecadacao(987654, '12345', 525.00, 'LOJA-12345');
} catch (Exception $e) {
echo "❌ Erro: " . $e->getMessage() . "\n";
}
?>
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
const (
API_BASE = "https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2"
TOKEN = "SEU_TOKEN_JWT"
)
type DesfazimentoRequest struct {
CodigoAutorizacao int `json:"codigoAutorizacao"`
CodigoEstabelecimento string `json:"codigoEstabelecimento"`
ValorTotal float64 `json:"valorTotal"`
Identificador string `json:"identificador"`
}
type DesfazimentoResponse struct {
Status int `json:"status"`
Mensagem string `json:"mensagem"`
DataHoraDesfazimento string `json:"dataHoraDesfazimento"`
TraceID string `json:"traceId"`
}
func desfazerArrecadacao(
codigoAutorizacao int,
codigoEstabelecimento string,
valorTotal float64,
identificador string,
) (*DesfazimentoResponse, error) {
payload := DesfazimentoRequest{
CodigoAutorizacao: codigoAutorizacao,
CodigoEstabelecimento: codigoEstabelecimento,
ValorTotal: valorTotal,
Identificador: identificador,
}
jsonData, err := json.Marshal(payload)
if err != nil {
return nil, fmt.Errorf("erro ao serializar JSON: %w", err)
}
url := API_BASE + "/desfazimento"
req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
if err != nil {
return nil, fmt.Errorf("erro ao criar requisição: %w", err)
}
req.Header.Set("Authorization", "Bearer "+TOKEN)
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
return nil, fmt.Errorf("erro ao executar requisição: %w", err)
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
return nil, fmt.Errorf("erro ao ler resposta: %w", err)
}
if resp.StatusCode != http.StatusCreated {
return nil, fmt.Errorf("erro HTTP %d: %s", resp.StatusCode, string(body))
}
var result DesfazimentoResponse
if err := json.Unmarshal(body, &result); err != nil {
return nil, fmt.Errorf("erro ao parsear JSON: %w", err)
}
fmt.Println("✅ Desfazimento realizado!")
fmt.Printf("Data/Hora: %s\n", result.DataHoraDesfazimento)
fmt.Printf("Trace ID: %s\n", result.TraceID)
return &result, nil
}
func main() {
result, err := desfazerArrecadacao(987654, "12345", 525.00, "LOJA-12345")
if err != nil {
fmt.Printf("❌ Erro: %v\n", err)
return
}
fmt.Printf("\nMensagem: %s\n", result.Mensagem)
}
Exemplo de Resposta (201 Created):
{
"status": 201,
"mensagem": "Desfazimento realizado com sucesso",
"dataHoraDesfazimento": "2025-12-03T16:00:00.000Z",
"traceId": "0k1l2m3n4o5"
}
Desfazimentos só podem ser realizados no mesmo dia da efetivação. Consulte o 🔧 Guia de Troubleshooting - Desfazimento para todos os detalhes sobre erros e restrições.
9️⃣ Consultar pagamentos desfeitos na loja para data informada
Lista os pagamentos desfeitos na loja para data informada.
Endpoint: GET /desfazimento
Parâmetros de consulta:
codigoEstabelecimento(string, obrigatório) – Código do estabelecimento que o pagamento foi desfeito.data(string, obrigatório) – Data no formatoYYYY-MM-DDpara filtrar os pagamentos desfeitos.
Exemplos de requisição:
- cURL
- JavaScript
- Python
- Java
- C#
- PHP
- Go
curl -X GET "https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2/desfazimento?codigoEstabelecimento=12345&data=2025-12-03" \
-H "Authorization: Bearer SEU_TOKEN_JWT"
async function listarPagamentosParaDesfazimento(codigoEstabelecimento, data) {
const API_BASE = 'https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2';
const TOKEN = 'SEU_TOKEN_JWT';
const url = `${API_BASE}/desfazimento?codigoEstabelecimento=${codigoEstabelecimento}&data=${data}`;
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();
}
listarPagamentosParaDesfazimento('12345', '2025-12-03')
.then(result => console.log('Pagamentos elegíveis:', result.length))
.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_pagamentos_para_desfazimento(codigo_estabelecimento, data):
params = {
'codigoEstabelecimento': codigo_estabelecimento,
'data': data,
}
headers = {'Authorization': f'Bearer {TOKEN}'}
response = requests.get(f'{API_BASE}/desfazimento', params=params, headers=headers, timeout=15)
response.raise_for_status()
return response.json()
try:
resultado = listar_pagamentos_para_desfazimento('12345', '2025-12-03')
print('Pagamentos elegíveis:', len(resultado.get('desfazimentos', [])))
except requests.HTTPError as err:
print('❌ Erro HTTP:', err.response.status_code, err.response.json())
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class ListarDesfazimentos {
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 + "/desfazimento?codigoEstabelecimento=12345&data=2025-12-03";
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("✅ Pagamentos elegíveis:");
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 url = "https://apihml.credsystem.com.br/arrecadacao-lojista/api/v2/desfazimento" +
"?codigoEstabelecimento=12345&data=2025-12-03";
var response = await client.GetAsync(url);
if (response.IsSuccessStatusCode)
{
Console.WriteLine("✅ Pagamentos elegíveis:");
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/desfazimento' .
'?codigoEstabelecimento=12345&data=2025-12-03';
$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 "✅ Pagamentos eleg íveis:\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/desfazimento",
nil,
)
if err != nil {
panic(err)
}
q := req.URL.Query()
q.Set("codigoEstabelecimento", "12345")
q.Set("data", "2025-12-03")
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("✅ Pagamentos elegíveis:")
fmt.Println(string(body))
} else {
fmt.Printf("❌ Erro HTTP %d: %s\n", resp.StatusCode, string(body))
}
}
Exemplo de resposta (200 Success):
{
"mensagem": "Consulta retornada com sucesso.",
"status": 200,
"traceId": "6jrpOfKQDUD10PgeuS9e",
"desfazimentos": [
{
"codigoAutorizacao": 200013313,
"codigoPreAutorizacao": 502197214,
"dataHora": "2026-02-04T11:25:35.107Z",
"identificador": "LOJA-123456"
}
]
}
Veja o 🔧 Troubleshooting - Desfazimento (GET) para hipóteses de lista vazia ou acessos negados.
🔄 Fluxo Completo de Arrecadação
Fluxo 1: Pagamento Tradicional (Dinheiro/Cartão)
Fluxo 2: Pagamento via PIX
💡 Dicas e Boas Práticas
✅ Recomendações
- Valide os dados antes de enviar - Verifique CPF, 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