NAV

PRIMEIROS PASSOS

Essa seção tem como objetivo prover o ferramental necessário para entendimento da documentação a seguir, como por exemplo os endpoints das APIs, variáveis, códigos de erro, instruções da utilização dos simuladores de adquirente e antifraude, bem como enumeradores e exemplos de utilização no Postman.

Introdução

Resposta padrão das APIs

{
    "traceKey": "guid",
    "errors": [
        {
            "errorCode": int,
            "message": "string",
            "field": "string"
        }
    ],
    "success": bool
}

A forma principal de integração com a é com a utilização de APIs, através das quais é possível usufruir de funcionalidades como pagamentos e-commerce e cartão presente, e-wallet, conciliação, split de pagamentos, extrato digital, entre outras. Essa documentação tem como objetivo facilitar a integração com nossos parceiros e dar autonomia aos desenvolvedores responsáveis pela integração. As APIs da foram implementadas com base na arquitetura RESTful, e são divididas por produto, portanto ao longo da documentação serão utilizados endpoints diferentes para pagamento (gateway), gestão (portal) e conciliação. A utilização de cada API pode diferir minimamente, porém todas usam JSON como media-type padrão, JWT como Bearer token na autenticação e sempre com o encoding UTF-8. Além disso, todas as APIs possuem uma resposta padrão.

Segurança

Para que a esteja apta a processar pagamentos, é necessário estarmos adequados às regras do PCI DSS, exigidas e atualizadas trimestralmente. Ao integrar com a , nossos parceiros utilizam uma infraestrutura com foco em performance e segurança, que, seguindo normas do PCI, é testada trimestralmente afim de garantir a segurança dos membros do arranjo de pagamentos, estabelecimentos comerciais e prestadores de serviço que armazenam ou transmitam dados de cartões de crédito. Os testes feitos são auditados por empresas terceiras e submetidos ao PCI Council anualmente. Através da certificação PCI DSS, a oferece: - Acesso a 5 anos de armazenamento dos dados - Rastreabilidade das operações realizadas na plataforma - Utilização de certificado SSL 1.2 em todas as APIs - Acesso à gestão de mundaças e changelog

Endpoints

As URLs que serão utiizadas para fazer as requisições.

Desenvolvimento

Endpoint Link Descrição
{{ENDPOINT_PORTAL}} https://portal-dev.aditum.com.br Url do portal de desenvolvimento.
{{ENDPOINT_GATEWAY}} https://payment-dev.aditum.com.br Url do gateway de desenvolvimento.
{{ENDPOINT_RECONCILIATION}} https://reconciliation-dev.aditum.com.br Url do reconciliation de desenvolvimento.
{{ENDPOINT_WEBHOOK}} https://webhook-dev.aditum.com.br Url do Webhook de desenvolvimento.
{{OAUTH_URL}} https://dashboard-dev.aditum.com.br/ Url utilizada para acessar o portal de desenvolvimento.

Produção

Endpoint Link Descrição
{{ENDPOINT_PORTAL}} https://portal-api.aditum.com.br Url do portal.
{{ENDPOINT_GATEWAY}} https://payment.aditum.com.br Url do gateway.
{{ENDPOINT_RECONCILIATION}} https://reconciliation-api.aditum.com.br Url do reconciliation.
{{ENDPOINT_WEBHOOK}} https://webhook.aditum.com.br Url do Webhook.
{{OAUTH_URL}} https://portal.aditum.com.br Url utilizada para acessar o portal.

Variáveis

Uma variável é um valor nomeado dinamicamente que pode interagir com as funções introduzindo valores predeterminados.

Variáveis Descrição
{{accessToken}} Token de autorização, que pode ser criado na API do portal e na do gateway.
{{merchantId}} O id do comerciante.
{{cardId}} O id de um cartão.
{{smartCheckoutId}} O id de um smartCheckout.
{{customerId}} O id de um cliente.
{{receiverId}} O id de um recebedor.
{{chargeId}} O id de uma cobrança.
{{taxPlanId}} O id de uma taxa.
{{acquirerCode}} O id da adquirente.
{{cardBrand}} O id da bandeira do cartão.
{{taxId}} O id da taxa.
{{transactionsStatus}} O status da transação de conciliação.
{{transactionsType}} O tipo da transação de conciliação.
{{startDate}} A data inicial a ser filtrada.
{{endDate}} A data final a ser filtrada.
{{planId}} O id do plano.
{{bankSlipTaxPlanId}} O id do plano de taxas de boletos.
{{invoiceId}} O id da fatura.
{{productId}} O id do produto.
{{subscriptionId}} O id da assinatura.
{{transferOrderId}} O id do pedido de transferência.
{{virtualAcquirerId}} O id da adquirente virtual.
{{clientId}} ID de EDI definido pelo adquirente.
{{document}} Número do documento do comprador.
{{userId}} O ID do usuário.
{{roleId}} O número que define a função do perfil do usuário.
{{partner_token}} Código de identificação do integrador, utilizado na integração com TEF.

Códigos de Erros

Lista com os possíveis códigos de erros que uma requisição não sucedida pode apresentar.

Valor inteiro Descrição
1 Uma propriedade obrigatória ou condicional está vazia, apenas com espaços em branco, apenas com zeros ou nula.
2 Merchant Token inválido.
3 Cartão não suportado.
4 Cartão não encontrado na wallet.
5 Mês de expiração do cartão inválido.
6 Ano de expiração do cartão inválido.
7 Cartão expirado.
8 Comprador não encontrado na .
9 Número de parcelas inválido.
10 Erro de comunicação com a adquirente. Tentar mais tarde ou entrar em contato com a .
11 Adquirente inválida.
12 Tipo de pagamento inválido.
13 Prioridade do tipo de pagamento inválida.
14 Taxa percentual inválida.
15 Valor inválido.
16 Cobrança cancelada.
17 Cobrança não encontrada na .
18 Data inválida.
19 Frequência de recorrência inválida.
20 Plano não encontrado na .
21 Intervalo de datas inválido.
22 ID do cartão inválido.
23 Recebedor não encontrado.
24 Opção de enumerador inválida ou não suportada.
25 Banco não suportado.
26 Comprador não pode fazer ou requisitar a operação.
27 Erro na cobrança recorrente.
28 Erro ao executar os comandos.
29 Usuário não encontrado na .
31 Data de início é mais recente que a data final.
32 CNPJ inválido.
33 E-mail inválido.
34 ID da adquirente inválido.
35 Token da loja pai inválido.
36 Operação não permitida para a loja.
37 Operação não permitida.
38 ID da loja inválido.
39 Permissão não encontrada.
40 PAN encriptado está ausente.
41 PAN sequence number (5F34) inválido.
42 Terminal não encontrado na .
43 Loja não encontrada na .
44 Erro na senha.
45 Propriedade inválida (genérico).
46 Tamanho da página ausente.
47 Numero da página atual ausente.
48 Data e hora inválidos.
49 Transação não suportada.
50 Erro interno de atualização.
51 Não foi possível se conectar ao gateway de pagamentos.
52 A assinatura foi desativada.
53 A assinatura foi desativada devido a quantidade excessiva de não autorização.
54 Valor excede o limite.
55 Assinatura não encontrada.
56 Cartão inválido.
57 Histórico de comunicação da loja não encontrado.
58 Operação não suportada pela adquirente.
59 ID de conciliação já existe.
60 ID de conciliação não existe.
61 Data requisitava é mais recente que a data atual.
62 Erro de requisição no Safrapay.
63 O cartão é diferente da transação original.
64 Transação não pode ser cancelada.
65 Falha no upload do arquivo .OFX.
66 Valor requisitado é maior que o saldo atual do recebedor.
67 Data requisitada é mais antiga que a data atual.
68 Valor de transferência inválido.
69 Data requisitava é mais recente que a data atual.
70 Data requisitada é mais antiga que a data atual.
71 Formato do GUID inválido.
72 Status inválido para cancelamento de pedido de transferência. Tente novamente mais tarde.
73 ID do pedido de transferência não encontrado.
74 Número de transferências por dia excedido.
75 ID da linha de extrato no arquivo .OFX é inválida.
76 Cliente já foi credenciado.
77 ID do cliente é inválido.
78 ID do cliente não existe.
79 Valor não aceito. O valor deve estar no intervalo especificado na mensagem de erro.
80 Recebedor já possui conta vinculada.
81 Checkout / link de pagamento expirado.
82 Erro ao salvar dados.
83 Cobrança não cancelada.
84 Checkout / link de pagamento não encontrado.
85 ID da taxa não encontrado.
86 Ordem de transferência está em processamento.
87 Nenhum plano de taxas cadastrado.
88 Conciliação não cadastrada.
89 O documento do comprador é inválido para o e-mail requisitado. Isso pode ocorrer se o e-mail já foi cadastrado para um comprador, com outro CPF / CNPJ.
90 Status da transação conciliada é inválido.
91 Código da bandeira do cartão é inválido.
92 Conta bancária não encontrada para o pedido de transferência.
93 Conta bancária inválida para o pedido de transferência.
94 O valor solicitado é inferior ao saldo total disponível, descontando o valor total das ordens de transferência em progresso no momento.
95 Nenhum recebedor encontrado.
96 Cobrança não elegível para split.
97 Tipo de ajuste inválido.
98 Razão do ajuste inválida.
99 Tamanho da lista é inválido. Verifique o tamanho suportado na mensagem de erro.
100 CNPJ já cadastrado.
101 Cobrança já autorizada.
102 Valor inválido (genérico).
103 Movimentação de ajuste já processada.
104 Configuração de desconto do boleto está inválida.
105 Configuração de desconto do boleto está inválida.
106 Item do plano com valor inválido.
107 Erro na configuração da fatura.
108 Erro ao requisitar parâmetros da adquirente.
109 Erro de ativação na adquirente.
110 Erro na mensageria ISO-8583.
111 Erro ao fazer login no portal .
112 Terminal não está ativado na adquirente.
113 Transação por boleto não suportada.
114 Fatura não encontrada pelo ID.
115 Saldo atual insuficiente, descontando a taxa de transferência eletrônica.
116 Código do banco inválido.
117 Agência inválida.
118 Tamanho da agência inválido.
119 Código de verificação da agência inválido.
120 Conta bancária inválida.
121 Tamanho da conta bancária inválido.
122 Código de verificação da conta bancária inválido.
123 Dados bancários em branco.
124 Tipo de conta bancária inválido.
125 Não foi possível se comunicar com o banco.
126 Erro no desfazimento.
127 E-mail já existe.
128 Comprador não encontrado pelo documento (CPF / CNPJ).
129 CPF inválido.
130 Código de área do telefone é inválido.
131 Código do país do telefone é inválido.
132 Telefone é inválido.
133 Documento é inválido.
134 A origem da requisição é inválida para a operação.
135 Informação de parcelamento é inválida.
136 Bandeira do cartão não suportada pela adquirente.
137 Lançamento futuro não encontrada.
138 Lançamento futuro já existe.
139 Tipos de pagamento suportados não encontrados.
140 Webhook já cadastrado.
141 URL inválida.
142 Origem da requisição não suportada.
143 Modo de entrada do cartão não suportado.
144 Código de transação não suportado, verifique os códigos de transação suportados.
145 A loja não pode configurar antecipação.
146 Acesso negado ao checkout de pagamentos.
147 Não foi possível processar a transação. Tente novamente em alguns minutos ou entre em contato com a loja.
148 Código de processamento não suportado, verifique os códigos de processamento suportados.
149 O valor mínimo da parcela não pode ser maior que o valor do Link de Pagamento ou Checkout.
150 O webhook informado não foi encontrado.
151 Número de série do terminal é inválido.
152 NSU inválido.
153 Loja requer motor de antifraude cadastrado.
9999 Outros.

Simulador

Simulador de Adquirente

No ambiente sandbox, por padrão a loja de testes será configurada para usar o simulador, que retorna respostas pré-definidas afim de testar comportamentos diversos pelo integrador. O simulador de adquirente utiliza os centavos do valor da transação para definir se a transação será aprovada ou não, seguindo a regra abaixo:

Centavos comportamentos
*,00 Transação aprovada
*,01 Transação negada com código 1007 - Consultar o emissor
*,02 Transação negada com código 1011 - Cartão inválido
*,03 Transação negada com código 1016 - Saldo insuficiente
*,04 Transação negada com código 1017 - Senha inválida
*,05 Transação negada com código 1019 - Transação não permitida para o portador
*,06 Transação negada com código 1020 - Transação não permitida para o terminal
*,07 Transação negada com código 1025 - Cartão bloqueado
*,08 Transação negada com código 2001 - Cartão vencido
*,09 Transação negada com código 2002 - Suspeita de fraude
*,10 Timeout
Outros Transação negada com código 1000 - Não aprovado

Simulador de Antifraude

Por padrão esse simulador não estará ativado. Para utilizá-lo, entre em contato com o time de integrações. O funcionamento do simulador de antifraude utiliza a numeração do cartão (PAN) para decidir se será retornado transação aprovada, pendente ou negada, de acordo com a regra abaixo:

PAN Comportamento
4444333322221111 Transação aprovada
4222222222222224 Transação pendente seguido de notificação de transação aprovada
4222222222222225 Transação pendente seguido de notificação de transação negada
Outros Transação negada pelo antifraude. Gateway retornará erro 62 - Negada por risco de fraude

Enumeradores

Lista com os enumeradores, eles te ajudarão a escolher a opção correta dentro de um campo da requisição.

Phone

Valor inteiro Valor string Descrição
0 Undefined Inválido ou não informado.
1 Residencial Telefone Residencial.
2 Commercial Telefone Comercial.
3 Voicemail Correio de Voz.
4 Temporary Telefone Temporário.
5 Mobile Celular.

SmartCheckoutType

Valor inteiro Valor string Descrição
0 Undefined Tipo não definido.
1 PaymentLink SmartCheckout do tipo Link de Pagamento, criado via endpoint /paymentlink.
2 Checkout SmartCheckout do tipo Checkout, criado via endpoint /smartcheckout.

PaymentType

Valor inteiro Valor string Descrição
0 Undefined Indefinido.
1 Debit Débito.
2 Credit Crédito.
3 Voucher Voucher.
4 Boleto Boleto.
5 Ted Transferência Eletrônica de Fundos.
6 Doc Documento de Ordem de Crédito.
7 SafetyPay SafetyPay.
8 Pix Pix.
9 Wallet Wallet.

InstallmentType

Valor inteiro Valor string Descrição
0 None Transação a vista.
1 Merchant Transação parcelada pelo lojista, ou seja, sem juros.
2 Issuer Transação parcelada pelo emissor do cartão, ou seja, com juros.

NotificationMethod

Valor inteiro Valor string Descrição
0 Undefined Valor inválido ou não inserido.
1 Email As notificações são enviadas por e-mail.

TransferOrderStatus

Valor inteiro Valor string Descrição
0 Undefined Valor inválido e não definido.
1 Ordered Quando a transferência é solicitada.
2 Transferred Quando o pedido de transferência é feito, ou seja, pago.
3 Cancelled Status de quando o usuário cancela o pedido de transferência.
4 NotTransferred Situação de quando o pedido de transferência não é realizada por motivos internos.
5 Processing Status de quando a transferência está sendo processada.
6 InsufficientBalanceAtExecuteTed Saldo total no inferior ao solicitado no momento da TED. Como as transferências podem ser agendadas e não é necessário prever o saldo no horário agendado, visto que muitas operações podem ocorrer naquele horário, então no momento do TED é feita uma verificação para ver se o saldo da conta é maior que o valor de TED solicitado.
7 BankAccountInexistent Acontece quando a conta bancária não é encontrada antes do envio do TED.
8 BankAccountInvalid Acontece quando a conta bancária encontrada é inválida antes do envio do TED.

CardBrand

Valor inteiro Valor string
1 Visa
2 MasterCard
3 Amex
4 Elo
5 Aura
6 Jcb
7 Diners
8 Discover
9 Hipercard
11 Enroute
12 Ticket
13 Sodexo
14 Vr
15 Alelo
16 Setra
18 Vero
19 Sorocred
20 GreenCard
21 Cabal
22 Banescard
23 VerdeCard
24 ValeCard
25 UnionPay
26 Up
27 Tricard
28 Bigcard
29 Ben
30 RedeCompras
31 SafrapayDigital
32 BamexBenefits
33 Cdc
34 SindCredit
35 IdealCard
36 NutriCash
37 BiqCard
38 PersonalCard
39 EuCard
40 Planvale
41 LiberCard
42 MaxxCard
43 VsCard
44 CooperCard
45 Megavalecard
46 Abrapetite
47 Agiplan
48 Credsystem
49 Esplanada
50 Credz
51 Ourocard

ChargeStatus

Valor inteiro Valor string Descrição
0 Undefined Não definido ou inválido.
1 Authorized Todas as transações da cobrança foram aprovadas.
2 PreAuthorized Todas as transações da cobrança foram pré-autorizadas.
4 Canceled Todas as transações da cobrança foram canceladas.
5 Partial As transações da cobrança diferem em status. Verificar o status de cada transação individualmente.
6 NotAuthorized Todas as transações da cobrança foram negadas.
7 PendingCancel Todas as transações da cobrança estão com cancelamento pendente.
8 Expired Cobrança expirada.
9 Timeout A cobrança não foi processada devido ao tempo limite.

MerchantType

Valor inteiro Valor string Descrição
0 Undefined Não definido.
1 Upsell O comerciante que terá impostos predefinidos e fará upsell para um estabelecimento, também pode gerenciar o portal.
2 Establishment Comerciante que não pode vender, mas terá impostos definidos por um comerciante de upsell. Normalmente, esse tipo de comerciante vende produtos aos clientes e não adiciona novos comerciantes.
3 ISO Comerciante que é o parceiro que usa nossa plataforma e gerencia todos os impostos para seus parceiros.
4 Developer Comerciante que será usado como um visitante no projeto da SandBox.

TransactionStatus

Valor inteiro Valor string Descrição
0 Undefined Não definido ou inválido.
1 PreAuthorized Transação pré-autorizada.
2 Captured Transação autorizada ou capturada posteriormente.
3 Denied Transação negada.
4 Pending Transação pendente, a ser processada pela adquirente ou banco.
5 Canceled Transação cancelada.
6 PendingCancel Transação com cancelamento pendente pela adquirente ou banco.
7 PendingPayment Transação enviada a adquirente ou banco, aguardando retorno.
8 Paid Boleto pago.
9 ErrorCreation Erro ao criar boleto.
10 Expired Boleto expirado.
11 PendingNewDeadline Nova data de vencimento pendente.
12 Timeout Tempo expirado.
13 PendingReferral Pendente validação do portador.

SmartCheckoutStatus

Valor inteiro Valor string Descrição
0 Undefined Status não definido.
1 Pending Pendente de pagamento, nenhuma cobrança foi feita ainda.
2 Activated Alguma cobrança foi feita, porém não atingiu ainda o limite ou expiração.
3 Canceled Cancelado.
100 ExpiredByMaximumApprovals Expirado, porque o numero de cobranças atingiu o máximo.
101 ExpiredByDate Expirado, porque atingiu a data de expiração.
102 ExpiredByTooManyDenials Expirado / bloqueado, devido a muitas tentativas não aprovadas.

ReceivableMode

Valor inteiro Valor string Descrição
0 Undefined Não definido ou valor inválido.
1 Default Usado para recebíveis comuns. D + 30.
2 NextDay Usado para recebíveis do dia seguinte. D + 1.

AcquirerCode

Valor inteiro Valor string Descrição
0 Undefined Indefinido
1 Cielo Cielo
2 Rede Rede
3 Stone Stone
4 VBI VBI
5 Granito Granito
6 InfinitePay InfinitePay
7 Safrapay SafraPay
8 Adiq (e-commerce) Aditum
9 PagSeguro PagSeguro
10 Adiq (TEF) Adiq
11 SafrapayTef SafrapayTef
12 VrBenefits VR
13 GlobalPayments GlobalPayments
14 PicPay PicPay
15 MercadoPago MercadoPago
16 GetNet GetNet
999 Simulador Simulador

EventType

Valor inteiro Valor string Descrição
0 Undefined Não definido ou inválido.
1 Created Evento disparado quando uma cobrança é feita.
2 Updated Evento disparado quando uma atualização na cobrança é feita, ou seja, captura, cancelamento, etc.

WebhookStatus

Valor inteiro Valor string Descrição
0 Undefined Não definido ou inválido.
1 Pending Webhook pendente, ou seja, eventos não serão enviados para ele nesse momento.
2 Active Webhook está ativo, ou seja, os eventos configurados serão entregues.
3 Failed Limite máximo de falhas atingidos.
4 Canceled Webhook cancelado pelo usuário.

EntityType

Valor inteiro Valor string Descrição
0 Undefined Não definido ou inválido.
1 IndividualMerchant Pessoa Física
2 Company Pessoa Jurídica

DocumentType

Valor inteiro Valor string Descrição
0 Undefined Desconhecido
1 Cpf CPF
2 Cnpj CNPJ
3 Passport Passaporte

DocumentFileType

Valor inteiro Valor string Descrição
0 Undefined Valor inválido ou não inserido.
1 Cnpj Principal documento jurídico da empresa.
2 OwnerLegalDocument Documento jurídico principal do proprietário da empresa.
3 ProofOfAddress Documento que comprova o endereço da empresa.
4 CompanyActivity Documento que especifica quais produtos ou serviços uma determinada empresa vende.
5 ReconciliationAgreement Documento que especifica que contém permissão para acessar EDI.

Gender

Valor inteiro Valor string Descrição
0 Undefined Não definido
1 Female Mulher
2 Male Homem
3 Other Outro

CancelStatus

Valor inteiro Valor string Descrição
0 PendingCancel Cancelamento pendente.
1 Canceled Transação cancelada.
2 NotCanceled Transação não cancelada ou cancelamento não aprovado.

SortDirection

Valor inteiro Valor string Descrição
0 Undefined Valor inválido ou não inserido.
1 Ascending Usado para classificação crescente.
2 Descending Usado para classificação decrescente.

EstablishmentStatusEnum

Valor inteiro Valor string Descrição
0 Undefined Valor inválido ou indefinido.
1 Pending Validação pendente e envio para registro.
2 Active Ativo no registro e com adquirentes ativos.
3 Inactive O estabelecimento não possui transações a serem pagas e não é capaz de efetuar transações no Gateway.
4 Canceled O estabelecimento foi cancelado pela matriz.
5 Suspended Estabelecimento foi desativado pela matriz e contém transações a serem pagas.
6 InactiveByRegister Estabelecimento foi enviado para registro e, em seguida, retornou erro.

PaymentSupportedTypes

Valor inteiro Valor string Descrição
0 Undefined Indefinido.
1 Debit Débito.
2 Credit Crédito.
3 Voucher Voucher.
4 Boleto Boleto.
5 Ted Ted.
6 Doc Doc.
7 SafetyPay SafetyPay.
8 Pix Pix.
9 Wallet Wallet.

RolesEnum

Valor inteiro Valor string Descrição
0 Undefined Indefinido
1 Master Usuário com nível absoluto de permissões.
2 Administrator Usuário pode gerenciar e criar outros usuários. Deve ser capaz de cancelar e capturar cobranças.
3 Operator Usuário com permissões básicas, como visualização de cobranças. Não é possível gerenciar outros usuários nem criar novos usuários.
4 Affiliator Usuário com permissão apenas para adicionar comerciante dentro de um comerciante pai e ver comerciantes que adicionaram comerciante.
5 Manager Usuário com permissão para gerenciar apenas seu comerciante, sem adquirente ou qualquer capacidade para adicionar novo comerciante.
6 Attendant Usuário com permissão para visualizar informações no portal mas não pode executar nenhuma ação, como cancelar, criar ou atualizar.
7 Establishment Usuário sem permissão para visualizar a conciliação.

BankAccounts

Valor inteiro Valor string Descrição
0 Undefined Não definido ou inválido.
1 CheckingAccount Ele está disponível para o proprietário da conta "sob demanda" e está disponível para acesso imediato pelo proprietário da conta ou a outros conforme o proprietário da conta pode direcionar. O acesso pode ser feito de várias maneiras, como saques em dinheiro, uso de cartões de débito, cheques (cheques) e transferência eletrônica. Em termos econômicos, os fundos detidos em um as contas de transações são consideradas como fundos líquidos. Em termos contábeis, eles são considerado como dinheiro.
2 SavingsAccount Uma conta de poupança é uma conta de depósito mantida em um banco de varejo que paga juros, mas não pode ser usado diretamente como dinheiro no sentido estrito de um meio de troca (pois exemplo, preenchendo um cheque). Essas contas permitem que os clientes reservem uma parte de seus ativos líquidos enquanto ganham um retorno monetário.

EntryMode

Valor inteiro Valor string Descrição
0 Undefined Indefinido
1 MagneticStripe Fita Magnética
2 Emv EMV
3 ContactlessMagneticStripe Fita Magnética sem contato
4 ContactlessEmv EMV sem contato
5 Typed Digitado

ReconciliationAdjustment

Valor inteiro Valor string Descrição
1 Credit O ajuste de crédito adicionará mais dinheiro para a conta do comerciante.
2 Debit O ajuste de débito subtrairá o dinheiro das contas a receber do comerciante.

ReconciliationType

Valor inteiro Valor string Descrição
0 Undefined Indefinido
1 Sale Tipo relacionado a conciliações com base na data de venda / transação.
2 Receivable Tipo relacionado a conciliações com base na data de pagamento.

ReconciliationTransactionStatus

Valor inteiro Valor string Descrição
0 Undefined Indefinido.
1 PendingPayment Pendente de Pagamento.
2 Paid Pago
3 Anticipated Antecipado.
4 Canceled Cancelado.
5 Chargeback Chargeback.
6 PendingAnticipation Pendente de antecipação.

ReconciliationAdjustmentReason

Valor inteiro Valor string Descrição
1 Payment Valor de crédito que se refere a uma transação.
2 Chargeback Valor de débito que vem de uma transação estornada.
3 Cancellation Valor de débito que se refere a uma transação cancelada.
4 POSRent Debit value that refers to a POS rent.
5 Antecipation Valor de crédito referente a antecipação de transação.
6 ChargebackRefund Valor de crédito que se refere a um estorno que foi refutado.
7 ChargebackNotification Uma notificação de estorno foi recebida, pode ser um estorno ou abertura de disputa.
8 BlockedAmount Valor bloqueado, por exemplo: por ordem judicial.
9 ChargeFee Usado para taxas de cobrança, por exemplo: taxa de registro.
999 Others Outros motivos que não são mapeados.

DocumentFile

Valor inteiro Valor string Descrição
0 Undefined Valor inválido ou não inserido.
1 CNPJ Principal documento jurídico da empresa.
2 OwnerLegalDocument Documento jurídico principal do proprietário da empresa.
3 ProofOfAddress Documento que comprova o endereço da empresa.
4 CompanyActivity Documento que especifica quais produtos ou serviços uma determinada empresa vende.
5 ReconciliationAgreement Documento que especifica que contém permissão para acessar EDI.

ReconciliationSettingsStatus

Valor inteiro Valor string Descrição
1 Enabled Quando EDI está disponível para obter registros.
2 Disabled O comerciante desativa as configurações de reconciliação ou o EDI não está habilitado.
3 PendingTerm O comerciante não enviou termo assinado para .
4 WaitingActivation O termo foi enviado para o adquirente, mas o EDI ainda não estava habilitado.
5 PendingAcquirer Pendente para aprovação do adquirente.

DiscountType

Valor inteiro Valor string Descrição
0 Undefined Indefinido
1 Percentual Aplicará desconto percentual com base em uma data de pagamento.
2 Fixed Aplicará um valor fixo em centavos com base na data de pagamento.
3 Daily Aplicará um valor diário em centavos com base na data de pagamento.

AntifraudCode

Valor inteiro Valor string
0 Undefined
1 ClearSale
2 Konduto
3 Aditum
4 CyberSource
999 Simulador

PaymentSource

Valor inteiro Valor string Descrição
0 Undefined Indefinido
1 Gateway Gateway
2 Pos POS
3 Pinpad Pinpad
4 Recurrency Recorrência
5 PaymentLink Link de Pagamento
6 MobilePos POS Móvel
7 BankSlip Boleto Bancário
8 ThirdPartyEcommerce Comércio eletrônico de terceiros
9 Others Outros
10 Checkout Checkout
11 RecurrencyCheckout Recorrência Checkout
12 VtexPaymentProvider Provedor de Pagamento VTEX
13 SmartPos Android POS Terminal
14 Magento Loja virtual Magento
15 ManagementDashboard Dashboard de gestão
1001 SafrapayCheckout Checkout Safrapay
1002 SafrapayPaymentLink Link de Pagamento Safrapay
1003 SafrapayCatalogPaymentLink Link de pagamento do catálogo Safrapay

Frequency

Valor inteiro Valor string Descrição
0 Undefined Não definido
1 Daily Diário
2 Weekly Semanal
3 Monthly Mensal
6 Annual Anual

BankSlipIssuer

Valor inteiro Valor string Descrição
0 Undefined Valor inválido ou indefinido.
1 Bs2 Banco Bs2.
2 Safra Banco Safra.
3 Santander Banco Santander.

ChargeEventMode

Valor inteiro Valor string Descrição
0 Undefined Define como os eventos de cobrança são aplicados a uma determinada assinatura.
1 ApplyToFirstCharges O evento de cobrança será aplicado apenas nas primeiras N cobranças recorrentes. N também é definido ao criar ou atualizar um plano.

ReceiverType

Valor inteiro Valor string Descrição
0 Undefined Indefinido
1 Distributor Distribuidor
2 Seller Vendedor
3 MerchantReceiver Comerciante Destinatário

TransferInterval

Valor inteiro Valor string Descrição
0 Undefined Indefinido
1 Day Dia
2 Week Semana
3 Month Mês
4 Year Ano

ContactType

Valor inteiro Valor string Descrição
0 Undefined Indefinido
1 Administration Administração
2 Financial Financeiro
3 Technical Técnico

AditumProduct

Valor inteiro Valor string Descrição
0 Undefined Valor inválido ou não definido
1 Ecommerce Representa o produto de comércio eletrônico
2 Pos Representa o produto PDV
3 Tef Representa o produto TEF
4 BankSlip Representa o produto Boleto Bancário
5 Voucher Representa processo de transações VAN, integrando-se diretamente com as bandeiras e adquirentes de cartões voucher.
6 PaymentLink Transações de Ecommerce que venham através de um link de pagamento.
7 Checkout Transações de Loja virtual que venham através de um checkout.

AdjustmentsType

Valor inteiro Valor string Descrição
1 Credit O ajuste de crédito adicionará mais dinheiro para a conta do comerciante
2 Debit O ajuste de débito subtrairá o dinheiro das contas a receber do comerciante

AdjustmentsReason

Valor inteiro Valor string Descrição
1 Payment Valor de crédito que se refere a uma transação
2 Chargeback Valor de débito que vem de uma transação estornada
3 Cancellation Valor de débito que se refere a uma transação cancelada
4 POSRent Valor de débito que se refere a um aluguel de POS
5 Antecipation Valor de crédito referente a antecipação de transação
6 ChargebackRefund Valor de crédito que se refere a um estorno que foi refutado
999 Others Outros motivos que não são mapeados

TransactionStatus

Valor inteiro Valor string Descrição
0 Undefined Valor inválido ou não definido
1 PreAuthorized Transação aprovada
2 Captured Transação aprovada e capturada
3 Denied Transação não aprovada ou rejeitada
4 Pending Transação ainda não processada pela adquirente
5 Canceled Transação cancelada
6 PendingCancel Transação com cancelamento pendente
7 PendingPayment Transação com pagamento pendente
8 Paid Transação paga
9 ErrorCreation Houve um erro com a transação
10 Expired Transação vencida
11 PendingNewDeadline Nova data de vencimento pendente
12 Timeout Transação não processada devido ao limite de tempo
13 PendingReferral Pendente validação do portador

Postman

Uma biblioteca com todos os endpoints do SandBox predefinidos, onde você pode acessar clicando no botão abaixo.

Run in Postman

AUTENTICAÇÃO

A autenticação é a forma que deve ser utilizada para gerar um Token de acesso, para que você consiga utilizar os endpoints.

Portal API

A autenticação do Portal é feita através do envio do MerchantToken(Chave de Acesso) gerando de um Token JWT. Liberando assim o acesso para utilizar os endpoints do Portal.

POST /login/generateToken

Versão v1.0

Requisição HTTP

POST {{ENDPOINT_PORTAL}}/v1/Login/GenerateToken

Exemplo de requisição

require "uri"
require "net/http"

url = URI("{{ENDPOINT_PORTAL}}/v1/Login/GenerateToken")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Post.new(url)
request["MerchantToken"] = "{{MerchantToken}}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_PORTAL}}/v1/Login/GenerateToken"

