Tudo que o painel faz está disponível pela API: cobrar em cartão, PIX e boleto, dividir com subcontas, consultar saldo, antecipar recebíveis e transferir. Comece pela chave de teste — os payloads são idênticos aos de produção.
Passe estes endereços ao seu assistente de código em vez de colar trechos avulsos — eles descrevem a API inteira e são gerados a cada release, então não ficam para trás da produção:
/llms.txt — índice da documentação
/llms-full.txt — documentação completa em um arquivo
A API da TrustPay é REST, aceita e devolve JSON em UTF-8 e usa os verbos e códigos HTTP padrão. Tudo que o painel faz — cobrar, consultar saldo, sacar, gerenciar subcontas — está disponível pela API com as mesmas regras.
Item
Valor
Base URL
https://api.trustand.com.br/api/v1
Formato
JSON UTF-8
Valores monetários
Reais com até 2 casas decimais — 149.90
Datas
ISO 8601 em UTC — 2026-07-19T14:32:07.412Z
Autenticação
Header X-API-Key ou Authorization: Bearer
Rotas de negócio são escopadas ao seu merchant: o caminho sempre começa com /merchants/{merchantId}/…. O merchant da rota é autoritativo — o corpo da requisição nunca decide de qual conta é a operação.
Começando
Autenticação
Há duas credenciais, para dois usos diferentes: API key para integração servidor-a-servidor, e JWT para sessões de usuário no painel.
Método
Header
Uso
API key live
X-API-Key: gk_live_…
Produção, servidor-a-servidor. Escopo total do merchant.
API key test
X-API-Key: gk_test_…
Sandbox: mesmos endpoints, dados isolados, adquirente sempre simulado.
JWT
Authorization: Bearer …
Usuários do painel. Access token dura 15 min; renove com o refresh token.
Nunca exponha a chave live no navegadorA API key concede escopo total da conta. Ela deve viver apenas no seu servidor, em variável de ambiente. Se vazar, revogue imediatamente em Configurações → API Keys.
Criando uma API key
A criação exige um JWT de usuário Administrador. A chave é exibida uma única vez na resposta — guarde-a no momento em que criar, porque não há como recuperá-la depois.
A chave é sua, e a TrustPay nunca a enviaChaves são geradas por você — no painel, em Configurações → API Keys, ou por esta rota. A TrustPay não envia chaves por e-mail, WhatsApp ou telefone: guardamos apenas o hash, então nem nós conseguimos recuperá-las. Perdeu uma? Gere outra e revogue a anterior. Conta ainda em onboarding recebe 403 aqui — nem chave de teste — até ficar ativa, o que exige o credenciamento aprovado e a conta de recebimento aberta no banco parceiro. Já rotate funciona sempre: é o caminho para trocar uma chave comprometida.
POST/merchants/{merchantId}/api-keys
Emite uma nova chave de API para a conta.
Corpo da requisição
name
stringobrigatório
Identificação da chave (ex.: "Servidor de produção").
mode
"live" | "test"
Padrão live. Chaves de teste operam no sandbox.
Requisição
curl -X POST https://api.trustand.com.br/api/v1/merchants/{merchantId}/api-keys \
-H "Authorization: Bearer $JWT" \
-H "Content-Type: application/json" \
-d '{"name":"Servidor de produção"}'
Resposta 201
{
"id":"b2f1…",
"name":"Servidor de produção",
"key":"gk_live_9f2a…",
"mode":"live",
"createdAt":"2026-07-19T12:00:00.000Z"
}
O login nunca devolve tokens diretamente: o segundo fator é obrigatório para todos os usuários. Com MFA ativo, o login retorna { mfaRequired, mfaToken } e você conclui em POST /auth/mfa/verify. Sem MFA, retorna { mfaSetupRequired, mfaSetupToken } e o usuário se inscreve no próprio fluxo de login.
POST/auth/login
Passo 1. Devolve mfaToken ou mfaSetupToken.
POST/auth/mfa/verify
Passo 2 com o código TOTP de 6 dígitos → tokens.
POST/auth/mfa/enroll
Inscrição: devolve segredo + URI para o QR Code.
POST/auth/refresh
Renova o par de tokens (aceita corpo ou cookie httpOnly).
GET/auth/me
Perfil do usuário logado, papéis e merchantId.
Começando
Teste e produção
O sandbox não é um servidor separado: são os mesmos endpoints, discriminados pela chave que você usa.
Uma chave gk_test_ opera em modo teste — os dados nascem com livemode: false, ficam isolados da operação real e o adquirente de cartão é sempre o simulado, mesmo que haja um adquirente real configurado. Nada criado em modo teste aparece para a chave live nem toca o saldo real.
Integre primeiro com a chave de testeRode o fluxo inteiro no sandbox — cobrança, webhook, estorno, conciliação — antes de trocar uma única variável de ambiente para gk_live_. Os payloads são idênticos.
Começando
Primeira cobrança
Do zero a um pagamento aprovado em três chamadas. O exemplo usa cartão; PIX e boleto são ainda mais curtos.
1. Tokenize o cartão
O número do cartão nunca deve trafegar pela sua aplicação nem ser armazenado. Troque-o por um token de uso único, válido por 15 minutos.
1 — tokenização
curl -X POST https://api.trustand.com.br/api/v1/merchants/{merchantId}/card-tokens \
curl -X POST https://api.trustand.com.br/api/v1/merchants/{merchantId}/payments \
-H "X-API-Key: $TRUSTPAY_KEY" \
-H "Idempotency-Key: pedido-10432" \
-H "Content-Type: application/json" \
-d '{
"amount": 149.90,
"paymentMethod": "credit_card",
"cardToken": "tok_…",
"installments": 1
}'
# → { "id": "pay_…", "status": "authorized", … }
3. Capture
A autorização reserva o limite; a captura é o que efetivamente cobra e gera o recebível na sua agenda.
3 — captura
curl -X POST https://api.trustand.com.br/api/v1/merchants/{merchantId}/payments/pay_…/capture \
-H "X-API-Key: $TRUSTPAY_KEY"
# → { "id": "pay_…", "status": "paid", … }
Próximo passo obrigatórioConfigure um webhook. Consultar o status por polling funciona, mas eventos assíncronos — PIX liquidado, boleto pago, chargeback aberto — só chegam por webhook.
Fundamentos
Erros
Erros usam os códigos HTTP padrão e sempre trazem um corpo JSON com a mesma forma.
Corpo de erro
{
"statusCode":422,
"message":"Saldo insuficiente para a transferência",
"error":"Unprocessable Entity"
}
Código
Significado típico
400
Payload inválido — falhou a validação de campos.
401
Token ou chave ausente, inválida ou revogada.
403
Sem permissão RBAC, ou o recurso é de outro tenant.
404
Recurso não existe (ou não pertence à sua conta).
409
Conflito de estado — ex.: capturar um pagamento já capturado.
422
Regra de negócio — saldo insuficiente, chave PIX inválida, split acima de 100%.
429
Rate limit excedido — aplique retry com backoff.
400 e 422 não são a mesma coisa400 significa que a requisição está malformada e repetir não vai adiantar. 422 significa que a requisição é válida mas o estado da conta não permite a operação agora — pode fazer sentido tentar de novo mais tarde.
Fundamentos
Idempotência
Timeout de rede não significa que a operação falhou. A idempotência garante que reenviar a mesma requisição não cobra o cliente duas vezes.
Envie o header Idempotency-Key com um valor único seu (o ID do pedido serve bem) em qualquer POST. A primeira resposta é armazenada e as repetições com o mesmo payload recebem a resposta original de volta, sem executar nada.
Situação
Resultado
Mesma chave, mesmo payload
Replay: devolve a resposta original. Nada é executado de novo.
Mesma chave, payload diferente
409 Conflict — a chave já pertence a outra operação.
Mesma chave, ainda processando
409 Conflict — aguarde e consulte o recurso.
Reenvio seguro
# A mesma chave em duas chamadas idênticas cobra UMA vez.
curl -X POST https://api.trustand.com.br/api/v1/merchants/{merchantId}/payments \
-H "X-API-Key: $TRUSTPAY_KEY" \
-H "Idempotency-Key: pedido-10432" \
-d '{"amount":149.90,"paymentMethod":"pix"}'
Além do header universal, POST /payments e POST /transfers também aceitam idempotencyKey dentro do corpo.
Fundamentos
Paginação e filtros
Toda listagem compartilha a mesma base de parâmetros, e cada recurso acrescenta os seus.
Parâmetro
Descrição
page
Página, começando em 1.
limit
Itens por página. Máximo 100.
status
Filtra pelo status do recurso.
createdFrom / createdTo
Intervalo de criação em ISO 8601 — 2026-07-01 ou com hora.
amountFrom / amountTo
Faixa de valor em reais, inclusiva.
Filtros específicos por recurso
Recurso
Parâmetros extras
GET /ledger
eventType, action=credit|debit. A faixa de valor incide sobre o líquido.
GET /payments
paymentMethod, customerId, search (ID ou referência da adquirente).
GET /transactions
method=card|pix|boleto, status normalizado, search (ID, referência, E2E ou linha digitável).
GET /transfers
method=pix|ted, search (favorecido, documento, chave PIX ou end-to-end ID).
GET /pix/transactions
customerId
GET /boletos
dueFrom / dueTo — data de vencimento.
GET /receivables
dueFrom / dueTo; faixa de valor sobre o líquido.
GET /subscriptions
planId, customerId.
GET /payment-links
search
GET /customers
search, name, email.
Fundamentos
Rate limits
Os limites são por IP e variam conforme a sensibilidade da rota.
Ao exceder, a resposta é 429 Too Many Requests. Implemente retry com backoff exponencial — e combine com idempotência para que a retentativa seja segura.
Receber
Pagamentos com cartão
O ciclo é autorizar → capturar. A autorização reserva o limite do portador; a captura cobra de fato e gera os recebíveis na sua agenda de liquidação.
Status possíveis: created → authorized → paid → partially_refunded → refunded, ou os terminais declined, blocked_fraud e cancelled.
POST/merchants/{merchantId}/card-tokens
Troca os dados do cartão por um token de uso único, válido por 15 minutos. O PAN nunca é armazenado.
Tabela Price de 1 a 12x com os juros da sua conta.
Antifraude nativoTodo pagamento de cartão passa por um score inline antes de ir ao adquirente. Acima do limiar da conta (padrão 60) o pagamento nasce blocked_fraud. Há também bloqueio duro de card testing: um IP com 5 ou mais recusas em 15 minutos é barrado antes do adquirente, com blockReason: card_testing_ip_velocity.
Receber
PIX
Cobrança PIX com BR Code copia-e-cola. A liquidação é assíncrona: o crédito no saldo acontece quando o pagador paga, e você é avisado por webhook.
POST/merchants/{merchantId}/pix/transactions
Emite uma cobrança PIX e devolve o BR Code para exibir como QR Code ou texto copia-e-cola.
Corpo da requisição
amount
numberobrigatório
Valor em reais.
description
string
Texto exibido ao pagador.
expiresInMinutes
number
Validade da cobrança. Expirada, vira status expired.
customerId
string
Vincula a cobrança a um cliente.
splits
array
Divide na confirmação; a tarifa do trilho é rateada proporcionalmente.
Estorna cobrança paga: {amount?} — sem amount = total; parcial acumula até o valor pago. O pagador recebe o valor cheio e o débito no saldo é o bruto: a tarifa da venda não é devolvida. Provedores que só estornam o total recusam pedido parcial (400). Se o provedor cancelar o reembolso depois do aceite, o valor é recreditado e o webhook pix.refund_cancelled é emitido.
Comprovante PIX tem E2EAo liquidar, a transação registra o ID end-to-end — obrigatório em comprovante PIX pelo manual do BACEN — junto com os dados do pagador.
QR fixo (o QR do balcão). Um código estático permanente para consultório, clínica ou comércio: imprima uma vez e receba quantos PIX chegarem. Cada pagamento vira uma transação PIX própria (com staticQrId preenchido), com tarifa, comprovante e webhook pix.completed iguais aos da cobrança avulsa. Valor fixo (mínimo R$ 1,00) ou aberto — o pagador digita. Sem split.
Desativar é interno: o QR some do painel, mas um código já impresso pode continuar pagável no banco emissor — pagamento que chegar depois ainda credita, marcado em metadata.paid_while_disabled. Recolha o material físico ao desativar.
POST/merchants/{merchantId}/pix/static-qrs
Cria o QR fixo: {label, amount?} — sem amount = valor aberto.
2ª via com multa e juros já embutidos no novo valor.
POST/merchants/{merchantId}/boletos/{id}/pay
Somente sandbox: simula a liquidação bancária.
POST/merchants/{merchantId}/boletos/{id}/pay-pix
Somente sandbox: liquida pelo QR PIX.
Bole-Pix sai mais baratoQuando o pagador usa o QR PIX do Bole-Pix, a tarifa de boleto não é cobrada — a liquidação segue o trilho PIX.
Receber
Transações unificadas
Uma listagem só para as cobranças dos três trilhos — cartão, PIX e boleto — e um detalhe por transação com a linha do tempo de eventos, paga ou não. É a mesma visão da tela Transações do painel.
GET/merchants/{merchantId}/transactions
Lista paginada unificada. Além dos filtros comuns de listagem, aceita método, status normalizado e busca textual.
Query string
method
"card" | "pix" | "boleto"
Restringe a uma fonte. Ausente = todas.
status
string
Status normalizado: pending, paid, refunded, declined, expired ou cancelled — traduzido para os status brutos de cada fonte (ex.: pending casa created/authorized no cartão).
search
string
ID exato, referência no adquirente, end-to-end ID (PIX) ou linha digitável (boleto).
type identifica a fonte (payment, pix ou boleto) e é o segmento usado nas rotas de detalhe abaixo. Um boleto híbrido aparece com method: bolepix; a cobrança PIX interna de um Bole-Pix não é listada — o boleto representa a cobrança.
O detalhe devolve { transaction, events[] }. Cada evento é { key, label, description?, occurredAt, amount? } — a linha do tempo da cobrança: criação, autorização (código/NSU), pagamento, recusa, estorno(s), liquidação de recebível por parcela, chargeback, vencimento, expiração e cancelamento. Evento sem data registrada vem com occurredAt: null; vencimento futuro de boleto vem com data futura (o painel o mostra como etapa prevista).
PermissõesA listagem aceita qualquer permissão de leitura de cobrança (payment:read, pix:read ou boleto:read); cada rota de detalhe exige a permissão do seu tipo.
Receber
Links de pagamento
Uma página de checkout hospedada pela TrustPay, sem você escrever front-end. Útil para venda avulsa, cobrança por WhatsApp e primeiros testes.
POST/merchants/{merchantId}/payment-links
Cria o link. Informe amount para valor avulso OU planId para vincular a uma assinatura — nunca os dois.
Corpo da requisição
name
stringobrigatório
Nome do link, exibido no checkout.
amount
number
Valor avulso. Exclusivo com planId.
planId
string
Cria uma assinatura ao pagar. Exclusivo com amount.
Estas duas rotas não exigem autenticação — são o que a página hospedada consome. Use-as se preferir construir seu próprio checkout sobre o link.
GET/pay/links/{slug}
Dados do link para renderizar o checkout, incluindo as opções de parcelamento com juros.
POST/pay/links/{slug}/checkout
Efetua o pagamento com os dados do pagador.
Receber
Planos e assinaturas
Cobrança recorrente: você define o plano uma vez e a TrustPay cobra no ciclo. No cartão a cobrança liquida na hora; no boleto, Bole-Pix e PIX a TrustPay emite a cobrança e o ciclo só fecha quando o pagamento entra.
POST/merchants/{merchantId}/plans
Cria um plano — o molde da cobrança recorrente.
Corpo da requisição
identifier
stringobrigatório
Identificador único seu (ex.: "pro-mensal").
name
stringobrigatório
Nome exibido.
amount
numberobrigatório
Valor por ciclo.
interval
number
Quantidade de intervalos por ciclo. Padrão 1.
intervalType
"days" | "weeks" | "months"
Unidade do ciclo. Padrão months.
trialDays
number
Período de teste antes da primeira cobrança.
paymentMethod
string
credit_card, boleto, bolepix ou pix.
POST/merchants/{merchantId}/subscriptions
Assina um cliente a um plano. Para cobrança em cartão, o cardToken é obrigatório.
Corpo da requisição
planId
stringobrigatório
Plano a assinar.
customerId
stringobrigatório
Cliente assinante.
cardToken
string
Obrigatório quando o plano cobra em cartão.
GET/merchants/{merchantId}/subscriptions
Lista as assinaturas.
GET/merchants/{merchantId}/subscriptions/summary
Panorama da recorrência: receita mensal, cobranças em aberto, vencidas sem pagamento e o que entrou no mês.
Arquiva o plano — assinaturas ativas seguem cobrando.
O ciclo fecha no pagamento, não na emissão. Em cartão, a cobrança liquida na hora e o ciclo já nasce pago. Em boleto, Bole-Pix e PIX a TrustPay emite a cobrança e o ciclo fica pending: o contador cyclesBilled só avança, e o próximo ciclo só é agendado, quando o dinheiro entra. Consulte o estado em GET /subscriptions/{id}/cycles.
O pagador tem 5 dias para quitar cada ciclo (nunca mais que o próprio intervalo do plano). Enquanto a cobrança estiver em aberto, nenhuma outra é emitida para o mesmo ciclo. Vencer sem pagamento leva a assinatura para past_due e, na terceira vez, suspended. O aniversário da assinatura conta a partir da emissão: quem paga com atraso não empurra os ciclos seguintes.
Receber
Clientes
Cadastrar o pagador é opcional, mas destrava notificações automáticas de cobrança e o histórico por cliente.
POST/merchants/{merchantId}/customers
Cria o cliente (nome, e-mail, documento, telefone).
Quando a cobrança tem um cliente com contato, a TrustPay envia automaticamente boleto emitido, lembrete de vencimento e confirmação de pagamento. Desligue em merchants.notifications_enabled.
Dinheiro
Saldo e extrato
O saldo é derivado de um livro-razão imutável: não existe campo de saldo editável. Toda movimentação é um lançamento append-only.
Números pré-agregados por dia (fuso de Brasília): dias fechados saem de uma tabela materializada, só o dia corrente é calculado ao vivo — a consulta responde rápido independente do volume histórico.
Todos os relatórios aceitam from/to (YYYY-MM-DD, inclusivos, máximo 366 dias) e product (card | pix | boleto), exigem a permissão report:read e têm uma variante /export.csv no dialeto que o Excel pt-BR abre com duplo clique.
GET/merchants/{merchantId}/reports/sales
Vendas: totais, por produto e série diária.
GET/merchants/{merchantId}/reports/performance
Conversão por produto + % de devoluções e chargebacks.
Como ler a conversãoCartão: aprovadas ÷ tentativas (aprovadas + recusadas). PIX e boleto: pagas ÷ emitidas — QR abandonado no checkout é normal e derruba o número; acompanhe a tendência. Percentual vem null quando não houve tráfego no denominador.
Dinheiro
Disputas: chargeback e MED
Contestação de cartão (chargeback) e devolução especial de PIX (MED, do BACEN) viram registros com status atualizado automaticamente conforme o provedor avança no caso.
GET/merchants/{merchantId}/chargebacks
Contestações de cartão da conta, com o status corrente da disputa.
Query string
status
string
Filtra por status: received, under_review, accepted, rejected, reversed.
Disputa aberta pelo portador; você pode responder com evidências.
under_review
Documentação em análise no adquirente.
reversed
Você GANHOU: o valor fica com você.
accepted
Disputa perdida ou aceita: o valor é debitado e devolvido ao portador.
rejected
Disputa rejeitada pela análise.
GET/merchants/{merchantId}/pix-disputes
Disputas de PIX (MED — Mecanismo Especial de Devolução do BACEN).
Query string
status
string
opened, accepted ou released.
Resposta 200
[{
"id":"med_7bc1…",
"pix_transaction_id":"pix_4a90…",
"amount":250.00,
"status":"opened",
"reason":"MED — suspeita de fraude relatada pelo pagador",
"resolved_at":null,
"created_at":"2026-07-20T09:15:00.000Z"
}]
Status
O que significa
opened
MED aberto: o valor está bloqueado na conta enquanto o caso é analisado.
accepted
MED acatado: o valor foi devolvido ao pagador.
released
MED rejeitado: o bloqueio foi liberado sem débito.
MED não é estorno comumO MED nasce na instituição do pagador (suspeita de fraude) e bloqueia o valor na conta antes de qualquer decisão. O registro aqui é informativo — a movimentação acontece no trilho do PIX — e a taxa de MEDs e chargebacks da conta aparece no relatório de performance. Ambas exigem a permissão chargeback:read.
Dinheiro
Recebíveis e antecipação
Cartão não liquida na hora: a captura cria uma agenda de recebíveis, uma linha por parcela, que vence em D+N. A antecipação troca essa espera por dinheiro hoje, com desconto.
O padrão é D+30 por parcela (configurável em settlement_days_card). Até vencer, o valor aparece em pending no saldo; um job liquida no vencimento e move para available.
GET/merchants/{merchantId}/receivables
Agenda. Filtre por status=scheduled|settled|anticipated e vencimento.
Simula a taxa pro-rata de cada recebível elegível, sem efeito.
POST/merchants/{merchantId}/anticipations
Antecipa. Sem receivableIds, antecipa todos os elegíveis. Exige Administrador.
GET/merchants/{merchantId}/anticipations
Histórico de antecipações.
Como a taxa é calculadaA antecipação cobra um percentual ao mês (padrão 1,99%) aplicado pro-rata pelos dias que faltam para cada recebível vencer. Antecipar um recebível que vence amanhã custa quase nada; antecipar D+30 custa o mês cheio. O líquido é creditado na hora.
Dinheiro
Saques e transferências
Duas saídas de dinheiro: saque (payout) leva o saldo para a sua conta bancária cadastrada; transferência envia para terceiros por PIX ou TED.
POST/merchants/{merchantId}/payouts
Saca para a conta bancária cadastrada do merchant. O débito no saldo é atômico e serializa com outras saídas concorrentes.
Corpo da requisição
amount
number
Valor a sacar. Omitido = saca todo o saldo disponível.
metadata
object
Dados livres devolvidos nos webhooks e consultas.
POST/merchants/{merchantId}/transfers
Envia dinheiro a terceiros. Informe a chave PIX ou os dados bancários completos, conforme o método.
Saída de dinheiro pede idempotênciaTransferência e saque concluem no próprio request: completed para transferência, paid para saque. Um timeout de rede, porém, não diz qual dos dois lados falhou — sempre envie idempotencyKey e, na dúvida, consulte o recurso antes de reenviar.
GET/merchants/{merchantId}/payouts
Lista os saques.
POST/merchants/{merchantId}/payouts/{id}/cancel
Cancela um saque ainda não processado.
GET/merchants/{merchantId}/transfers
Lista, com method e search por favorecido, documento, chave ou E2E.
As tarifas de PIX out e TED são pós-pagas: entram na fatura mensal, e o débito imediato é só o valor enviado. Criar transferência é permissão de Administrador.
Dinheiro
Comprovantes
Segunda via sob demanda de qualquer transação concluída, em JSON estruturado ou PDF pronto para o cliente final.
type é um de payment, pix, boleto, transfer ou payout. A permissão exigida é a de leitura do recurso correspondente. Só transações concluídas têm comprovante — pendente ou recusada retorna 400.
Código de autenticaçãoTodo comprovante traz um código determinístico (HMAC-SHA256 dos dados imutáveis): a segunda via reproduz sempre o mesmo código, como em comprovante bancário. CPF de terceiros sai mascarado por LGPD.
Marketplace
Subcontas
No modelo marketplace, cada vendedor da sua plataforma vira uma subconta com saldo, extrato e KYC próprios, sob o seu guarda-chuva.
POST/merchants/{merchantId}/subaccounts
Cria a subconta. Ela nasce com KYC pendente: já pode receber, mas não saca até a verificação aprovar.
Corpo da requisição
legalName
stringobrigatório
Razão social ou nome completo.
document
stringobrigatório
CPF (11 dígitos) ou CNPJ (14).
email
stringobrigatório
E-mail de contato da subconta.
O que a conta-mãe pode e não pode
A conta-mãe nunca movimenta o saldo da filhaA credencial da mãe opera as rotas das filhas para leitura, KYC, chaves e controles — mas saque, transferência e antecipação da filha exigem a credencial da própria filha (retorna 403). O poder da mãe é suspender, não movimentar. Uma filha também não acessa nada da mãe nem de outra filha.
Divide uma cobrança entre várias contas no momento da liquidação. Funciona igual em cartão, PIX e boleto.
Envie splits na criação da cobrança. Cada regra aceita percentage (0,01 a 100) ouamount fixo, e os dois formatos podem ser misturados na mesma cobrança. O limite é de 20 recebedores.
Conta que recebe a parte. Precisa estar na mesma estrutura.
percentage
Percentual do valor pago. Exclusivo com amount.
amount
Valor fixo em reais. Exclusivo com percentage.
liable
Padrão true. Com false, um chargeback dessa parte fica com o marketplace, não com o recebedor.
Regra do guarda-chuvaO recebedor precisa estar na mesma estrutura do pagador — mesma raiz por parent_merchant_id (mãe ↔ filha, filha ↔ irmã) — e com KYC aprovado. Split para fora da estrutura é recusado com 400.
Quando cada parte é creditada
Em cartão, o split segue a agenda D+N: cada parte vira um recebível próprio por parcela e só é creditada ao liquidar — split nunca antecipa liquidação. Em PIX e boleto, as regras são persistidas na criação e recalculadas na confirmação: o percentual incide sobre o valor efetivamente pago (boleto vencido inclui multa e juros) e a tarifa do trilho é rateada proporcionalmente.
Integração
Webhooks
Webhooks são a fonte de verdade da sua integração: a TrustPay chama a sua URL a cada evento, com assinatura HMAC, retry automático e histórico consultável.
POST/merchants/{merchantId}/webhooks
Registra o endpoint. O secret é exibido uma única vez — guarde-o na hora.
Corpo da requisição
url
stringobrigatório
HTTPS público. IPs privados e loopback são rejeitados (anti-SSRF).
Cada entrega traz o header X-Webhook-Signature com o HMAC-SHA256 do corpo bruto. Valide antes de qualquer JSON.parse, com comparação de tempo constante.
Node / Express
const crypto = require('crypto');
// Use o RAW body — reserializar o JSON quebra a assinatura.
// processe de forma IDEMPOTENTE: o mesmo evento pode chegar 2x
res.status(200).end(); // responda 2xx rápido
});
Três regras de ouroResponda 2xx rápido e processe o trabalho pesado de forma assíncrona. Seja idempotente: deduplique pelo ID do evento, porque retries podem duplicar entregas. Valide sempre a assinatura.
Retry e histórico
Entrega que falha — resposta não-2xx ou timeout — volta para a fila com backoff exponencial, até 5 tentativas por padrão.
Com a chave gk_test_, use estes números para forçar cada desfecho do adquirente.
Número
Resultado
4111 1111 1111 1111
Aprovado
4000 0000 0000 0002
Recusado — declined
4000 0000 0000 9995
Saldo insuficiente
4000 0000 0000 0101
Suspeita de fraude
4000 0000 0000 0259
Timeout do adquirente
Para PIX, use POST /pix/transactions/{id}/confirm para simular o pagamento. Para boleto, POST /boletos/{id}/pay ou /pay-pix. Em transferência, uma chave PIX contendo invalid resulta em failed sem débito, simulando recusa do DICT.
Tarifas padrão
Operação
Tarifa
Cartão (MDR)
2,99% sobre o valor capturado
Boleto
R$ 3,49 na liquidação — isento se pago pelo QR PIX do Bole-Pix
PIX recebido
Sem tarifa por padrão
Transferência PIX
R$ 0,75 (pós-paga, entra na fatura)
Transferência TED
R$ 3,50 (pós-paga, entra na fatura)
Antecipação
1,99% ao mês, pro-rata
As tarifas são configuráveis por conta. Consulte as suas em GET /merchants/{mid}/pricing e simule o líquido de uma operação em GET /merchants/{mid}/pricing/simulate.
Integração
SDK e referência Swagger
Duas formas de ir além desta página.
SDK oficial para Node.js
Cliente TypeScript com zero dependências, cobrindo toda a API, com retry idempotente embutido.
Uso
import { Orion } from '@trustpay/node';
const orion = new Orion({ apiKey: process.env.TRUSTPAY_KEY });
O Swagger é gerado direto do código e lista todos os endpoints, incluindo os administrativos que não estão nesta página. Use-o como referência exaustiva e para testar chamadas no navegador: https://api.trustand.com.br/docs. O schema puro, para gerar cliente ou validar payload, fica em https://api.trustand.com.br/openapi.json.
Integrando com apoio de IA
Se você integra com um assistente de código (Claude, Cursor, Copilot), aponte-o para estes endereços em vez de colar trechos desta página — eles descrevem a API inteira e são gerados a cada release, então não ficam para trás do que está no ar. Colar pedaços soltos é o que faz o assistente inventar rota que não existe.
Endereço
O que é
/llms.txt
Resumo da API e links para cada documento — o agente lê primeiro e decide o que buscar.
/llms-full.txt
Toda a documentação num arquivo só, para despejar no contexto de uma vez.
https://api.trustand.com.br/openapi.json
Contrato de cada rota: parâmetros, corpo e respostas. Serve para o agente validar o que gerou.