Como funciona
- Você cria um terminal e recebe um código de 6 dígitos. O operador digita o código no app GetPrime da maquininha, em modo integração.
- Na hora da venda, você cria uma cobrança para aquele terminal. A maquininha pega a cobrança em segundos e mostra o valor ao cliente.
- Quando o pagamento termina, enviamos um webhook e a cobrança fica disponível para consulta com o status final e o comprovante (NSU, autorização, bandeira).
Autenticação
Todas as chamadas usam a chave do integrador no cabeçalho Authorization. A chave fica só no seu servidor; um integrador enxerga apenas os próprios terminais e cobranças.
POST https://api-app.ticketsprime.com.br/api/conector/v1/cobrancas
Authorization: Bearer ck_SUA_CHAVE
Content-Type: application/jsonAtende várias lojas? Use uma única chave e separe as lojas pelos terminais (o campo referencia do terminal guarda o identificador do seu lado).
Terminais
Um terminal representa uma maquininha ligada ao seu sistema (um caixa, um balcão, um garçom).
POST/terminais
Cria o terminal e devolve o código de vínculo: 6 dígitos, válido por 10 minutos, de uso único.
| Campo | Tipo | Descrição |
|---|---|---|
nome | texto | Obrigatório, até 60 caracteres. Aparece na maquininha e no painel. |
referencia | texto | Opcional. O id do caixa ou da loja no seu sistema. |
curl -X POST https://api-app.ticketsprime.com.br/api/conector/v1/terminais \
-H "Authorization: Bearer ck_SUA_CHAVE" \
-H "Content-Type: application/json" \
-d '{ "nome": "Caixa 1", "referencia": "loja7-caixa1" }'{
"id": "3f6c1b2e-0000-4a5b-9c1d-7e8f90a1b2c3",
"nome": "Caixa 1",
"referencia": "loja7-caixa1",
"status": "aguardando_vinculo",
"codigoVinculo": "482913",
"codigoExpiraEm": "2026-10-26T13:11:47.300Z",
"criadoEm": "2026-10-26T13:01:47.300Z"
}POST/terminais/{id}/codigo
Gera um código novo (código vencido, maquininha trocada). Desfaz o vínculo atual e encerra a cobrança aberta do terminal.
GET/terminais
Lista os terminais do integrador, em ordem de nome.
GET/terminais/{id}
| Campo | Descrição |
|---|---|
status | aguardando_vinculo, ativo ou revogado. |
serial | Número de série da maquininha vinculada. |
modelo, fabricante | Ex.: A930, PAX. |
adquirente | pagbank, stone ou paystore. |
versaoApp | Versão do app GetPrime na maquininha. |
vinculadoEm | Quando o código foi digitado. |
ultimoContatoEm | Último sinal da maquininha. Ligada em modo integração, ela dá sinal a cada 25 s no máximo. |
DELETE/terminais/{id}
Revoga o terminal: a maquininha volta para a tela de vínculo e a cobrança aberta é encerrada.
Uma maquininha, um vínculo
terminal.revogado.Cobranças
POST/cobrancas
Cria a cobrança. Responde 200 com a cobrança em pendente.
| Campo | Tipo | Descrição |
|---|---|---|
terminalId | texto | Obrigatório. Terminal ativo. |
valor | inteiro | Obrigatório. Em centavos, de 1 a 99.999.999. |
tipo | texto | credito, debito, pix ou voucher. |
parcelas | inteiro | 1 a 24. Mais de 1 só no crédito. |
parcelamento | texto | loja (sem juros para o cliente) ou cliente. Só no crédito parcelado. |
descricao | texto | Opcional, até 60 caracteres. |
referencia | texto | Obrigatório, até 100 caracteres, única por terminal. Veja Referência e reenvio. |
validadeSegundos | inteiro | Opcional, de 30 a 3600 (padrão 180). Prazo para a maquininha pegar a cobrança. |
curl -X POST https://api-app.ticketsprime.com.br/api/conector/v1/cobrancas \
-H "Authorization: Bearer ck_SUA_CHAVE" \
-H "Content-Type: application/json" \
-d '{
"terminalId": "3f6c1b2e-0000-4a5b-9c1d-7e8f90a1b2c3",
"valor": 2590,
"tipo": "credito",
"parcelas": 3,
"parcelamento": "loja",
"descricao": "Pedido 1234",
"referencia": "loja7-pedido1234-t1",
"validadeSegundos": 180
}'GET/cobrancas/{id}
A cobrança com o status atual e o resultado. É a fonte da verdade: use quando o webhook não chegar ou para conferir.
// Sem webhook (ou enquanto ele não chega): consulte a cobrança até um status final.
const FINAIS = ["aprovada", "recusada", "cancelada", "erro"];
async function aguardar(id, { intervaloMs = 2000, limiteMs = 5 * 60_000 } = {}) {
const fim = Date.now() + limiteMs;
while (Date.now() < fim) {
const resp = await fetch(`https://api-app.ticketsprime.com.br/api/conector/v1/cobrancas/${id}`, {
headers: { Authorization: "Bearer ck_SUA_CHAVE" },
});
const c = await resp.json();
if (FINAIS.includes(c.status)) return c;
await new Promise((r) => setTimeout(r, intervaloMs));
}
throw new Error("A cobrança não terminou no tempo esperado: consulte de novo antes de cobrar outra vez.");
}GET/cobrancas?terminalId=&referencia=&status=&desde=&ate=&limite=
Lista as cobranças, da mais nova para a mais antiga, para conciliar ou reencontrar uma cobrança pela referência. desde e ate (ISO 8601 com fuso) filtram a data de criação; limite padrão 50, até 200.
POST/cobrancas/{id}/cancelar
Desiste da cobrança. Se a maquininha ainda não começou, cancela na hora. Se o cliente já está com o cartão, pedimos à maquininha para abortar e o resultado final chega pelo webhook: ainda pode sair aprovada se o pagamento já tinha passado.
Uma cobrança aberta por terminal
pendente ou em_andamento, outra para o mesmo terminal responde 409 com o id da aberta, para você consultar ou cancelar.Status
pendente ──▶ em_andamento ──▶ aprovada | recusada | cancelada | erro| Status | Significa | O que o seu sistema faz |
|---|---|---|
pendente | Esperando a maquininha pegar. | Mostra “aguardando a maquininha”. |
em_andamento | O cliente está pagando. | Aguarda. |
aprovada | Pago. | Baixa a venda e guarda NSU e autorização. |
recusada | Não pago: cartão recusado, operador desistiu ou tipo não suportado. | Pode tentar de novo com referência nova. |
cancelada | Não cobrou: cancelada pelo sistema ou na maquininha, EXPIRADA ou TERMINAL_DESVINCULADO antes de começar. | Pode tentar de novo. |
erro | Resultado desconhecido: o cliente pode ter pago. | Não cobre de novo sem conferir no extrato da maquininha ou no portal. |
Quando acontece erro
| erroCodigo | Situação |
|---|---|
INTERROMPIDA_SEM_CONFIRMACAO | O app fechou no meio do pagamento e não deu para confirmar. |
SEM_RESPOSTA_DA_MAQUINA | A maquininha ficou 2 minutos sem responder durante o pagamento. O terminal é liberado. |
TERMINAL_DESVINCULADO | O terminal foi revogado ou ganhou código novo durante o pagamento. |
erro é o único status final que ainda muda: se a maquininha voltar e mandar o resultado real, a cobrança vira aprovada, recusada ou cancelada e sai um novo webhook. Os outros status finais nunca mudam.Resultado
O campo resultado chega quando a cobrança termina. Nas não aprovadas, erroCodigo e mensagem dizem o motivo.
| Campo | Descrição |
|---|---|
adquirente | pagbank, stone ou paystore. |
cnpjCredenciadora | CNPJ da credenciadora, para a nota fiscal (PagBank 08561701000101, Stone 16501555000157). |
bandeira | VISA, MASTERCARD, ELO… |
autorizacao, nsu, nsuHost | Comprovante da transação. |
tipo, parcelas | Como o cliente pagou de fato. |
valorConfirmado | Valor pago em centavos. Pode vir null: vale o valor da cobrança. |
codigoTransacao, idTransacao | Identificadores da adquirente. |
pixTxId, pixE2eId | Identificadores do Pix. |
serial | Maquininha que cobrou. |
A hora do pagamento é o concluidaEm da cobrança.
Referência e reenvio
A referencia identifica esta tentativa de cobrança e é única por terminal.
- Caiu a rede no meio do POST? Reenvie com a mesma referência e os mesmos
valor,tipoeparcelas: você recebe a mesma cobrança, sem duplicar. - Mesma referência com outro valor, tipo ou parcelas responde
409. - Nova tentativa da mesma venda (cartão recusado, outro cartão, pagamento dividido) usa referência nova, como
pedido1234-t2. - Se a maquininha não pegar a cobrança dentro de
validadeSegundos, ela viracanceladacomEXPIRADA: uma maquininha desligada não recebe cobrança velha depois. Depois que a maquininha pega, o prazo não vale mais.
Boas práticas
- Grave a cobrança (id e referência) antes de mostrar “aguardando a maquininha” ao operador.
- Use o webhook para reagir na hora e a consulta (
GET /cobrancas/{id}) como conferência. Sem webhook, consulte a cada 2 segundos. - Em
erro, nunca cobre de novo automaticamente. Mostre ao operador que o pagamento precisa ser conferido. - Ofereça um botão de cancelar enquanto a cobrança estiver
pendente. - Use
ultimoContatoEmdo terminal para avisar que a maquininha está desligada ou fora do modo integração antes de cobrar.