payload={}
headers = {
  'MerchantToken': '{{MerchantToken}}'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
curl --location --request POST '{{ENDPOINT_PORTAL}}/v1/Login/GenerateToken' \
--header 'MerchantToken: {{MerchantToken}}'
var myHeaders = new Headers();
myHeaders.append("MerchantToken", "{{MerchantToken}}");

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("{{ENDPOINT_PORTAL}}/v1/Login/GenerateToken", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "generatedToken": "eyJhbHciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6Im1rX2c1RHJLQ0RzRGt1RjFpTFBuRFdvbUEiLCJNZXJjaGFudFRva2VuIjoibWtfZzVEcktDRHNEa3VGMWlMUG5EV29tQSIsIm1lcmNoYW50Um9sZSI6IntcInBhcmVudE1lcmNoYW50SWRcIjpcImNlODY5Yjc3LWEyYjItNGI5NS04ODYzLTJmNzQ3MzNhMzkyOVwiLFwibWVyY2hhbnRJZFwiOlwiMjhlYjkwODMtZWMyMC00YjBlLTg1ZDYtMjJjZjljMzVhODk4XCIsXCJmYW50YXN5TmFtZVwiOlwiQkVOQ0hNQVJLIFJQQ1wiLFwicm9sZXNcIjpbMl0sXCJtZXJjaGFudFRva2VuXCI6XCJta19nNURyS0NEc0RrdUYxaUxQbkRXb21BXCJ9IiwiUmV0dXJuVXJsIjoiIiwibmJmIjoxNjI0MDE5NTIwLCJleHAiOjE2MjQwMjEzMjAsImlhdCI6MTYyNDAxOTUyMCwiaXNzIjoiQWRpdHVtIiwiYXVkIjoiQWRpdHVtIn0.LGPlDY8qKOvh4UiE2Dq_c3xUJ6gMXjvt_ggC3gQN9tWXXfIhXeDJCqfAuK7omn8OpfnRD3h5Hz2NoAnQOMD4Su-wZB-5SkffhX_DkxeGnyzqnx2wvyinMsbPO55uphW2ed1sLtB1PTTxNTmVSsbzr2W214qTLOJnbf3TTU6oO4NBs5unCte7wDB4uhosPj58uiRqXiiCnGEZeRR9n3qxRLRVJOgoCKhTi5-ewnE0ITppoWWOSY3TuHfvr4B2zfBCMYF8XDxV-W-4xtssR2AvHeHyY345e8N-THa01STPSKl5iK5PyuzuOrrzMpkbIAsqVXVdexl0fMeuoTuwBJl0hg",
    "refreshToken": "740efb81fcaa4875a54ce724edaf3125",
    "success": true,
    "errors": [],
    "traceKey": "375c5e3e-7369-48ea-b036-d9ac65e98182"
}

O Endpoint é utilizado para fazer login no portal da , sem que o usuário precise inserir login e senha. Essa funcionalidade pode ser utilizada por sistemas que queiram embutir o portal da .

Requisição

Propriedade Tipo Obrigatório Descrição
MerchantToken string Sim Chave de acesso à API.

Resposta

Propriedade Tipo Descrição
generatedToken string Token JWT que deve ser utilizado no Authorization das próximas requisições. Esse token expira em 30 minutos.
refreshToken string Token utilizado para gerar outros JWT sem precisar enviar o merchantToken.
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
traceKey string Identificador da operação.
HEADERS -
MerchantToken {{MerchantToken}}
-- Chave de acesso à API

POST /login/RefreshToken

Versão v1.0

Requisição HTTP

POST {{ENDPOINT_PORTAL}}/v1/Login/RefreshToken

Exemplo de requisição

require "uri"
require "net/http"

url = URI("{{ENDPOINT_PORTAL}}/v1/Login/RefreshToken")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/json"
request.body = "{\r\n  \"refreshToken\": \"740egb91fcaa4875a54ce724edaf3125\"\r\n}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_PORTAL}}/v1/Login/RefreshToken"

payload="{\r\n  \"refreshToken\": \"740egb91fcaa4875a54ce724edaf3125\"\r\n}"
headers = {
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
curl --location --request POST '{{ENDPOINT_PORTAL}}/v1/Login/RefreshToken' \
--header 'Content-Type: application/json' \
--data-raw '{
  "refreshToken": "740egb91fcaa4875a54ce724edaf3125"
}'
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({"refreshToken":"740egb91fcaa4875a54ce724edaf3125"});

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("{{ENDPOINT_PORTAL}}/v1/Login/RefreshToken", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "accessToken": "eyJhbHciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6Im1rX2c1RHJLQ0RzRGt1RjFpTFBuRFdvbUEiLCJNZXJjaGFudFRva2VuIjoibWtfZzVEcktDRHNEa3VGMWlMUG5EV29tQSIsIm1lcmNoYW50Um9sZSI6IntcInBhcmVudE1lcmNoYW50SWRcIjpcImNlODY5Yjc3LWEyYjItNGI5NS04ODYzLTJmNzQ3MzNhMzkyOVwiLFwibWVyY2hhbnRJZFwiOlwiMjhlYjkwODMtZWMyMC00YjBlLTg1ZDYtMjJjZjljMzVhODk4XCIsXCJmYW50YXN5TmFtZVwiOlwiQkVOQ0hNQVJLIFJQQ1wiLFwicm9sZXNcIjpbMl0sXCJtZXJjaGFudFRva2VuXCI6XCJta19nNURyS0NEc0RrdUYxaUxQbkRXb21BXCJ9IiwiUmV0dXJuVXJsIjoiIiwibmJmIjoxNjI0MDI4MDE2LCJleHAiOjE2MjQwMjk4MTYsImlhdCI6MTYyNDAyODAxNiwiaXNzIjoiQWRpdHVtIiwiYXVkIjoiQWRpdHVtIn0.j7aM4SnGRfA7mt5sXqhccznTPsHeMzAj2kC-Kc6zoEhAyA1eY41ThjWeV7GCxWj9PbPucPgv1Knw1ZYJxyAplSL_k_xaP_t5mLbdSOXG2o9yszeIGdoQuMDbh3_YJpem7kLI23yEYRMvt3GxgGEYFd9h9ah7pRzWDPX8WxKThyWfafSSQ4j5CXOz49k9ksIOArqqAJ6Ap5tA6qezOuf8co_21gJk2qWDcN6SO2y9soYhO_SGEcuzgyEDgDOhVXjIX-BM0oN1Id3FPd8omJARs43LSMDso9CGiQE-2R9oQ0pA3NrfZ0y_PHFfnTIkSOLoQ8KjCcY6H6QLGLfrlp3BRw",
    "refreshToken": "740egb91fcaa4875a54ce724edaf3125",
    "success": true,
    "errors": [],
    "traceKey": "854e236a-1aea-4882-b062-f8cc2d32ab76"
}

O Endpoint é utilizado para atualizar um token de um usuário que está logado no aplicativo.

Requisição

Propriedade Tipo Obrigatório Descrição
refreshToken string Sim O token de atualização do usuário.

Resposta

Propriedade Tipo Descrição
generatedToken string Token JWT que deve ser utilizado no Authorization das próximas requisições. Esse token expira em 30 minutos.
refreshToken string Token utilizado para gerar outros JWT sem precisar enviar o merchantToken.
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
traceKey string Identificador da operação.

BODY Raw

{
   "refreshToken": "740egb91fcaa4875a54ce724edaf3125"
}

Gateway API

A autenticação do Gateway é feita através do envio do BCRYPT(código gerado contendo CNPJ e MerchantToken da loja) e CNPJ. Liberando assim o acesso para utilizar os endpoints do Gateway.

POST /merchant/auth

Versão v2.0

Requisição HTTP

POST {{ENDPOINT_GATEWAY}}/v2/merchant/auth

Exemplo de requisição

require "uri"
require "net/http"

url = URI("{{ENDPOINT_GATEWAY}}/v2/merchant/auth")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = "{{BCRYPT}}"
request["merchantCredential"] = "{{CNPJ}}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_GATEWAY}}/v2/merchant/auth"

payload={}
headers = {
  'Authorization': '{{BCRYPT}}',
  'merchantCredential': '{{CNPJ}}'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
curl --location --request POST '{{ENDPOINT_GATEWAY}}/v2/merchant/auth' \
--header 'Authorization: {{BCRYPT}}' \
--header 'merchantCredential: {{CNPJ}}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "{{BCRYPT}}");
myHeaders.append("merchantCredential", "{{CNPJ}}");

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("{{ENDPOINT_GATEWAY}}/v2/merchant/auth", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "accessToken": "eyJhbHciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6Im1rX2c1RHJLQ0RzRGt1RjFpTFBuRFdvbUEiLCJuYW1laWQiOiJta19nNURyS0NEc0RrdUYxaUxQbkRXb21BIiwibmJmIjoxNjI0MDIzNDc3LCJleHAiOjE2MjUyMzMwNzcsImlhdCI6MTYyNDAyMzQ3NywiaXNzIjoiQWRpdHVtIiwiYXVkIjoiQWRpdHVtIn0.g9jVQKHCsmCwj35ST-tIkhpilGivLKMXG_rVJSI9hXUK5kTklEjV-Pzta5j94UwpvAljcbVAG0uuyL06-Vg1qTMq9UoieynGwzyDXDbKMC8bVbcioJaN7XSLqCEUS6dTizhyXESCaZtpQop0_ibAaBa0yJAIfzCyZYQxeLBcvNENOiaKrMRSYLzAmsBcBsg7EgnD_VvAoqvdQG9J_ZkdDxMlc0e8UHrDlSVBUoEpF09UOH7TtHedHFpgeF5CANUU9-MD7epb5AGLR6cOR-HvHIyrGH-mdKcCXQiGj5tZ8JIcH6diLOp1AP5DZQecCvHxGChIIV2MF2f55OeuMwvZnQ",
    "refreshToken": "6546f5a4a9bb43d39b7cde6b8fdce5d9",
    "success": true,
    "errors": [],
    "traceKey": "e899d6bc-954b-46b7-a52d-5d9ddcf9dbb0"
}

O Endpoint é utilizado para gerar um par de acessos, token de acesso e token de atualização, que são necessários para consumir a API.

Requisição

Propriedade Tipo Obrigatório Descrição
Authorization string Sim BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token.
merchantCredencial string Sim CNPJ / CPF da loja.

Resposta

Propriedade Tipo Descrição
accessToken string Token JWT que deve ser utilizado no Authorization das próximas requisições. Esse token expira em 30 minutos e pode ser atualizado com o refreshToken.
refreshToken string Token utilizado para gerar outros JWT sem precisar enviar o merchantToken.
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
traceKey string Identificador da operação.
HEADERS -
Authorization {{BCRYPT}}
-- BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token.
merchantCredential {{CNPJ}}
-- CNPJ da loja.

POST /refreshtoken

Versão v2.0

Requisição HTTP

POST {{ENDPOINT_GATEWAY}}/v2/refreshtoken

Exemplo de requisição

require "uri"
require "net/http"

url = URI("https://payment-dev.aditum.com.br/v2/refreshtoken")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n    \"accessToken\": \"eyJhbHciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6Im1rX2c1RHJLQ0RzRGt1RjFpTFBuRFdvbUEiLCJuYW1laWQiOiJta19nNURyS0NEc0RrdUYxaUxQbkRXb21BIiwibmJmIjoxNjI0MDIzNDc3LCJleHAiOjE2MjUyMzMwNzcsImlhdCI6MTYyNDAyMzQ3NywiaXNzIjoiQWRpdHVtIiwiYXVkIjoiQWRpdHVtIn0.g9jVQKHCsmCwj35ST-tIkhpilGivLKMXG_rVJSI9hXUK5kTklEjV-Pzta5j94UwpvAljcbVAG0uuyL06-Vg1qTMq9UoieynGwzyDXDbKMC8bVbcioJaN7XSLqCEUS6dTizhyXESCaZtpQop0_ibAaBa0yJAIfzCyZYQxeLBcvNENOiaKrMRSYLzAmsBcBsg7EgnD_VvAoqvdQG9J_ZkdDxMlc0e8UHrDlSVBUoEpF09UOH7TtHedHFpgeF5CANUU9-MD7epb5AGLR6cOR-HvHIyrGH-mdKcCXQiGj5tZ8JIcH6diLOp1AP5DZQecCvHxGChIIV2MF2f55OeuMwvZnQ\",\r\n    \"refreshToken\": \"612179235e914cba90a9743803ba397f\"\r\n}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_GATEWAY}}/v2/refreshtoken"

payload="{\r\n    \"accessToken\": \"eyJhbHciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6Im1rX2c1RHJLQ0RzRGt1RjFpTFBuRFdvbUEiLCJuYW1laWQiOiJta19nNURyS0NEc0RrdUYxaUxQbkRXb21BIiwibmJmIjoxNjI0MDIzNDc3LCJleHAiOjE2MjUyMzMwNzcsImlhdCI6MTYyNDAyMzQ3NywiaXNzIjoiQWRpdHVtIiwiYXVkIjoiQWRpdHVtIn0.g9jVQKHCsmCwj35ST-tIkhpilGivLKMXG_rVJSI9hXUK5kTklEjV-Pzta5j94UwpvAljcbVAG0uuyL06-Vg1qTMq9UoieynGwzyDXDbKMC8bVbcioJaN7XSLqCEUS6dTizhyXESCaZtpQop0_ibAaBa0yJAIfzCyZYQxeLBcvNENOiaKrMRSYLzAmsBcBsg7EgnD_VvAoqvdQG9J_ZkdDxMlc0e8UHrDlSVBUoEpF09UOH7TtHedHFpgeF5CANUU9-MD7epb5AGLR6cOR-HvHIyrGH-mdKcCXQiGj5tZ8JIcH6diLOp1AP5DZQecCvHxGChIIV2MF2f55OeuMwvZnQ\",\r\n    \"refreshToken\": \"612179235e914cba90a9743803ba397f\"\r\n}"
headers = {
  'Authorization': 'Bearer {{accessToken}}',
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

curl --location --request POST '{{ENDPOINT_GATEWAY}}/v2/refreshtoken' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
    "accessToken": "eyJhbHciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6Im1rX2c1RHJLQ0RzRGt1RjFpTFBuRFdvbUEiLCJuYW1laWQiOiJta19nNURyS0NEc0RrdUYxaUxQbkRXb21BIiwibmJmIjoxNjI0MDIzNDc3LCJleHAiOjE2MjUyMzMwNzcsImlhdCI6MTYyNDAyMzQ3NywiaXNzIjoiQWRpdHVtIiwiYXVkIjoiQWRpdHVtIn0.g9jVQKHCsmCwj35ST-tIkhpilGivLKMXG_rVJSI9hXUK5kTklEjV-Pzta5j94UwpvAljcbVAG0uuyL06-Vg1qTMq9UoieynGwzyDXDbKMC8bVbcioJaN7XSLqCEUS6dTizhyXESCaZtpQop0_ibAaBa0yJAIfzCyZYQxeLBcvNENOiaKrMRSYLzAmsBcBsg7EgnD_VvAoqvdQG9J_ZkdDxMlc0e8UHrDlSVBUoEpF09UOH7TtHedHFpgeF5CANUU9-MD7epb5AGLR6cOR-HvHIyrGH-mdKcCXQiGj5tZ8JIcH6diLOp1AP5DZQecCvHxGChIIV2MF2f55OeuMwvZnQ",
    "refreshToken": "612179235e914cba90a9743803ba397f"
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({"accessToken":"eyJhbHciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6Im1rX2c1RHJLQ0RzRGt1RjFpTFBuRFdvbUEiLCJuYW1laWQiOiJta19nNURyS0NEc0RrdUYxaUxQbkRXb21BIiwibmJmIjoxNjI0MDIzNDc3LCJleHAiOjE2MjUyMzMwNzcsImlhdCI6MTYyNDAyMzQ3NywiaXNzIjoiQWRpdHVtIiwiYXVkIjoiQWRpdHVtIn0.g9jVQKHCsmCwj35ST-tIkhpilGivLKMXG_rVJSI9hXUK5kTklEjV-Pzta5j94UwpvAljcbVAG0uuyL06-Vg1qTMq9UoieynGwzyDXDbKMC8bVbcioJaN7XSLqCEUS6dTizhyXESCaZtpQop0_ibAaBa0yJAIfzCyZYQxeLBcvNENOiaKrMRSYLzAmsBcBsg7EgnD_VvAoqvdQG9J_ZkdDxMlc0e8UHrDlSVBUoEpF09UOH7TtHedHFpgeF5CANUU9-MD7epb5AGLR6cOR-HvHIyrGH-mdKcCXQiGj5tZ8JIcH6diLOp1AP5DZQecCvHxGChIIV2MF2f55OeuMwvZnQ","refreshToken":"612179235e914cba90a9743803ba397f"});

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("{{ENDPOINT_GATEWAY}}/v2/refreshtoken", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "accessToken": "eyJhbHciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6Im1rX2c1RHJLQ0RzRGt1RjFpTFBuRFdvbUEiLCJuYW1laWQiOiJta19nNURyS0NEc0RrdUYxaUxQbkRXb21BIiwibmJmIjoxNjI0MDI4MTE2LCJleHAiOjE2MjUyMzc3MTYsImlhdCI6MTYyNDAyODExNiwiaXNzIjoiQWRpdHVtIiwiYXVkIjoiQWRpdHVtIn0.Vzt387BFC1amWYPdbm0vf2wPYwwak1Gj7dmyGWJhpgzIfX9QET1sQTE7YJdFmN6JPKcTnArPzx80wY68hte9_AyDYkSa_P-Jeg6x3NxOyvCxcMPfnv1Qv-gtrfWyA7mnPm2nXXfavzeTZZ7ZQjfMvYBR15a2QVvKLyU3MYFLLo3swW5fsKzxmkn7RaqSFLwS4XI8rNXqLN_zKjGCBu7F4gV-3G2YGivaabZ8nqB1ODo5LDqNieFBnuVAMUiU5s-eORVeEhB-j40LDPICG5poeXYPw7L4VXMhNH8ivY5mCtxbfvk9jWIVBQkWAGrSjRWvOIU35h2-Ym2A8O4-hdqUjw",
    "refreshToken": "612179235e914cba90a9743803ba397f",
    "success": true,
    "errors": [],
    "traceKey": "498c960d-8b70-4658-9d13-fac92eaec6b8"
}

O endpoint é utilizado para atualizar o token de acesso.

Requisição

Propriedade Tipo Obrigatório Descrição
accessToken string Sim Token JWT que deve ser utilizado no Authorization das próximas requisições. Esse token expira em 30 minutos e pode ser atualizado com o refreshToken.
refreshToken string Sim Token utilizado para gerar outros JWT sem precisar enviar o merchantToken.

Resposta

Propriedade Tipo Descrição
accessToken string Token JWT que deve ser utilizado no Authorization das próximas requisições. Esse token expira em 30 minutos e pode ser atualizado com o refreshToken.
refreshToken string Token utilizado para gerar outros JWT sem precisar enviar o merchantToken.
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token.

OAuth

OAuth é a forma de carregar o Portal da dentro da sua aplicação, com a utilização do SSO(Single Sign On);

Para carregar o Portal na sua aplicação, é necessário fazer login através do endpoint POSTv1/login/generateToken

Em seguida deve chamar a URL utilizando SSO passando os dados do accessToken e refreshToken, desta forma:

{{OAUTH_URL}}/sso?accessToken={{accessToken}}&refreshToken={{refreshToken}}

Caso deseje embutir o portal sem o menu utilize &mode=webview no final do URL mostrado a cima

Este processo contém rotas alternativas, você pode utiliza-las da seguinte forma:

{{OAUTH_URL}}/sso?accessToken={{accessToken}}&refreshToken={{refreshToken}}&route={{route}}

Você pode coloca-lo em um <iframe src="{{URL}}"></iframe> direcionando para a URL, assim terá o Portal dentro de sua própria plataforma. No exemplo abaixo, a página de cobranças foi utilizada.

Single Sign On

Nome da rota Rota
Lista de Cobranças &route=charges
Listagem de Link de Pagamento &route=paymentLinkList
Dashboard de Link de Pagamento &route=paymentLinkDashboard
Listagem de Plano &route=plan-list
Calendário da Conciliação &route=calendar
Dashboard da Conciliação &route=reconciliation-dashboard
Extrato Digital &route=movements
Assinaturas &route=subscriptions

Oauth

Gestão de Usuários

POST /user

Versão v1.0

Requisição HTTP

POST {{ENDPOINT_PORTAL}}/v1/user

Exemplo de requisição

require "uri"
require "json"
require "net/http"

url = URI("{{ENDPOINT_PORTAL}}/v1/user")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Post.new(url)
request["merchantId"] = "{{merchantId}}"
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = JSON.dump({
  "email": "emaildousuario@email.com.br",
  "merchantId": "77fc7b0a-a99z-4ff5-5er2-6f2cbab07894",
  "firstName": "João",
  "lastName": "Paulo",
  "roles": [
    2
  ],
  "hostUrl": "https://portal.aditum.com.br/"
})

response = https.request(request)
puts response.read_body

import requests
import json

url = "{{ENDPOINT_PORTAL}}/v1/user"

payload = json.dumps({
  "email": "emaildousuario@email.com.br",
  "merchantId": "77fc7b0a-a99z-4ff5-5er2-6f2cbab07894",
  "firstName": "João",
  "lastName": "Paulo",
  "roles": [
    2
  ],
  "hostUrl": "https://portal.aditum.com.br/"
})
headers = {
  'merchantId': '{{merchantId}}',
  'Authorization': 'Bearer {{accessToken}}',
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

curl --location --request POST '{{ENDPOINT_PORTAL}}/v1/user' \
--header 'merchantId: {{merchantId}}' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
  "email": "emaildousuario@email.com.br",
  "merchantId": "77fc7b0a-a99z-4ff5-5er2-6f2cbab07894",
  "firstName": "João",
  "lastName": "Paulo",
  "roles": [
    2
  ],
  "hostUrl": "https://portal.aditum.com.br/"
}'
var myHeaders = new Headers();
myHeaders.append("merchantId", "{{merchantId}}");
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({
  "email": "emaildousuario@email.com.br",
  "merchantId": "77fc7b0a-a99z-4ff5-5er2-6f2cbab07894",
  "firstName": "João",
  "lastName": "Paulo",
  "roles": [
    2
  ],
  "hostUrl": "https://portal.aditum.com.br/"
});

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("{{ENDPOINT_PORTAL}}/v1/user", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "userId": "6202f934-eq9e-4dc5-9a55-4f479572a1fc",
    "success": true,
    "errors": [],
    "traceKey": "980492a8-c82c-4509-8113-ee12b07afd90"
}

Endpoint responsável por criar um novo usuário dentro de um estabelecimento.

Requisição

Propriedade Tipo Obrigatório Descrição
email string Sim Email do usuário.
merchantId string Sim ID do estabelecimento que será criado o novo usuário.
firstName string Sim Nome do usuário.
lastName string Sim Sobrenome do usuário.
roles int Sim Função do usuário.
hostUrl string Sim URL do portal.

Resposta

Propriedade Tipo Descrição
userId string ID único do novo usuário.
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- Use o Merchant Token para gerar o accessToken do ENDPOINT_PORTAL.
merchantId {{merchantId}}
-- O ID do estabelecimento.

GET /user

Versão v1.0

Requisição HTTP

GET {{ENDPOINT_PORTAL}}/v1/user

Exemplo de requisição

require "uri"
require "net/http"

url = URI("{{ENDPOINT_PORTAL}}/v1/user?merchantId={{merchantId}}")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Get.new(url)
request["merchantId"] = "{{merchantId}}"
request["Authorization"] = "Bearer {{accessToken}}"

response = https.request(request)
puts response.read_body

import requests

url = "{{ENDPOINT_PORTAL}}/v1/user?merchantId={{merchantId}}"

payload={}
headers = {
  'merchantId': '{{merchantId}}',
  'Authorization': 'Bearer {{accessToken}}'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)

curl --location -g --request GET '{{ENDPOINT_PORTAL}}/v1/user?merchantId={{merchantId}}' \
--header 'merchantId: {{merchantId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("merchantId", "{{merchantId}}");
myHeaders.append("Authorization", "Bearer {{accessToken}}");

var requestOptions = {
  method: 'GET',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("{{ENDPOINT_PORTAL}}/v1/user?merchantId={{merchantId}}", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "users": [
        {
            "id": "c67d777e-59ff-4feb-b9fd-99f246d42f84",
            "email": "jorge.felipe@email.com.br",
            "firstName": "Jorge",
            "lastName": "Felipe",
            "roles": [
                "Administrator"
            ]
        }
    ],
    "success": true,
    "errors": [],
    "traceKey": "d2f22ea1-ccc9-99dc-b760-a6acb1649a20"
}

Endpoint responsável por obter os usuários cadastrados em um estabelecimento.

Requisição

Propriedade Tipo Obrigatório Descrição
merchantId string Sim O ID do estabelecimento.

Resposta

Propriedade Tipo Descrição
users array Lista dos usuários cadastrados.
user.id string ID do usuário.
user.email string E-mail do usuário.
user.firstName string Nome do usuário.
user.lastName string Sobrenome do usuário.
roles string Função do perfil do usuário.
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- Use o Merchant Token para gerar o accessToken do ENDPOINT_PORTAL.
merchantId {{merchantId}}
-- O ID do estabelecimento.

PUT /user

Versão v1.0

Requisição HTTP

PUT {{ENDPOINT_PORTAL}}/v1/user

Exemplo de requisição

require "uri"
require "json"
require "net/http"

url = URI("{{ENDPOINT_PORTAL}}/v1/user")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Put.new(url)
request["merchantId"] = "{{merchantId}}"
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = JSON.dump({
  "id": "7894b8ca-c999-4d1c-ab85-5558e2d21dcb",
  "firstName": "João",
  "lastName": "Felipe",
  "merchantId": "{{merchantId}}",
  "roles": [
    2
  ]
})

response = https.request(request)
puts response.read_body

import requests
import json

url = "{{ENDPOINT_PORTAL}}/v1/user"

payload = json.dumps({
  "id": "7894b8ca-c999-4d1c-ab85-5558e2d21dcb",
  "firstName": "João",
  "lastName": "Felipe",
  "merchantId": "{{merchantId}}",
  "roles": [
    2
  ]
})
headers = {
  'merchantId': '{{merchantId}}',
  'Authorization': 'Bearer {{accessToken}}',
  'Content-Type': 'application/json'
}

response = requests.request("PUT", url, headers=headers, data=payload)

print(response.text)

curl --location --request PUT '{{ENDPOINT_PORTAL}}/v1/user' \
--header 'merchantId: {{merchantId}}' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
  "id": "7894b8ca-c999-4d1c-ab85-5558e2d21dcb",
  "firstName": "João",
  "lastName": "Felipe",
  "merchantId": "{{merchantId}}",
  "roles": [
    2
  ]
}'
var myHeaders = new Headers();
myHeaders.append("merchantId", "{{merchantId}}");
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({
  "id": "7894b8ca-c999-4d1c-ab85-5558e2d21dcb",
  "firstName": "João",
  "lastName": "Felipe",
  "merchantId": "{{merchantId}}",
  "roles": [
    2
  ]
});

var requestOptions = {
  method: 'PUT',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("{{ENDPOINT_PORTAL}}/v1/user", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "success": true,
    "errors": [],
    "traceKey": "8f84715b-dfc8-99c9-a593-ae15ed84fa99"
}

Endpoint responsável por atualizar os dados do usuário.

Requisição

Propriedade Tipo Obrigatório Descrição
id string Sim O ID do usuário.
firstName string Sim Nome do usuário.
lastName string Sim Sobrenome do usuário.
merchantId string Sim O ID do estabelecimento.
roles int Sim Função do perfil do usuário.

Resposta

Propriedade Tipo Descrição
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- Use o Merchant Token para gerar o accessToken do ENDPOINT_PORTAL.
merchantId {{merchantId}}
-- O ID do estabelecimento.

PUT /user/ChangePasswordRequest

Versão v1.0

Requisição HTTP

PUT {{ENDPOINT_PORTAL}}/v1/user/ChangePasswordRequest

Exemplo de requisição

require "uri"
require "net/http"

url = URI("{{ENDPOINT_PORTAL}}/v1/user/{{userId}}/roles/{{rolesId}}")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Put.new(url)
request["merchantId"] = "{{merchantId}}"
request["Authorization"] = "Bearer {{accessToken}}"

response = https.request(request)
puts response.read_body

import requests

url = "{{ENDPOINT_PORTAL}}/v1/user/{{userId}}/roles/{{rolesId}}"

payload={}
headers = {
  'merchantId': '{{merchantId}}',
  'Authorization': 'Bearer {{accessToken}}'
}

response = requests.request("PUT", url, headers=headers, data=payload)

print(response.text)

curl --location -g --request PUT '{{ENDPOINT_PORTAL}}/v1/user/{{userId}}/roles/{{rolesId}}' \
--header 'merchantId: {{merchantId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("merchantId", "{{merchantId}}");
myHeaders.append("Authorization", "Bearer {{accessToken}}");

var requestOptions = {
  method: 'PUT',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("{{ENDPOINT_PORTAL}}/v1/user/{{userId}}/roles/{{rolesId}}", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "id": "c67d564e-99ff-7feb-b9fd-99f246d42f84",
    "success": true,
    "errors": [],
    "traceKey": "2a8c999d-7ab5-41f5-999d-9d10d04c05b8"
}

Endpoint responsável por atualizar a função do perfil do usuário.

Requisição

Propriedade Tipo Obrigatório Descrição
userId string Sim O ID do usuário.
rolesId int Sim O enumerador da função do usuário.

Resposta

Propriedade Tipo Descrição
id string O ID do usuário.
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- Use o Merchant Token para gerar o accessToken do ENDPOINT_PORTAL.
merchantId {{merchantId}}
-- O ID do estabelecimento.

POST /user/ChangePasswordRequest

Versão v1.0

Requisição HTTP

POST {{ENDPOINT_PORTAL}}/v1/user/ChangePasswordRequest

Exemplo de requisição

require "uri"
require "json"
require "net/http"

url = URI("{{ENDPOINT_PORTAL}}/v1/user/ChangePasswordRequest")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Post.new(url)
request["merchantId"] = "{{merchantId}}"
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = JSON.dump({
  "email": "usuario@email.com.br",
  "hostUrl": "https://portal.aditum.com.br/"
})

response = https.request(request)
puts response.read_body

import requests
import json

url = "{{ENDPOINT_PORTAL}}/v1/user/ChangePasswordRequest"

payload = json.dumps({
  "email": "usuario@email.com.br",
  "hostUrl": "https://portal.aditum.com.br/"
})
headers = {
  'merchantId': '{{merchantId}}',
  'Authorization': 'Bearer {{accessToken}}',
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

curl --location --request POST '{{ENDPOINT_PORTAL}}/v1/user/ChangePasswordRequest' \
--header 'merchantId: {{merchantId}}' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
  "email": "usuario@email.com.br",
  "hostUrl": "https://portal.aditum.com.br/"
}'
var myHeaders = new Headers();
myHeaders.append("merchantId", "{{merchantId}}");
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({
  "email": "usuario@email.com.br",
  "hostUrl": "https://portal.aditum.com.br/"
});

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("{{ENDPOINT_PORTAL}}/v1/user/ChangePasswordRequest", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "executed": true,
    "success": true,
    "errors": [],
    "traceKey": "e9857894-07a9-4fd7-8ca0-78b9903bccac"
}

Endpoint responsável por enviar um e-mail para o usuário redefinir sua senha.

Requisição

Propriedade Tipo Obrigatório Descrição
email string Sim E-mail do usuário.
hostUrl string Sim Url do portal.

Resposta

Propriedade Tipo Descrição
id string O ID do usuário.
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- Use o Merchant Token para gerar o accessToken do ENDPOINT_PORTAL.
merchantId {{merchantId}}
-- O ID do estabelecimento.

GET /user/Merchants

Versão v1.0

Requisição HTTP

GET {{ENDPOINT_PORTAL}}/v1/user/Merchants

Exemplo de requisição

require "uri"
require "net/http"

url = URI("{{ENDPOINT_PORTAL}}/v1/user/Merchants?pageSize=10&currentPage=1&sortDirection=1")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer {{accessToken}}"

response = https.request(request)
puts response.read_body

import requests

url = "{{ENDPOINT_PORTAL}}/v1/user/Merchants?pageSize=10&currentPage=1&sortDirection=1"

payload={}
headers = {
  'Authorization': 'Bearer {{accessToken}}'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)

curl --location --request GET '{{ENDPOINT_PORTAL}}/v1/user/Merchants?pageSize=10&currentPage=1&sortDirection=1' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");

var requestOptions = {
  method: 'GET',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("{{ENDPOINT_PORTAL}}/v1/user/Merchants?pageSize=10&currentPage=1&sortDirection=1", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "merchants": [
        {
            "merchantId": "99eb9099-ec29-4b0e-99d6-22cf9c35a898",
            "fantasyName": "LOJA DO MANÉL",
            "roles": [
                "Administrator"
            ],
            "merchantToken": "mk_g9DrKCDsTjuF1iLPnDMamA"
        }
    ],
    "totalMerchants": 1,
    "success": true,
    "errors": [],
    "traceKey": "3dc0c2f5-41f6-4331-bc95-e0a8e2a603df"
}

Endpoint responsável por obter estabelecimentos com base no MerchantToken ou UserID passados no JWT.

Requisição

Propriedade Tipo Obrigatório Descrição
pageSize int Sim Quantidade de items por página.
currentPage int Sim Página atual da busca.
fantasyName string Sim Nome fantasia do estabelecimento.
sortDirection int Não A ordem da lista, crescente ou decrescente.
sortFieldName int Não O campo em que a classificação deve ser feita.

Resposta

Propriedade Tipo Descrição
merchants array Lista com os estabelecimentos obtidos.
merchants.merchantId string O ID do estabelecimento.
merchants.fantasyName string O nome fantasia do estabelecimento.
merchants.roles string Função do perfil do estabelecimento.
merchants.merchantToken string O token do estabelecimento.
totalMerchants int Quantidade de estabelecimentos encontrados.
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- Use o Merchant Token para gerar o accessToken do ENDPOINT_PORTAL.

DELETE /user/{{userId}}

Versão v1.0

Requisição HTTP

DELETE {{ENDPOINT_PORTAL}}/v1/user/{{userId}}

Exemplo de requisição

require "uri"
require "net/http"

url = URI("{{ENDPOINT_PORTAL}}/v1/user/{{userId}}?merchantId={{merchantId}}")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Delete.new(url)
request["merchantId"] = "{{merchantId}}"
request["Authorization"] = "Bearer {{accessToken}}"

response = https.request(request)
puts response.read_body

import requests

url = "{{ENDPOINT_PORTAL}}/v1/user/{{userId}}?merchantId={{merchantId}}"

payload={}
headers = {
  'merchantId': '{{merchantId}}',
  'Authorization': 'Bearer {{accessToken}}'
}

response = requests.request("DELETE", url, headers=headers, data=payload)

print(response.text)

curl --location -g --request DELETE '{{ENDPOINT_PORTAL}}/v1/user/{{userId}}?merchantId={{merchantId}}' \
--header 'merchantId: {{merchantId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("merchantId", "{{merchantId}}");
myHeaders.append("Authorization", "Bearer {{accessToken}}");

var requestOptions = {
  method: 'DELETE',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("{{ENDPOINT_PORTAL}}/v1/user/{{userId}}?merchantId={{merchantId}}", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "success": true,
    "errors": [],
    "traceKey": "47624987-1e95-4d9a-944e-e036db17ee15"
}

Endpoint responsável por desativar um usuario do estabelecimento.

Requisição

Propriedade Tipo Obrigatório Descrição
userId string Sim O ID do usuário.
merchantId string Sim O ID do estabelecimento.

Resposta

Propriedade Tipo Descrição
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- Use o Merchant Token para gerar o accessToken do ENDPOINT_PORTAL.
merchantId {{merchantId}}
-- O ID do estabelecimento.

LINK DE PAGAMENTOS

Link de pagamento é uma alternativa para efetuar uma venda sem que o cliente precise acessar seu site ou ir à sua loja. Basta enviar o link por mensagem ou e-mail para concluir o procedimento.

🚧 Quando for criado através do Portal , sempre será criado um link de pagamentos (ao invés de checkout).

A diferença entre o checkout e o link de pagamentos é que no checkout, o comprador está autenticado em uma loja virtual. O link de pagamentos, por sua vez, é público e não necessita de autenticação. Por isso, no checkout é possível visualizar a wallet de cartões do comprador, enquanto no link de pagamentos isso não é possível.

POST /paymentlink

Versão v2.0

Requisição HTTP

POST {{ENDPOINT_GATEWAY}}/v2/paymentlink

Exemplo de requisição (Plano)

require "uri"
require "net/http"

url = URI("{{ENDPOINT_GATEWAY}}/v2/paymentlink")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n   \"planId\": \"932168be-46b8-45d3-80f1-45cdd0cd7d6a\",\r\n   \"customer\": {\r\n        \"name\": \"Jorge Filipe\",\r\n        \"email\": \"jorginho.felps@email.com.br\",\r\n        \"document\": \"01234567891\",\r\n        \"phone\": {\r\n            \"countryCode\": \"+55\",\r\n            \"areaCode\": \"21\",\r\n            \"number\": \"999999999\",\r\n            \"type\": 5\r\n        }\r\n    }\r\n}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_GATEWAY}}/v2/paymentlink"

payload="{\r\n   \"planId\": \"932168be-46b8-45d3-80f1-45cdd0cd7d6a\",\r\n   \"customer\": {\r\n        \"name\": \"Jorge Filipe\",\r\n        \"email\": \"jorginho.felps@email.com.br\",\r\n        \"document\": \"01234567891\",\r\n        \"phone\": {\r\n            \"countryCode\": \"+55\",\r\n            \"areaCode\": \"21\",\r\n            \"number\": \"999999999\",\r\n            \"type\": 5\r\n        }\r\n    }\r\n}"
headers = {
  'Authorization': 'Bearer {{accessToken}}',
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
curl --location --request POST '{{ENDPOINT_GATEWAY}}/v2/paymentlink' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
   "planId": "932168be-46b8-45d3-80f1-45cdd0cd7d6a",
   "customer": {
        "name": "Jorge Filipe",
        "email": "jorginho.felps@email.com.br",
        "document": "01234567891",
        "phone": {
            "countryCode": "+55",
            "areaCode": "21",
            "number": "999999999",
            "type": 5
        }
    }
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({"planId":"932168be-46b8-45d3-80f1-45cdd0cd7d6a","customer":{"name":"Jorge Filipe","email":"jorginho.felps@email.com.br","document":"01234567891","phone":{"countryCode":"+55","areaCode":"21","number":"999999999","type":5}}});

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("{{ENDPOINT_GATEWAY}}/v2/paymentlink", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Exemplo de requisição (Valor Avulso)

require "uri"
require "net/http"

url = URI("{{ENDPOINT_GATEWAY}}/v2/paymentlink")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n  \"amount\": 1000,\r\n  \"description\": \"Descrição do Link\",\r\n  \"emailNotification\": \"jorginho.felps@email.com.br\",\r\n  \"phoneNotification\": \"21999999999\"\r\n}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_GATEWAY}}/v2/paymentlink"

payload="{\r\n  \"amount\": 1000,\r\n  \"description\": \"Descrição do Link\",\r\n  \"emailNotification\": \"jorginho.felps@email.com.br\",\r\n  \"phoneNotification\": \"21999999999\"\r\n}"
headers = {
  'Authorization': 'Bearer {{accessToken}}',
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
curl --location --request POST '{{ENDPOINT_GATEWAY}}/v2/paymentlink' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
  "amount": 1000,
  "description": "Descrição do Link",
  "emailNotification": "jorginho.felps@email.com.br",
  "phoneNotification": "21999999999"
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({"amount":1000,"description":"Descrição do Link","emailNotification":"jorginho.felps@email.com.br","phoneNotification":"21999999999"});

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("{{ENDPOINT_GATEWAY}}/v2/paymentlink", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Exemplo de requisição (Produtos)

require "uri"
require "net/http"

url = URI("{{ENDPOINT_GATEWAY}}/v2/paymentlink")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n    \"emailNotification\": \"jorginho.felps@email.com.br\",\r\n    \"phoneNotification\": \"21999999999\",\r\n    \"newProducts\": {\r\n        \"merchantId\": \"e4a78487-ac6d-4d18-8312-934399d70616\",\r\n        \"products\": [\r\n            {\r\n                \"name\": \"Maçã\",\r\n                \"amount\": 500,\r\n                \"sku\": \"SKU_MACA\",\r\n                \"isActive\": true\r\n            }\r\n        ]\r\n    }\r\n}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_GATEWAY}}/v2/paymentlink"

payload="{\r\n    \"emailNotification\": \"jorginho.felps@email.com.br\",\r\n    \"phoneNotification\": \"21999999999\",\r\n    \"newProducts\": {\r\n        \"merchantId\": \"e4a78487-ac6d-4d18-8312-934399d70616\",\r\n        \"products\": [\r\n            {\r\n                \"name\": \"Maçã\",\r\n                \"amount\": 500,\r\n                \"sku\": \"SKU_MACA\",\r\n                \"isActive\": true\r\n            }\r\n        ]\r\n    }\r\n}"
headers = {
  'Authorization': 'Bearer {{accessToken}}',
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
curl --location --request POST '{{ENDPOINT_GATEWAY}}/v2/paymentlink' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
    "emailNotification": "jorginho.felps@email.com.br",
    "phoneNotification": "21999999999",
    "newProducts": {
        "merchantId": "e4a78487-ac6d-4d18-8312-934399d70616",
        "products": [
            {
                "name": "Maçã",
                "amount": 500,
                "sku": "SKU_MACA",
                "isActive": true
            }
        ]
    }
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({"emailNotification":"jorginho.felps@email.com.br","phoneNotification":"21999999999","newProducts":{"merchantId":"e4a78487-ac6d-4d18-8312-934399d70616","products":[{"name":"Maçã","amount":500,"sku":"SKU_MACA","isActive":true}]}});

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("{{ENDPOINT_GATEWAY}}/v2/paymentlink", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

Resposta (Plano)

{
    "id": "50025917-afac-4d16-9b5f-982840064591",
    "smartCheckoutUrl": "/v2/checkout/50025917-afac-4d16-9b5f-982840064591?signinToken=eyJhbHciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MjQwMzIwOTQsImlzcyI6IkFkaXR1bSIsImF1ZCI6IndhbGxldCJ9.QzuLYDtGOcjwH6-jc7UFEHo_iTWqYVM9yvQfHirfNmw",
    "success": true,
    "errors": [],
    "traceKey": "17139692-d012-441d-bb34-fa4007383ba2"
}

Resposta (Valor Avulso)

{
    "id": "84e6e7c9-d56d-4418-bd82-cdbb92c0302a",
    "smartCheckoutUrl": "/v2/checkout/84e6e7c9-d56d-4418-bd82-cdbb92c0302a?signinToken=eyJhbHciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MjQwMzE5MjQsImlzcyI6IkFkaXR1bSIsImF1ZCI6IndhbGxldCJ9.tlusUUQaRK8Fsnk_-EYJl05mr7IXhEnDTzmiptuKWaY",
    "success": true,
    "errors": [],
    "traceKey": "f6c98b33-a433-4686-b463-5267d6aa73dd"
}

Resposta (Produtos)

{
    "id": "2efa5041-3c12-47e7-bc89-d1b34cb806ab",
    "smartCheckoutUrl": "/v2/checkout/2efa5041-3c12-47e7-bc89-d1b34cb806ab?signinToken=eyJhbHciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MjQwMzE3NzYsImlzcyI6IkFkaXR1bSIsImF1ZCI6IndhbGxldCJ9.RLXiLOu2fNVqErAilrfdh4lpY9OqxO38Y7WNBoUWEzY",
    "products": [
        {
            "amount": 500,
            "name": "Maçã",
            "quantity": 1,
            "id": "4a60763a-9912-49df-98c9-8bb813e6a885",
            "sku": "SKU_MACA"
        }
    ],
    "success": true,
    "errors": [],
    "traceKey": "d00525ff-f58c-41ee-8849-4e598404d1c7"
}

O endpoint responsável por criar um link de pagamentos.

Requisição

Propriedade Tipo Obrigatório Descrição
amount int Condicional Valor a ser cobrado. Obrigatório se o checkout / link de pagamento não possui produto(s).
orderCode string Não Código ou descrição enviado pelo lojista pra identificar o link de pagamento/checkout.
description string Não Descrição do checkout / link de pagamento.
customer object Condicional Dados do comprador. Obrigatório se o customerId não estiver presente.
customer.name string Sim Nome completo do comprador.
customer.email string Sim E-mail do comprador.
customer.entityType entityType Sim Se é pessoa física ou jurídica. .
customer.documentType documentType Sim Tipo do documento do comprador. .
customer.document string Sim Documento do comprador.
customer.birthday date Não Data de nascimento do comprador.
customer.gender Gender Não Gênero do comprador. .
customer.phone object Sim Telefone do comprador.
customer.phone.countryCode string Sim Código do país.
customer.phone.areaCode string Sim Código de área.
customer.phone.number string Sim Número do Telefone.
customer.phone.type PhoneType Sim Tipo do telefone.
customer.address object Sim Endereço do comprador.
customer.address.street string Sim Rua.
customer.address.number string Sim Número.
customer.address.neighborhood string Sim Bairro.
customer.address.city string Sim Cidade.
customer.address.state string Sim Estado.
customer.address.country string Sim País.
customer.address.zipCode string Sim CEP.
customer.address.complement string Sim Complemento.
customerId string Condicional ID do comprador. Obrigatório se o customer não estiver presente e preenchido.
products string[] Não ID dos produtos vendidos no checkout / link de pagamentos.
emailNotification string Não E-mail do comprador. Se preenchido, será enviado link para pagamento por e-mail.
phoneNotification string Não Telefone do comprador. Se preenchido, será enviado link para pagamento por SMS.
paymentSupportedTypes int[] Não ipos de pagamento suportados no checkout. O comprador só poderá pagar ou optar por um dos meios de pagamentos descritos aqui.
discount int Não Desconto no pagamento em centavos.
shippingAmount int Não Valor do frete em centavos.
hostUrl string Não URL de origem do link de pagamento e responsável por inserir Logo e Cor no e-mail. (Necessário para inserir url no botão de pagar do e-mail)
shippingAddress Address Não Endereço de entrega dos produtos.
shippingAddress.street string Sim Rua.
shippingAddress.number string Sim Número.
shippingAddress.neighborhood string Sim Bairro.
shippingAddress.city string Sim Cidade.
shippingAddress.state string Sim Estado.
shippingAddress.country string Sim País.
shippingAddress.zipCode string Sim CEP.
shippingAddress.complement string Sim Complemento.
newProducts NewProducts Não Produtos a serem cadastrados e vendidos no checkout / link de pagamentos. Importante: Os produtos nesse objeto também podem já ter sido cadastrados, porém seus IDs são desconhecidos. Nesse caso, a estrutura do produto deve ser reenviada utilizando o SKU original.
newProducts.merchantId string Sim ID da loja dona dos produtos cadastrados.
newProducts.products Product[] Sim Informação dos produtos cadastrados.
newProducts.products.name string Sim Nome do produto, campo livre.
newProducts.products.description string Não Descrição do produto, campo livre.
newProducts.products.imagesRef string[] Não URLs de Imagens relacionados ao produto, string deve ser URL válida.
newProducts.products.amount string Sim Valor do produto em centavos.
newProducts.products.sku string Sim Identificador único do produto na loja. Não é permitido valor duplicado.
newProducts.products.isActive bool Não Se o produto está disponível na loja. Default false.
expiration date Não Data de expiração do checkout / link de pagamento. Valor default próximo dia (+ 24 horas).
maxInstallmentNumber int Não Número máximo de parcelas suportadas pelo checkout / link de pagamentos. Valor default 12.
minInstallmentAmount int Não Valor mínimo por parcela. Valor default ilimitado.
limitApprovedCharges int Não Número limite de transações aprovadas para o checkout / link de pagamentos. Valor default ilimitado.
primaryColor string Não RGB da cor primária da loja. Utilizado para customizar o tema do e-mail com o link para pagamento.
secondaryColor string Não RGB da cor secundária da loja. Utilizado para customizar o tema do e-mail com o link para pagamento.
installmentNumber int Não Número exato de parcelas suportado pelo checkout / link de pagamentos. Se esse valor for recebido, maxInstallmentNumber é ignorado. Se não for enviado, será considerado apenas o maxInstallmentNumber.
limitDeniedCharges int Não Número limite de transações negadas para o checkout / link de pagamentos. Valor default ilimitado.
customTemplate string Não Identificador do layout a ser exibido na URL do checkout / link de pagamentos. Se não for enviado, será usado o template default.

Resposta

Propriedade Tipo Descrição
id string ID do checkout / link de pagamento criado.
smartCheckoutUrl string URI que deverá ser utilizada em conjunto com uma URL base para acessar a tela de pagamentos.
products Product[] Lista de produtos criados, se houve algum novo produto na criação do checkout / link de pagamento.
products.name string Nome do produto, campo livre.
products.description string Descrição do produto, campo livre.
products.imagesRef string[] URLs de Imagens relacionados ao produto, string deve ser URL válida.
products.amount string Valor do produto em centavos.
products.sku string Identificador único do produto na loja. Não é permitido valor duplicado.
products.isActive bool Se o produto está disponível na loja. Default false.
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
errors.errorCode int Código do erro.
errors.message string Mensagem para identificar qual foi o erro retornado.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token.

BODY Raw

Plano

{
   "planId": "932168be-46b8-45d3-80f1-45cdd0cd7d6a",
   "customer": {
      "name": "Jorge Filipe",
      "email": "jorginho.felps@email.com.br",
      "document": "01234567891",
      "phone": {
         "countryCode": "+55",
         "areaCode": "21",
         "number": "999999999",
         "type": 5
      }
   }
}

Valor Avulso

{
   "amount": 1000,
   "description": "Descrição do Link",
   "emailNotification": "jorginho.felps@email.com.br",
   "phoneNotification": "21999999999"
}

Produtos

{
   "emailNotification": "jorginho.felps@email.com.br",
   "phoneNotification": "21999999999",
   "newProducts": {
      "merchantId": "e4a78487-ac6d-4d18-8312-934399d70616",
      "products": [
         {
            "name": "Maçã",
            "amount": 500,
            "sku": "SKU_MACA",
            "isActive": true
         }
      ]
   }
}

GET /smartcheckout/{smartcheckoutId}/detail

Versão v1.0

Requisição HTTP

GET {{ENDPOINT_PORTAL}}/v1/smartcheckout/{smartcheckoutId}/detail

Exemplo de requisição

require "uri"
require "net/http"

url = URI("{{ENDPOINT_PORTAL}}/v1/smartcheckout/{{smartCheckoutId}}/detail")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Get.new(url)
request["MerchantId"] = "{{merchantId}}"
request[""] = ""
request["Authorization"] = "Bearer {{accessToken}}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_PORTAL}}/v1/smartcheckout/{{smartCheckoutId}}/detail"

payload={}
headers = {
  'MerchantId': '{{merchantId}}',
  '': '',
  'Authorization': 'Bearer {{accessToken}}'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)
curl --location -g --request GET '{{ENDPOINT_PORTAL}}/v1/smartcheckout/{{smartCheckoutId}}/detail' \
--header 'MerchantId: {{merchantId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("MerchantId", "{{merchantId}}");
myHeaders.append("", "");
myHeaders.append("Authorization", "Bearer {{accessToken}}");

var requestOptions = {
  method: 'GET',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("{{ENDPOINT_PORTAL}}/v1/smartcheckout/{{smartCheckoutId}}/detail", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "smartCheckout": {
        "creationDate": "2021-06-18T16:16:25.956",
        "id": "5c233e94-ea21-438b-95e5-ed38df758534",
        "amount": 1000,
        "description": "Descrição do Link",
        "paymentSupportedTypes": [
            "Credit"
        ],
        "discount": 0,
        "expiration": "2021-06-19T16:16:25.956",
        "limitApprovedCharges": 1,
        "type": 1,
        "status": 1,
        "limitDeniedCharges": 5,
        "charges": []
    },
    "success": true,
    "errors": [],
    "traceKey": "77a5ce37-fb8e-46c8-92e9-761b1964af3b"
}

Endpoint responsável por obter os detalhes de um link de pagamento, incluindo informações de cada cobrança efetuada, se houver.

Requisição

Propriedade Tipo Obrigatório Descrição
smartcheckoutId string Sim Número de identificação da cobrança.

Resposta

Propriedade Tipo Descrição
creationDate string Data de criação do smartCheckout.
id string ID do smartCheckout.
amount int O valor do smartCheckout.
description string A descrição do smartCheckout.
paymentSupportedTypes string Tipo de pagamentos.
discount int O valor do disconto.
shippingAmount int O valor do frete.
maxInstallmentNumber int O número máximo de prestações.
expiration string Data de expiração do smartCheckout.
shippingAddress Address Endereço de entrega dos produtos.
shippingAddress.street string Rua.
shippingAddress.number string Número.
shippingAddress.neighborhood string Bairro.
shippingAddress.city string Cidade.
shippingAddress.state string Estado.
shippingAddress.country string País.
shippingAddress.zipCode string CEP.
shippingAddress.complement string Complemento.
limitApprovedCharges int O limite de cobranças aprovadas.
productsDetail ProductDetail Detalhes dos produtos.
productsDetail.amount int O valor do produto.
productsDetail.name string Nome do produto.
productsDetail.quantity int A quantidade de produtos.
productsDetail.id int ID do produto.
productsDetail.sku string É um código identificador do produto que pode ser usado pela loja pra identificar em seu próprio sistema.
type int Tipo de smartCheckout. .
status int Status do smartCheckout.
limitDeniedCharges int O limite de cobranças negadas.
charges array Cobranças do smartCheckout.
charges.id string O ID da cobrança.
charges.addedAtUtc string A data de adição da cobrança.
charges.nsu string O número da transação.
charges.chargeStatus int Indica o status da cobrança.
charges.transactions array Transações da cobrança.
charges.transactions.card array O cartão utilizado na transação.
charges.transactions.card.firstSixDigits string Os 6 primeiros dígitos do cartão.
charges.transactions.card.lasFourDigits string Os 4 últimos dígitos do cartão.
charges.transactions.card.brandName string O nome da bandeira do cartão.
charges.transactions.card.cardHolderName string O nome do títular impresso na frente do cartão.
charges.transactions.card.cardHolderDocument string O documento do títular do cartão.
charges.transactions.amount int O valor da transação.
charges.transactions.transactionId string O ID da transação.
charges.transactions.transactionsStatus int Indica o status da transação.
charges.transactions.paymentType int Indica o tipo de pagamento da transação.
charges.transactions.installmentNumber int Quantidade de parcelas. Só pode ser maior que 1 se o tipo de transação for crédito.
charges.transactions.acquirerId int O ID da adquirente.
charges.transactions.bankIssuerId int O ID do banco.
charges.transactions.creationDateTime string A data de criação da transação.
charges.transactions.captureDateTime string A data de captura da transação.
customer Customer O cliente do smartCheckout.
customer.id string ID do cliente.
customer.name string O nome do cliente.
customer.email string O e-mail do cliente.
customer.document string O documento do cliente.
customer.documentType string O tipo do documento. .
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
errors.errorCode int Código do erro.
errors.message string Mensagem para identificar qual foi o erro retornado.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- Use o Merchant Token para gerar o accessToken do ENDPOINT_PORTAL.
MerchantId {{merchantId}}
-- Número de identificação da loja.

DELETE /smartcheckout/{smartcheckoutId}

Versão v1.0

Requisição HTTP

DELETE {{ENDPOINT_PORTAL}}/v1/smartcheckout/{{smartcheckoutId}}

Exemplo de requisição

require "uri"
require "net/http"

url = URI("https://portal-dev.aditum.com.br/v1/smartcheckout/{{smartcheckoutId}}")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Delete.new(url)
request["merchantId"] = "{{merchantId}}"
request["Authorization"] = "Bearer {{accessToken}}"

response = https.request(request)
puts response.read_body
import requests

url = "https://portal-dev.aditum.com.br/v1/smartcheckout/{{smartcheckoutId}}"

payload={}
headers = {
  'merchantId': '{{merchantId}}',
  'Authorization': 'Bearer {{accessToken}}'
}

response = requests.request("DELETE", url, headers=headers, data=payload)

print(response.text)
curl --location -g --request DELETE 'https://portal-dev.aditum.com.br/v1/smartcheckout/{{smartcheckoutId}}' \
--header 'merchantId: {{merchantId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("merchantId", "{{merchantId}}");
myHeaders.append("Authorization", "Bearer {{accessToken}}");

var requestOptions = {
  method: 'DELETE',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("https://portal-dev.aditum.com.br/v1/smartcheckout/{{smartcheckoutId}}", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "success": true,
    "errors": [],
    "traceKey": "587c72cf-a761-599f-989b-7e46b21204fa"
}

Endpoint responsável por deletar um link de pagamento.

Requisição

Propriedade Tipo Obrigatório Descrição
smartcheckoutId string Sim Número de identificação da cobrança.

Resposta

Propriedade Tipo Descrição
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
errors.errorCode int Código do erro.
errors.message string Mensagem para identificar qual foi o erro retornado.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- Use o Merchant Token para gerar o accessToken do ENDPOINT_PORTAL.
MerchantId {{merchantId}}
-- Número de identificação da loja.

GET /smartcheckout

Versão v1.0

Requisição HTTP

GET {{ENDPOINT_PORTAL}}/v1/smartcheckout

Exemplo de requisição

require "uri"
require "net/http"

url = URI("{{ENDPOINT_PORTAL}}/v1/smartcheckout?startDate=2020-09-27&endDate=2021-09-29&type=1&status=1&pageSize=10&currentPage=1")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Get.new(url)
request["MerchantId"] = "{{merchantId}}"
request["Authorization"] = "Bearer {{accessToken}}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_PORTAL}}/v1/smartcheckout?startDate=2020-09-27&endDate=2021-09-29&type=1&status=1&pageSize=10&currentPage=1"

payload={}
headers = {
  'MerchantId': '{{merchantId}}',
  'Authorization': 'Bearer {{accessToken}}'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)
curl --location --request GET '{{ENDPOINT_PORTAL}}/v1/smartcheckout?startDate=2020-09-27&endDate=2021-09-29&type=1&status=1&pageSize=10&currentPage=1' \
--header 'MerchantId: {{merchantId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("MerchantId", "{{merchantId}}");
myHeaders.append("Authorization", "Bearer {{accessToken}}");

var requestOptions = {
  method: 'GET',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("{{ENDPOINT_PORTAL}}/v1/smartcheckout?startDate=2020-09-27&endDate=2021-09-29&type=1&status=1&pageSize=10&currentPage=1", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "smartcheckouts": [
        {
            "id": "5c700232-c987-4a3a-bb99-c8286c20324b",
            "amount": 999,
            "creationDate": "2021-06-01 15:00:44Z",
            "expiration": "2021-06-02 15:00:44Z",
            "status": 101,
            "statusDescription": "Expirado pelo limite de tempo"
        }
    ],
    "total": 1,
    "success": true,
    "errors": [],
    "traceKey": "300f7c93-2cc5-7893-ad52-1b9151b345e2"
}

Endpoint responsável por obter a lista de checkouts, por data, status e/ou tipo

🚧OBS: Se não for passado data e status a consulta irá trazer os links de pagamento com data de expiração maior que o dia atual.

Requisição

Propriedade Tipo Obrigatório Descrição
startDate string Não A data inicial da consulta
endDate string Não A data final da consulta
type int Sim O tipo de smartCheckout
status int Não O status de smartCheckout
pageSize int Sim Quantidade de items por pagina de consulta
currentPage int Sim O número da página atual da consulta

Resposta

Propriedade Tipo Descrição
id string O número de identificação do smartCheckout
amount int A valor do smartCheckout
creationDate string Data de criação do smartCheckout
expiration string Data de expiração do smartCheckout
status int O status de smartCheckout
statusDescription string Descrição do status.
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
errors.errorCode int Código do erro.
errors.message string Mensagem para identificar qual foi o erro retornado.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- Use o Merchant Token para gerar o accessToken do ENDPOINT_PORTAL.
MerchantId {{merchantId}}
-- Número de identificação da loja.

CONCILIAÇÃO

Conciliação é o processo de verificação das transações feitas, com as processadas por uma adquirente. Esse procedimento é importante para garantir que os recebíveis estão de acordo com o esperado, evitando prejuízo em caso de taxas mal cadastradas ou pagamentos errados por parte da adquirente.

Para que a conciliação seja feita com sucesso, é importante a criação das taxas negociadas com a adquirente. É através dessas taxas que a é capaz de verificar se os pagamentos estão sendo feitos corretamente.

Também é possível fazer a conciliação bancária, que, através do upload de arquivos OFX, faz o batimento da transação efetuada no gateway com o recebido da adquirente e o recebido na conta bancária.

Taxas da Conciliação

A onde é definido as taxas transacionais e taxas de antecipação separados por adquirente, bandeira e tipo de pagamento, como: Débito, Crédito e Crédito Parcelado.

POST /TaxPlan

Versão v1.0

Requisição HTTP

POST {{ENDPOINT_RECONCILIATION}}/v1/TaxPlan

Exemplo de requisição

require "uri"
require "net/http"

url = URI("{{ENDPOINT_RECONCILIATION}}/v1/TaxPlan")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer {{accessToken}}"
request.body = "{\n  \"acquirer\": 999,\n  \"clientId\": \"24754f0a-5419-4493-a0fa-620807e392a7\",\n  \"merchantId\": \"{{merchantId}}\",\n  \"isActive\": true,\n  \"taxes\": [\n    {\n      \"isActive\": true,\n      \"cardBrand\": 1,\n      \"paymentType\": 2,\n      \"installmentMin\": 1,\n      \"installmentMax\": 12,\n      \"anticipationTax\": 100,\n      \"transactionalTax\": 100,\n      \"isInInstallment\": true\n    }\n  ]\n}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_RECONCILIATION}}/v1/TaxPlan"

payload="{\n  \"acquirer\": 999,\n  \"clientId\": \"24754f0a-5419-4493-a0fa-620807e392a7\",\n  \"merchantId\": \"{{merchantId}}\",\n  \"isActive\": true,\n  \"taxes\": [\n    {\n      \"isActive\": true,\n      \"cardBrand\": 1,\n      \"paymentType\": 2,\n      \"installmentMin\": 1,\n      \"installmentMax\": 12,\n      \"anticipationTax\": 100,\n      \"transactionalTax\": 100,\n      \"isInInstallment\": true\n    }\n  ]\n}"
headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer {{accessToken}}'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
curl --location --request POST '{{ENDPOINT_RECONCILIATION}}/v1/TaxPlan' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{accessToken}}' \
--data-raw '{
  "acquirer": 999,
  "clientId": "24754f0a-5419-4493-a0fa-620807e392a7",
  "merchantId": "{{merchantId}}",
  "isActive": true,
  "taxes": [
    {
      "isActive": true,
      "cardBrand": 1,
      "paymentType": 2,
      "installmentMin": 1,
      "installmentMax": 12,
      "anticipationTax": 2,
      "transactionalTax": 2,
      "isInInstallment": true
    }
  ]
}'
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
myHeaders.append("Authorization", "Bearer {{accessToken}}");

var raw = JSON.stringify({"acquirer":999,"clientId":"24754f0a-5419-4493-a0fa-620807e392a7","merchantId":"{{merchantId}}","isActive":true,"taxes":[{"isActive":true,"cardBrand":1,"paymentType":2,"installmentMin":1,"installmentMax":12,"anticipationTax":100,"transactionalTax":100,"isInInstallment":true}]});

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("{{ENDPOINT_RECONCILIATION}}/v1/TaxPlan", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

 {
    "taxPlanEntity": {
        "taxes": [
            {
                "paymentType": "Credit",
                "isInInstallment": true,
                "installmentRange": {
                    "minimum": 1,
                    "maximum": 12
                },
                "taxPercentage": 2.0,
                "cardBrand": "Visa",
                "priority": 1,
                "anticipationTax": 2.0,
                "isActive": true,
                "id": "06019bbb-0d70-43d6-8fd5-8273a01ef63a",
                "addedAtUtc": "2021-06-18T17:36:35.2392904Z",
                "version": 1
            }
        ],
        "clientId": "24754f0a-5419-4493-a0fa-620807e392a7",
        "acquirer": "Simulator",
        "merchantId": "57eb9084-ec20-4b0e-85d6-22cf9c35a898",
        "aditumProduct": "Undefined",
        "receivableMode": "Undefined",
        "isActive": true,
        "id": "db9d1228-a87a-4a20-ac7c-834c0cbbb6e8",
        "addedAtUtc": "2021-06-18T17:36:35.2316015Z",
        "version": 1
    },
    "success": true,
    "errors": [],
    "traceKey": "9580e8e7-cf6e-4eb9-b895-e14455f93db3"
}

Endpoint responsável por criar uma nova taxa de conciliação.

Requisição

Propriedade Tipo Obrigatório Descrição
acquirer int Sim O ID da adquirente. .
clientId string Não O ID do cliente.
merchantId string Não O ID do comerciante.
isActive bool Sim Define se o plano está ativo ou não.
taxes object Não A lista de taxas.
taxes.isActive bool Não Define se taxa está ativo ou não.
taxes.cardBrand int Não A bandeira do cartão à qual o imposto se aplica. .
taxes.paymentType int Não Tipo de transação. .
taxes.installmentMin int Não O valor mínimo de prestação.
taxes.installmentMax int Não O valor máximo de prestação.
taxes.anticipationTax int Não O valor da taxa de antecipação.
taxes.transactionalTax int Não O valor da taxa de transação.
taxes.isInInstallment bool Não Define se está parcelando ou não.

Resposta

Propriedade Tipo Descrição
clientId string O ID do cliente.
acquirer string O nome da adquirente.
merchantId string O ID do comerciante.
taxes object As taxas de um plano de taxa.
taxes.paymentType string Tipo de transação.
taxes.isInIstallment bool Indica se está parcelando ou não.
taxes.installmentRange array Indica faixa de parcelamento, em um crédito tributário, de 2 a 6x ou de 7 a 12x.
taxes.taxPercentage number O valor da taxa em porcentagem.
taxes.cardBrand string O nome da bandeira.
taxes.priority int O nível de prioridade.
taxes.anticipationTax number O valor da taxa de antecipação.
taxes.isActive bool Indica se a taxa está ativa ou não.
taxes.id string O ID da taxa.
taxes.addedAtUtc string A data de adição da taxa.
taxes.version int O número da versão da taxa.
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token.

BODY Raw

{
   "acquirer": 999,
   "clientId": "24754f0a-5419-4493-a0fa-620807e392a7",
   "merchantId": "{{MerchantId}}",
   "isActive": true,
   "taxes": [
      {
         "isActive": true,
         "cardBrand": 1,
         "paymentType": 2,
         "installmentMin": 1,
         "installmentMax": 12,
         "anticipationTax": 2,
         "transactionalTax": 2,
         "isInInstallment": true
      }
   ]
}

GET /TaxPlan

Versão v1.0

Requisição HTTP

GET {{ENDPOINT_RECONCILIATION}}/v1/TaxPlan?acquirerCode={{acqurierCode}}&cardBrand={{cardBrand}}

Exemplo de requisição

require "uri"
require "net/http"

url = URI("{{ENDPOINT_RECONCILIATION}}/v1/TaxPlan?acquirerCode={{acquirerCode}}&cardBrand={{cardBrand}}")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Get.new(url)
request["MerchantId"] = "{{merchantId}}"
request["Authorization"] = "Bearer {{accessToken}}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_RECONCILIATION}}/v1/TaxPlan?acquirerCode={{acquirerCode}}&cardBrand={{cardBrand}}"

payload={}
headers = {
  'MerchantId': '{{merchantId}}',
  'Authorization': 'Bearer {{accessToken}}'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)
curl --location -g --request GET '{{ENDPOINT_RECONCILIATION}}/v1/TaxPlan?acquirerCode={{acquirerCode}}&cardBrand={{cardBrand}}' \
--header 'MerchantId: {{merchantId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("MerchantId", "{{merchantId}}");
myHeaders.append("Authorization", "Bearer {{accessToken}}");

var requestOptions = {
  method: 'GET',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("{{ENDPOINT_RECONCILIATION}}/v1/TaxPlan?acquirerCode={{acquirerCode}}&cardBrand={{cardBrand}}", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "listTaxPlan": [
        {
            "paymentType": "Credit",
            "installmentMin": 1,
            "installmentMax": 12,
            "isInInstallment": true,
            "taxes": [
                {
                    "id": "06019aaa-0d70-43d6-8fd5-8273a01ef63a",
                    "merchantId": "57eb9084-ec20-4b0e-85d6-22cf9c35a898",
                    "acquirer": "Simulator",
                    "cardBrand": "Visa",
                    "anticipationTax": 2.0,
                    "transactionalTax": 2.0,
                    "isActive": true
                }
            ]
        }
    ],
    "success": true,
    "errors": [],
    "traceKey": "c197d2d9-3f05-48fe-ac1b-9d366f2d157c"
}

Endpoint responsável por obter as taxas da conciliação de acordo com adquirente e bandeira do cartão.

Requisição

Propriedade Tipo Obrigatório Descrição
acquirerCode int Sim O ID da adquirente.
cardBrand int Sim A bandeira do cartão à qual o imposto se aplica. .

Resposta

Propriedade Tipo Descrição
paymentType string Tipo de transação.
installmentMin int O valor mínimo de parcelas.
installmentMax int O valor máximo de parcelas.
isInIstallment bool Indica se está parcelando ou não.
taxes.id string O ID da taxa.
taxes.merchantId string O ID do comerciante.
taxes.acquirer string O nome da adquirente.
taxes.cardBrand string O nome da bandeira.
taxes.anticipationTax number O valor da taxa de antecipação.
taxes.transactionalTax number O valor da taxa de transação.
taxes.isActive bool Indica se a taxa está ativa ou não.
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token.
PARAMS -
acquirerCode {{acquirerCode}}
-- O número de identificação da adquirente.
cardBrand {{cardBrand}}
-- O número de identificação da bandeira do cartão.

PATCH /TaxPlan

Versão v1.0

Requisição HTTP

PATCH {{ENDPOINT_RECONCILIATION}}/v1/TaxPlan

Exemplo de requisição

require "uri"
require "net/http"

url = URI("{{ENDPOINTE_RECONCILIATION}}/v1/TaxPlan")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Patch.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n  \"taxId\": \"06019aaa-0d70-43d6-8fd5-8273a01ef63a\",\r\n  \"anticipationTax\": 2,\r\n  \"transactionalTax\": 2\r\n}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINTE_RECONCILIATION}}/v1/TaxPlan"

payload="{\r\n  \"taxId\": \"06019aaa-0d70-43d6-8fd5-8273a01ef63a\",\r\n  \"anticipationTax\": 2,\r\n  \"transactionalTax\": 2\r\n}"
headers = {
  'Authorization': 'Bearer {{accessToken}}',
  'Content-Type': 'application/json'
}

response = requests.request("PATCH", url, headers=headers, data=payload)

print(response.text)
curl --location --request PATCH '{{ENDPOINTE_RECONCILIATION}}/v1/TaxPlan' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
  "taxId": "06019aaa-0d70-43d6-8fd5-8273a01ef63a",
  "anticipationTax": 2,
  "transactionalTax": 2
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({"taxId":"06019aaa-0d70-43d6-8fd5-8273a01ef63a","anticipationTax":2,"transactionalTax":2});

var requestOptions = {
  method: 'PATCH',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("{{ENDPOINTE_RECONCILIATION}}/v1/TaxPlan", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "taxPlanUpdated": {
        "taxes": [
            {
                "paymentType": "Credit",
                "isInInstallment": true,
                "installmentRange": {
                    "minimum": 1,
                    "maximum": 12
                },
                "taxPercentage": 2.0,
                "cardBrand": "Visa",
                "priority": 1,
                "anticipationTax": 2.0,
                "isActive": true,
                "id": "06019ccc-0d70-43d6-8fd5-8273a01ef63a",
                "addedAtUtc": "2021-06-18T17:36:35.239",
                "version": 1
            }
        ],
        "clientId": "24754f0a-5419-4493-a0fa-620807e392a7",
        "acquirer": "Simulator",
        "merchantId": "57eb9084-ec20-4b0e-85d6-22cf9c35a898",
        "aditumProduct": "Undefined",
        "receivableMode": "Undefined",
        "isActive": true,
        "id": "db9d1229-a87b-4a20-ac7c-834c0cbbb6e8",
        "addedAtUtc": "2021-06-18T17:36:35.231",
        "version": 1
    },
    "success": true,
    "errors": [],
    "traceKey": "6f6b3624-e7ac-4fe0-a580-14544d8dc3c7"
}

O Endpoint responsável por atualizar os valores de antecipação e/ou transação de uma taxa.

Requisição

Propriedade Tipo Obrigatório Descrição
taxId string Sim O ID da taxa.
anticipationTax number Sim O valor da taxa de antecipação.
transactionalTax number Não O valor da taxa da transação.

Resposta

Propriedade Tipo Descrição
clientId string O ID do cliente.
acquirer string O nome da adquirente.
merchantId string O ID do comerciante.
taxes object As taxas de um plano de taxa.
taxes.paymentType string Tipo de transação.
taxes.isInIstallment bool Indica se está parcelando ou não.
taxes.installmentRange array Indica faixa de parcelamento, em um crédito tributário, de 2 a 6x ou de 7 a 12x.
taxes.taxPercentage number O valor da taxa em porcentagem.
taxes.cardBrand string O nome da bandeira.
taxes.priority int O nível de prioridade.
taxes.anticipationTax number O valor da taxa de antecipação.
taxes.isActive bool Indica se a taxa está ativa ou não.
taxes array Os dados da taxa.
taxes.id string O ID da taxa.
taxes.addedAtUtc string A data de adição da taxa.
taxes.version int O número da versão da taxa.
isActive bool Indica se o plano de taxas está ativo ou não.
id string O ID do plano de taxas.
addedAtUtc string A data de adição do plano de taxas.
version int O número da versão do plano de taxas.
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token.

BODY Raw

{
   "taxId": "06019aaa-0d70-43d6-8fd5-8273a01ef63a",
   "anticipationTax": 1,
   "transactionalTax": 2
}

DELETE /TaxPlan

Versão v1.0

Requisição HTTP

DELETE {{ENDPOINT_RECONCILIATION}}/v1/TaxPlan

Exemplo de requisição

require "uri"
require "net/http"

url = URI("{{ENDPOINT_RECONCILIATION}}/v1/TaxPlan?taxId={{taxId}}")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Delete.new(url)
request["Authorization"] = "Bearer {{accessToken}}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_RECONCILIATION}}/v1/TaxPlan?taxId={{taxId}}"

payload={}
headers = {
  'Authorization': 'Bearer {{accessToken}}'
}

response = requests.request("DELETE", url, headers=headers, data=payload)

print(response.text)
curl --location -g --request DELETE '{{ENDPOINT_RECONCILIATION}}/v1/TaxPlan?taxId={{taxId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");

var requestOptions = {
  method: 'DELETE',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("{{ENDPOINT_RECONCILIATION}}/v1/TaxPlan?taxId={{taxId}}", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "taxDeleted": {
        "paymentType": "Credit",
        "isInInstallment": true,
        "installmentRange": {
            "minimum": 1,
            "maximum": 12
        },
        "taxPercentage": 2.0,
        "cardBrand": "Visa",
        "priority": 1,
        "anticipationTax": 2.0,
        "isActive": false,
        "id": "06019ccc-0d70-43d6-8fd5-8273a01ef63a",
        "addedAtUtc": "2021-06-18T17:36:35.239",
        "version": 1
    },
    "success": true,
    "errors": [],
    "traceKey": "9728268c-b204-4ab0-aa26-3da80dbc15dc"
}

O Endpoint responsável por deletar uma taxa pelo seu ID.

Requisição

Propriedade Tipo Obrigatório Descrição
taxId string Sim O ID da taxa.

Resposta

Propriedade Tipo Descrição
paymentType string Tipo de transação.
installmentMin int O valor mínimo de parcelas.
installmentMax int O valor máximo de parcelas.
isInIstallment bool Indica se está parcelando ou não.
taxes.id string O ID da taxa.
taxes.merchantId string O ID do comerciante.
taxes.acquirer string O nome da adquirente.
taxes.cardBrand string O nome da bandeira.
taxes.anticipationTax number O valor da taxa de antecipação.
taxes.transactionalTax number O valor da taxa de transação.
taxes.isActive bool Indica se a taxa está ativa ou não.
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token.
PARAMS -
taxId {{taxId}}
-- O número identificador da taxa.

Ajustes

São valores que creditam ou debitam das transações do cliente, ou seja, se a adquirente pagou um valor menor que o esperado ela lança um ajuste de crédito com o valor restante fazendo essa correção do que deveria ser pago.

Os de débito são correções negativas, ou seja, é reduzido o valor total que seria recebido no dia. E isso pode ser proveniente de um Chargeback, Cancelamento ou até um pagamento a mais que a adquirente fez e viu que estava errado.

GET /Adjustments

Versão v1.0

Requisição HTTP

GET {{ENDPOINT_RECONCILIATION}}/v1/Adjustments?merchantId={{MerchantId}}&startDate=2021-03-29%2000:00:00&endDate=2021-03-29%2023:59:59¤tPage=1&pageSize=10&type=2&reason=2

Exemplo de requisição

require "uri"
require "net/http"

url = URI("{{ENDPOINT_RECONCILIATION}}/v1/Adjustments?merchantId={{MerchantId}}&startDate=2021-03-29%2000:00:00&endDate=2021-03-29%2023:59:59&currentPage=1&pageSize=10&type=2&reason=2")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Get.new(url)
request["MerchantId"] = "{{merchantId}}"
request["Authorization"] = "Bearer {{accessToken}}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_RECONCILIATION}}/v1/Adjustments?merchantId={{MerchantId}}&startDate=2021-03-29%2000:00:00&endDate=2021-03-29%2023:59:59&currentPage=1&pageSize=10&type=2&reason=2"

payload={}
headers = {
  'MerchantId': '{{merchantId}}',
  'Authorization': 'Bearer {{accessToken}}'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)
curl --location --request GET '{{ENDPOINT_RECONCILIATION}}/v1/Adjustments?merchantId={{MerchantId}}&startDate=2021-03-29%2000:00:00&endDate=2021-03-29%2023:59:59&currentPage=1&pageSize=10&type=2&reason=2' \
--header 'MerchantId: {{merchantId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("MerchantId", "{{merchantId}}");
myHeaders.append("Authorization", "Bearer {{accessToken}}");

var requestOptions = {
  method: 'GET',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("{{ENDPOINT_RECONCILIATION}}/v1/Adjustments?merchantId={{MerchantId}}&startDate=2021-03-29%2000:00:00&endDate=2021-03-29%2023:59:59&currentPage=1&pageSize=10&type=2&reason=2", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "adjustments": [],
    "totalAdjustments": 0,
    "success": true,
    "errors": [],
    "traceKey": "e7434015-2df9-4cc8-a5ef-4be47aafcd10"
}

O Endpoint responsável por obter ajustes de débito e chargebacks.

Requisição

Propriedade Tipo Obrigatório Descrição
startDate string Sim A data inicial.
endDate string Sim A data final.
type int Sim Tipo de ajustes.
merchantId string Sim O ID do comerciante.
pageSize int Sim Quantidade de itens por página.
currentPage int Sim Página atual.

Resposta

Propriedade Tipo Descrição
adjustments array Detalha os ajustes.
totalAdjusments int O número total de ajustes.
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token.
merchantId {{merchantId}}
-- O ID do comerciante.
PARAMS -
startDate {{startDate}}
-- A data inicial que deseja filtrar.
endDate {{endDate}}
-- A data final que deseja filtrar.
type {{adjustmentType}}
-- O tipo de ajuste.
reason {{adjustmentReason}}
-- Motivo do ajuste.
merchantId {{merchantId}}
-- O ID do comerciante.
pageSize {{pageSize}}
-- A quantidade de itens por página.
currentPage {{currentPage}}
-- A página atual.

Transação de Conciliação

As transações que podem ser reajustadas pela adquirente, no caso de cobrança indevida ou valor incorreto, onde pode ocorrer correções ou cancelamentos.

GET /Reconciliation

Versão v1.0

Requisição HTTP

GET {{ENDPOINT_PORTAL}}/v1/Reconciliation?merchantId={{merchantId}}&startDate=2021-03-01T00:00:00%20%20%20%20%20%20%20%20&endDate=2021-04-01T00:00:00

Exemplo de requisição

require "uri"
require "net/http"

url = URI("{{ENDPOINT_PORTAL}}/v1/Reconciliation?merchantId={{merchantId}}&startDate=2021-03-01T00:00:00%20%20%20%20%20%20%20%20&endDate=2021-04-01T00:00:00")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Get.new(url)
request["merchantId"] = "{{merchantId}}"
request["Authorization"] = "Bearer {{accessToken}}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_PORTAL}}/v1/Reconciliation?merchantId={{merchantId}}&startDate=2021-03-01T00:00:00%20%20%20%20%20%20%20%20&endDate=2021-04-01T00:00:00"

payload={}
headers = {
  'merchantId': '{{merchantId}}',
  'Authorization': 'Bearer {{accessToken}}'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)
curl --location --request GET '{{ENDPOINT_PORTAL}}/v1/Reconciliation?merchantId={{merchantId}}&startDate=2021-03-01T00:00:00%20%20%20%20%20%20%20%20&endDate=2021-04-01T00:00:00' \
--header 'merchantId: {{merchantId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("merchantId", "{{merchantId}}");
myHeaders.append("Authorization", "Bearer {{accessToken}}");

var requestOptions = {
  method: 'GET',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("{{ENDPOINT_PORTAL}}/v1/Reconciliation?merchantId={{merchantId}}&startDate=2021-03-01T00:00:00%20%20%20%20%20%20%20%20&endDate=2021-04-01T00:00:00", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "conciliations": [],
    "canceledReconciliations": [],
    "antecipatedReconciliations": [],
    "creditAdjustments": [],
    "debitAdjustments": [],
    "totalAmountByDay": [],
    "success": true,
    "errors": [],
    "traceKey": "string"
}

O Endpoint responsável por recuperar transações de uma data única.

Requisição

Propriedade Tipo Obrigatório Descrição
startDate string Sim A data inicial.
endDate string Sim A data final.
merchantId string Sim O ID do comerciante.

Resposta

Propriedade Tipo Descrição
conciliations array transações de conciliação.
canceledReconciliations array transações de conciliação canceladas.
antecipatedReconciliations array transações de conciliação antecipadas.
creditAdjustments array Ajustes de crédito.
debitAdjustments array Ajustes de débito.
totalAmountByDay array Quantia total do dia.
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- Use o Merchant Token para gerar o accessToken do ENDPOINT_PORTAL.
merchantId {{merchantId}}
-- O ID do comerciante.
PARAMS -
startDate {{startDate}}
-- A data inicial que deseja filtrar.
endDate {{endDate}}
-- A data final que deseja filtrar.
merchantId {{merchantId}}
-- O ID do comerciante.

GET /Reconciliation/Transactions

Versão v1.0

Requisição HTTP

GET {{ENDPOINT_PORTAL}}/v1/Reconciliation/Transactions?merchantId={{MerchantId}}&startDate=2021-03-29%2000:00:00%20%20%20%20%20%20%20%20&endDate=2021-03-29%2023:59:59%20%20%20%20%20%20%20%20&statusList[0]=1¤tPage=1%20%20%20%20%20%20%20%20&pageSize=10

Exemplo de requisição

require "uri"
require "net/http"

url = URI("{{ENDPOINT_PORTAL}}/v1/Reconciliation/Transactions?merchantId={{merchantId}}&startDate=2021-03-29%2000:00:00%20%20%20%20%20%20%20%20&endDate=2021-03-29%2023:59:59%20%20%20%20%20%20%20%20&statusList[0]=1&currentPage=1%20%20%20%20%20%20%20%20&pageSize=10")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Get.new(url)
request["merchantId"] = "{{merchantId}}"
request["Authorization"] = "Bearer {{accessToken}}"

response = https.request(request)
puts response.read_body

import requests

url = "{{ENDPOINT_PORTAL}}/v1/Reconciliation/Transactions?merchantId={{merchantId}}&startDate=2021-03-29%2000:00:00%20%20%20%20%20%20%20%20&endDate=2021-03-29%2023:59:59%20%20%20%20%20%20%20%20&statusList[0]=1&currentPage=1%20%20%20%20%20%20%20%20&pageSize=10"

payload={}
headers = {
  'merchantId': '{{merchantId}}',
  'Authorization': 'Bearer {{accessToken}}'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)
curl --location -g --request GET '{{ENDPOINT_PORTAL}}/v1/Reconciliation/Transactions?merchantId={{merchantToken}}&startDate=2021-03-29%2000:00:00%20%20%20%20%20%20%20%20&endDate=2021-03-29%2023:59:59%20%20%20%20%20%20%20%20&statusList[0]=1&currentPage=1%20%20%20%20%20%20%20%20&pageSize=10' \
--header 'merchantId: {{merchantToken}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("merchantId", "{{merchantId}}");
myHeaders.append("Authorization", "Bearer {{accessToken}}");

var requestOptions = {
  method: 'GET',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("{{ENDPOINT_PORTAL}}/v1/Reconciliation/Transactions?merchantId={{merchantId}}&startDate=2021-03-29%2000:00:00%20%20%20%20%20%20%20%20&endDate=2021-03-29%2023:59:59%20%20%20%20%20%20%20%20&statusList[0]=1&currentPage=1%20%20%20%20%20%20%20%20&pageSize=10", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "transactions": [],
    "totalTransactions": 0,
    "success": true,
    "errors": [],
    "traceKey": "string"
}

O Endpoint responsável por recuperar datas de vencimento de contas a receber.

Requisição

Propriedade Tipo Obrigatório Descrição
startDate string Sim A data inicial.
endDate string Sim A data final.
merchantId string Sim O ID do comerciante.
statusList[0] array Sim Lista de status Multiselect.
pageSize int Sim Quantidade de itens por página.
currentPage int Sim Página atual.

Resposta

Propriedade Tipo Descrição
transactions array Dados das transações.
totalTransactions int Quantidade de transações obtidas.
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- Use o Merchant Token para gerar o accessToken do ENDPOINT_PORTAL.
merchantId {{merchantId}}
-- O ID do comerciante.
PARAMS -
startDate {{startDate}}
-- A data inicial que deseja filtrar.
endDate {{endDate}}
-- A data final que deseja filtrar.
merchantId {{merchantId}}
-- O ID do comerciante.
statusList statusList[0]=int
-- Multiselect de status para filtrar as transações.
pageSize {{pageSize}}
-- A quantidade de itens por página.
currentPage {{currentPage}}
-- A página atual.

OfxStatement

O OFX(Open Financial Exchange) é um tipo de arquivo de extrato sobre as finanças de sua empresa. O OFX foi criado a fim de facilitar a troca de informações entre instituições.

Esse arquivo pode ser exportado do internet banking e tem como finalidade relacionar o extrato bancário com os registros da conciliação, a fim de confirmar que os recebimentos estão corretos.

GET /OfxStatement

Versão v1.0

Requisição HTTP

GET {{ENDPOINT_PORTAL}}/v1/OfxStatement

Exemplo de requisição

require "uri"
require "net/http"

url = URI("{{ENDPOINT_PORTAL}}/v1/OfxStatement?startDate=2021-03-23%2000:00:00&endDate=2021-03-23%2023:59:59")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Get.new(url)
request["merchantId"] = "{{merchantId}}"
request["Authorization"] = "Bearer {{accessToken}}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_PORTAL}}/v1/OfxStatement?startDate=2021-03-23%2000:00:00&endDate=2021-03-23%2023:59:59"

payload={}
headers = {
  'merchantId': '{{merchantId}}',
  'Authorization': 'Bearer {{accessToken}}'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)
curl --location --request GET '{{ENDPOINT_PORTAL}}/v1/OfxStatement?startDate=2021-03-23%2000:00:00&endDate=2021-03-23%2023:59:59' \
--header 'merchantId: {{merchantId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("merchantId", "{{merchantId}}");
myHeaders.append("Authorization", "Bearer {{accessToken}}");

var requestOptions = {
  method: 'GET',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("{{ENDPOINT_PORTAL}}/v1/OfxStatement?startDate=2021-03-23%2000:00:00&endDate=2021-03-23%2023:59:59", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "ofxStatements": [
        {
            "id": "string",
            "type": "string",
            "transactionDate": "2020-12-01T00:00:00",
            "amount": 0.0,
            "statementId": "string",
            "description": "string",
            "bankId": "string",
            "accountId": "string",
            "isActive": true
        }
    ],
    "success": true,
    "errors": [],
    "traceKey": "string"
}

Endpoint responsável por recuperar as transações em extrato ofx.

Requisição

Propriedade Tipo Obrigatório Descrição
startDate string Sim A data inicial.
endDate string Sim A data final.

Resposta

Propriedade Tipo Descrição
ofxStatements array Representa uma declaração no banco de dados.
ofxStatements.id string ID único da declaração OFX.
ofxStatements.type string Tipo de declaração: DEBIT ou CREDIT.
ofxStatements.transactionDate string Data da declaração em formato ISODate.
ofxStatements.amount double Valor da declaração.
ofxStatements.statementId string ID único da declaração.
ofxStatements.description string Descrição da declaração.
ofxStatements.bankId string ID único do banco relacionado.
ofxStatements.accountId string ID único para a conta bancária relacionada.
ofxStatements.isActive bool Indica se OFX esta ativa ou não.
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- Use o Merchant Token para gerar o accessToken do ENDPOINT_PORTAL.
merchantId {{merchantId}}
-- O ID do comerciante.
PARAMS -
startDate {{startDate}}
-- A data inicial que deseja filtrar.
endDate {{endDate}}
-- A data final que deseja filtrar.

PATCH /OfxStatement/{{ofxStatementId}}

Versão v1.0

Requisição HTTP

PATCH {{ENDPOINT_PORTAL}}/v1/OfxStatement/{{ofxStatementId}}

Exemplo de requisição

require "uri"
require "net/http"

url = URI("{{ENDPOINT_PORTAL}}/v1/OfxStatement/{{ofxStatementId}}")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Patch.new(url)
request["merchantId"] = "{{merchantId}}"
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n  \"clientDescription\": \"string\",\r\n  \"reconciliationIds\": [\r\n    \"string\"\r\n  ]\r\n}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_PORTAL}}/v1/OfxStatement/{{ofxStatementId}}"

payload="{\r\n  \"clientDescription\": \"string\",\r\n  \"reconciliationIds\": [\r\n    \"string\"\r\n  ]\r\n}"
headers = {
  'merchantId': '{{merchantId}}',
  'Authorization': 'Bearer {{accessToken}}',
  'Content-Type': 'application/json'
}

response = requests.request("PATCH", url, headers=headers, data=payload)

print(response.text)
curl --location -g --request PATCH '{{ENDPOINT_PORTAL}}/v1/OfxStatement/{{ofxStatementId}}' \
--header 'merchantId: {{merchantId}}' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
  "clientDescription": "string",
  "reconciliationIds": [
    "string"
  ]
}'
var myHeaders = new Headers();
myHeaders.append("merchantId", "{{merchantId}}");
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({"clientDescription":"string","reconciliationIds":["string"]});

var requestOptions = {
  method: 'PATCH',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("{{ENDPOINT_PORTAL}}/v1/OfxStatement/{{ofxStatementId}}", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "ofxStatementUpdated": [
        {
            "id": "string",
            "type": "string",
            "transactionDate": "2020-12-01T00:00:00",
            "amount": 0.0,
            "statementId": "string",
            "description": "string",
            "bankId": "string",
            "accountId": "string",
            "isActive": true
        }
    ],
    "success": true,
    "errors": [],
    "traceKey": "string"
}

Endpoint responsável pela reconciliação de links com extrato de declaração ofx.

Requisição

Propriedade Tipo Obrigatório Descrição
ofxStatementId string Sim ID único da declaração.

Resposta

Propriedade Tipo Descrição
ofxStatementUpdated array Representa a declaração atualizada no banco de dados.
ofxStatements.id string ID único da declaração OFX.
ofxStatements.type string Tipo de declaração: DEBIT ou CREDIT.
ofxStatements.transactionDate string Data da declaração em formato ISODate.
ofxStatements.amount double Valor da declaração.
ofxStatements.statementId string ID único da declaração.
ofxStatements.description string Descrição da declaração.
ofxStatements.bankId string ID único do banco relacionado.
ofxStatements.accountId string ID único para a conta bancária relacionada.
ofxStatements.isActive bool Indica se OFX esta ativa ou não.
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token.
merchantId {{merchantId}}
-- O ID do comerciante.

BODY raw

{
  "clientDescription": "string",
  "reconciliationIds": [
    "string"
  ]
}

DELETE /OfxStatement/{{ofxStatementId}}

Versão v1.0

Requisição HTTP

DELETE {{ENDPOINT_PORTAL}}/v1/OfxStatement/{{ofxStatementId}}

Exemplo de requisição

require "uri"
require "net/http"

url = URI("{{ENDPOINT_PORTAL}}/v1/OfxStatement/{{ofxStatementId}}")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Delete.new(url)
request["merchantId"] = "{{merchantId}}"
request["Authorization"] = "Bearer {{accessToken}}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_PORTAL}}/v1/OfxStatement/{{ofxStatementId}}"

payload={}
headers = {
  'merchantId': '{{merchantId}}',
  'Authorization': 'Bearer {{accessToken}}'
}

response = requests.request("DELETE", url, headers=headers, data=payload)

print(response.text)
curl --location -g --request DELETE '{{ENDPOINT_PORTAL}}/v1/OfxStatement/{{ofxStatementId}}' \
--header 'merchantId: {{merchantId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("merchantId", "{{merchantId}}");
myHeaders.append("Authorization", "Bearer {{accessToken}}");

var requestOptions = {
  method: 'DELETE',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("{{ENDPOINT_PORTAL}}/v1/OfxStatement/{{ofxStatementId}}", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "ofxStatementDeleted": [
        {
            "id": "string",
            "type": "string",
            "transactionDate": "2020-12-01T00:00:00",
            "amount": 0.0,
            "statementId": "string",
            "description": "string",
            "bankId": "string",
            "accountId": "string",
            "isActive": true
        }
    ],
    "success": true,
    "errors": [],
    "traceKey": "string"
}

Endpoint responsável pela exclusão da instrução ofx.

Requisição

Propriedade Tipo Obrigatório Descrição
ofxStatementId string Sim ID único da declaração.

Resposta

Propriedade Tipo Descrição
ofxStatementDeleted array Representa a declaração atualizada no banco de dados.
ofxStatements.id string ID único da declaração OFX.
ofxStatements.type string Tipo de declaração: DEBIT ou CREDIT.
ofxStatements.transactionDate string Data da declaração em formato ISODate.
ofxStatements.amount double Valor da declaração.
ofxStatements.statementId string ID único da declaração.
ofxStatements.description string Descrição da declaração.
ofxStatements.bankId string ID único do banco relacionado.
ofxStatements.accountId string ID único para a conta bancária relacionada.
ofxStatements.isActive bool Indica se OFX esta ativa ou não.
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- Use o Merchant Token para gerar o accessToken do ENDPOINT_PORTAL.
merchantId {{merchantId}}
-- O ID do comerciante.

CHECKOUT

Checkout é a última etapa do processo de vendas em uma loja virtual. Nesse momento, o comprador já selecionou os produtos, inseriu informações referentes à frete (se houver entrega) e agora deseja pagar pelos produtos a serem adquiridos.

A diferença entre o checkout e o link de pagamentos é que no checkout, o comprador está autenticado em uma loja virtual. O link de pagamentos, por sua vez, é público e não necessita de autenticação. Por isso, no checkout é possível visualizar a wallet de cartões do comprador, enquanto no link de pagamentos isso não é possível.

Na , existem 3 formas principais de integração com o checkout:

Checkout transparente: para o cliente final, não existirá diferença visual entre a loja virtual e a página de inserção dos dados do cartão. Para isso, o integrador deve usar a nossa SDK de checkout transparente.

Checkout lightbox: aparecerá para o cliente final um modal white-label com os dados de input do cartão para pagamento.

Checkout redirect: o cliente final será redirecionado à uma página de checkout white-label da , onde a logo e cores do cliente serão usadas.

POST /smartcheckout Chechout

Versão v2.0

Requisição HTTP

POST {{ENDPOINT_GATEWAY}}/v2/smartcheckout

Exemplo de requisição (Plano)

require "uri"
require "net/http"

url = URI("{{ENDPOINT_GATEWAY}}/v2/smartcheckout")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n   \"planId\": \"932168be-46b8-45d3-80f1-45cdd0cd7d6a\",\r\n   \"customer\": {\r\n        \"name\": \"Jorge Felipe\",\r\n        \"email\": \"jorginho.felps@email.com.br\",\r\n        \"document\": \"01234567891\",\r\n        \"phone\": {\r\n            \"countryCode\": \"+55\",\r\n            \"areaCode\": \"21\",\r\n            \"number\": \"999999999\",\r\n            \"type\": 5\r\n        }\r\n    }\r\n}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_GATEWAY}}/v2/smartcheckout"

payload="{\r\n   \"planId\": \"932168be-46b8-45d3-80f1-45cdd0cd7d6a\",\r\n   \"customer\": {\r\n        \"name\": \"Jorge Felipe\",\r\n        \"email\": \"jorginho.felps@email.com.br\",\r\n        \"document\": \"01234567891\",\r\n        \"phone\": {\r\n            \"countryCode\": \"+55\",\r\n            \"areaCode\": \"21\",\r\n            \"number\": \"999999999\",\r\n            \"type\": 5\r\n        }\r\n    }\r\n}"
headers = {
  'Authorization': 'Bearer {{accessToken}}',
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
curl --location --request POST '{{ENDPOINT_GATEWAY}}/v2/smartcheckout' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
   "planId": "932168be-46b8-45d3-80f1-45cdd0cd7d6a",
   "customer": {
        "name": "Jorge Felipe",
        "email": "jorginho.felps@email.com.br",
        "document": "01234567891",
        "phone": {
            "countryCode": "+55",
            "areaCode": "21",
            "number": "999999999",
            "type": 5
        }
    }
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({"planId":"932168be-46b8-45d3-80f1-45cdd0cd7d6a","customer":{"name":"Jorge Felipe","email":"jorginho.felps@email.com.br","document":"01234567891","phone":{"countryCode":"+55","areaCode":"21","number":"999999999","type":5}}});

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("{{ENDPOINT_GATEWAY}}/v2/smartcheckout", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Exemplo de requisição (Valor Avulso)

require "uri"
require "net/http"

url = URI("{{ENDPOINT_GATEWAY}}/v2/smartcheckout")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n  \"amount\": 1000,\r\n  \"description\": \"Descrição do Link\",\r\n  \"emailNotification\": \"jorginho.felps@email.com.br\",\r\n  \"phoneNotification\": \"21999999999\"\r\n}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_GATEWAY}}/v2/smartcheckout"

payload="{\r\n  \"amount\": 1000,\r\n  \"description\": \"Descrição do Link\",\r\n  \"emailNotification\": \"jorginho.felps@email.com.br\",\r\n  \"phoneNotification\": \"21999999999\"\r\n}"
headers = {
  'Authorization': 'Bearer {{accessToken}}',
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
curl --location --request POST '{{ENDPOINT_GATEWAY}}/v2/smartcheckout' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
  "amount": 1000,
  "description": "Descrição do Link",
  "emailNotification": "jorginho.felps@email.com.br",
  "phoneNotification": "21999999999"
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({"amount":1000,"description":"Descrição do Link","emailNotification":"jorginho.felps@email.com.br","phoneNotification":"21999999999"});

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("{{ENDPOINT_GATEWAY}}/v2/smartcheckout", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Exemplo de requisição (Produtos)

require "uri"
require "net/http"

url = URI("{{ENDPOINT_GATEWAY}}/v2/smartcheckout")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n    \"emailNotification\": \"jorginho.felps@email.com.br\",\r\n    \"phoneNotification\": \"21999999999\",\r\n    \"newProducts\": {\r\n        \"merchantId\": \"e4a78487-ac6d-4d18-8312-934399d70616\",\r\n        \"products\": [\r\n            {\r\n                \"name\": \"Maçã\",\r\n                \"amount\": 500,\r\n                \"sku\": \"SKU_MACA\",\r\n                \"isActive\": true\r\n            }\r\n        ]\r\n    }\r\n}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_GATEWAY}}/v2/smartcheckout"

payload="{\r\n    \"emailNotification\": \"jorginho.felps@email.com.br\",\r\n    \"phoneNotification\": \"21999999999\",\r\n    \"newProducts\": {\r\n        \"merchantId\": \"e4a78487-ac6d-4d18-8312-934399d70616\",\r\n        \"products\": [\r\n            {\r\n                \"name\": \"Maçã\",\r\n                \"amount\": 500,\r\n                \"sku\": \"SKU_MACA\",\r\n                \"isActive\": true\r\n            }\r\n        ]\r\n    }\r\n}"
headers = {
  'Authorization': 'Bearer {{accessToken}}',
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
curl --location --request POST '{{ENDPOINT_GATEWAY}}/v2/smartcheckout' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
    "emailNotification": "jorginho.felps@email.com.br",
    "phoneNotification": "21999999999",
    "newProducts": {
        "merchantId": "e4a78487-ac6d-4d18-8312-934399d70616",
        "products": [
            {
                "name": "Maçã",
                "amount": 500,
                "sku": "SKU_MACA",
                "isActive": true
            }
        ]
    }
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({"emailNotification":"jorginho.felps@email.com.br","phoneNotification":"21999999999","newProducts":{"merchantId":"e4a78487-ac6d-4d18-8312-934399d70616","products":[{"name":"Maçã","amount":500,"sku":"SKU_MACA","isActive":true}]}});

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("{{ENDPOINT_GATEWAY}}/v2/smartcheckout", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

Resposta (Plano)

{
    "id": "50025917-afac-4d16-9b5f-982840064591",
    "smartCheckoutUrl": "/v2/checkout/50025917-afac-4d16-9b5f-982840064591?signinToken=eyJhbHciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MjQwMzIwOTQsImlzcyI6IkFkaXR1bSIsImF1ZCI6IndhbGxldCJ9.QzuLYDtGOcjwH6-jc7UFEHo_iTWqYVM9yvQfHirfNmw",
    "success": true,
    "errors": [],
    "traceKey": "17139692-d012-441d-bb34-fa4007383ba2"
}

Resposta (Valor Avulso)

{
    "id": "84e6e7c9-d56d-4418-bd82-cdbb92c0302a",
    "smartCheckoutUrl": "/v2/checkout/84e6e7c9-d56d-4418-bd82-cdbb92c0302a?signinToken=eyJhbHciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MjQwMzE5MjQsImlzcyI6IkFkaXR1bSIsImF1ZCI6IndhbGxldCJ9.tlusUUQaRK8Fsnk_-EYJl05mr7IXhEnDTzmiptuKWaY",
    "success": true,
    "errors": [],
    "traceKey": "f6c98b33-a433-4686-b463-5267d6aa73dd"
}

Resposta (Produtos)

{
    "id": "2efa5041-3c12-47e7-bc89-d1b34cb806ab",
    "smartCheckoutUrl": "/v2/checkout/2efa5041-3c12-47e7-bc89-d1b34cb806ab?signinToken=eyJhbHciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2MjQwMzE3NzYsImlzcyI6IkFkaXR1bSIsImF1ZCI6IndhbGxldCJ9.RLXiLOu2fNVqErAilrfdh4lpY9OqxO38Y7WNBoUWEzY",
    "products": [
        {
            "amount": 500,
            "name": "Maçã",
            "quantity": 1,
            "id": "4a60763a-9912-49df-98c9-8bb813e6a885",
            "sku": "SKU_MACA"
        }
    ],
    "success": true,
    "errors": [],
    "traceKey": "d00525ff-f58c-41ee-8849-4e598404d1c7"
}

O endpoint responsável por criar um checkout.

Requisição

Propriedade Tipo Obrigatório Descrição
amount int Condicional Valor a ser cobrado. Obrigatório se o checkout / link de pagamento não possui produto(s).
orderCode string Não Código ou descrição enviado pelo lojista pra identificar o link de pagamento/checkout.
description string Não Descrição do checkout / link de pagamento.
customer object Condicional Dados do comprador. Obrigatório se o customerId não estiver presente.
customer.name string Sim Nome completo do comprador.
customer.email string Sim E-mail do comprador.
customer.entityType entityType Sim Se é pessoa física ou jurídica
customer.documentType documentType Sim Tipo do documento do comprador
customer.document string Sim Documento do comprador.
customer.birthday date Não Data de nascimento do comprador.
customer.gender Gender Não Gênero do comprador.
customer.phone object Sim Telefone do comprador.
customer.phone.countryCode string Sim Código do país.
customer.phone.areaCode string Sim Código de área.
customer.phone.number string Sim Número do Telefone.
customer.phone.type PhoneType Sim Tipo do telefone.
customer.address object Sim Endereço do comprador.
customer.address.street string Sim Rua.
customer.address.number string Sim Número.
customer.address.neighborhood string Sim Bairro.
customer.address.city string Sim Cidade.
customer.address.state string Sim Estado.
customer.address.country string Sim País.
customer.address.zipCode string Sim CEP.
customer.address.complement string Sim Complemento.
customerId string Condicional ID do comprador. Obrigatório se o customer não estiver presente e preenchido.
products string[] Não ID dos produtos vendidos no checkout / link de pagamentos.
emailNotification string Não E-mail do comprador. Se preenchido, será enviado link para pagamento por e-mail.
phoneNotification string Não Telefone do comprador. Se preenchido, será enviado link para pagamento por SMS.
paymentSupportedTypes int[] Não Tipos de pagamento suportados no checkout. O comprador só poderá pagar ou optar por um dos meios de pagamentos descritos aqui
discount int Não Desconto no pagamento em centavos.
shippingAmount int Não Valor do frete em centavos.
hostUrl string Não URL de origem do checkout e responsável por inserir Logo e Cor no e-mail. (Necessário para inserir url no botão de pagar do e-mail)
shippingAddress Address Não Endereço de entrega dos produtos.
shippingAddress.street string Sim Rua.
shippingAddress.number string Sim Número.
shippingAddress.neighborhood string Sim Bairro.
shippingAddress.city string Sim Cidade.
shippingAddress.state string Sim Estado.
shippingAddress.country string Sim País.
shippingAddress.zipCode string Sim CEP.
shippingAddress.complement string Sim Complemento.
newProducts NewProducts Não Produtos a serem cadastrados e vendidos no checkout / link de pagamentos. Importante: Os produtos nesse objeto também podem já ter sido cadastrados, porém seus IDs são desconhecidos. Nesse caso, a estrutura do produto deve ser reenviada utilizando o SKU original.
newProducts.merchantId string Sim ID da loja dona dos produtos cadastrados.
newProducts.products Product[] Sim Informação dos produtos cadastrados.
newProducts.products.name string Sim Nome do produto, campo livre.
newProducts.products.description string Não Descrição do produto, campo livre.
newProducts.products.imagesRef string[] Não URLs de Imagens relacionados ao produto, string deve ser URL válida.
newProducts.products.amount string Sim Valor do produto em centavos.
newProducts.products.sku string Sim Identificador único do produto na loja. Não é permitido valor duplicado.
newProducts.products.isActive bool Não Se o produto está disponível na loja. Default false.
expiration date Não Data de expiração do checkout / link de pagamento. Valor default próximo dia (+ 24 horas).
maxInstallmentNumber int Não Número máximo de parcelas suportadas pelo checkout / link de pagamentos. Valor default 12.
minInstallmentAmount int Não Valor mínimo por parcela. Valor default ilimitado.
limitApprovedCharges int Não Número limite de transações aprovadas para o checkout / link de pagamentos. Valor default ilimitado.
primaryColor string Não RGB da cor primária da loja. Utilizado para customizar o tema do e-mail com o link para pagamento.
secondaryColor string Não RGB da cor secundária da loja. Utilizado para customizar o tema do e-mail com o link para pagamento.
installmentNumber int Não Número exato de parcelas suportado pelo checkout / link de pagamentos. Se esse valor for recebido, maxInstallmentNumber é ignorado. Se não for enviado, será considerado apenas o maxInstallmentNumber.
limitDeniedCharges int Não Número limite de transações negadas para o checkout / link de pagamentos. Valor default ilimitado.
customTemplate string Não Identificador do layout a ser exibido na URL do checkout / link de pagamentos. Se não for enviado, será usado o template default.

Resposta

Propriedade Tipo Descrição
id string ID do checkout / link de pagamento criado.
smartCheckoutUrl string URI que deverá ser utilizada em conjunto com uma URL base para acessar a tela de pagamentos.
products Product[] Lista de produtos criados, se houve algum novo produto na criação do checkout / link de pagamento.
products.name string Sim
products.description string Não
products.imagesRef string[] Não
products.amount string Sim
products.sku string Sim
products.isActive bool Não
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
errors.errorCode int Não
errors.message string Não
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token.

BODY Raw

Plano

{
   "planId": "932168be-46b8-45d3-80f1-45cdd0cd7d6a",
   "customer": {
      "name": "Jorge Felipe",
      "email": "jorginho.felps@email.com.br",
      "document": "01234567891",
      "phone": {
         "countryCode": "+55",
         "areaCode": "21",
         "number": "999999999",
         "type": 5
      }
   }
}

Valor Avulso

{
   "amount": 1000,
   "description": "Descrição do Link",
   "emailNotification": "jorginho.felps@email.com.br",
   "phoneNotification": "21999999999"
}

Produtos

{
   "emailNotification": "jorginho.felps@email.com.br",
   "phoneNotification": "21999999999",
   "newProducts": {
      "merchantId": "e4a78487-ac6d-4d18-8312-934399d70616",
      "products": [
         {
            "name": "Maçã",
            "amount": 500,
            "sku": "SKU_MACA",
            "isActive": true
         }
      ]
   }
}

GET /smartcheckout/{smartcheckoutId}/detail Checkout

Versão v1.0

Requisição HTTP

GET {{ENDPOINT_PORTAL}}/v1/smartcheckout/{smartcheckoutId}/detail

Exemplo de requisição

require "uri"
require "net/http"

url = URI("{{ENDPOINT_PORTAL}}/v1/smartcheckout/{{smartCheckoutId}}/detail")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Get.new(url)
request["MerchantId"] = "{{merchantId}}"
request[""] = ""
request["Authorization"] = "Bearer {{accessToken}}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_PORTAL}}/v1/smartcheckout/{{smartCheckoutId}}/detail"

payload={}
headers = {
  'MerchantId': '{{merchantId}}',
  '': '',
  'Authorization': 'Bearer {{accessToken}}'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)
curl --location -g --request GET '{{ENDPOINT_PORTAL}}/v1/smartcheckout/{{smartCheckoutId}}/detail' \
--header 'MerchantId: {{merchantId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("MerchantId", "{{merchantId}}");
myHeaders.append("", "");
myHeaders.append("Authorization", "Bearer {{accessToken}}");

var requestOptions = {
  method: 'GET',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("{{ENDPOINT_PORTAL}}/v1/smartcheckout/{{smartCheckoutId}}/detail", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "smartCheckout": {
        "creationDate": "2021-06-18T16:16:25.956",
        "id": "5c233e94-ea21-438b-95e5-ed38df758534",
        "amount": 1000,
        "description": "Descrição do Link",
        "paymentSupportedTypes": [
            "Credit"
        ],
        "discount": 0,
        "expiration": "2021-06-19T16:16:25.956",
        "limitApprovedCharges": 1,
        "type": 1,
        "status": 1,
        "limitDeniedCharges": 5,
        "charges": []
    },
    "success": true,
    "errors": [],
    "traceKey": "77a5ce37-fb8e-46c8-92e9-761b1964af3b"
}

Endpoint responsável por obter as informações sobre um link de pagamentos ou checkout, incluindo as cobranças efetuadas, se houver alguma.

Requisição

Propriedade Tipo Obrigatório Descrição
smartcheckoutId string Sim Número de identificação da cobrança.

Resposta

Propriedade Tipo Descrição
creationDate string Data de criação do smartCheckout.
id string ID do smartCheckout.
amount int O valor do smartCheckout.
description string A descrição do smartCheckout.
paymentSupportedTypes string Tipo de pagamentos. .
discount int O valor do disconto.
shippingAmount int O valor do frete.
maxInstallmentNumber int O número máximo de prestações.
expiration string Data de expiração do smartCheckout.
shippingAddress Address Endereço de entrega dos produtos.
shippingAddress.street string Rua.
shippingAddress.number string Número.
shippingAddress.neighborhood string Bairro.
shippingAddress.city string Cidade.
shippingAddress.state string Estado.
shippingAddress.country string País.
shippingAddress.zipCode string CEP.
shippingAddress.complement string Complemento.
limitApprovedCharges int O limite de cobranças aprovadas.
productsDetail ProductDetail Detalhes dos produtos.
productsDetail.amount int O valor do produto.
productsDetail.name string Nome do produto.
productsDetail.quantity int A quantidade de produtos.
productsDetail.id int ID do produto.
productsDetail.sku string É um código identificador do produto que pode ser usado pela loja pra identificar em seu próprio sistema.
type int Tipo de smartCheckOut. .
status int Status do smartCheckout.
limitDeniedCharges int O limite de cobranças negadas.
charges array Cobranças do smartCheckout.
charges.id string O ID da cobrança.
charges.addedAtUtc string A data de adição da cobrança.
charges.nsu string O número da transação.
charges.chargeStatus int Indica o status da cobrança.
charges.transactions array Transações da cobrança.
charges.transactions.card array O cartão utilizado na transação.
charges.transactions.card.firstSixDigits string Os 6 primeiros dígitos do cartão.
charges.transactions.card.lasFourDigits string Os 4 últimos dígitos do cartão.
charges.transactions.card.brandName string O nome da bandeira do cartão.
charges.transactions.card.cardHolderName string O nome do títular impresso na frente do cartão.
charges.transactions.card.cardHolderDocument string O documento do títular do cartão.
charges.transactions.amount int O valor da transação.
charges.transactions.transactionId string O ID da transação.
charges.transactions.transactionsStatus int Indica o status da transação.
charges.transactions.paymentType int Indica o tipo de pagamento da transação.
charges.transactions.installmentNumber int Quantidade de parcelas. Só pode ser maior que 1 se o tipo de transação for crédito.
charges.transactions.acquirerId int O ID da adquirente.
charges.transactions.bankIssuerId int O ID do banco.
charges.transactions.creationDateTime string A data de criação da transação.
charges.transactions.captureDateTime string A data de captura da transação.
customer Customer O cliente do smartCheckout.
customer.id string ID do cliente.
customer.name string O nome do cliente.
customer.email string O e-mail do cliente.
customer.document string O documento do cliente.
customer.documentType string Tipo de documento. .
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
errors.errorCode int Código do erro.
errors.message string Mensagem para identificar qual foi o erro retornado.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- Use o Merchant Token para gerar o accessToken do ENDPOINT_PORTAL.
MerchantId {{merchantId}}
-- Número de identificação da loja.

SDK Checkout Transparente

Instalação Checkout Transparente

Atualmente é possível instalar o Checkout Transparente de duas formas, utilizando o CDN ou NPM.

NPM

Para instalar utilizando o pacote NPM do checkout transparente pode ser inserido em seu projeto utilizando o comando a seguir:

Desenvolvimento

npm i adt-dev-transparent

Produção

npm i adt-transparent

Após utilizar o código, faça o seguinte:

Desenvolvimento

const AditumTransparent = require('adt-dev-transparent');

Produção

const AditumTransparent = require('adt-transparent');

CDN

Para instalar utilizando CDN basta inserir o script do checkout transparente apontando para o local onde ele esta salvo.

Link Ambiente
https://cdn.aditum.com.br/adt-transparent-v1.0.0.js Produção
https://cdn-dev.aditum.com.br/adt-transparent-v1.0.0.js Desenvolvimento
< script src="INSERIR-LINK-AQUI">< /script>

Logo após a instalação, utilizando uma das opções mostradas acima, estará disponível o objeto chamado AditumTransparent e nele contém os métodos necessários para tokenizar o cartão.

Passo 1

A primeira coisa a se fazer é registrar as credenciais da loja em que vai ser criado o cartão tokenizado, chamando o método setCredentials da SDK. Nesse método é necessário passar a MerchantCredential(CNPJ) e o MerchantToken dessa forma aqui:

AditumTransparent.setCredentials({merchantCredential: "{{cnpj}}", merchantToken: "{{merchantToken}}"})`

Passo 2

Após adicionar as credenciais deve chamar o método:

AditumTransparent.getCardBrand({bin: "411111", success, error})

Onde o bin é os 6 primeiros dígitos do cartão usado para identificar a bandeira, success é o callback que vamos chamar retornando a resposta com a bandeira então deve passar uma função para fazer esse tratamento e o error é o callback quando acontecer algum erro no processamento da requisição. Lembrando que success e error são funções callback então não esqueça de construir-los.

function success(body){}

e

function error(body){}

Caso deseje ver o retorno no console de seu navegador utilize console.log(body) dentro das funções.

{
   "brand":"Visa"
}
{
   "errors": [{
      "errorCode": 1,
      "message": "Propriedade 'CardBin' está ausente",
      "field": "CardBin"v
   }]
}

Passo 3

Após o retorno da bandeira de cartão, pode chamar o método AditumTransparent.createTemporaryCard({card, success, error}) que é responsável por criar o token do cartão, onde card é o objeto contendo informações do cartão, success é o callback onde será informado o token gerado e o error é o callback que será chamado quando estiver algum erro na requisição. Abaixo um exemplo do objeto card preenchido:

{
   "brand":"Visa",
   "number":"4111111111111111",
   "holderName":"FULANO SILVA",
   "holderDocument":"65844359038",
   "expirationMonth":"02",
   "expirationYear":"2026",
   "cvv":"223"
}
{
   "temporaryToken":"card_t/AIChh82EgN440hTW8vQqHcPC82EwBW"
}
{
   "errors":[{
      "errorCode":1,
      "message":"Propriedade 'Cvv' está ausente.",
      "field":"Cvv"
   }]
}

Para múltiplos cartões, basta chamar esse método novamente com os dados do novo cartão e utilizar nos objetos de transação abaixo.

Passo 4

Após gerar o token, esse token pode ser enviado para seu servidor e ser usado pra passar uma requisição no endpoint POST /charge/authorization ou POST /charge/preauthorization. Para passar uma cobrança com múltiplos cartões, basta adicionar mais um objeto de transação, com o token gerado para este cartão. Abaixo um exemplo de requisição usando esse token temporário.

🚧 Obs.: Utilizando o endpoint /charge/authorization não é preciso enviar o campo capture, pois a captura é automatica. O campo capture é utilizado no endpoint /charge/preauthorization, sendo passado como true ou false.

{
   "charge": {
      "customer": {
         "name": "FULANO SILVA",
         "email": "fulano@email.com.br",
         "entityType": 1,
         "documentType": 1,
         "document": "40398236720",
         "gender": 2,
         "phone": {
            "countryCode": "55",
            "areaCode": "21",
            "number": "997027788",
            "type": 5
         },
         "address": {
         "street": "Nome da Rua",
         "number": "999",
         "neighborhood": "Nome do Bairro",
         "city": "Nome da Cidade",
         "state": "RJ",
         "country": "BR",
         "zipCode": "21229-999",
         "complement": "Complemento"
         }
      },
      "transactions": [
         {
            "temporaryCardToken": "d2rtf1yuenjkdsm327g38rhiue",
            "paymentType": 2,
            "amount": 1000,
            "installmentNumber": 1,
            "acquirer": 999
         }
      ],
      "source": 8,
      "capture": true
   }
}

SDK Checkout Lightbox

Instalação Checkout lightbox

Atualmente é possível instalar o Checkout lightbox de duas formas, utilizando o CDN ou NPM.

NPM

Para instalar utilizando o pacote NPM do checkout lightbox pode ser inserido em seu projeto utilizando o comando a seguir:

Desenvolvimento

npm i adt-dev-lightbox

Produção

npm i adt-lightbox

Após utilizar o código, faça o seguinte:

Desenvolvimento

const AditumTransparent = require('adt-dev-lightbox');

Produção

const AditumTransparent = require('adt-lightbox');

CDN

Para instalar utilizando CDN basta inserir o script do checkout transparente apontando para o local onde ele esta salvo.

Link Ambiente
https://cdn.aditum.com.br/adt-checkout-v1.0.0.js Produção
https://cdn-dev.aditum.com.br/adt-checkout-v1.0.0.js Desenvolvimento
< script src="INSERIR-LINK-AQUI">< /script>

e estará disponível.

Após inserir o script deve ser adicionado no botão de Pagar da sua aplicação os seguintes atributos: data-adt-smartcheckout e data-adt-callback-url. Onde o primeiro vai ser o ID do SmartCheckout que deve ser gerado no endpoint v2/smartcheckout e o segundo vai ser a URL chamada quando tiver sucesso na transação.

Ex.:

< button type="button" data-adt-smartcheckout="{{SmartCheckoutId}}" data-adt-callback-url="{{SuccessUrl}}">Pagar< /button>

Quando o botão for clicado com essas informações preenchidas, a tela vai abaixo vai ser exibida:

Etapa de Endereço

Após o cliente executar o pagamento nessa tela exibimos a seguinte tela para voltar ao fluxo da loja:

Sucesso

Checkout Redirect

Crie o link de pagamento através do endpoint POST /smartcheckout.

Após a criação do link de pagamento, o mesmo deve ser enviado para o cliente com um novo parametro na URL, que é o redirect_url.

Exemplo: https://link-do-portal.com.br/v2/checkout/cc3ef047-9876-49ca-bebe-92ec312a59a2?redirect_url=https://site-para-direcionar.com.br

URL redirect

🚧 Obs.: o valor do redirect_url tem que ser passado com o https://, caso contrário não irá funcionar.

Assim que o cliente receber o link de pagamento e efetuar o pagamento do mesmo, a página irá informar que o pagamento foi aprovado e redirecionará o cliente de volta ao site de compras.

🚧 Obs.: Após o redirecionamento será possível ver o chargeId na URL, como mostrado na imagem abaixo.

URL redirect

WALLET

É a carteira virtual onde são guardados dados de cartões, para autilização posteriores. Podendo também ser gerado um cartão temporario, que expira após 5 minutos.

Cartão

Cartões que podem vir a ser guardados no sistema com criptografia mostrando apenas os 6 primeiros digitos e os 4 ultimos, possibilitando a utilização do mesmo a qualquer momento.

POST /card

Versão v2.0

Requisição HTTP

POST {{ENDPOINT_GATEWAY}}/v2/card

Exemplo de requisição

require "uri"
require "net/http"

url = URI("https://payment-dev.aditum.com.br/v2/card")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n  \"customerId\": \"ffede3ee-37ab-47bb-9981-d3d14697d69g\",\r\n  \"card\": {\r\n    \"cardNumber\": \"4111111111111111\",\r\n    \"cvv\": \"111\",\r\n    \"brand\": 1,\r\n    \"cardholderName\": \"Renan Soarez\",\r\n    \"cardholderDocument\": \"01234567891\",\r\n    \"expirationMonth\": 12,\r\n    \"expirationYear\": 2026\r\n  }\r\n}"

response = https.request(request)
puts response.read_body
import requests

url = "https://payment-dev.aditum.com.br/v2/card"

payload="{\r\n  \"customerId\": \"ffede3ee-37ab-47bb-9981-d3d14697d69g\",\r\n  \"card\": {\r\n    \"cardNumber\": \"4111111111111111\",\r\n    \"cvv\": \"111\",\r\n    \"brand\": 1,\r\n    \"cardholderName\": \"Renan Soarez\",\r\n    \"cardholderDocument\": \"01234567891\",\r\n    \"expirationMonth\": 12,\r\n    \"expirationYear\": 2026\r\n  }\r\n}"
headers = {
  'Authorization': 'Bearer {{accessToken}}',
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
curl --location --request POST 'https://payment-dev.aditum.com.br/v2/card' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
  "customerId": "ffede3ee-37ab-47bb-9981-d3d14697d69g",
  "card": {
    "cardNumber": "4111111111111111",
    "cvv": "111",
    "brand": 1,
    "cardholderName": "Renan Soarez",
    "cardholderDocument": "01234567891",
    "expirationMonth": 12,
    "expirationYear": 2026
  }
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({"customerId":"ffede3ee-37ab-47bb-9981-d3d14697d69g","card":{"cardNumber":"4111111111111111","cvv":"111","brand":1,"cardholderName":"Renan Soarez","cardholderDocument":"01234567891","expirationMonth":12,"expirationYear":2026}});

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("https://payment-dev.aditum.com.br/v2/card", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "card": {
        "id": "7903ef10-81c3-458d-ad39-9ea9e736e59z",
        "customerId": "ffede3ee-37ab-47bb-9981-d3d14697d69g",
        "cardNumber": "411111******1111",
        "brand": "Visa",
        "cardholderName": "Renan Soarez",
        "cardholderDocument": "01234567891",
        "isPrivateLabel": false,
        "expirationMonth": 12,
        "expirationYear": 2026,
        "brandName": "Visa"
    },
    "success": true,
    "errors": [],
    "traceKey": "48347500-d312-4d3b-aebe-c52f379e0386"
}

Endpoint responsável por adicionar um novo cartão à wallet de um comprador.

Requisição

Propriedade Tipo Obrigatório Descrição
customerId string Sim ID exclusivo de cliente.
card object Sim Cartão a ser criado no sistema.
card.cardNumber string Sim Primary Account Number (PAN), o número impresso na frente do cartão.
card.cvv string Sim Card Verification Value (CVV), recurso de segurança para transações de cartão de pagamento com "ausência de cartão" instituídas para reduzir a incidência de fraude.
card.brand int Sim A bandeira do cartão à qual o imposto se aplica. .
card.cardHolderName string Sim Nome do títular do cartão.
card.cardHolderDocument string Sim Número do documento do títular, CNPJ ou CPF.
card.billingAddress array Não É o endereço conectado ao cartão de crédito ou débito. As empresas usam o endereço de cobrança para verificar o uso autorizado de tal cartão. É também para onde as empresas enviam contas em papel e extratos bancários.
card.billingAddress.street string Não Rua.
card.billingAddress.number string Não Número.
card.billingAddress.neighborhood string Não Bairro.
card.billingAddress.city string Não Cidade.
card.billingAddress.state string Não Estado.
card.billingAddress.country string Não País.
card.billingAddress.zipCode string Não CEP.
card.expirationMonth int Sim O Mês de expiração do cartão com 2 dígitos.
card.expirationYear int Sim O Ano de expiração do cartão com 4 dígitos.

Resposta

Propriedade Tipo Descrição
card.id string Número de identificação(ID) do cartão.
card.customerId string ID do cliente.
card.cardNumber string Número do cartão com criptografia, mostrando apenas os 6 primeiros e os 4 últimos dígitos.
card.brand string Bandeira do cartão.
card.cardHolderName string Nome do títular do cartão.
card.cardHolderDocument string Número do documento do títular, CNPJ ou CPF.
card.billingAddress array É o endereço conectado ao cartão de crédito ou débito. As empresas usam o endereço de cobrança para verificar o uso autorizado de tal cartão. É também para onde as empresas enviam contas em papel e extratos bancários.
billingAddress.street string Rua.
billingAddress.number string Número.
billingAddress.neighborhood string Bairro.
billingAddress.city string Cidade.
billingAddress.state string Estado.
billingAddress.country string País.
billingAddress.zipCode string CEP.
billingAddress.complement string Complemento.
card.isPrivateLabel bool Indica se o cartão é um produto de whitelabel ou não. Whitelabel é um produto ou serviço que uma empresa produz e comercializa com outras empresas que tem interesse em utilizar o mesmo com sua marca estampada.
card.expirationMonth int O Mês de expiração do cartão com 2 dígitos.
card.expirationYear int O Ano de expiração do cartão com 4 dígitos.
card.fallback bool Uma bandeira que informa se a cobrança necessária será feita como fita magnética substituta.
card.brandName string O nome da bandeira do cartão.
success string Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
errors.errorCode int Código do erro.
errors.message string Mensagem para identificar qual foi o erro retornado.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token.

BODY Raw

{
   "customerId": "ffede3ee-37ab-47bb-9981-d3d14697d69g",
   "card": {
      "cardNumber": "4111111111111111",
      "cvv": "111",
      "brand": 1,
      "cardholderName": "Renan Soarez",
      "cardholderDocument": "01234567891",
      "expirationMonth": 12,
      "expirationYear": 2026
   }
}

PUT /card

Versão v2.0

Requisição HTTP

PUT {{ENDPOINT_GATEWAY}}/v2/card

Exemplo de requisição

require "uri"
require "net/http"

url = URI("{{ENDPOINT_GATEWAY}}/v2/card")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Put.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n  \"card\": {\r\n    \"id\": \"7903ef09-83c3-458d-ad39-9ea9e736e59z\",\r\n    \"customerId\": \"ffede3ee-37ab-47bb-9981-d3d14697d69g\",\r\n    \"cardNumber\": \"4111111111111111\",\r\n    \"cvv\": \"111\",\r\n    \"brand\": \"Visa\",\r\n    \"cardholderName\": \"Renan Soarez\",\r\n    \"cardholderDocument\": \"01234567891\",\r\n    \"isPrivateLabel\": false,\r\n    \"expirationMonth\": 12,\r\n    \"expirationYear\": 2026,\r\n    \"brandName\": \"Visa\"\r\n  }\r\n}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_GATEWAY}}/v2/card"

payload="{\r\n  \"card\": {\r\n    \"id\": \"7903ef09-83c3-458d-ad39-9ea9e736e59z\",\r\n    \"customerId\": \"ffede3ee-37ab-47bb-9981-d3d14697d69g\",\r\n    \"cardNumber\": \"4111111111111111\",\r\n    \"cvv\": \"111\",\r\n    \"brand\": \"Visa\",\r\n    \"cardholderName\": \"Renan Soarez\",\r\n    \"cardholderDocument\": \"01234567891\",\r\n    \"isPrivateLabel\": false,\r\n    \"expirationMonth\": 12,\r\n    \"expirationYear\": 2026,\r\n    \"brandName\": \"Visa\"\r\n  }\r\n}"
headers = {
  'Authorization': 'Bearer {{accessToken}}',
  'Content-Type': 'application/json'
}

response = requests.request("PUT", url, headers=headers, data=payload)

print(response.text)
curl --location --request PUT '{{ENDPOINT_GATEWAY}}/v2/card' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
  "card": {
    "id": "7903ef09-83c3-458d-ad39-9ea9e736e59z",
    "customerId": "ffede3ee-37ab-47bb-9981-d3d14697d69g",
    "cardNumber": "4111111111111111",
    "cvv": "111",
    "brand": "Visa",
    "cardholderName": "Renan Soarez",
    "cardholderDocument": "01234567891",
    "isPrivateLabel": false,
    "expirationMonth": 12,
    "expirationYear": 2026,
    "brandName": "Visa"
  }
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({"card":{"id":"7903ef09-83c3-458d-ad39-9ea9e736e59z","customerId":"ffede3ee-37ab-47bb-9981-d3d14697d69g","cardNumber":"4111111111111111","cvv":"111","brand":"Visa","cardholderName":"Renan Soarez","cardholderDocument":"01234567891","isPrivateLabel":false,"expirationMonth":12,"expirationYear":2026,"brandName":"Visa"}});

var requestOptions = {
  method: 'PUT',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("{{ENDPOINT_GATEWAY}}/v2/card", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "updatedCard": {
        "id": "7903ef09-83c3-458d-ad39-9ea9e736e59z",
        "customerId": "ffede3ee-37ab-47bb-9981-d3d14697d69g",
        "cardNumber": "411111******1111",
        "isPrivateLabel": false,
        "expirationMonth": 12,
        "expirationYear": 2026
    },
    "success": true,
    "errors": [],
    "traceKey": "7ab17f07-8bcb-4634-b3f5-fca35bcb81c6"
}

O endpoint utilizado para atualizar um cartão existente por seu ID. Informações que podem ser atualizadas: ID do cliente, endereço de cobrança e bandeira de marca própria.

Requisição

Propriedade Tipo Obrigatório Descrição
customerId string Sim ID exclusivo de cliente.
card object Sim Cartão a ser criado no sistema.
card.id string Não Número de identificação(ID) do cartão.
card.customerId string Sim ID do cliente.
card.cardNumber string Sim Primary Account Number (PAN), o número impresso na frente do cartão.
card.cvv string Sim Card Verification Value (CVV), recurso de segurança para transações de cartão de pagamento com "ausência de cartão" instituídas para reduzir a incidência de fraude.
card.brand int Sim A bandeira do cartão à qual o imposto se aplica. .
card.cardHolderName string Sim Nome do títular do cartão.
card.cardHolderDocument string Sim Número do documento do títular, CNPJ ou CPF.
card.billingAddress array Não É o endereço conectado ao cartão de crédito ou débito. As empresas usam o endereço de cobrança para verificar o uso autorizado de tal cartão. É também para onde as empresas enviam contas em papel e extratos bancários.
card.billingAddress.street string Não Rua.
card.billingAddress.number string Não Número.
card.billingAddress.neighborhood string Não Bairro.
card.billingAddress.city string Não Cidade.
card.billingAddress.state string Não Estado.
card.billingAddress.country string Não País.
card.billingAddress.zipCode string Não CEP.
card.billingAddress.complement string Não Complemento.
card.isPrivateLabel bool Sim Indica se o cartão é um produto de whitelabel ou não. Whitelabel é um produto ou serviço que uma empresa produz e comercializa com outras.
card.expirationMonth int Sim O Mês de expiração do cartão com 2 dígitos.
card.expirationYear int Sim O Ano de expiração do cartão com 4 dígitos.
card.aid string Sim Usado para uma transação EMV, este é o AID usado.
card.entryMode int Sim Tipo de leitura do cartão, por ex. fita magnética, chip EMV, tecnologia sem contato. .
card.emvTags string Não Tags EMV retornadas pelo cartão em caso de transação de contato emv.
card.pinBlock string Não O bloco de pins, no caso de pin online.
card.ksn string Não O número de série da chave usado para criptografar o pin.
card.serviceCode string Não Código de três dígitos, cada um representando uma configuração de cartão.
card.acquirerVersion string Não Versão das tabelas EMV definidas pelo adquirente.
card.track1 string Não Primeira fita magnética.
card.track2 string Não Segunda fita magnética.
card.issuerScript string Não Script do emissor a ser usado no comando FNC pelo pinpad ou POS.
card.sequenceNumber string Não O número que distingue entre cartões separados com o mesmo número de conta principal (PAN) ou PAN estendido.
card.fallback bool Não Uma bandeira que informa se a cobrança necessária será feita como fita magnética substituta.
card.brandName string Não O nome da bandeira do cartão.
card.panEncryptionKsn string Não Key Sequence Number (KSN) usado para criptografar. Aditum.EcommerceGateway.DataContract.V1.CardContract.EncryptedPan usando o pinpad. Usado apenas por InfinitePay.
card.encryptedPan string Não PAN recortado e criptografado. A criptografia ocorre dentro do pinpad.
card.balance int Não Saldo de cartões do tipo voucher.

Resposta

Propriedade Tipo Descrição
updatedCardid string Número de identificação(ID) do cartão.
updatedCardcustomerId string ID do cliente.
updatedCardcardNumber string Número do cartão com criptografia, mostrando apenas os 6 primeiros e os 4 últimos dígitos.
updatedCardbrand string Bandeira do cartão.
updatedCardcardHolderName string Nome do títular do cartão.
updatedCardcardHolderDocument string Número do documento do títular, CNPJ ou CPF.
updatedCardbillingAddress array É o endereço conectado ao cartão de crédito ou débito. As empresas usam o endereço de cobrança para verificar o uso autorizado de tal cartão. É também para onde as empresas enviam contas em papel e extratos bancários.
updatedCard.billingAddress.street string Rua.
updatedCard.billingAddress.number string Número.
updatedCard.billingAddress.neighborhood string Bairro.
updatedCard.billingAddress.city string Cidade.
updatedCard.billingAddress.state string Estado.
updatedCard.billingAddress.country string País.
updatedCard.billingAddress.zipCode string CEP.
updatedCard.billingAddress.complement string Complemento.
updatedCardisPrivateLabel bool Indica se o cartão é um produto de whitelabel ou não. Whitelabel é um produto ou serviço que uma empresa produz e comercializa com outras empresas que tem interesse em utilizar o mesmo com sua marca estampada.
updatedCardexpirationMonth int O Mês de expiração do cartão com 2 dígitos.
updatedCardexpirationYear int O Ano de expiração do cartão com 4 dígitos.
updatedCardfallback bool Uma bandeira que informa se a cobrança necessária será feita como fita magnética substituta.
updatedCardbrandName string O nome da bandeira do cartão.
success string Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
errors.errorCode int Código do erro.
errors.message string Mensagem para identificar qual foi o erro retornado.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token.

BODY Raw

{
   "card": {
      "id": "7903ef09-83c3-458d-ad39-9ea9e736e59z",
      "customerId": "ffede3ee-37ab-47bb-9981-d3d14697d69g",
      "cardNumber": "4111111111111111",
      "cvv": "111",
      "brand": "Visa",
      "cardholderName": "Renan Soarez",
      "cardholderDocument": "01234567891",
      "isPrivateLabel": false,
      "expirationMonth": 12,
      "expirationYear": 2026,
      "brandName": "Visa"
   }
}

GET /card

Versão v2.0

Requisição HTTP

GET {{ENDPOINT_GATEWAY}}/v2/card?id={{cardId}}

Exemplo de requisição

require "uri"
require "net/http"

url = URI("{{ENDPOINT_GATEWAY}}/v2/card?id={{cardId}}")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer {{accessToken}}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_GATEWAY}}/v2/card?id={{cardId}}"

payload={}
headers = {
  'Authorization': 'Bearer {{accessToken}}'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)
curl --location -g --request GET '{{ENDPOINT_GATEWAY}}/v2/card?id={{cardId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");

var requestOptions = {
  method: 'GET',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("{{ENDPOINT_GATEWAY}}/v2/card?id={{cardId}}", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "card": {
        "id": "7903ef09-83c3-458d-ad39-9ea9e736e59z",
        "customerId": "ffede3ee-37ab-47bb-9981-d3d14697d69a",
        "cardNumber": "411111******1111",
        "isPrivateLabel": false,
        "expirationMonth": 12,
        "expirationYear": 2026
    },
    "success": true,
    "errors": [],
    "traceKey": "929bc149-4d64-4450-b5d1-800d5a4f5449"
}

O endpoint utilizado para pesquisar um cartão com base no ID recebido.

Requisição

Propriedade Tipo Obrigatório Descrição
id string Sim ID do cartão.

Resposta

Propriedade Tipo Descrição
card.id string Número de identificação(ID) do cartão.
card.customerId string ID do cliente.
card.cardNumber string Número do cartão com criptografia, mostrando apenas os 6 primeiros e os 4 últimos dígitos.
card.brand string Bandeira do cartão.
card.cardHolderName string Nome do títular do cartão.
card.cardHolderDocument string Número do documento do títular, CNPJ ou CPF.
card.billingAddress array É o endereço conectado ao cartão de crédito ou débito. As empresas usam o endereço de cobrança para verificar o uso autorizado de tal cartão. É também para onde as empresas enviam contas em papel e extratos bancários.
billingAddress.street string Rua.
billingAddress.number string Número.
billingAddress.neighborhood string Bairro.
billingAddress.city string Cidade.
billingAddress.state string Estado.
billingAddress.country string País.
billingAddress.zipCode string CEP.
billingAddress.complement string Complemento.
card.isPrivateLabel bool Indica se o cartão é um produto de whitelabel ou não. Whitelabel é um produto ou serviço que uma empresa produz e comercializa com outras empresas que tem interesse em utilizar o mesmo com sua marca estampada.
card.expirationMonth int O Mês de expiração do cartão com 2 dígitos.
card.expirationYear int O Ano de expiração do cartão com 4 dígitos.
card.fallback bool Uma bandeira que informa se a cobrança necessária será feita como fita magnética substituta.
card.brandName string O nome da bandeira do cartão.
success string Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
errors.errorCode int Código do erro.
errors.message string Mensagem para identificar qual foi o erro retornado.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token.
PARAMS -
Id {{cardId}}
-- Número de identificação do cartão.

GET /card/byCustomer

Versão v2.0

Requisição HTTP

GET {{ENDPOINT_GATEWAY}}/v2/card/byCustomer?id={{customerId}}

Exemplo de requisição

require "uri"
require "net/http"

url = URI("{{ENDPOINT_GATEWAY}}/v2/card/byCustomer?id={{customerId}}")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer {{accessToken}}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_GATEWAY}}/v2/card/byCustomer?id={{customerId}}"

payload={}
headers = {
  'Authorization': 'Bearer {{accessToken}}'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)

curl --location --request GET '{{ENDPOINT_GATEWAY}}/v2/card/byCustomer?id={{customerId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");

var requestOptions = {
  method: 'GET',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("{{ENDPOINT_GATEWAY}}/v2/card/byCustomer?id={{customerId}}", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "cards": [
        {
            "id": "7903ef09-83c3-458d-ad39-9ea9e736e59z",
            "customerId": "ffede3ee-37ab-47bb-9981-d3d14697d69a",
            "cardNumber": "411111******1111",
            "brand": "Visa",
            "cardholderName": "Renan Soarez",
            "cardholderDocument": "01234567891",
            "isPrivateLabel": false,
            "expirationMonth": 12,
            "expirationYear": 2026,
            "brandName": "Visa"
        }
    ],
    "success": true,
    "errors": [],
    "traceKey": "e693cdb5-47d2-4fae-8670-bba1f8568d21"
}

O endpoint utilizado para pesquisar todos os cartões relacionados a um cliente com base em seu ID.

Requisição

Propriedade Tipo Obrigatório Descrição
id string Sim ID do cliente.

Resposta

Propriedade Tipo Descrição
card.id string Número de identificação(ID) do cartão.
card.customerId string ID do cliente.
card.cardNumber string Número do cartão com criptografia, mostrando apenas os 6 primeiros e os 4 últimos dígitos.
card.brand string Bandeira do cartão.
card.cardHolderName string Nome do títular do cartão.
card.cardHolderDocument string Número do documento do títular, CNPJ ou CPF.
card.billingAddress array É o endereço conectado ao cartão de crédito ou débito. As empresas usam o endereço de cobrança para verificar o uso autorizado de tal cartão. É também para onde as empresas enviam contas em papel e extratos bancários.
billingAddress.street string Rua.
billingAddress.number string Número.
billingAddress.neighborhood string Bairro.
billingAddress.city string Cidade.
billingAddress.state string Estado.
billingAddress.country string País.
billingAddress.zipCode string CEP.
card.isPrivateLabel bool Indica se o cartão é um produto de whitelabel ou não. Whitelabel é um produto ou serviço que uma empresa produz e comercializa com outras empresas que tem interesse em utilizar o mesmo com sua marca estampada.
card.expirationMonth int O Mês de expiração do cartão com 2 dígitos.
card.expirationYear int O Ano de expiração do cartão com 4 dígitos.
card.fallback bool Uma bandeira que informa se a cobrança necessária será feita como fita magnética substituta.
card.brandName string O nome da bandeira do cartão.
success string Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
errors.errorCode int Código do erro.
errors.message string Mensagem para identificar qual foi o erro retornado.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token.
PARAMS -
Id {{customerId}}
-- Número de identificação do cliente.

DELETE /card/{cardId}

Versão v2.0

Requisição HTTP

DELETE {{ENDPOINT_GATEWAY}}/v2/card/{cardId}

Exemplo de requisição

require "uri"
require "net/http"

url = URI("{{ENDPOINT_GATEWAY}}/v2/card/{{cardId}}")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Delete.new(url)
request["Authorization"] = "Bearer {{accessToken}}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_GATEWAY}}/v2/card/{{cardId}}"

payload={}
headers = {
  'Authorization': 'Bearer {{accessToken}}'
}

response = requests.request("DELETE", url, headers=headers, data=payload)

print(response.text)
curl --location --request DELETE '{{ENDPOINT_GATEWAY}}/v2/card/{{cardId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");

var requestOptions = {
  method: 'DELETE',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("{{ENDPOINT_GATEWAY}}/v2/card/{{cardId}}", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "success": true,
    "errors": [],
    "traceKey": "string"
}

O endpoint utilizado para deletar um cartão com base em seu ID.

Requisição

Propriedade Tipo Obrigatório Descrição
id string Sim ID do cartão.

Resposta

Propriedade Tipo Descrição
success string Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
errors.errorCode int Código do erro.
errors.message string Mensagem para identificar qual foi o erro retornado.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token.

Cartão Temporário

Um cartão que é criado temporáriamente, podendo ser utilizado dentro de um período de 5 minutos.

POST /temporary/card

Versão v2.0

Requisição HTTP

POST {{ENDPOINT_GATEWAY}}/v2/temporary/card

Exemplo de requisição

require "uri"
require "net/http"

url = URI("{{ENDPOINT_GATEWAY}}/v2/temporary/card")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n  \"brand\": 1,\r\n  \"cardNumber\": \"4111111111111111\",\r\n  \"cardholderName\": \"Renan Soarez\",\r\n  \"cardholderDocument\": \"01234567891\",\r\n  \"expirationMonth\": 12,\r\n  \"expirationYear\": 2026,\r\n  \"cvv\": \"111\"\r\n}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_GATEWAY}}/v2/temporary/card"

payload="{\r\n  \"brand\": 1,\r\n  \"cardNumber\": \"4111111111111111\",\r\n  \"cardholderName\": \"Renan Soarez\",\r\n  \"cardholderDocument\": \"01234567891\",\r\n  \"expirationMonth\": 12,\r\n  \"expirationYear\": 2026,\r\n  \"cvv\": \"111\"\r\n}"
headers = {
  'Authorization': 'Bearer {{accessToken}}',
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
curl --location --request POST '{{ENDPOINT_GATEWAY}}/v2/temporary/card' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
  "brand": 1,
  "cardNumber": "4111111111111111",
  "cardholderName": "Renan Soarez",
  "cardholderDocument": "01234567891",
  "expirationMonth": 12,
  "expirationYear": 2026,
  "cvv": "111"
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({"brand":1,"cardNumber":"4111111111111111","cardholderName":"Renan Soarez","cardholderDocument":"01234567891","expirationMonth":12,"expirationYear":2026,"cvv":"111"});

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("{{ENDPOINT_GATEWAY}}/v2/temporary/card", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "cardToken": "card_0CLtvaYy2UgPN2U4Mq8UQqYZnxdxnhVc",
    "success": true,
    "errors": [],
    "traceKey": "ddf2f808-2ce1-4d8a-88e4-1982b5ae7d8a"
}

O endpoint utilizado para criar um novo cartão temporário.

Requisição

Propriedade Tipo Obrigatório Descrição
brand int Sim A bandeira do cartão à qual o imposto se aplica. .
cardNumber string Sim O número impresso na frente do cartão.
cardholderName string Sim O nome do títular do cartão.
cardholderDocument string Sim O documento do títular do cartão.
expirationMonth int Sim O Mês de expiração do cartão com 2 dígitos.
expirationYear int Sim O Ano de expiração do cartão com 4 dígitos.
cvv string Sim Card Verification Value (CVV), recurso de segurança para transações de cartão de pagamento com "ausência de cartão" instituídas para reduzir a incidência de fraude.

Resposta

Propriedade Tipo Descrição
success string Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
errors.errorCode int Código do erro.
errors.message string Mensagem para identificar qual foi o erro retornado.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token.

BODY Raw

{
   "brand": 1,
   "cardNumber": "4111111111111111",
   "cardholderName": "Renan Soarez",
   "cardholderDocument": "01234567891",
   "expirationMonth": 12,
   "expirationYear": 2026,
   "cvv": "111"
}

GATEWAY

Infraestrutura tecnológica para integrar a sua loja na internet com todos os meios de pagamentos. Isto é: com as bandeiras de cartão de crédito e débito e com bancos, para fazer a emissão de boletos bancários ou depósitos em conta, entre outros agentes financeiros.

Taxas

As taxas que serão utilizadas nas transações do gateway.

POST /tax

Versão v2.0

Requisição HTTP

POST {{ENDPOINT_GATEWAY}}/v2/tax

Exemplo de requisição (Plano de Taxas)

require "uri"
require "net/http"

url = URI("{{ENDPOINT_GATEWAY}}/v2/tax")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n  \"acquirer\": 999,\r\n  \"name\": \"Plano de Taxa\",\r\n  \"parentTax\": \"b265018d-b935-5de5-85cf-d805be8ba5cf\",\r\n  \"taxes\": [\r\n    {\r\n        \"paymentType\": 2,\r\n        \"isInInstallment\": false,\r\n        \"upsellAnticipationTax\": 1.0,\r\n        \"upsellTax\": 1.0,\r\n        \"cardBrand\": 2,\r\n        \"priority\": 1\r\n    }\r\n  ],\r\n  \"aditumProduct\": 1\r\n}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_GATEWAY}}/v2/tax"

payload="{\r\n  \"acquirer\": 999,\r\n  \"name\": \"Plano de Taxa\",\r\n  \"parentTax\": \"b265018d-b935-5de5-85cf-d805be8ba5cf\",\r\n  \"taxes\": [\r\n    {\r\n        \"paymentType\": 2,\r\n        \"isInInstallment\": false,\r\n        \"upsellAnticipationTax\": 1.0,\r\n        \"upsellTax\": 1.0,\r\n        \"cardBrand\": 2,\r\n        \"priority\": 1\r\n    }\r\n  ],\r\n  \"aditumProduct\": 1\r\n}"
headers = {
  'Authorization': 'Bearer {{accessToken}}',
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
curl --location --request POST '{{ENDPOINT_GATEWAY}}/v2/tax' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
  "acquirer": 999,
  "name": "Plano de Taxa",
  "parentTax": "b265018d-b935-5de5-85cf-d805be8ba5cf",
  "taxes": [
    {
        "paymentType": 2,
        "isInInstallment": false,
        "upsellAnticipationTax": 1.0,
        "upsellTax": 1.0,
        "cardBrand": 2,
        "priority": 1
    }
  ],
  "aditumProduct": 1
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({"acquirer":999,"name":"Plano de Taxa","parentTax":"b265018d-b935-5de5-85cf-d805be8ba5cf","taxes":[{"paymentType":2,"isInInstallment":false,"upsellAnticipationTax":1,"upsellTax":1,"cardBrand":2,"priority":1}],"aditumProduct":1});

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("{{ENDPOINT_GATEWAY}}/v2/tax", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Exemplo de requisição (Taxa Base)

require "uri"
require "net/http"

url = URI("{{ENDPOINT_GATEWAY}}/v2/tax")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n  \"acquirer\": 999,\r\n  \"name\": \"Taxa Base\",\r\n  \"taxes\": [\r\n    {\r\n        \"paymentType\": 2,\r\n        \"isInInstallment\": false,\r\n        \"anticipationTax\": 1.0,\r\n        \"taxPercentage\": 1.0,\r\n        \"cardBrand\": 2,\r\n        \"priority\": 1\r\n    }\r\n  ],\r\n  \"aditumProduct\": 1,\r\n  \"mccs\": [\r\n      \"763\"\r\n  ],\r\n  \"receivableMode\": 1\r\n}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_GATEWAY}}/v2/tax"

payload="{\r\n  \"acquirer\": 999,\r\n  \"name\": \"Taxa Base\",\r\n  \"taxes\": [\r\n    {\r\n        \"paymentType\": 2,\r\n        \"isInInstallment\": false,\r\n        \"anticipationTax\": 1.0,\r\n        \"taxPercentage\": 1.0,\r\n        \"cardBrand\": 2,\r\n        \"priority\": 1\r\n    }\r\n  ],\r\n  \"aditumProduct\": 1,\r\n  \"mccs\": [\r\n      \"763\"\r\n  ],\r\n  \"receivableMode\": 1\r\n}"
headers = {
  'Authorization': 'Bearer {{accessToken}}',
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
curl --location --request POST '{{ENDPOINT_GATEWAY}}/v2/tax' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
  "acquirer": 999,
  "name": "Taxa Base",
  "taxes": [
    {
        "paymentType": 2,
        "isInInstallment": false,
        "anticipationTax": 1.0,
        "taxPercentage": 1.0,
        "cardBrand": 2,
        "priority": 1
    }
  ],
  "aditumProduct": 1,
  "mccs": [
      "763"
  ],
  "receivableMode": 1
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({"acquirer":999,"name":"Taxa Base","taxes":[{"paymentType":2,"isInInstallment":false,"anticipationTax":1,"taxPercentage":1,"cardBrand":2,"priority":1}],"aditumProduct":1,"mccs":["763"],"receivableMode":1});

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("{{ENDPOINT_GATEWAY}}/v2/tax", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

Resposta (Plano de Taxas)

{
    "taxes": {
        "id": "27dcaa67-ec5e-4975-97fe-6396534506a4",
        "isActive": true,
        "acquirer": "Simulator",
        "name": "Plano de Taxa",
        "parentTax": "b265018d-b935-4de6-75cf-d805be8ba5cf",
        "taxes": [
            {
                "paymentType": "Credit",
                "isInInstallment": false,
                "upsellAnticipationTax": 1.0,
                "upsellTax": 1.0,
                "cardBrand": "MasterCard",
                "priority": 1
            }
        ],
        "aditumProduct": "Ecommerce",
        "receivableMode": "Default",
        "mccs": [
            "763"
        ]
    },
    "success": true,
    "errors": [],
    "traceKey": "427c9a57-3225-4f6f-9590-b60f13f57d02"
}

Resposta (Taxa Base)

{
    "taxes": {
        "id": "b265018d-b936-7de5-85cf-d805be8ba5cf",
        "isActive": true,
        "acquirer": "Simulator",
        "name": "Taxa Base",
        "taxes": [
            {
                "paymentType": "Credit",
                "isInInstallment": false,
                "taxPercentage": 1.0,
                "anticipationTax": 1.0,
                "cardBrand": "MasterCard",
                "priority": 1
            }
        ],
        "aditumProduct": "Ecommerce",
        "receivableMode": "Default",
        "mccs": [
            "763"
        ]
    },
    "success": true,
    "errors": [],
    "traceKey": "91ce694e-4e7d-48ed-9cc4-ace6e68fd787"
}

Endpoint responsável por criar um novo plano de taxas. Esse plano de taxas será utilizado pelo gateway para identificar adquirente a processar uma transação especifica. O gateway utiliza a propriedade priority para priorizar cada taxa, sendo a prioridade mais alta 1.

Exemplo:

A LOJA_EXEMPLO suporta as adquirentes ADQ_A e ADQ_B, sendo que a ADQ_B é tem uma taxa mais baixa para transações de crédito a vista Elo. Nesse caso, a taxa da ADQ_B para crédito a vista deve ter priority 1 enquanto a ADQ_A tem prioridade priority 2.

Em suma, o plano de taxas pode ser utilizado como uma ferramenta flexível de priorização e roteamento de transações.

Requisição

Propriedade Tipo Obrigatório Descrição
acquirer int Sim O ID da adquirente. .
name string Sim O nome da adquirente.
taxes Taxes Sim Lista de taxas para o comerciante, definida por cada adquirente.
taxes.paymentType string Sim Tipo de transação.
taxes.isInInstallment bool Sim Se a estratégia está relacionada a um tipo de transação instalado ou não.
taxes.installmentRange array Sim Define faixa de parcelamento, em um crédito tributário, de 2 a 6x ou de 7 a 12x.
taxes.taxPercentage number Sim Percentual de taxa definido pelo adquirente. Pode ser nulo se o plano de taxas tiver taxa pai.
taxes.anticipationTax number Sim define a percentagem a cobrar quando o valor é antecipado. Pode ser nulo se o plano de taxas tiver taxa parental
taxes.upsellTax number Sim A porcentagem do parceiro a ser cobrada e somará ParentTax.TaxPercentage ou ParentTax.UpsellTax se parenttax tiver pai.
taxes.cardBrand int Sim A bandeira do cartão à qual o imposto se aplica. .
taxes.priority int Sim É um número inteiro positivo, cujo valor mais alto é 1.
aditumProduct int Sim É produto relacionado ao plano de taxas.

Resposta

Propriedade Tipo Descrição
acquirer int O ID da adquirente. .
name string O nome da adquirente.
taxes Taxes Lista de taxas para o comerciante, definida por cada adquirente.
taxes.paymentType string Tipo de transação. .
taxes.isInInstallment bool Se a estratégia está relacionada a um tipo de transação instalado ou não.
taxes.installmentRange array Define faixa de parcelamento, em um crédito tributário, de 2 a 6x ou de 7 a 12x.
taxes.taxPercentage number Percentual de taxa definido pelo adquirente. Pode ser nulo se o plano de taxas tiver taxa pai.
taxes.anticipationTax number define a percentagem a cobrar quando o valor é antecipado. Pode ser nulo se o plano de taxas tiver taxa parental
taxes.upsellTax number A porcentagem do parceiro a ser cobrada e somará ParentTax.TaxPercentage ou ParentTax.UpsellTax se parenttax tiver pai.
taxes.cardBrand int A bandeira do cartão à qual o imposto se aplica. .
taxes.priority int É um número inteiro positivo, cujo valor mais alto é 1.
aditumProduct int É produto relacionado ao plano de taxas.
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token.

BODY Raw

Plano de Taxas

{
   "acquirer": 999,
   "name": "Plano de Taxa",
   "parentTax": "b265018d-b935-5de5-85cf-d805be8ba5cf",
   "taxes": [
      {
         "paymentType": 2,
         "isInInstallment": false,
         "upsellAnticipationTax": 1.0,
         "upsellTax": 1.0,
         "cardBrand": 2,
         "priority": 1
      },
      {
         "paymentType": 2,
         "isInInstallment": true,
         "installmentRange": {
            "minimum": 2,
            "maximum": 6
         },
         "upsellAnticipationTax": 1.0,
         "upsellTax": 1.0,
         "cardBrand": 2,
         "priority": 1
      },
      {
         "paymentType": 2,
         "isInInstallment": true,
         "installmentRange": {
            "minimum": 7,
            "maximum": 12
         },
         "upsellAnticipationTax": 1.0,
         "upsellTax": 1.0,
         "cardBrand": 2,
         "priority": 1
      }
   ],
   "aditumProduct": 1
}

Taxa Base

{
   "acquirer": 999,
   "name": "Taxa Base",
   "taxes": [
      {
         "paymentType": 2,
         "isInInstallment": false,
         "anticipationTax": 1.0,
         "taxPercentage": 1.0,
         "cardBrand": 2,
         "priority": 1
      },
      {
         "paymentType": 2,
         "isInInstallment": true,
         "installmentRange": {
            "minimum": 2,
            "maximum": 6
         },
      "anticipationTax": 1.0,
      "taxPercentage": 1.0,
      "cardBrand": 2,
      "priority": 1
      },
      {
         "paymentType": 2,
         "isInInstallment": true,
         "installmentRange": {
            "minimum": 7,
            "maximum": 12
         },
      "anticipationTax": 1.0,
      "taxPercentage": 1.0,
      "cardBrand": 2,
      "priority": 1
      }
   ],
   "aditumProduct": 1,
   "mccs": [
      "763"
   ],
   "receivableMode": 1
}

GET /tax

Versão v2.0

Requisição HTTP

GET {{ENDPOINT_GATEWAY}}/v2/tax

Exemplo de requisição

require "uri"
require "net/http"

url = URI("{{ENDPOINT_GATEWAY}}/v2/tax")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer {{accessToken}}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_GATEWAY}}/v2/tax"

payload={}
headers = {
  'Authorization': 'Bearer {{accessToken}}'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)
curl --location --request GET '{{ENDPOINT_GATEWAY}}/v2/tax' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");

var requestOptions = {
  method: 'GET',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("{{ENDPOINT_GATEWAY}}/v2/tax", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "taxes": [
        {
            "id": "f7b04a26-1cd8-4bc0-ae89-e9b7254817eb",
            "isActive": true,
            "acquirer": "Simulator",
            "name": "Plano de Taxa Teste",
            "parentTax": "7833d91f-57f5-4ee6-8862-f390b698fdc2",
            "taxes": [
                {
                    "paymentType": "Credit",
                    "isInInstallment": false,
                    "upsellAnticipationTax": 1.0,
                    "upsellTax": 1.0,
                    "cardBrand": "MasterCard",
                    "priority": 1
                }
            ],
            "aditumProduct": "Ecommerce",
            "receivableMode": "Default"
        }
    ],
    "success": true,
    "errors": [],
    "traceKey": "6aa471e4-dc69-4c1a-a64d-749a9791eaf3"
}

Endpoint responsável por obter todas as taxas cadastradas por um comerciante.

Requisição

Enviar a requisição http com a autorização no header.

Resposta

Propriedade Tipo Descrição
id string O ID da taxa.
isActive bool Se a taxa está ativa ou não.
acquirer int O ID da adquirente. .
name string O nome da adquirente.
parentTax string O ID de uma outra taxa, usado para venda.
taxes Taxes Lista de taxas para o comerciante, definida por cada adquirente.
taxes.paymentType string Tipo de transação.
taxes.isInInstallment bool Se a estratégia está relacionada a um tipo de transação instalado ou não.
taxes.installmentRange array Define faixa de parcelamento, em um crédito tributário, de 2 a 6x ou de 7 a 12x.
taxes.upsellTax number A porcentagem do parceiro a ser cobrada e somará ParentTax.TaxPercentage ou ParentTax.UpsellTax se parenttax tiver pai.
taxes.cardBrand int A bandeira do cartão à qual o imposto se aplica. .
taxes.priority int É um número inteiro positivo, cujo valor mais alto é 1.
aditumProduct int É produto relacionado ao plano de taxas.
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token.

PUT /tax

Versão v2.0

Requisição HTTP

PUT {{ENDPOINT_GATEWAY}}/v2/tax

Exemplo de requisição

require "uri"
require "net/http"

url = URI("{{ENDPOINT_GATEWAY}}/v2/tax")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Put.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n  \"taxes\": [\r\n    {\r\n        \"id\": \"f7b04a26-1cd0-4bc9-ae89-e9b7254817eb\",\r\n        \"isActive\": true,\r\n        \"acquirer\": 999,\r\n        \"name\": \"Plano de Taxa\",\r\n        \"parentTax\": \"7833d91f-47f5-5ee7-8862-f390b698fdc2\",\r\n        \"taxes\": [\r\n            {\r\n                \"paymentType\": 2,\r\n                \"isInInstallment\": false,\r\n                \"upsellAnticipationTax\": 1.0,\r\n                \"upsellTax\": 1.0,\r\n                \"cardBrand\": 2,\r\n                \"priority\": 1\r\n            }\r\n        ],\r\n        \"aditumProduct\": 1,\r\n        \"receivableMode\": 1\r\n    }\r\n  ]\r\n}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_GATEWAY}}/v2/tax"

payload="{\r\n  \"taxes\": [\r\n    {\r\n        \"id\": \"f7b04a26-1cd0-4bc9-ae89-e9b7254817eb\",\r\n        \"isActive\": true,\r\n        \"acquirer\": 999,\r\n        \"name\": \"Plano de Taxa\",\r\n        \"parentTax\": \"7833d91f-47f5-5ee7-8862-f390b698fdc2\",\r\n        \"taxes\": [\r\n            {\r\n                \"paymentType\": 2,\r\n                \"isInInstallment\": false,\r\n                \"upsellAnticipationTax\": 1.0,\r\n                \"upsellTax\": 1.0,\r\n                \"cardBrand\": 2,\r\n                \"priority\": 1\r\n            }\r\n        ],\r\n        \"aditumProduct\": 1,\r\n        \"receivableMode\": 1\r\n    }\r\n  ]\r\n}"
headers = {
  'Authorization': 'Bearer {{accessToken}}',
  'Content-Type': 'application/json'
}

response = requests.request("PUT", url, headers=headers, data=payload)

print(response.text)
curl --location --request PUT '{{ENDPOINT_GATEWAY}}/v2/tax' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
  "taxes": [
    {
        "id": "f7b04a26-1cd0-4bc9-ae89-e9b7254817eb",
        "isActive": true,
        "acquirer": 999,
        "name": "Plano de Taxa",
        "parentTax": "7833d91f-47f5-5ee7-8862-f390b698fdc2",
        "taxes": [
            {
                "paymentType": 2,
                "isInInstallment": false,
                "upsellAnticipationTax": 1.0,
                "upsellTax": 1.0,
                "cardBrand": 2,
                "priority": 1
            }
        ],
        "aditumProduct": 1,
        "receivableMode": 1
    }
  ]
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({"taxes":[{"id":"f7b04a26-1cd0-4bc9-ae89-e9b7254817eb","isActive":true,"acquirer":999,"name":"Plano de Taxa","parentTax":"7833d91f-47f5-5ee7-8862-f390b698fdc2","taxes":[{"paymentType":2,"isInInstallment":false,"upsellAnticipationTax":1,"upsellTax":1,"cardBrand":2,"priority":1}],"aditumProduct":1,"receivableMode":1}]});

var requestOptions = {
  method: 'PUT',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("{{ENDPOINT_GATEWAY}}/v2/tax", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "taxes": [
        {
            "id": "f7b04a26-1cd0-4bc9-ae89-e9b7254817eb",
            "isActive": true,
            "acquirer": "Simulator",
            "name": "Plano de Taxa",
            "parentTax": "7833d91f-47f5-5ee7-8862-f390b698fdc2",
            "taxes": [
                {
                    "paymentType": "Credit",
                    "isInInstallment": false,
                    "upsellAnticipationTax": 1.0,
                    "upsellTax": 1.0,
                    "cardBrand": "MasterCard",
                    "priority": 1
                }
            ],
            "aditumProduct": "Ecommerce",
            "receivableMode": "Default"
        }
    ],
    "success": true,
    "errors": [],
    "traceKey": "ac17ebe6-3f8f-4a2f-ad54-d2d13a173dee"
}

O Endpoint responsável por atualizar as taxas.

Requisição

Propriedade Tipo Obrigatório Descrição
id string Sim O ID da taxa.
isActive bool Sim Se a taxa está ativa ou não.
acquirer int Sim O ID da adquirente. .
name string Sim O nome da adquirente.
parentTax string Sim O ID de uma outra taxa, usado para venda.
taxes array Sim Lista de taxas para o comerciante, definida por cada adquirente.
taxes.paymentType string Sim Tipo de transação.
taxes.isInInstallment bool Sim Se a estratégia está relacionada a um tipo de transação instalado ou não.
taxes.installmentRange array Sim Define faixa de parcelamento, em um crédito tributário, de 2 a 6x ou de 7 a 12x.
taxes.upsellTax number Sim A porcentagem do parceiro a ser cobrada e somará ParentTax.TaxPercentage ou ParentTax.UpsellTax se parenttax tiver pai.
taxes.cardBrand int Sim A bandeira do cartão à qual o imposto se aplica. .
taxes.priority int Sim É um número inteiro positivo, cujo valor mais alto é 1.
aditumProduct int Sim É produto relacionado ao plano de taxas.

Resposta

Propriedade Tipo Descrição
id string O ID da taxa.
isActive bool Se a taxa está ativa ou não.
acquirer int O ID da adquirente. .
name string O nome da adquirente.
parentTax string O ID de uma outra taxa, usado para venda.
taxes Taxes Lista de taxas para o comerciante, definida por cada adquirente.
taxes.paymentType string Tipo de transação.
taxes.isInInstallment bool Se a estratégia está relacionada a um tipo de transação instalado ou não.
taxes.installmentRange array Define faixa de parcelamento, em um crédito tributário, de 2 a 6x ou de 7 a 12x.
taxes.upsellTax number A porcentagem do parceiro a ser cobrada e somará ParentTax.TaxPercentage ou ParentTax.UpsellTax se parenttax tiver pai.
taxes.cardBrand int A bandeira do cartão à qual o imposto se aplica. .
taxes.priority int É um número inteiro positivo, cujo valor mais alto é 1.
aditumProduct int É produto relacionado ao plano de taxas.
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token.

BODY Raw

{
   "taxes": [
      {
         "id": "f7b04a26-1cd0-4bc9-ae89-e9b7254817eb",
         "isActive": true,
         "acquirer": 999,
         "name": "Plano de Taxa",
         "parentTax": "7833d91f-47f5-5ee7-8862-f390b698fdc2",
         "taxes": [
            {
               "paymentType": 2,
               "isInInstallment": false,
               "upsellAnticipationTax": 1.0,
               "upsellTax": 1.0,
               "cardBrand": 2,
               "priority": 1
            }
         ],
         "aditumProduct": 1,
         "receivableMode": 1
      }
   ]
}

DEL /tax/{taxPlanId}

Versão v2.0

Requisição HTTP

DELETE {{ENDPOINT_GATEWAY}}/v2/tax/{taxPlanId}

Exemplo de requisição

require "uri"
require "net/http"

url = URI("{{ENDPOINT_GATEWAY}}/v2/tax/{{taxPlanId}}")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Delete.new(url)
request["Authorization"] = "Bearer {{accessToken}}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_GATEWAY}}/v2/tax/{{taxPlanId}}"

payload={}
headers = {
  'Authorization': 'Bearer {{accessToken}}'
}

response = requests.request("DELETE", url, headers=headers, data=payload)

print(response.text)
curl --location -g --request DELETE '{{ENDPOINT_GATEWAY}}/v2/tax/{{taxPlanId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");

var requestOptions = {
  method: 'DELETE',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("{{ENDPOINT_GATEWAY}}/v2/tax/{{taxPlanId}}", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "taxPlanId": "27dcaa67-ec3e-4974-97fe-6396534506a4",
    "success": true,
    "errors": [],
    "traceKey": "6f3490df-6afd-45db-8f72-d5aac3d6d2c5"
}

O Endpoint responsável por deletar as taxas de um comerciante.

Requisição

Propriedade Tipo Obrigatório Descrição
id string Sim O ID da taxa.

Resposta

Propriedade Tipo Descrição
taxPlandId string O ID da taxa.
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token.

PUT /tax/Activate/{{taxPlanId}}

Versão v2.0

Requisição HTTP

PUT {{ENDPOINT_GATEWAY}}/v2/tax/Activate/{taxPlanId}

Exemplo de requisição

require "uri"
require "net/http"

url = URI("{{ENDPOINT_GATEWAY}}/v2/tax/Activate/{{taxPlanId}}")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Put.new(url)
request["Authorization"] = "Bearer {{accessToken}}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_GATEWAY}}/v2/tax/Activate/{{taxPlanId}}"

payload={}
headers = {
  'Authorization': 'Bearer {{accessToken}}'
}

response = requests.request("PUT", url, headers=headers, data=payload)

print(response.text)
curl --location -g --request PUT '{{ENDPOINT_GATEWAY}}/v2/tax/Activate/{{taxPlanId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");

var requestOptions = {
  method: 'PUT',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("{{ENDPOINT_GATEWAY}}/v2/tax/Activate/{{taxPlanId}}", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "taxPlanId": "27dcaa67-ec5e-6994-97fe-6396534506a4",
    "success": true,
    "errors": [],
    "traceKey": "af7e0261-6412-483f-bec3-6525aa184df2"
}

O Endpoint responsável por ativar as taxas de um comerciante.

Requisição

Propriedade Tipo Obrigatório Descrição
id string Sim O ID da taxa.

Resposta

Propriedade Tipo Descrição
taxPlandId string O ID da taxa.
HEADERS -
Bearer Token {{accessToken}}
-- BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token.

Compradores

Os clientes que serão cadastrados no sistema para serem relacionados a suas transações futuras.

POST /customer

Versão v2.0

Requisição HTTP

POST {{ENDPOINT_GATEWAY}}/v2/customer

Exemplo de requisição

require "uri"
require "net/http"

url = URI("{{ENDPOINT_GATEWAY}}/v2/customer")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n  \"customer\": {\r\n    \"name\": \"Yago Sebastião Lima\",\r\n    \"email\": \"yagosebastiaolima@archosolutions.com.br\",\r\n    \"entityType\": 1,\r\n    \"documentType\": 1,\r\n    \"document\": \"78112482802\",\r\n    \"phone\": {\r\n      \"countryCode\": \"55\",\r\n      \"areaCode\": \"21\",\r\n      \"number\": \"999999999\",\r\n      \"type\": 5\r\n    }\r\n  }\r\n}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_GATEWAY}}/v2/customer"

payload="{\r\n  \"customer\": {\r\n    \"name\": \"Yago Sebastião Lima\",\r\n    \"email\": \"yagosebastiaolima@archosolutions.com.br\",\r\n    \"entityType\": 1,\r\n    \"documentType\": 1,\r\n    \"document\": \"78112482802\",\r\n    \"phone\": {\r\n      \"countryCode\": \"55\",\r\n      \"areaCode\": \"21\",\r\n      \"number\": \"999999999\",\r\n      \"type\": 5\r\n    }\r\n  }\r\n}"
headers = {
  'Authorization': 'Bearer {{accessToken}}',
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
curl --location --request POST '{{ENDPOINT_GATEWAY}}/v2/customer' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
  "customer": {
    "name": "Yago Sebastião Lima",
    "email": "yagosebastiaolima@archosolutions.com.br",
    "entityType": 1,
    "documentType": 1,
    "document": "78112482802",
    "phone": {
      "countryCode": "55",
      "areaCode": "21",
      "number": "999999999",
      "type": 5
    }
  }
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({"customer":{"name":"Yago Sebastião Lima","email":"yagosebastiaolima@archosolutions.com.br","entityType":1,"documentType":1,"document":"78112482802","phone":{"countryCode":"55","areaCode":"21","number":"999999999","type":5}}});

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("{{ENDPOINT_GATEWAY}}/v2/customer", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "customer": {
        "id": "ffede3ee-37ab-47bb-9981-d4d14697d67a",
        "name": "Yago Sebastião Lima",
        "email": "yagosebastiaolima@archosolutions.com.br",
        "entityType": "IndividualMerchant",
        "documentType": "Cpf",
        "document": "78112482802",
        "gender": "Undefined",
        "phone": {
            "countryCode": "55",
            "areaCode": "21",
            "number": "999999999",
            "type": "Mobile"
        }
    },
    "success": true,
    "errors": [],
    "traceKey": "496e22bd-0690-489c-a88f-9c1fd4e64d62"
}

O Endpoint responsável por criar um novo comprador.

Requisição

Propriedade Tipo Obrigatório Descrição
name string Sim Nome completo do comprador.
email string Sim E-mail do comprador.
entityType entityType Sim Se é pessoa física ou jurídica. .
documentType documentType Sim Tipo do documento do comprador. .
document string Sim Documento do comprador.
birthday date Não Data de nascimento do comprador.
gender Gender Não Gênero do comprador. .
phone object Sim Telefone do comprador.
phone.countryCode string Sim Código do país.
phone.areaCode string Sim Código de área.
phone.number string Sim Número do Telefone.
phone.type PhoneType Sim Tipo do telefone. .
address object Não Endereço do comprador.
address.street string Sim Rua.
address.number string Sim Número.
address.neighborhood string Sim Bairro.
address.city string Sim Cidade.
address.state string Sim Estado.
address.country string Sim País.
address.zipCode string Sim CEP.
address.complement string Sim Complemento.
bankAccounts object Sim Contas do comprador.
bankAccounts.bankCode string Sim Código do banco.
bankAccounts.bankName string Sim Nome do banco.
bankAccounts.branch string Sim Filial.
bankAccounts.branchCheckDigit string Sim Dígito de verificação da filial.
bankAccounts.account string Sim Conta bancária.
bankAccounts.accountCheckDigit string Sim Dígito de verificação da conta bancária.
bankAccounts.type int Sim Tipo de conta. .
bankAccounts.isActive bool Sim Se a conta está ativa ou não.

Resposta

Propriedade Tipo Descrição
id string O ID do comprador
name string Nome completo do comprador.
email string E-mail do comprador.
entityType entityType Se é pessoa física ou jurídica. .
documentType documentType [Tipo do documento do comprador. ](#document].
document string Documento do comprador.
birthday date Data de nascimento do comprador.
gender Gender Gênero do comprador. ..
phone object Telefone do comprador.
phone.countryCode string Código do país.
phone.areaCode string Código de área.
phone.number string Número do Telefone.
phone.type PhoneType Tipo do telefone. .
address object Endereço do comprador.
address.street string Rua.
address.number string Número.
address.neighborhood string Bairro.
address.city string Cidade.
address.state string Estado.
address.country string País.
address.zipCode string CEP.
address.complement string Complemento.
bankAccounts object Contas do comprador.
bankAccounts.bankCode string Código do banco.
bankAccounts.bankName string Nome do banco.
bankAccounts.branch string Filial.
bankAccounts.branchCheckDigit string Dígito de verificação da filial.
bankAccounts.account string Conta bancária.
bankAccounts.accountCheckDigit string Dígito de verificação da conta bancária.
bankAccounts.type int Tipo de conta. .
bankAccounts.isActive bool Se a conta está ativa ou não.
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
errors.errorCode int Código do erro.
errors.message string Mensagem para identificar qual foi o erro retornado.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token.

BODY Raw

{
   "customer": {
      "name": "Yago Sebastião Lima",
      "email": "yagosebastiaolima@archosolutions.com.br",
      "entityType": 1,
      "documentType": 1,
      "document": "78112482802",
      "phone": {
         "countryCode": "55",
         "areaCode": "21",
         "number": "999999999",
         "type": 5
      }
   }
}

PUT /customer

Versão v2.0

Requisição HTTP

PUT {{ENDPOINT_GATEWAY}}/v2/customer

Exemplo de requisição

require "uri"
require "net/http"

url = URI("{{ENDPOINT_GATEWAY}}/v2/customer")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Put.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n  \"customer\": {\r\n    \"id\": \"ffede3ee-37ab-47bb-9981-d3d14697d67z\",\r\n    \"name\": \"Yago Sebastião Lima\",\r\n    \"email\": \"yagosebastiaolima@archosolutions.com.br\",\r\n    \"entityType\": 1,\r\n    \"documentType\": 1,\r\n    \"document\": \"38000266350\",\r\n    \"phone\": {\r\n      \"countryCode\": \"55\",\r\n      \"areaCode\": \"21\",\r\n      \"number\": \"999999999\",\r\n      \"type\": 5\r\n    }\r\n  }\r\n}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_GATEWAY}}/v2/customer"

payload="{\r\n  \"customer\": {\r\n    \"id\": \"ffede3ee-37ab-47bb-9981-d3d14697d67z\",\r\n    \"name\": \"Yago Sebastião Lima\",\r\n    \"email\": \"yagosebastiaolima@archosolutions.com.br\",\r\n    \"entityType\": 1,\r\n    \"documentType\": 1,\r\n    \"document\": \"38000266350\",\r\n    \"phone\": {\r\n      \"countryCode\": \"55\",\r\n      \"areaCode\": \"21\",\r\n      \"number\": \"999999999\",\r\n      \"type\": 5\r\n    }\r\n  }\r\n}"
headers = {
  'Authorization': 'Bearer {{accessToken}}',
  'Content-Type': 'application/json'
}

response = requests.request("PUT", url, headers=headers, data=payload)

print(response.text)
curl --location --request PUT '{{ENDPOINT_GATEWAY}}/v2/customer' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
  "customer": {
    "id": "ffede3ee-37ab-47bb-9981-d3d14697d67z",
    "name": "Yago Sebastião Lima",
    "email": "yagosebastiaolima@archosolutions.com.br",
    "entityType": 1,
    "documentType": 1,
    "document": "38000266350",
    "phone": {
      "countryCode": "55",
      "areaCode": "21",
      "number": "999999999",
      "type": 5
    }
  }
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({"customer":{"id":"ffede3ee-37ab-47bb-9981-d3d14697d67z","name":"Yago Sebastião Lima","email":"yagosebastiaolima@archosolutions.com.br","entityType":1,"documentType":1,"document":"38000266350","phone":{"countryCode":"55","areaCode":"21","number":"999999999","type":5}}});

var requestOptions = {
  method: 'PUT',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("{{ENDPOINT_GATEWAY}}/v2/customer", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "updatedCustomer": {
        "id": "ffede3ee-37ab-47bb-9981-d3d14697d67z",
        "name": "Yago Sebastião Lima",
        "email": "yagosebastiaolima@archosolutions.com.br",
        "entityType": "IndividualMerchant",
        "documentType": "Cpf",
        "document": "78112482802",
        "gender": "Undefined",
        "phone": {
            "countryCode": "55",
            "areaCode": "21",
            "number": "999999999",
            "type": "Mobile"
        }
    },
    "success": true,
    "errors": [],
    "traceKey": "33d8aa2b-5b89-4f5f-a1ca-74b759658edf"
}

O Endpoint responsável por atualizar um comprador existente por seu ID. Todas as informações do comprador substituirão as existentes na base de dados, exceto o ID do comprador, que permanecerá o mesmo.

Requisição

Propriedade Tipo Obrigatório Descrição
name string Sim Nome completo do comprador.
email string Sim E-mail do comprador.
entityType entityType Sim Se é pessoa física ou jurídica. .
documentType documentType Sim Tipo do documento do comprador. .
document string Sim Documento do comprador.
birthday date Não Data de nascimento do comprador.
gender Gender Não Gênero do comprador. .
phone object Sim Telefone do comprador.
phone.countryCode string Sim Código do país.
phone.areaCode string Sim Código de área.
phone.number string Sim Número do Telefone.
phone.type PhoneType Sim Tipo do telefone. .
address object Não Endereço do comprador.
address.street string Sim Rua.
address.number string Sim Número.
address.neighborhood string Sim Bairro.
address.city string Sim Cidade.
address.state string Sim Estado.
address.country string Sim País.
address.zipCode string Sim CEP.
address.complement string Sim Complemento.
bankAccounts object Sim Contas do comprador.
bankAccounts.bankCode string Sim Código do banco.
bankAccounts.bankName string Sim Nome do banco.
bankAccounts.branch string Sim Filial.
bankAccounts.branchCheckDigit string Sim Dígito de verificação da filial.
bankAccounts.account string Sim Conta bancária.
bankAccounts.accountCheckDigit string Sim Dígito de verificação da conta bancária.
bankAccounts.type int Sim Tipo de conta. .
bankAccounts.isActive bool Sim Se a conta está ativa ou não.

Resposta

Propriedade Tipo Descrição
id string O ID do comprador
name string Nome completo do comprador.
email string E-mail do comprador.
entityType entityType Se é pessoa física ou jurídica. .
documentType documentType [Tipo do documento do comprador. ](#document].
document string Documento do comprador.
birthday date Data de nascimento do comprador.
gender Gender Gênero do comprador. ..
phone object Telefone do comprador.
phone.countryCode string Código do país.
phone.areaCode string Código de área.
phone.number string Número do Telefone.
phone.type PhoneType Tipo do telefone. .
address object Endereço do comprador.
address.street string Rua.
address.number string Número.
address.neighborhood string Bairro.
address.city string Cidade.
address.state string Estado.
address.country string País.
address.zipCode string CEP.
address.complement string Complemento.
bankAccounts object Contas do comprador.
bankAccounts.bankCode string Código do banco.
bankAccounts.bankName string Nome do banco.
bankAccounts.branch string Filial.
bankAccounts.branchCheckDigit string Dígito de verificação da filial.
bankAccounts.account string Conta bancária.
bankAccounts.accountCheckDigit string Dígito de verificação da conta bancária.
bankAccounts.type int Tipo de conta. .
bankAccounts.isActive bool Se a conta está ativa ou não.
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
errors.errorCode int Código do erro.
errors.message string Mensagem para identificar qual foi o erro retornado.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token.

BODY Raw

{
   "customer": {
      "id": "ffede3ee-37ab-47bb-9981-d3d14697d67z",
      "name": "Yago Sebastião Lima",
      "email": "yagosebastiaolima@archosolutions.com.br",
      "entityType": 1,
      "documentType": 1,
      "document": "38000266350",
      "phone": {
            "countryCode": "55",
            "areaCode": "21",
            "number": "999999999",
            "type": 5
      }
   }
}

GET /customer

Versão v2.0

Requisição HTTP

GET {{ENDPOINT_GATEWAY}}/v2/customer

Exemplo de requisição (Por ID)

require "uri"
require "net/http"

url = URI("{{ENDPOINT_GATEWAY}}/v2/customer?id={{customerId}}")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer {{accessToken}}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_GATEWAY}}/v2/customer?id={{customerId}}"

payload={}
headers = {
  'Authorization': 'Bearer {{accessToken}}'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)
curl --location --request GET '{{ENDPOINT_GATEWAY}}/v2/customer?id={{customerId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");

var requestOptions = {
  method: 'GET',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("{{ENDPOINT_GATEWAY}}/v2/customer?id={{customerId}}", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Exemplo de requisição (Por Documento)

require "uri"
require "net/http"

url = URI("{{ENDPOINT_GATEWAY}}/v2/customer?document={{document}}")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer {{accessToken}}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_GATEWAY}}/v2/customer?document={{document}}"

payload={}
headers = {
  'Authorization': 'Bearer {{accessToken}}'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)
curl --location -g --request GET '{{ENDPOINT_GATEWAY}}/v2/customer?document={{document}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");

var requestOptions = {
  method: 'GET',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("{{ENDPOINT_GATEWAY}}/v2/customer?document={{document}}", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "customer": {
        "id": "ffede3ee-37ab-47bb-9981-d3d14697d67z",
        "name": "Yago Sebastião Lima",
        "email": "yagosebastiaolima@archosolutions.com.br",
        "entityType": "IndividualMerchant",
        "documentType": "Cpf",
        "document": "38000266350",
        "gender": "Undefined",
        "phone": {
            "countryCode": "55",
            "areaCode": "21",
            "number": "999999999",
            "type": "Mobile"
        }
    },
    "success": true,
    "errors": [],
    "traceKey": "660ba190-188c-4da9-8655-7aa61cef7d59"
}

O Endpoint responsável por obter um comprador com base no ID ou Documento, utilize um ou outro.

Requisição

Propriedade Tipo Obrigatório Descrição
id string Condicional O ID do comprador.
document string Condicional O documento do comprador.

Resposta

Propriedade Tipo Descrição
id string O ID do comprador
name string Nome completo do comprador.
email string E-mail do comprador.
entityType entityType Se é pessoa física ou jurídica. .
documentType documentType [Tipo do documento do comprador. ](#document].
document string Documento do comprador.
birthday date Data de nascimento do comprador.
gender Gender Gênero do comprador. ..
phone object Telefone do comprador.
phone.countryCode string Código do país.
phone.areaCode string Código de área.
phone.number string Número do Telefone.
phone.type PhoneType Tipo do telefone. .
address object Endereço do comprador.
address.street string Rua.
address.number string Número.
address.neighborhood string Bairro.
address.city string Cidade.
address.state string Estado.
address.country string País.
address.zipCode string CEP.
address.complement string Complemento.
bankAccounts object Contas do comprador.
bankAccounts.bankCode string Código do banco.
bankAccounts.bankName string Nome do banco.
bankAccounts.branch string Filial.
bankAccounts.branchCheckDigit string Dígito de verificação da filial.
bankAccounts.account string Conta bancária.
bankAccounts.accountCheckDigit string Dígito de verificação da conta bancária.
bankAccounts.type int Tipo de conta. .
bankAccounts.isActive bool Se a conta está ativa ou não.
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
errors.errorCode int Código do erro.
errors.message string Mensagem para identificar qual foi o erro retornado.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token.
PARAMS -
Id {{customerId}}
-- Número de identificação do comprador.
Document {{document}}
-- Número do documento do comprador.

Cobrança

A cobrança das transações, são os meios que serão utilizados nas mesmas. Exemplo: Boleto, crédito etc...

POST /charge/boleto

Versão v2.0

Requisição HTTP

POST {{ENDPOINT_GATEWAY}}v2/charge/boleto

Exemplo de requisição

require "uri"
require "json"
require "net/http"

url = URI("{{ENDPOINT_GATEWAY}}/v2/charge/boleto")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = JSON.dump({
  "charge": {
    "deadline": "2021-06-22",
    "customer": {
      "name": "Jorge Felipe",
      "email": "jorginho.felps@email.com.br",
      "entityType": 1,
      "documentType": 1,
      "document": "38000266350",
      "Address": {
        "street": "Av das dores",
        "number": "99",
        "neighborhood": "Vila Mança",
        "city": "Rio de Janeiro",
        "state": "RJ",
        "country": "BR",
        "zipCode": "212240080"
      },
      "phone": {
        "countryCode": "55",
        "areaCode": "21",
        "number": "999999999",
        "type": 5
      }
    },
    "transactions": [
      {
        "amount": 1000,
        "instructions": "Pagamento até o vencimento",
        "bankIssuerDaysToCancel": 1
      }
    ],
    "source": 7
  }
})

response = https.request(request)
puts response.read_body
import requests
import json

url = "{{ENDPOINT_GATEWAY}}/v2/charge/boleto"

payload = json.dumps({
  "charge": {
    "deadline": "2021-06-22",
    "customer": {
      "name": "Jorge Felipe",
      "email": "jorginho.felps@email.com.br",
      "entityType": 1,
      "documentType": 1,
      "document": "38000266350",
      "Address": {
        "street": "Av das dores",
        "number": "99",
        "neighborhood": "Vila Mança",
        "city": "Rio de Janeiro",
        "state": "RJ",
        "country": "BR",
        "zipCode": "212240080"
      },
      "phone": {
        "countryCode": "55",
        "areaCode": "21",
        "number": "999999999",
        "type": 5
      }
    },
    "transactions": [
      {
        "amount": 1000,
        "instructions": "Pagamento até o vencimento",
        "bankIssuerDaysToCancel": 1
      }
    ],
    "source": 7
  }
})
headers = {
  'Authorization': 'Bearer {{accessToken}}',
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
curl --location --request POST '{{ENDPOINT_GATEWAY}}/v2/charge/boleto' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
    "charge": {
        "deadline": "2021-06-22",
        "customer": {
            "name": "Jorge Felipe",
            "email": "jorginho.felps@email.com.br",
            "entityType": 1,
            "documentType": 1,
            "document": "38000266350",
            "Address": {
                "street": "Av das dores",
                "number": "99",
                "neighborhood": "Vila Mança",
                "city": "Rio de Janeiro",
                "state": "RJ",
                "country": "BR",
                "zipCode": "212240080"
            },
            "phone": {
                "countryCode": "55",
                "areaCode": "21",
                "number": "999999999",
                "type": 5
            }
        },
        "transactions": [
            {
                "amount": 1000,
                "instructions": "Pagamento até o vencimento",
                "bankIssuerDaysToCancel": 1
            }
        ],
        "source": 7
    }
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({
  "charge": {
    "deadline": "2021-06-22",
    "customer": {
      "name": "Jorge Felipe",
      "email": "jorginho.felps@email.com.br",
      "entityType": 1,
      "documentType": 1,
      "document": "38000266350",
      "Address": {
        "street": "Av das dores",
        "number": "99",
        "neighborhood": "Vila Mança",
        "city": "Rio de Janeiro",
        "state": "RJ",
        "country": "BR",
        "zipCode": "212240080"
      },
      "phone": {
        "countryCode": "55",
        "areaCode": "21",
        "number": "999999999",
        "type": 5
      }
    },
    "transactions": [
      {
        "amount": 1000,
        "instructions": "Pagamento até o vencimento",
        "bankIssuerDaysToCancel": 1
      }
    ],
    "source": 7
  }
});

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("{{ENDPOINT_GATEWAY}}/v2/charge/boleto", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "charge": {
        "id": "0b2edbfb-4770-43f6-afa8-af30d7ff8fc5",
        "chargeStatus": "PreAuthorized",
        "transactions": [
            {
                "aditumNumber": "0000000421     ",
                "transactionId": "0000000000094",
                "digitalLine": "03399000378200000000000009401019686590000001000",
                "barcode": "03396865900000020009000381000000000000940101",
                "bankSlipId": "0000000000094",
                "deadline": "2021-06-22T00:00:00",
                "paymentType": "Boleto",
                "amount": 1000,
                "transactionStatus": "PendingPayment",
                "bankIssuerId": "Santander",
                "bankErrorMessage": "00000 - Título registrado em cobrança",
                "bankErrorCode": "0",
                "creationDateTime": "2021-06-18T23:37:14.6061259Z",
                "bankSlipUrl": "/v2/charge/0b2edbfb-4770-43f6-afa8-af30d7ff8fc5/boleto/0000000000094",
                "virtualAcquirerId": "df61a4d2-d04c-4575-8713-26d6dbd50560"
            }
        ]
    },
    "success": true,
    "errors": [],
    "traceKey": "e280c533-4327-4d4f-b2b3-a78ac75a1fb9"
}

O Endpoint responsável por criar uma nova cobrança em boleto.

Requisição

Propriedade Tipo Obrigatório Descrição
merchantChargeId string Não ID de cobrança definido pelo sistema do comerciante.
sessionId string Não ID da sessão criada pelo servidor do site do cliente e usada durante a visita de um determinado usuário.
deadline string Sim Vencimento do boleto.
smartCheckoutId string Não ID Smart Checkout, se aplicável.
customerId string Não ID do cliente que foi adicionado anteriormente para o comerciante.
customer - Sim Dados do comprador.
customer.name string Sim Nome completo do comprador.
customer.email string Sim E-mail do comprador.
customer.entityType int Sim Se é pessoa física ou jurídica. .
customer.documentType documentType Sim Tipo do documento do comprador. .
customer.document string Sim Documento do comprador.
customer.phone object Sim Telefone do comprador.
customer.phone.countryCode string Sim Código do país.
customer.phone.areaCode string Sim Código de área.
customer.phone.number string Sim Número do Telefone.
customer.phone.type PhoneType Sim Tipo do telefone. .
customer.address object Não Endereço do comprador.
customer.address.street string Sim Rua.
customer.address.number string Sim Número.
customer.address.neighborhood string Sim Bairro.
customer.address.city string Sim Cidade.
customer.address.state string Sim Estado.
customer.address.country string Sim País.
customer.address.zipCode string Sim CEP.
customer.address.complement string Sim Complemento.
transactions - Sim Uma ou várias transações a serem realizadas dentro da cobrança.
transactions.amount int Sim Valor em centavos do boleto.
transactions.fine.startDate string Sim Data de início que multa começará a contar.
transactions.fine.amount int Sim Valor a ser pago após a data de vencimento.
transactions.fine.interest int Sim Os juros financeiros representam um valor em porcentagem que será calculado todos os dias após a data de vencimento.
transactions.discount.type int Sim Tipo de desconto. .
transactions.discount.amount int Sim Valor em centavos ou porcentagem com base no tipo de desconto.
transactions.discount.deadline string Sim Data limite em que o desconto pode ser aplicado.
transactions.instructions string Não Instruções de 255 caracteres a serem adicionadas no boleto bancário.
bankIssuerDaysToCancel int Não Dias para cancelamento automático após o vencimento pelo emissor do boleto.
source int Sim Define a fonte de cobrança.. .
origin string Não Uma propriedade que o cliente pode usar para identificar a origem da cobrança, como nome do fornecedor ou identificador.
receivers.id string Sim O ID do recebedor.
receivers.mdrDiscount bool Não IDs dos receptores envolvidos na cobrança. Isso definirá quem recebe a transação, dividindo o valor total da cobrança em pagamentos separados.
receivers.fixedAmountComission int Não Quantia fixa que o recebedor deve receber.
receivers.chargeRemainder bool Não Após o processamento dos valores de cada divisão, se sobrar centavos da divisão, este sinalizador indica o destinatário que deve receber os centavos extras. Isso pode ser usado para penny split (exemplo 100/3) ou para quando o destinatário não tem uma regra específica.
receivers.percentageComission int Não Essa comissão é calculada sobre o valor da transação, em porcentagem.

Resposta

Propriedade Tipo Descrição
merchantChargeId string ID de cobrança definido pelo sistema do comerciante.
id string O ID da cobrança.
chargeStatus string Indica o status da cobrança.
transactions.aditumNumber string Número transacional.
transactions.transactionId string O ID da transação.
transactions.digitalLine string Uma linha de transmissão que usa apenas código binário para recepção e emissão.
transactions.barcode string O código de barras do boleto.
transactions.bankSlipId string O ID do boleto.
transactions.deadline string Data de vencimento do boleto.
transactions.paymentType string Tipo de pagamento.
transactions.amount int Valor a pagar do boleto.
transactions.transactionStatus string Indica o status da transação.
transactions.bankIssuerId string O nome do banco.
transactions.bankErrorMessage string A mensagem de erro enviada do banco.
transactions.bankErrorCode string O código do erro enviado do banco.
transactions.creationDateTime string A data de criação da cobrança.
transactions.bankSlipUrl string O url da cobrança.
transactions.fine.startDate string Data de início que multa começará a contar.
transactions.fine.amount int Valor a ser pago após a data de vencimento.
transactions.fine.interest int Os juros financeiros representam um valor em porcentagem que será calculado todos os dias após a data de vencimento.
transactions.discount.type int Tipo de desconto. .
transactions.discount.amount int Valor em centavos ou porcentagem com base no tipo de desconto.
transactions.discount.deadline string Data limite em que o desconto pode ser aplicado.
transactions.virtualAcquirerId string O adquirente virtual da taxa sobre boleto bancário.
receivers.id string O ID do recebedor.
receivers.mdrDiscount bool IDs dos receptores envolvidos na cobrança. Isso definirá quem recebe a transação, dividindo o valor total da cobrança em pagamentos separados.
receivers.fixedAmountComission int Quantia fixa que o recebedor deve receber.
receivers.chargeRemainder bool Após o processamento dos valores de cada divisão, se sobrar centavos da divisão, este sinalizador indica o destinatário que deve receber os centavos extras. Isso pode ser usado para penny split (exemplo 100/3) ou para quando o destinatário não tem uma regra específica.
receivers.percentageComission int Essa comissão é calculada sobre o valor da transação, em porcentagem.
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token.

BODY Raw

{
   "charge": {
      "deadline": "2021-06-22",
      "customer": {
         "name": "Yago Sebastião Lima",
         "email": "yagosebastiaolima@archosolutions.com.br",
         "entityType": 1,
         "documentType": 1,
         "document": "38000266350",
         "Address": {
            "street": "RUA ALEKRIN",
            "number": "99",
            "neighborhood": "Parque Residencial Nova Fronteira",
            "city": "Gurupi",
            "state": "BA",
            "country": "BR",
            "zipCode": "212211150"
         },
         "phone": {
            "countryCode": "55",
            "areaCode": "21",
            "number": "999999999",
            "type": 5
         }
      },
      "transactions": [
            {
               "amount": 1000,
               "instructions": "Pagamento até o vencimento",
               "bankIssuerDaysToCancel": 1
            }
      ],
      "source": 7
   }
}

PUT /charge/boleto

Versão v2.0

Requisição HTTP

PUT {{ENDPOINT_GATEWAY}}v2/charge/boleto

Exemplo de requisição

require "uri"
require "net/http"

url = URI("{{ENDPOINT_GATEWAY}}/v2/charge/boleto")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Put.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n  \"chargeId\": \"0b2edbfb-4770-43f6-afa8-af30d7ff8fc5\",\r\n  \"newDueDate\": \"2021-06-30\"\r\n}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_GATEWAY}}/v2/charge/boleto"

payload="{\r\n  \"chargeId\": \"0b2edbfb-4770-43f6-afa8-af30d7ff8fc5\",\r\n  \"newDueDate\": \"2021-06-30\"\r\n}"
headers = {
  'Authorization': 'Bearer {{accessToken}}',
  'Content-Type': 'application/json'
}

response = requests.request("PUT", url, headers=headers, data=payload)

print(response.text)
curl --location --request PUT '{{ENDPOINT_GATEWAY}}/v2/charge/boleto' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
  "chargeId": "0b2edbfb-4770-43f6-afa8-af30d7ff8fc5",
  "newDueDate": "2021-06-30"
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({"chargeId":"0b2edbfb-4770-43f6-afa8-af30d7ff8fc5","newDueDate":"2021-06-30"});

var requestOptions = {
  method: 'PUT',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("{{ENDPOINT_GATEWAY}}/v2/charge/boleto", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "bankSlipTransactionResult": {
        "bankSlipId": "0000000000094",
        "deadline": "2021-06-30T00:00:00",
        "amount": 1000,
        "transactionStatus": "PendingNewDeadline",
        "bankIssuerId": "Santander",
        "creationDateTime": "2021-06-18T20:54:41.6179778-03:00",
        "status": "Pending"
    },
    "success": true,
    "errors": [],
    "traceKey": "d1ac301e-519b-4714-8eca-0d9c100837d8"
}

O Endpoint responsável por atualizar uma nova data de vencimento de um boleto bancário.

Requisição

Propriedade Tipo Obrigatório Descrição
chargeId string Sim O ID da cobrança.
newDueDate string Sim A nova data de vencimento do boleto.

Resposta

Propriedade Tipo Descrição
bankSlipId string O ID do boleto bancário.
deadline string O prazo final da transação.
amount int Valor a ser cobrado. Obrigatório se o checkout / link de pagamento não possui produto(s).
transactionStatus string Indica o status da transação. Ex Erro de Criação.
bankIssuerId string O nome do banco.
creationDateTime string A data de criação da transação.
status string Indica o status atual da transação.
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token.

BODY Raw

{
   "chargeId": "0b2edbfb-4770-43f6-afa8-af30d7ff8fc5",
   "newDueDate": "2021-06-30"
}

GET /charge/{{chargeId}}/boleto/{{transactionId}}

Versão v2.0

Requisição HTTP

GET {{ENDPOINT_GATEWAY}}/v2/charge/{{chargeId}}/boleto/{{{transactionId}}

Exemplo de requisição

require "uri"
require "net/http"

url = URI("{{ENDPOINT_GATEWAY}}/v2/charge/{{chargeId}}/boleto/{{transactionId}}")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer {{accessToken}}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_GATEWAY}}/v2/charge/{{chargeId}}/boleto/{{transactionId}}"

payload={}
headers = {
  'Authorization': 'Bearer {{accessToken}}'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)
curl --location -g --request GET '{{ENDPOINT_GATEWAY}}/v2/charge/{{chargeId}}/boleto/{{transactionId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");

var requestOptions = {
  method: 'GET',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("{{ENDPOINT_GATEWAY}}/v2/charge/{{chargeId}}/boleto/{{transactionId}}", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O Endpoint responsável por gerar um arquivo em .pdf com os dados do boleto.

Requisição

Propriedade Tipo Obrigatório Descrição
chargeId string Sim O ID da cobrança.
transactionId string Sim O ID da transação.

Resposta

Propriedade Tipo Descrição
Boleto PDF Resposta retorna um boleto em .pdf.
HEADERS -
Bearer Token {{accessToken}}
-- BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token.
PARAMS -
chargeId {{chargeId}}
-- O ID da cobrança.
transactionId {{transactionId}}
-- O ID da transação.

GET /charge/{{chargeId}}

Versão v2.0

Requisição HTTP

GET {{ENDPOINT_GATEWAY}}/v2/charge/{{chargeId}}

Exemplo de requisição

require "uri"
require "net/http"

url = URI("{{ENDPOINT_GATEWAY}}/v2/charge/{{chargeId}}")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer {{accessToken}}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_GATEWAY}}/v2/charge/{{chargeId}}"

payload={}
headers = {
  'Authorization': 'Bearer {{accessToken}}'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)
curl --location -g --request GET '{{ENDPOINT_GATEWAY}}/v2/charge/{{chargeId}}' \
--header 'Authorization: Bearer {{accessToken}}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");

var requestOptions = {
  method: 'GET',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("{{ENDPOINT_GATEWAY}}/v2/charge/{{chargeId}}", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "charge": {
        "merchantChargeId": "TASK 5333",
        "id": "a7a1a873-ce15-5f83-a5fa-eb6f8637d102",
        "nsu": "000005047",
        "customerId": "ffede3ee-37ab-47bb-9971-d3d14697d67a",
        "chargeStatus": "Authorized",
        "transactions": [
            {
                "card": {
                    "id": "7903ef09-83c3-438d-ad39-9ea9e736e59b",
                    "customerId": "ffede3ee-37ab-47bb-9971-d3d14697d67a",
                    "cardNumber": "411111******1111",
                    "brand": "Visa",
                    "cardholderName": "Yago Sebastião Lima",
                    "cardholderDocument": "78112482802",
                    "isPrivateLabel": false,
                    "expirationMonth": 12,
                    "expirationYear": 2026,
                    "brandName": "Visa"
                },
                "isApproved": true,
                "paymentType": "Credit",
                "installmentType": "None",
                "installmentNumber": 1,
                "softDescriptor": "TESTE",
                "amount": 1000,
                "isCapture": true,
                "isRecurrency": false,
                "isCanceled": false,
                "transactionId": "1624024252357",
                "transactionStatus": "Captured",
                "merchantTransactionId": "ff9624132c274c0ca878be991d3b6a87",
                "acquirer": "Simulator",
                "creationDateTime": "2021-06-18T10:50:52.37",
                "captureDateTime": "2021-06-18T10:50:52.37",
                "authorizationResponseCode": "00",
                "authorizationCode": "927648",
                "bankSlipStatus": 0
            }
        ]
    },
    "success": true,
    "errors": [],
    "traceKey": "84272215-cfdd-42df-bfcd-4669ed40b269"
}

O Endpoint responsável por obter informações de uma cobrança pelo seu GUID ID ou NSU.

Requisição

Propriedade Tipo Obrigatório Descrição
chargeId string Sim O ID da cobrança.

Resposta

Propriedade Tipo Descrição
id string O ID da cobrança.
merchantChargeId string O ID de cobrança definido pelo sistema do comerciante.
customerId string O ID do comprador.
chargeStatus string Indica qual o status da cobrança. Ex: Não autorizado.
transactions - Uma ou várias transações a serem realizadas dentro da cobrança.
transactions.isApproved bool Indica se a transação foi aprovada ou não.
transactions.installmentType string Tipo de parcelamento da transação
transactions.installmentNumber int Numero de parcelas da transação, sendo 1 o valor mínimo.
transactions.amount int Valor a ser cobrado. Obrigatório se o checkout / link de pagamento não possui produto(s).
transactions.isCapture bool Indica se a cobrança foi capturada.
transactions.isRecurrency bool Indica se a cobrança é uma recorrência.
transactions.isCanceled bool Indica se a cobrança foi cancelada.
transactions.acquirer string O nome da adquirente.
transactions.creationDateTime string A data de criação da cobrança.
transactions.bankSlipStatus int Indica o status do boleto bancário.
transactions.bankIssuerNumber string O número do emissor do banco.
transactions.aditumNumber string O número transacional.
transactions.barcode string O código de barras do boleto.
transactions.digitalLine string Uma linha de transmissão que usa apenas código binário para recepção e emissão.
transactions.bankSlipId string O ID do boleto bancário.
receivers array Informações dos recebedores, caso tenha cadastrado algum na cobrança.
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token.
PARAMS -
chargeId {{chargeId}}
-- O ID da cobrança.

PUT /charge/capture/{{chargeId}}

Versão v2.0

Requisição HTTP

PUT {{ENDPOINT_GATEWAY}}/v2/charge/capture/{{chargeId}}

Exemplo de requisição

require "uri"
require "net/http"

url = URI("{{ENDPOINT_GATEWAY}}/v2/charge/capture/{{chargeId}}")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Put.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_GATEWAY}}/v2/charge/capture/{{chargeId}}"

payload="{}"
headers = {
  'Authorization': 'Bearer {{accessToken}}',
  'Content-Type': 'application/json'
}

response = requests.request("PUT", url, headers=headers, data=payload)

print(response.text)
curl --location -g --request PUT '{{ENDPOINT_GATEWAY}}/v2/charge/capture/{{chargeId}}' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({});

var requestOptions = {
  method: 'PUT',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("{{ENDPOINT_GATEWAY}}/v2/charge/capture/{{chargeId}}", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "captured": true,
    "charge": {
        "merchantChargeId": "TASK 5333",
        "id": "abcc2428-eb4e-4470-9d55-72edca459daf",
        "nsu": "000005044",
        "customerId": "ffede3ee-37ab-47bb-9981-d3d14697d67z",
        "chargeStatus": "Authorized",
        "transactions": [
            {
                "card": {
                    "id": "7903ef09-83c3-458d-ad39-9ea9e736e59b",
                    "customerId": "ffede3ee-37ab-47bb-9981-d3d14697d67z",
                    "cardNumber": "411111******1111",
                    "brand": "Visa",
                    "cardholderName": "Yago Sebastião Lima",
                    "cardholderDocument": "78112482802",
                    "isPrivateLabel": false,
                    "expirationMonth": 12,
                    "expirationYear": 2026,
                    "brandName": "Visa"
                },
                "isApproved": true,
                "paymentType": "Credit",
                "installmentType": "None",
                "installmentNumber": 1,
                "softDescriptor": "TASK 5333",
                "amount": 1000,
                "isCapture": true,
                "isRecurrency": false,
                "isCanceled": false,
                "transactionId": "1623967391659",
                "transactionStatus": "Captured",
                "merchantTransactionId": "TASK 5333",
                "acquirer": "Simulator",
                "creationDateTime": "2021-06-17T19:03:11.683",
                "captureDateTime": "2021-06-17T19:12:18.2281922-03:00",
                "authorizationResponseCode": "00",
                "authorizationCode": "304848",
                "bankSlipStatus": 0
            }
        ],
        "metadata": {
            "key_Sample": "Value_Sample"
        }
    },
    "success": true,
    "errors": [],
    "traceKey": "8e3bbb8b-f38e-4872-bcaa-5b858d143d0d"
}

O Endpoint responsável por capturar uma transação pré autorizada.

Requisição

Propriedade Tipo Obrigatório Descrição
chargeId string Sim O ID da cobrança.

Resposta

Propriedade Tipo Descrição
captured bool Indica se a transação foi capturada.
merchantChargeId string O ID de cobrança definido pelo sistema do comerciante.
id string O ID da cobrança.
nsu string O número da transação.
customerId string O ID do comprador.
chargeStatus string Indica o status da cobrança. Ex: Autorizada.
transactions - Uma ou várias transações a serem realizadas dentro da cobrança.
transactions.card - O cartão utilizado na transação.
transactions.card.id string O ID do cartão.
transactions.card.customerId string O ID do comprador títular do cartão.
transactions.card.cardNumber string O número impresso na frente do cartão.
transactions.card.brand string A bandeira do cartão.
transactions.card.cardholderName string O nome do títular impresso na frente do cartão.
transactions.card.cardholderDocument string O documento do títular do cartão.
transactions.card.billingAddress array É o endereço conectado ao cartão de crédito ou débito. As empresas usam o endereço de cobrança para verificar o uso autorizado de tal cartão. É também para onde as empresas enviam contas em papel e extratos bancários.
transactions.card.billingAddress.street string Rua.
transactions.card.billingAddress.number string Número.
transactions.card.billingAddress.neighborhood string Bairro.
transactions.card.billingAddress.city string Cidade.
transactions.card.billingAddress.state string Estado.
transactions.card.billingAddress.country string País.
transactions.card.billingAddress.zipCode string CEP.
transactions.card.isPrivateLabel bool Indica se o cartão é um produto de whitelabel ou não. Whitelabel é um produto ou serviço que uma empresa produz e comercializa com outras empresas que tem interesse em utilizar o mesmo com sua marca estampada.
transactions.card.expirationMonth int O Mês de expiração do cartão com 2 dígitos.
transactions.card.expirationYear int O Ano de expiração do cartão com 4 dígitos.
transactions.card.fallback bool Uma bandeira que informa se a cobrança necessária será feita como fita magnética substituta.
transactions.card.brandName string O nome da bandeira do cartão.
transactions.isApproved bool Indica se a transação foi aprovada.
transactions.paymentType string Tipo de pagamento.
transactions.installmentType string Tipo de parcelamento da transação
transactions.installmentNumber int Numero de parcelas da transação, sendo 1 o valor mínimo.
transactions.softDescriptor string Breve descrição a ser apresentada na fatura bancária do cliente. Se nulo, ele será preenchido com um rótulo padrão definido pela .
transactions.amount int Valor a ser cobrado. Obrigatório se o checkout / link de pagamento não possui produto(s).
transactions.isCapture bool Indica se a cobrança foi capturada.
transactions.isRecurrency bool Indica se a cobrança é uma recorrência.
transactions.isCanceled bool Indica se a cobrança foi cancelada.
transactions.transactionId string O ID da transação.
transactions.transactionStatus string Indica qual o status da transação.
transactions.merchantTransactionId string O ID da transação do Lojista
transactions.acquirer string O nome da adquirente.
transactions.creationDateTime string A data de criação da transação.
transactions.captureDateTime string A data de captura da transação.
transactions.bankSlipStatus int Status do boleto bancário.
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token.

PUT /charge/cancelation/{chargeId}

Versão v2.0

Requisição HTTP

PUT {{ENDPOINT_GATEWAY}}/v2/charge/cancelation/{{chargeId}}

Exemplo de requisição (Cancelamento Total)

require "uri"
require "net/http"

url = URI("{{ENDPOINT_GATEWAY}}/v2/charge/cancelation/{{chargeId}}")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Put.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_GATEWAY}}/v2/charge/cancelation/{{chargeId}}"

payload="{}"
headers = {
  'Authorization': 'Bearer {{accessToken}}',
  'Content-Type': 'application/json'
}

response = requests.request("PUT", url, headers=headers, data=payload)

print(response.text)
curl --location -g --request PUT '{{ENDPOINT_GATEWAY}}/v2/charge/cancelation/{{chargeId}}' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({});

var requestOptions = {
  method: 'PUT',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("{{ENDPOINT_GATEWAY}}/v2/charge/cancelation/{{chargeId}}", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Exemplo de requisição (Cancelamento Parcial)

require "uri"
require "json"
require "net/http"

url = URI("{{ENDPOINT_GATEWAY}}/v2/charge/cancelation/{{chargeId}}")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Put.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = JSON.dump({
  "amount": 1000
})

response = https.request(request)
puts response.read_body
import requests
import json

url = "{{ENDPOINT_GATEWAY}}/v2/charge/cancelation/{{chargeId}}"

payload = json.dumps({
  "amount": 1000
})
headers = {
  'Authorization': 'Bearer {{accessToken}}',
  'Content-Type': 'application/json'
}

response = requests.request("PUT", url, headers=headers, data=payload)

print(response.text)
curl --location -g --request PUT '{{ENDPOINT_GATEWAY}}/v2/charge/cancelation/{{chargeId}}' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
    "amount": 1000
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({
  "amount": 1000
});

var requestOptions = {
  method: 'PUT',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("{{ENDPOINT_GATEWAY}}/v2/charge/cancelation/{{chargeId}}", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "canceled": true,
    "charge": {
        "merchantChargeId": "TASK 5333",
        "id": "7903ef09-83c3-458d-ad39-9ea9e736e59b",
        "nsu": "000005045",
        "customerId": "ffede3ee-37ab-47bb-9981-d3d14697d67z",
        "chargeStatus": "Canceled",
        "transactions": [
            {
                "card": {
                    "id": "7903ef09-83c3-458d-ad39-9ea9e736e59y",
                    "customerId": "ffede3ee-37ab-47bb-9981-d3d14697d67z",
                    "cardNumber": "411111******1111",
                    "brand": "Visa",
                    "cardholderName": "Yago Sebastião Lima",
                    "cardholderDocument": "78112482802",
                    "isPrivateLabel": false,
                    "expirationMonth": 12,
                    "expirationYear": 2026,
                    "brandName": "Visa"
                },
                "isApproved": true,
                "paymentType": "Credit",
                "installmentType": "None",
                "installmentNumber": 1,
                "softDescriptor": "TASK 5333",
                "amount": 1000,
                "isCapture": false,
                "isRecurrency": false,
                "isCanceled": true,
                "transactionId": "1623968171596",
                "transactionStatus": "Canceled",
                "merchantTransactionId": "TASK 5333",
                "acquirer": "Simulator",
                "creationDateTime": "2021-06-17T19:16:11.602",
                "captureDateTime": "0001-01-01T00:00:00",
                "canceledDateTime": "2021-06-17T19:16:21.392273-03:00",
                "authorizationResponseCode": "00",
                "authorizationCode": "824057",
                "bankSlipStatus": 0
            }
        ],
        "metadata": {
            "key_Sample": "Value_Sample"
        }
    },
    "success": true,
    "errors": [],
    "traceKey": "3803a0fd-9cc7-4ec1-bb69-ae5b87912c34"
}

O Endpoint responsável por cancelar uma transação autorizada.

Requisição

Propriedade Tipo Obrigatório Descrição
chargeId string Sim O ID da cobrança.
amount int Opcional Pode ser utilizado para cancelar o valor total ou parcial da cobrança, se não for enviado o cancelamento é total.

Resposta

Propriedade Tipo Descrição
canceled bool Indica se a transação foi cancelada.
merchantChargeId string O ID de cobrança definido pelo sistema do comerciante.
id string O ID da cobrança.
nsu string O número da transação.
customerId string O ID do comprador.
chargeStatus string Indica o status da cobrança. Ex: Não autorizada.
transactions - Uma ou várias transações a serem realizadas dentro da cobrança.
transactions.card - O cartão utilizado na transação.
transactions.card.id string O ID do cartão.
transactions.card.customerId string O ID do comprador títular do cartão.
transactions.card.cardNumber string O número impresso na frente do cartão.
transactions.card.brand string A bandeira do cartão.
transactions.card.cardholderName string O nome do títular impresso na frente do cartão.
transactions.card.cardholderDocument string O documento do títular do cartão.
transactions.card.billingAddress array É o endereço conectado ao cartão de crédito ou débito. As empresas usam o endereço de cobrança para verificar o uso autorizado de tal cartão. É também para onde as empresas enviam contas em papel e extratos bancários.
transactions.card.billingAddress.street string Rua.
transactions.card.billingAddress.number string Número.
transactions.card.billingAddress.neighborhood string Bairro.
transactions.card.billingAddress.city string Cidade.
transactions.card.billingAddress.state string Estado.
transactions.card.billingAddress.country string País.
transactions.card.billingAddress.zipCode string CEP.
transactions.card.isPrivateLabel bool Indica se o cartão é um produto de whitelabel ou não. Whitelabel é um produto ou serviço que uma empresa produz e comercializa com outras empresas que tem interesse em utilizar o mesmo com sua marca estampada.
transactions.card.expirationMonth int O Mês de expiração do cartão com 2 dígitos.
transactions.card.expirationYear int O Ano de expiração do cartão com 4 dígitos.
transactions.card.fallback bool Uma bandeira que informa se a cobrança necessária será feita como fita magnética substituta.
transactions.card.brandName string O nome da bandeira do cartão.
transactions.isApproved bool Indica se a transação foi aprovada.
transactions.paymentType string Tipo de pagamento.
transactions.installmentType string Tipo de parcelamento da transação
transactions.installmentNumber int Numero de parcelas da transação, sendo 1 o valor mínimo.
transactions.softDescriptor string Breve descrição a ser apresentada na fatura bancária do cliente. Se nulo, ele será preenchido com um rótulo padrão definido pela .
transactions.amount int Valor a ser cobrado. Obrigatório se o checkout / link de pagamento não possui produto(s).
transactions.isCapture bool Indica se a cobrança foi capturada.
transactions.isRecurrency bool Indica se a cobrança é uma recorrência.
transactions.isCanceled bool Indica se a cobrança foi cancelada.
transactions.transactionId string O ID da transação.
transactions.transactionStatus string Indica qual o status da transação.
transactions.merchantTransactionId string O ID da transação do Lojista
transactions.acquirer string O nome da adquirente.
transactions.errorCode string Indica o erro que foi apresentado na transação.
transactions.errorMessage string A mensagem explicativa referente ao errorCode.
transactions.creationDateTime string A data de criação da transação.
transactions.captureDateTime string A data de captura da transação.
transactions.bankSlipStatus int Status do boleto bancário.
success bool Se o endpoint processou a requisição com sucesso.
errors Error[] Se success: false, esse array contem a descrição dos erros retornados.
traceKey string Identificador da operação.
HEADERS -
Bearer Token {{accessToken}}
-- BCrypt gerado a partir da concatenação do CNPJ da loja e o Merchant Token.

BODY raw

{
  "antifraudCancel": true
}

POST /charge/authorization

Versão v2.0

Requisição HTTP

POST {{ENDPOINT_GATEWAY}}/v2/charge/authorization

Exemplo de requisição

require "uri"
require "net/http"

url = URI("{{ENDPOINT_GATEWAY}}/v2/charge/authorization")

https = Net::HTTP.new(url.host, url.port)
https.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
request["Content-Type"] = "application/json"
request.body = "{\r\n  \"charge\": {\r\n    \"merchantChargeId\": \"TASK 5333\",\r\n    \"customer\": {\r\n      \"name\": \"Ester Patrícia Aparício\",\r\n      \"email\": \"eesterpatriciaaparicio@ladder.com.br\",\r\n      \"document\": \"71877920002\",\r\n      \"documentType\": 1,\r\n      \"phone\": {\r\n          \"number\": \"999999999\",\r\n          \"countryCode\": \"55\",\r\n          \"areaCode\": \"21\",\r\n          \"type\": 5\r\n      }\r\n    },\r\n    \"transactions\": [\r\n      {\r\n        \"card\": {\r\n          \"cardNumber\": \"4111111111111111\",\r\n          \"cvv\": \"123\",\r\n          \"brand\": 1,\r\n          \"cardholderName\": \"Ester Patrícia Aparício\",\r\n          \"cardholderDocument\": \"71877920002\",\r\n          \"billingAddress\": {\r\n            \"street\": \"Rua Juvêncio Erudilho\",\r\n            \"number\": \"39\",\r\n            \"neighborhood\": \"Centro\",\r\n            \"city\": \"Gurupi\",\r\n            \"state\": \"BA\",\r\n            \"country\": \"BR\",\r\n            \"zipCode\": \"44002-528\"\r\n          },\r\n          \"expirationMonth\": 12,\r\n          \"expirationYear\": 2034\r\n        },\r\n        \"paymentType\": 2,\r\n        \"amount\": 1000,\r\n        \"installmentNumber\": 0,\r\n        \"softDescriptor\": \"TASK 5333\",\r\n        \"merchantTransactionId\": \"MTI TASK 5333\"\r\n      }\r\n    ],\r\n    \"metadata\": [\r\n        {\r\n            \"key\": \"Key_Sample\",\r\n            \"value\": \"Value_Sample\"\r\n        }\r\n    ],\r\n    \"source\": 8\r\n  }\r\n}"

response = https.request(request)
puts response.read_body
import requests

url = "{{ENDPOINT_GATEWAY}}/v2/charge/authorization"

payload="{\r\n  \"charge\": {\r\n    \"merchantChargeId\": \"TASK 5333\",\r\n    \"customer\": {\r\n      \"name\": \"Ester Patrícia Aparício\",\r\n      \"email\": \"eesterpatriciaaparicio@ladder.com.br\",\r\n      \"document\": \"71877920002\",\r\n      \"documentType\": 1,\r\n      \"phone\": {\r\n          \"number\": \"999999999\",\r\n          \"countryCode\": \"55\",\r\n          \"areaCode\": \"21\",\r\n          \"type\": 5\r\n      }\r\n    },\r\n    \"transactions\": [\r\n      {\r\n        \"card\": {\r\n          \"cardNumber\": \"4111111111111111\",\r\n          \"cvv\": \"123\",\r\n          \"brand\": 1,\r\n          \"cardholderName\": \"Ester Patrícia Aparício\",\r\n          \"cardholderDocument\": \"71877920002\",\r\n          \"billingAddress\": {\r\n            \"street\": \"Rua Juvêncio Erudilho\",\r\n            \"number\": \"39\",\r\n            \"neighborhood\": \"Centro\",\r\n            \"city\": \"Gurupi\",\r\n            \"state\": \"BA\",\r\n            \"country\": \"BR\",\r\n            \"zipCode\": \"44002-528\"\r\n          },\r\n          \"expirationMonth\": 12,\r\n          \"expirationYear\": 2034\r\n        },\r\n        \"paymentType\": 2,\r\n        \"amount\": 1000,\r\n        \"installmentNumber\": 0,\r\n        \"softDescriptor\": \"TASK 5333\",\r\n        \"merchantTransactionId\": \"MTI TASK 5333\"\r\n      }\r\n    ],\r\n    \"metadata\": [\r\n        {\r\n            \"key\": \"Key_Sample\",\r\n            \"value\": \"Value_Sample\"\r\n        }\r\n    ],\r\n    \"source\": 8\r\n  }\r\n}"
headers = {
  'Authorization': 'Bearer {{accessToken}}',
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
curl --location --request POST '{{ENDPOINT_GATEWAY}}/v2/charge/authorization' \
--header 'Authorization: Bearer {{accessToken}}' \
--header 'Content-Type: application/json' \
--data-raw '{
  "charge": {
    "merchantChargeId": "TASK 5333",
    "customer": {
      "name": "Ester Patrícia Aparício",
      "email": "eesterpatriciaaparicio@ladder.com.br",
      "document": "71877920002",
      "documentType": 1,
      "phone": {
          "number": "999999999",
          "countryCode": "55",
          "areaCode": "21",
          "type": 5
      }
    },
    "transactions": [
      {
        "card": {
          "cardNumber": "4111111111111111",
          "cvv": "123",
          "brand": 1,
          "cardholderName": "Ester Patrícia Aparício",
          "cardholderDocument": "71877920002",
          "billingAddress": {
            "street": "Rua Juvêncio Erudilho",
            "number": "39",
            "neighborhood": "Centro",
            "city": "Gurupi",
            "state": "BA",
            "country": "BR",
            "zipCode": "44002-528"
          },
          "expirationMonth": 12,
          "expirationYear": 2034
        },
        "paymentType": 2,
        "amount": 1000,
        "installmentNumber": 0,
        "softDescriptor": "TASK 5333",
        "merchantTransactionId": "MTI TASK 5333"
      }
    ],
    "metadata": [
        {
            "key": "Key_Sample",
            "value": "Value_Sample"
        }
    ],
    "source": 8
  }
}'
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bearer {{accessToken}}");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({"charge":{"merchantChargeId":"TASK 5333","customer":{"name":"Ester Patrícia Aparício","email":"eesterpatriciaaparicio@ladder.com.br","document":"71877920002","documentType":1,"phone":{"number":"999999999","countryCode":"55","areaCode":"21","type":5}},"transactions":[{"card":{"cardNumber":"4111111111111111","cvv":"123","brand":1,"cardholderName":"Ester Patrícia Aparício","cardholderDocument":"71877920002","billingAddress":{"street":"Rua Juvêncio Erudilho","number":"39","neighborhood":"Centro","city":"Gurupi","state":"BA","country":"BR","zipCode":"44002-528"},"expirationMonth":12,"expirationYear":2034},"paymentType":2,"amount":1000,"installmentNumber":0,"softDescriptor":"TASK 5333","merchantTransactionId":"MTI TASK 5333"}],"metadata":[{"key":"Key_Sample","value":"Value_Sample"}],"source":8}});

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("{{ENDPOINT_GATEWAY}}/v2/charge/authorization", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

O comando acima retorna um JSON estruturado assim:

{
    "charge": {
        "merchantChargeId": "TASK 5333",
        "id": "3e60759b-e818-4a83-a98c-883fcd609d4f",
        "nsu": "000000019",
        "customerId": "a1a5a477-f8b5-471d-ab42-765c2e4b1ad1",
        "chargeStatus": "Authorized",
        "transactions": [
            {
              "card": {
                  "id": "65327e40-37ee-4c23-9369-4845519d19b7",
                  "customerId": "a1a5a477-f8b5-471d-ab42-765c2e4b1ad1",
                  "cardNumber": "411111******1111",
                  "brand": "Visa",
                  "cardholderName": "Ester Patrícia Aparício",
                  "cardholderDocument": "71877920002",
                  "billingAddress": {
                      "street": "Rua Juvêncio Erudilho",
                      "number": "39",
                      "neighborhood": "Centro",
                      "city": "Gurupi",
                      "state": "BA",
                      "country": "BR",
                      "zipCode": "44002-528"
                  },
                  "isPrivateLabel": false,
                  "expirationMonth": 12,
                  "expirationYear": 2034,
                  "brandName": "Visa"
              },
              "isApproved": true,
              "paymentType": "Credit",
              "installmentType": "None",
              "installmentNumber": 1,
              "softDescriptor": "AD*SBIBHOSPIT",
              "amount": 1000,
              "isCapture": true,
              "isRecurrency": false,
              "isCanceled": false,
              "transactionId": "1623709631269",
              "transactionStatus": "Captured",
              "merchantTransactionId": "TASK 5333",
              "acquirer": "Simulator",
              "creationDateTime": "2021-06-14T19:27:11.3167988-03:00",
              "captureDateTime": "2021-06-14T19:27:11.3156408-03:00",
              "authorizationResponseCode": "00",
              "authorizationCode": "689020",
              "bankSlipStatus": 0
            }
        ]
    },
    "success": true,
    "errors": [],
    "traceKey": "ac0ea0e1-ad9f-412e-a0bb-4b97e9893a3f"
}

O Endpoint responsável por criar uma nova cobrança, contendo uma ou várias transações autorizadas, usando um ou vários adquirentes. A carga não precisa ser capturada posteriormente.

Requisição

Propriedade Tipo Obrigatório Descrição
merchantChargeId string Não O ID de cobrança definido pelo sistema do comerciante.
sessionId string Não ID da sessão criada pelo servidor do site do cliente e usada durante a visita de um determinado usuário.
smartCheckoutId string Não O ID do smartCheckout.
id string Sim O ID da cobrança.
chargeStatus int Não Status atual da cobrança, indicando em qual estágio do processo de autorização a cobrança está. Ele reflete diretamente todos os status de transação dentro da cobrança.
customer object Sim Dados do comprador.
customer.id string Sim O ID do comprador.
customer.name string Sim Nome completo do comprador.
customer.email string Sim E-mail do comprador.
customer.entityType entityType Sim Se é pessoa física ou jurídica. .
customer.documentType documentType Sim Tipo do documento do comprador.
customer.document string Sim Documento do comprador.
customer.birthday date Não Data de nascimento do comprador.
customer.gender Gender Não Gênero do comprador. .
customer.phone object Sim Telefone do comprador.
customer.phone.countryCode string Sim Código do país.
customer.phone.areaCode string Sim Código de área.
customer.phone.number string Sim Número do Telefone.
customer.phone.type PhoneType Sim Tipo do telefone. .
customer.address object Não Endereço do comprador.
customer.address.street string Sim Rua.
customer.address.number string Sim Número.
customer.address.neighborhood string Sim Bairro.
customer.address.city string Sim Cidade.
customer.address.state string Sim Estado.
customer.address.country string Sim País.
customer.address.zipCode string Sim CEP.
customer.address.complement string Sim Complemento.
customer.bankAccounts object Não Contas do comprador.
customer.bankAccounts.bankCode string Sim Código do banco.
customer.bankAccounts.bankName string Sim Nome do banco.
customer.bankAccounts.branch string Sim Filial.
customer.bankAccounts.branchCheckDigit string Sim Dígito de verificação da filial.
customer.bankAccounts.account string Sim Conta bancária.
customer.bankAccounts.accountCheckDigit string Sim Dígito de verificação da conta bancária.
customer.bankAccounts.type int Sim Tipo de conta. .
customer.bankAccounts.isActive bool Sim Se a conta está ativa ou não.
transactions object Sim Uma ou várias transações a serem realizadas dentro da cobrança.
transactions.card object Não O Cartão a ser utilizado na transação.
transactions.card.id string Não O ID do cartão.
transactions.card.customerId string Não O ID do comprador.
transactions.card.cardNumber string Não O número impresso na frente do cartão.
transactions.card.cvv string Sim Card Verification Value (CVV) é um recurso de segurança para transações de cartão de pagamento "cartão ausente" instituído para reduzir a incidência de fraude de cartão de crédito. Consiste em um número de 3-4 dígitos impresso no cartão.
transactions.card.brand int Não A bandeira do cartão à qual o imposto se aplica. .
transactions.card.cardholderName string Não O nome do títular do cartão.
transactions.card.cardholderDocument string Não O documento do títular do cartão.
transactions.card.billingAddress array Não É o endereço conectado ao cartão de crédito ou débito. As empresas usam o endereço de cobrança para verificar o uso autorizado de tal cartão. É também para onde as empresas enviam contas em papel e extratos bancários.
transactions.card.billingAddress.street string Não Rua.
transactions.card.billingAddress.number string Não Número.
transactions.card.billingAddress.neighborhood string Não Bairro.
transactions.card.billingAddress.city string Não Cidade.
transactions.card.billingAddress.state string Não Estado.
transactions.card.billingAddress.country string Não País.
transactions.card.billingAddress.zipCode string Não CEP.
transactions.card.billingAddress.complement string Não Complemento.
transactions.card.isPrivateLabel bool Não Indica se o cartão é um produto de whitelabel ou não. Whitelabel é um produto ou serviço que uma empresa produz e comercializa com outras empresas que tem interesse em utilizar o mesmo com sua marca estampada.
transactions.card.expirationMonth int Não O Mês de expiração do cartão com 2 dígitos.
transactions.card.expirationYear int Não O Ano de expiração do cartão com 4 dígitos.
transactions.card.aid string Não O AID é usado em uma transação EMV.
transactions.card.entryMode int Não O tipo de leitura do cartão, por ex. banda magnética, chip EMV, tecnologia sem contato.
transactions.card.emvTags string Não Tags EMV retornadas pelo cartão em caso de transação de contato emv.
transactions.card.pinBlock string Não O bloco de pins, no caso de pin online.
transactions.card.ksn string Não O número de série da chave usado para criptografar o pin.
transactions.card.serviceCode string Não Código de três dígitos, cada um representando uma configuração de cartão.
transactions.card.acquirerVersion string Não Versão das tabelas EMV definidas pelo adquirente.
transactions.card.track1 string Não Primeira fita magnética.
transactions.card.track2 string Não Segunda fita magnética.
transactions.card.issuerScript string Não Script do emissor a ser usado no comando FNC pelo pinpad ou POS.
transactions.card.sequenceNumber string Não O número que distingue entre cartões separados com o mesmo número de conta principal (PAN) ou PAN estendido.
transactions.card.fallback bool Não Uma bandeira que informa se a cobrança necessária será feita como fita magnética substituta.
transactions.card.brandName string Não O nome da bandeira do cartão.
transactions.card.panEncryptionKsn string Não Key Sequence Number (KSN) usado para criptografar, usando o pinpad. Usado apenas por InfinitePay.
transactions.card.encryptedPan string Não PAN recortado e criptografado. A criptografia ocorre dentro do pinpad.
transactions.card.balance int Não Saldo de cartões do tipo voucher.
transactions.paymentType int Sim Tipo de transação. .
transactions.amount int Sim O valor do pagamento em centavos.
transactions.installmentNumber int Sim Quantidade de parcelas. Só pode ser maior que 1 se o tipo de transação for crédito.
transactions.softDescriptor string Não Breve descrição a ser apresentada na fatura bancária do cliente. Se nulo, ele será preenchido com um rótulo padrão definido pela .
transactions.merchantTransactionId string Não Identificador de pedido definido pelo sistema do estabelecimento comercial. Esta propriedade é obrigatória e servirá para capturar, cancelar e consultar posteriormente a transação.
transactions.installmentType int Sim Tipo de parcelamento da transação
transactions.acquirer int Sim O ID da adquirente. .
transactions.deviceIdentifier string Não Um número de série, imei, endereço MAC ou qualquer coisa que defina apenas um dispositivo.
transactions.device object Não Informações do dispositivo de pagamento. Obrigatório apenas para transações físicas.
transactions.device.abecsVersion string Não Versão ABECS. Igual a GIN_SPECVER da especificação ABECS.
transactions.device.osVersion string Não Versão do sistema operacional Pinpad. Igual a GIN_SOVER da especificação ABECS.
transactions.device.manufacturerVersion string Não Versão do fabricante. Igual a GIN_MANVER da especificação ABECS.
transactions.device.manufacturer string Não Nome do fabricante. Igual a GIN_MNAME da especificação ABECS.
transactions.device.model string Não Nome do modelo do terminal. Igual a GIN_MODEL da especificação ABECS.
transactions.device.serialNumber string Não Número de série do terminal. O mesmo que GIN_SERNUM da especificação ABECS.
transactions.device.emvKernelVersion string Não Versão do kernel EMV. Corresponde a PP_KRNLVER da ABECS.
transactions.device.contactlessEmvKernelVersion string Não Versão do kernel sem contato. Corresponde a PP_CTLSVER da ABECS.
transactions.device.amexContactlessEmvKernelVersion string Não Versão do kernel sem contato para American Express. Corresponde a PP_AECTLSVER da ABECS.
transactions.device.discorverEloContactlessEmvKernelVersion string Não Versão do kernel sem contato para Discover / Elo. Corresponde a PP_DPCTLSVER da ABECS.
transactions.device.masterCardContactlessEmvKernelVersion string Não Contactless Kernel version for MasterCard PayPass. Corresponds to PP_MCTLSVER from ABECS.
transactions.device.pureContactlessEmvKernelVersion string Não Versão do kernel sem contato para Pure. Corresponde a PP_PUREVER da ABECS.
transactions.device.visaContactlessEmvKernelVersion string Não Versão do kernel sem contato para Visa Wave. Corresponde a PP_VCTLSVER da ABECS.
transactions.firstSubscriptionCharge bool Não Indica se a transação é a primeira cobrança de assinatura.
transactions.productIds array(string) Não O ID de cada produto sendo comprado pela transação.
transactions.source array Sim É a origem da transação
transactions.source.id string Sim O ID do SmartCheckout
transactions.source.type int Sim Tipo de smartCheckout. .
source int Sim Define a fonte de cobrança, por exemplo, um POS, pinpad, site de comércio eletrônico. .
origin string