' \
--data-raw '{
"merchantId": "7f8870a2-71c9-4ef0-a531-82000e00b7e1",
"amount": 15000,
"currency": "BRL",
"statementDescriptor": "LOJA JOAO",
"description": "Descrição longa da cobrança",
"capture": false,
"orderId": "32c68ff7-902c-408b-b464-cf487c7cda97",
"paymentMethod": {
"paymentType": "credit",
"installments": 1
},
"paymentSource": {
"sourceType": "card",
"card": {
"cardNumber": "5261424250184574",
"cardCvv": "321",
"cardExpirationDate": "06/2028",
"cardHolderName": "JOAO DA SILVA"
}
},
"fraudAnalysis": {
"sla": 10,
"customer": {
"name": "Joao Torres",
"phone": "11 99329899",
"email": "joao@gmail.com",
"identity": "45762964851",
"identityType": "CPF",
"birthdate": "1990-01-15T00:00:00.000Z",
"registrationDate": "2022-07-26T16:11:35.756Z",
"billingAddress": {
"street": "Rua Um",
"number": "200",
"zipCode": "02010010",
"country": "BR",
"state": "SP",
"district": "Jardim Paraiso",
"city": "Sao Paulo",
"complement": "ap 10"
},
"browser": {
"browserFingerprint": "074c1ee676ed4998ab66491013c565e2", // kid Konduto
"ipAddress": "127.0.0.1"
}
},
"cart": {
"items": [
{
"name": "Tênis Esportivo",
"description": "Tênis esportivo masculino tamanho 42",
"quantity": 1,
"sku": "TNS-42-ESP",
"unitPrice": 15000
}
]
}
}
}'
```
Para mais detalhes sobre como realizar uma nova cobrança, consulte a página de [novas cobranças](/api-reference/charges/realizar-nova-cobranca).
Se você possui interesse em receber cotações e avaliar este provedor antifraude para o seu fluxo de pagamentos, entre em contato com o nosso time para avaliar.
# Adyen
Source: https://docs.malga.io/documentations/providers/adyen
Provedor de pagamento
Plataforma global de pagamentos operando no Brasil desde 2011 como provedor de pagamentos, permite que as empresas aceitem moedas internacionais e processem alto volume de vendas em qualquer parte do mundo, com uma solução integrada de 3DS e diversos métodos como Cartão de crédito, PIX e boleto.
[Mais informações.](https://docs.adyen.com/)
## Funções por métodos de pagamento suportados
| Serviços | Crédito | Pix | Boleto | Voucher | Apple Pay |
| - | :-: | :-: | :-: | :-: | :-: |
| Cobrança | | | | | |
| Pré-autorização | | | | | |
| Captura parcial | | | | | |
| Estorno parcial | | | | | |
| Estorno total | | | | | |
| Split | | | | | |
| Antifraude próprio | | | | | |
| 3DS | | | | | |
| Token de Bandeira | | | | | |
| Validação de cartão (zero dollar auth) | | | | | |
| Flag de recorrência | | | | | |
| Notificação de abertura de disputa | | | | | |
| Notificação de chargeback | | | | | |
| Suporte a moedas internacionais | | | | | |
Este serviço ou método é oferecido pelo provedor e suportado pela API da
Malga
Este serviço ou método não é oferecido pelo provedor
Este serviço ou método é oferecido pelo provedor e ainda não é suportado
pela API da Malga. Caso tenha interesse em utilizar este recurso, contate o
nosso time de atendimento pelo e-mail
[suporte@malga.io](mailto:suporte@malga.io).
Não se aplica
Se você possui interesse em receber cotações e avaliar este provedor para o seu fluxo de pagamentos, entre em contato com o nosso time para avaliar.
## Veja mais
Protocolo que permite prevenir e eliminar o risco de fraude em pagamentos
online ao permitir que o pagador se autentique durante o processo de compra
Protocolo que reduz o risco de fraude ao autenticar o pagador durante a
compra, permitindo transações com múltiplos provedores sem nova autenticação
em retentativas
# Banco do Brasil
Source: https://docs.malga.io/documentations/providers/banco-do-brasil
Provedor de pagamento
Operando desde 1808, o Banco do Brasil fornece soluções robustas e completas de pagamento online, contando com o PIX na Malga, entrega serviços com segurança para e-commerces processarem seus transações.
[Mais informações.](https://www.bb.com.br/site/developers/apis-para-o-seu-negocio/api-cobranca/)
## Funções por métodos de pagamento suportados
| Serviços | Crédito | Pix | Boleto | Voucher | Apple Pay |
| - | :-: | :-: | :-: | :-: | :-: |
| Cobrança | | | | | |
| Estorno parcial | | | | | |
| Estorno total | | | | | |
| Split | | | | | |
| Suporte a moedas internacionais | | | | | |
Este serviço ou método é oferecido pelo provedor e suportado pela API da
Malga
Este serviço ou método não é oferecido pelo provedor
Este serviço ou método é oferecido pelo provedor e ainda não é suportado
pela API da Malga. Caso tenha interesse em utilizar este recurso, contate o
nosso time de atendimento pelo e-mail
[suporte@malga.io](mailto:suporte@malga.io).
Não se aplica
Se você possui interesse em receber cotações e avaliar este provedor para o seu fluxo de pagamentos, entre em contato com o nosso time para avaliar.
# Banrisul
Source: https://docs.malga.io/documentations/providers/banrisul
Provedor de pagamento
O Banrisul é o banco estatal do Rio Grande do Sul e atua como provedor de soluções financeiras e de pagamentos para empresas, oferecendo adquirência, cartões, crédito e gestão financeira. Suas soluções apoiam a eficiência operacional e a integração dos meios de pagamento dos clientes.
[Mais informações.](https://developers.banrisul.com.br/)
## Funções por métodos de pagamento suportados
| Serviços | Crédito | Pix | Boleto | Voucher | Apple Pay |
| - | :-: | :-: | :-: | :-: | :-: |
| Cobrança | | | | | |
| Estorno parcial | | | | | |
| Estorno total | | | | | |
| Split | | | | | |
| Suporte a moedas internacionais | | | | | |
Este serviço ou método é oferecido pelo provedor e suportado pela API da
Malga
Este serviço ou método não é oferecido pelo provedor
Este serviço ou método é oferecido pelo provedor e ainda não é suportado
pela API da Malga. Caso tenha interesse em utilizar este recurso, contate o
nosso time de atendimento pelo e-mail
[suporte@malga.io](mailto:suporte@malga.io).
Não se aplica
Se você possui interesse em receber cotações e avaliar este provedor para o seu fluxo de pagamentos, entre em contato com o nosso time para avaliar.
# Barte
Source: https://docs.malga.io/documentations/providers/barte
Provedor de pagamento
Em operação desde 2018, a Barte atua como plataforma de pagamentos focada em PMEs e também como provedor de crédito em até 21x, especializado em e-commerces com soluções para melhorar o fluxo de caixa e a liquidez para negócios B2B.
[Mais informações.](https://barte.notion.site/Guia-de-Integra-o-d25d74ee606f4b9ab33efd9e6a4ea22e)
## Funções por métodos de pagamento suportados
| Serviços | Crédito | Pix | Boleto | Voucher | Apple Pay |
| - | :-: | :-: | :-: | :-: | :-: |
| Cobrança | | | | | |
| Pré-autorização | | | | | |
| Captura parcial | | | | | |
| Estorno parcial | | | | | |
| Estorno total | | | | | |
| Split | | | | | |
| Antifraude próprio | | | | | |
| 3DS | | | | | |
| Token de Bandeira | | | | | |
| Validação de cartão (zero dollar auth) | | | | | |
| Flag de recorrência | | | | | |
| Notificação de abertura de disputa | | | | | |
| Notificação de chargeback | | | | | |
| Suporte a moedas internacionais | | | | | |
Este serviço ou método é oferecido pelo provedor e suportado pela API da
Malga
Este serviço ou método não é oferecido pelo provedor
Este serviço ou método é oferecido pelo provedor e ainda não é suportado
pela API da Malga. Caso tenha interesse em utilizar este recurso, contate o
nosso time de atendimento pelo e-mail
[suporte@malga.io](mailto:suporte@malga.io).
Não se aplica
Se você possui interesse em receber cotações e avaliar este provedor para o seu fluxo de pagamentos, entre em contato com o nosso time para avaliar.
## Veja mais
Protocolo que reduz o risco de fraude ao autenticar o pagador durante a
compra, permitindo transações com múltiplos provedores sem nova autenticação
em retentativas
# Bolt
Source: https://docs.malga.io/documentations/providers/bolt
Provedor de pagamento
Bolt é uma adquirente e operadora de cartões, que credencia estabelecimentos para aceitar transações com cartões de crédito e débito, comunicando-se com bandeiras e bancos para autorizar, capturar e liquidar pagamentos ao lojista. Além disso, oferece antecipação de recebíveis, de forma pontual ou automática, possibilitando maior flexibilidade e liquidez ao negócio.
[Mais informações.](https://bolt.github.io/bolt-docs-ms-ecommerce-checkout/docs/introduction)
## Funções por métodos de pagamento suportados
| Serviços | Crédito | Pix | Boleto | Voucher | Apple Pay |
| - | :-: | :-: | :-: | :-: | :-: |
| Cobrança | | | | | |
| Pré-autorização | | | | | |
| Captura parcial | | | | | |
| Estorno parcial | | | | | |
| Estorno total | | | | | |
| Split | | | | | |
| Antifraude próprio | | | | | |
| 3DS | | | | | |
| Token de Bandeira | | | | | |
| Validação de cartão (zero dollar auth) | | | | | |
| Flag de recorrência | | | | | |
| Notificação de abertura de disputa | | | | | |
| Notificação de chargeback | | | | | |
| Suporte a moedas internacionais | | | | | |
Este serviço ou método é oferecido pelo provedor e suportado pela API da
Malga
Este serviço ou método não é oferecido pelo provedor
Este serviço ou método é oferecido pelo provedor e ainda não é suportado
pela API da Malga. Caso tenha interesse em utilizar este recurso, contate o
nosso time de atendimento pelo e-mail
[suporte@malga.io](mailto:suporte@malga.io).
Não se aplica
Se você possui interesse em receber cotações e avaliar este provedor para o seu fluxo de pagamentos, entre em contato com o nosso time para avaliar.
# Braintree
Source: https://docs.malga.io/documentations/providers/braintree
Provedor de pagamento
A Braintree é uma empresa do grupo PayPal, com operação desde 2014 no Brasil, e que atua globalmente oferecendo soluções para pagamento online com recursos avançados de prevenção à fraude, conhecida pela flexibilidade e robustez das suas operações.
[Mais informações.](https://developer.paypal.com/braintree/docs/start/overview)
## Funções por métodos de pagamento suportados
| Serviços | Crédito | Pix | Boleto | Voucher | Apple Pay |
| - | :-: | :-: | :-: | :-: | :-: |
| Cobrança | | | | | |
| Pré-autorização | | | | | |
| Captura parcial | | | | | |
| Estorno parcial | | | | | |
| Estorno total | | | | | |
| Split | | | | | |
| Antifraude próprio | | | | | |
| 3DS | | | | | |
| Token de Bandeira | | | | | |
| Validação de cartão (zero dollar auth) | | | | | |
| Flag de recorrência | | | | | |
| Notificação de abertura de disputa | | | | | |
| Notificação de chargeback | | | | | |
| Suporte a moedas internacionais | | | | | |
Este serviço ou método é oferecido pelo provedor e suportado pela API da
Malga
Este serviço ou método não é oferecido pelo provedor
Este serviço ou método é oferecido pelo provedor e ainda não é suportado
pela API da Malga. Caso tenha interesse em utilizar este recurso, contate o
nosso time de atendimento pelo e-mail
[suporte@malga.io](mailto:suporte@malga.io).
Não se aplica
Se você possui interesse em receber cotações e avaliar este provedor para o seu fluxo de pagamentos, entre em contato com o nosso time para avaliar.
## Veja mais
Protocolo que reduz o risco de fraude ao autenticar o pagador durante a
compra, permitindo transações com múltiplos provedores sem nova autenticação
em retentativas
# Braspag
Source: https://docs.malga.io/documentations/providers/braspag
Provedor de pagamento
Integrante da Cielo, a Braspag oferece soluções de processamento de pagamentos na América Latina contando com Split e integrando diversos métodos de pagamento para e-commerces e marketplaces. Operando desde 2005, oferece segurança e praticidade para seus clientes operarem com Split e políticas financeiras de acordo com suas necessidades.
[Mais informações.](https://www.braspag.com.br/docs)
## Funções por métodos de pagamento suportados
| Serviços | Crédito | Pix | Boleto | Voucher | Apple Pay |
| - | :-: | :-: | :-: | :-: | :-: |
| Cobrança | | | | | |
| Pré-autorização | | | | | |
| Captura parcial | | | | | |
| Estorno parcial | | | | | |
| Estorno total | | | | | |
| Split | | | | | |
| Antifraude próprio | | | | | |
| 3DS | | | | | |
| Token de Bandeira | | | | | |
| Validação de cartão (zero dollar auth) | | | | | |
| Flag de recorrência | | | | | |
| Notificação de abertura de disputa | | | | | |
| Notificação de chargeback | | | | | |
| Suporte a moedas internacionais | | | | | |
Este serviço ou método é oferecido pelo provedor e suportado pela API da
Malga
Este serviço ou método não é oferecido pelo provedor
Este serviço ou método é oferecido pelo provedor e ainda não é suportado
pela API da Malga. Caso tenha interesse em utilizar este recurso, contate o
nosso time de atendimento pelo e-mail
[suporte@malga.io](mailto:suporte@malga.io).
Não se aplica
Se você possui interesse em receber cotações e avaliar este provedor para o seu fluxo de pagamentos, entre em contato com o nosso time para avaliar.
## Veja mais
Serviço que divide recebíveis de maneira automática, entre duas ou mais
partes envolvidas em uma transação
# BS2
Source: https://docs.malga.io/documentations/providers/bs2
Provedor de pagamento
O BS2 nasceu em 2017 e é um banco digital inovador que oferece uma gama de serviços financeiros, incluindo pagamentos e soluções para vendas online, disponibilizando adquirência em métodos como PIX e boleto bancário, disponíveis através da Malga.
[Mais informações.](https://devs.bs2.com/)
## Funções por métodos de pagamento suportados
| Serviços | Crédito | Pix | Boleto | Voucher | Apple Pay |
| - | :-: | :-: | :-: | :-: | :-: |
| Cobrança | | | | | |
| Estorno parcial | | | | | |
| Estorno total | | | | | |
| Split | | | | | |
| Suporte a moedas internacionais | | | | | |
Este serviço ou método é oferecido pelo provedor e suportado pela API da
Malga
Este serviço ou método não é oferecido pelo provedor
Este serviço ou método é oferecido pelo provedor e ainda não é suportado
pela API da Malga. Caso tenha interesse em utilizar este recurso, contate o
nosso time de atendimento pelo e-mail
[suporte@malga.io](mailto:suporte@malga.io).
Não se aplica
Se você possui interesse em receber cotações e avaliar este provedor para o seu fluxo de pagamentos, entre em contato com o nosso time para avaliar.
# Cielo
Source: https://docs.malga.io/documentations/providers/cielo
Provedor de pagamento
A Cielo atua desde 1995, e é referência em processamento de pagamentos no Brasil. Oferece soluções completas para vendas online por cartão de crédito, disponibilizando recursos com segurança e eficiência para lojas gerenciarem e operarem de forma flexível.
[Mais informações.](https://desenvolvedores.cielo.com.br/api-portal/)
## Funções por métodos de pagamento suportados
| Serviços | Crédito | Pix | Boleto | Voucher | Apple Pay |
| - | :-: | :-: | :-: | :-: | :-: |
| Cobrança | | | | | |
| Pré-autorização | | | | | |
| Captura parcial | | | | | |
| Estorno parcial | | | | | |
| Estorno total | | | | | |
| Split | | | | | |
| Antifraude próprio | | | | | |
| 3DS | | | | | |
| Token de Bandeira | | | | | |
| Validação de cartão (zero dollar auth) | | | | | |
| Flag de recorrência | | | | | |
| Notificação de abertura de disputa | | | | | |
| Notificação de chargeback | | | | | |
| Suporte a moedas internacionais | | | | | |
Este serviço ou método é oferecido pelo provedor e suportado pela API da
Malga
Este serviço ou método não é oferecido pelo provedor
Este serviço ou método é oferecido pelo provedor e ainda não é suportado
pela API da Malga. Caso tenha interesse em utilizar este recurso, contate o
nosso time de atendimento pelo e-mail
[suporte@malga.io](mailto:suporte@malga.io).
Não se aplica
Se você possui interesse em receber cotações e avaliar este provedor para o seu fluxo de pagamentos, entre em contato com o nosso time para avaliar.
## Veja mais
Protocolo que reduz o risco de fraude ao autenticar o pagador durante a
compra, permitindo transações com múltiplos provedores sem nova autenticação
em retentativas
# Drip
Source: https://docs.malga.io/documentations/providers/drip
Método de pagamento
Solução de pix parcelado, a Drip oferece uma forma inovadora de pagamento, facilitando o acesso a crédito e aumentando as opções para os consumidores e a conversão de vendas na loja.
[Mais informações.](https://usedrip.com.br/para-e-comms)
## Funções por métodos de pagamento suportados
| Serviços | Crédito | Pix | Boleto | Voucher | Apple Pay |
| - | :-: | :-: | :-: | :-: | :-: |
| Cobrança | | | | | |
| Estorno parcial | | | | | |
| Estorno total | | | | | |
| Split | | | | | |
| Suporte a moedas internacionais | | | | | |
Este serviço ou método é oferecido pelo provedor e suportado pela API da
Malga
Este serviço ou método não é oferecido pelo provedor
Este serviço ou método é oferecido pelo provedor e ainda não é suportado
pela API da Malga. Caso tenha interesse em utilizar este recurso, contate o
nosso time de atendimento pelo e-mail
[suporte@malga.io](mailto:suporte@malga.io).
Não se aplica
Se você possui interesse em receber cotações e avaliar este provedor para o seu fluxo de pagamentos, entre em contato com o nosso time para avaliar.
## Veja mais
Forma de pagamento com parcelamento para Pix, permitindo a divisão da compra
em prestações de acordo com a opção mais conveniente para o cliente e a
loja.
# Getnet SEP
Source: https://docs.malga.io/documentations/providers/getnet-sep
Provedor de pagamento
Parte do grupo Santander e em operação desde 2003, a Getnet oferece diversos métodos de pagamento como crédito, PIX e boleto, para processamento de vendas online, com taxas atrativas para seus clientes e suportando altos volumes de venda através da sua solução.
[Mais informações.](https://devportalgetnet.sensedia-eng.com/pt/products/online-payments/regional-api)
## Funções por métodos de pagamento suportados
| Serviços | Crédito | Pix | Boleto | Voucher | Apple Pay |
| - | :-: | :-: | :-: | :-: | :-: |
| Cobrança | | | | | |
| Pré-autorização | | | | | |
| Captura parcial | | | | | |
| Estorno parcial | | | | | |
| Estorno total | | | | | |
| Split | | | | | |
| Antifraude próprio | | | | | |
| 3DS | | | | | |
| Token de Bandeira | | | | | |
| Validação de cartão (zero dollar auth) | | | | | |
| Flag de recorrência | | | | | |
| Notificação de abertura de disputa | | | | | |
| Notificação de chargeback | | | | | |
| Suporte a moedas internacionais | | | | | |
Este serviço ou método é oferecido pelo provedor e suportado pela API da
Malga
Este serviço ou método não é oferecido pelo provedor
Este serviço ou método é oferecido pelo provedor e ainda não é suportado
pela API da Malga. Caso tenha interesse em utilizar este recurso, contate o
nosso time de atendimento pelo e-mail
[suporte@malga.io](mailto:suporte@malga.io).
Não se aplica
Se você possui interesse em receber cotações e avaliar este provedor para o seu fluxo de pagamentos, entre em contato com o nosso time para avaliar.
## Veja mais
Protocolo que reduz o risco de fraude ao autenticar o pagador durante a
compra, permitindo transações com múltiplos provedores sem nova autenticação
em retentativas
# Itaú
Source: https://docs.malga.io/documentations/providers/itau
Provedor de pagamento
Parte do grupo Itaú Unibanco, o banco Itaú é conhecido pela confiabilidade e robustez no mercado brasileiro, oferecendo soluções financeiras e pagamentos para lojas online. Contando com taxas atrativas para os clientes que utilizam seu ecossistema bancário, proporciona vantagens com segurança para as lojas que optam pela sua adquirência.
[Mais informações.](https://devportal.itau.com.br/baas/#/catalog/home-product/p/pix)
## Funções por métodos de pagamento suportados
| Serviços | Crédito | Pix | Boleto | Voucher | Apple Pay |
| - | :-: | :-: | :-: | :-: | :-: |
| Cobrança | | | | | |
| Estorno parcial | | | | | |
| Estorno total | | | | | |
| Split | | | | | |
| Suporte a moedas internacionais | | | | | |
Este serviço ou método é oferecido pelo provedor e suportado pela API da
Malga
Este serviço ou método não é oferecido pelo provedor
Este serviço ou método é oferecido pelo provedor e ainda não é suportado
pela API da Malga. Caso tenha interesse em utilizar este recurso, contate o
nosso time de atendimento pelo e-mail
[suporte@malga.io](mailto:suporte@malga.io).
Não se aplica
Se você possui interesse em receber cotações e avaliar este provedor para o seu fluxo de pagamentos, entre em contato com o nosso time para avaliar.
# Klap
Source: https://docs.malga.io/documentations/providers/klap
Provedor de pagamento
A Klap atua como provedor de pagamentos por cartão de crédito no Chile, oferecendo suporte a diferentes moedas para América Latina. Disponibiliza recursos com facilidade de uso e segurança para operações internacionais.
[Mais informações.](https://www.klap.cl/developers/docapi)
## Funções por métodos de pagamento suportados
| Serviços | Crédito | Pix | Boleto | Voucher | Apple Pay |
| - | :-: | :-: | :-: | :-: | :-: |
| Cobrança | | | | | |
| Pré-autorização | | | | | |
| Captura parcial | | | | | |
| Estorno parcial | | | | | |
| Estorno total | | | | | |
| Split | | | | | |
| Antifraude próprio | | | | | |
| 3DS | | | | | |
| Token de Bandeira | | | | | |
| Validação de cartão (zero dollar auth) | | | | | |
| Flag de recorrência | | | | | |
| Notificação de abertura de disputa | | | | | |
| Notificação de chargeback | | | | | |
| Suporte a moedas internacionais | | | | | |
Este serviço ou método é oferecido pelo provedor e suportado pela API da
Malga
Este serviço ou método não é oferecido pelo provedor
Este serviço ou método é oferecido pelo provedor e ainda não é suportado
pela API da Malga. Caso tenha interesse em utilizar este recurso, contate o
nosso time de atendimento pelo e-mail
[suporte@malga.io](mailto:suporte@malga.io).
Não se aplica
Se você possui interesse em receber cotações e avaliar este provedor para o seu fluxo de pagamentos, entre em contato com o nosso time para avaliar.
# Malga
Source: https://docs.malga.io/documentations/providers/malga
Provedor de pagamento
Provedor próprio de pagamentos desenvolvido pela Malga, oferece uma solução nativa dentro da infraestrutura de orquestração da empresa. Suporta transações por crédito e PIX, oferecendo uma experiência segura, eficiente e com visibilidade completa das operações. É a escolha ideal para empresas que buscam uma experiência segura, com facilidade e bom desempenho.
[Mais informações.](https://docs.malga.io/)
## Funções por métodos de pagamento suportados
| Serviços | Crédito | Pix | Boleto | Voucher | Apple Pay |
| - | :-: | :-: | :-: | :-: | :-: |
| Cobrança | | | | | |
| Pré-autorização | | | | | |
| Captura parcial | | | | | |
| Estorno parcial | | | | | |
| Estorno total | | | | | |
| Split | | | | | |
| Antifraude próprio | | | | | |
| 3DS | | | | | |
| Token de Bandeira | | | | | |
| Validação de cartão (zero dollar auth) | | | | | |
| Flag de recorrência | | | | | |
| Notificação de abertura de disputa | | | | | |
| Notificação de chargeback | | | | | |
| Suporte a moedas internacionais | | | | | |
Este serviço ou método é oferecido pelo provedor e suportado pela API da
Malga
Este serviço ou método não é oferecido pelo provedor
Este serviço ou método é oferecido pelo provedor e ainda não é suportado
pela API da Malga. Caso tenha interesse em utilizar este recurso, contate o
nosso time de atendimento pelo e-mail
[suporte@malga.io](mailto:suporte@malga.io).
Não se aplica
Se você possui interesse em receber cotações e avaliar este provedor para o seu fluxo de pagamentos, entre em contato com o nosso time para avaliar.
## Veja mais
Serviço que divide recebíveis de maneira automática, entre duas ou mais
partes envolvidas em uma transação
# MapInvest
Source: https://docs.malga.io/documentations/providers/mapinvest
Provedor de pagamento
A MapInvest é uma empresa de consultoria financeira com escritórios em Itajaí-SC e São Paulo-SP. Fundada em 1999, a empresa possui mais de 25 anos de experiência e oferece uma ampla gama de serviços financeiros para pessoas jurídicas, sempre agindo para facilitar a vida de outras empresas, pensando em somar e unir forças para o crescimento e fortalecimento de todos.
[Mais informações.](https://developers.onz.software)
## Funções por métodos de pagamento suportados
| Serviços | Crédito | Pix | Boleto | Voucher | Apple Pay |
| - | :-: | :-: | :-: | :-: | :-: |
| Cobrança | | | | | |
| Estorno parcial | | | | | |
| Estorno total | | | | | |
| Split | | | | | |
| Suporte a moedas internacionais | | | | | |
Este serviço ou método é oferecido pelo provedor e suportado pela API da
Malga
Este serviço ou método não é oferecido pelo provedor
Este serviço ou método é oferecido pelo provedor e ainda não é suportado
pela API da Malga. Caso tenha interesse em utilizar este recurso, contate o
nosso time de atendimento pelo e-mail
[suporte@malga.io](mailto:suporte@malga.io).
Não se aplica
Se você possui interesse em receber cotações e avaliar este provedor para o seu fluxo de pagamentos, entre em contato com o nosso time para avaliar.
# Mercado Pago
Source: https://docs.malga.io/documentations/providers/mercado-pago
Provedor de pagamento
Parte do grupo Mercado Livre e em operação desde 2004, a Mercado Pago atua como adquirente e plataforma de pagamentos para múltiplos métodos e moedas em transações online e offline, possuindo ampla participação de mercado no Brasil e América Latina. Oferece taxas atrativas e condições facilitadas para as lojas.
[Mais informações.](https://www.mercadopago.com.br/developers/pt)
## Funções por métodos de pagamento suportados
| Serviços | Crédito | Pix | Boleto | Voucher | Apple Pay |
| - | :-: | :-: | :-: | :-: | :-: |
| Cobrança | | | | | |
| Pré-autorização | | | | | |
| Captura parcial | | | | | |
| Estorno parcial | | | | | |
| Estorno total | | | | | |
| Split | | | | | |
| Antifraude próprio | | | | | |
| 3DS | | | | | |
| Token de Bandeira | | | | | |
| Validação de cartão (zero dollar auth) | | | | | |
| Flag de recorrência | | | | | |
| Notificação de abertura de disputa | | | | | |
| Notificação de chargeback | | | | | |
| Suporte a moedas internacionais | | | | | |
Este serviço ou método é oferecido pelo provedor e suportado pela API da
Malga
Este serviço ou método não é oferecido pelo provedor
Este serviço ou método é oferecido pelo provedor e ainda não é suportado
pela API da Malga. Caso tenha interesse em utilizar este recurso, contate o
nosso time de atendimento pelo e-mail
[suporte@malga.io](mailto:suporte@malga.io).
Não se aplica
Se você possui interesse em receber cotações e avaliar este provedor para o seu fluxo de pagamentos, entre em contato com o nosso time para avaliar.
## Veja mais
Protocolo que reduz o risco de fraude ao autenticar o pagador durante a
compra, permitindo transações com múltiplos provedores sem nova autenticação
em retentativas
# NuPay
Source: https://docs.malga.io/documentations/providers/nupay
Provedor de pagamento
A NuPay é a plataforma de pagamento desenvolvida pelo Nubank, uma das maiores fintechs da América Latina. Ela foi criada para oferecer aos clientes uma maneira fácil e segura de realizar transações financeiras online. A NuPay integra-se diretamente com o aplicativo do Nubank, permitindo aos usuários fazer compras em lojas parceiras sem a necessidade de inserir dados de cartão de crédito, utilizando apenas a autenticação pelo app.
[Mais informações.](https://docs.nupaybusiness.com.br/checkout/docs/openapi/#tag/Pagamentos/operation/PaymentsPost)
## Funções por métodos de pagamento suportados
| Serviços | Crédito | Pix | Boleto | Voucher | Apple Pay |
| - | :-: | :-: | :-: | :-: | :-: |
| Cobrança | | | | | |
| Pré-autorização | | | | | |
| Captura parcial | | | | | |
| Estorno parcial | | | | | |
| Estorno total | | | | | |
| Split | | | | | |
| Antifraude próprio | | | | | |
| 3DS | | | | | |
| Token de Bandeira | | | | | |
| Validação de cartão (zero dollar auth) | | | | | |
| Flag de recorrência | | | | | |
| Notificação de abertura de disputa | | | | | |
| Notificação de chargeback | | | | | |
| Suporte a moedas internacionais | | | | | |
Este serviço ou método é oferecido pelo provedor e suportado pela API da
Malga
Este serviço ou método não é oferecido pelo provedor
Este serviço ou método é oferecido pelo provedor e ainda não é suportado
pela API da Malga. Caso tenha interesse em utilizar este recurso, contate o
nosso time de atendimento pelo e-mail
[suporte@malga.io](mailto:suporte@malga.io).
Não se aplica
Se você possui interesse em receber cotações e avaliar este provedor para o seu fluxo de pagamentos, entre em contato com o nosso time para avaliar.
## Veja mais
Forma de pagamento facilitada através de carteiras digitais, com alta
conversão no checkout da loja devido à conveniência e segurança para o
cliente final.
# Pagar.me v5
Source: https://docs.malga.io/documentations/providers/pagarme-v5
Provedor de pagamento
Parte do grupo StoneCo, o Pagar.me atua desde 2013, oferecendo soluções avançadas de pagamento por crédito, boleto, PIX, voucher, contando com Split e outros recursos para lojas online. Conhecida pela flexibilidade e pela gama de serviços, entrega uma experiência segura para o processamento de vendas e prevenção de fraudes.
[Mais informações.](https://docs.pagar.me/)
## Funções por métodos de pagamento suportados
| Serviços | Crédito | Pix | Boleto | Voucher | Apple Pay |
| - | :-: | :-: | :-: | :-: | :-: |
| Cobrança | | | | | |
| Pré-autorização | | | | | |
| Captura parcial | | | | | |
| Estorno parcial | | | | | |
| Estorno total | | | | | |
| Split | | | | | |
| Antifraude próprio | | | | | |
| 3DS | | | | | |
| Token de Bandeira | | | | | |
| Validação de cartão (zero dollar auth) | | | | | |
| Flag de recorrência | | | | | |
| Notificação de abertura de disputa | | | | | |
| Notificação de chargeback | | | | | |
| Suporte a moedas internacionais | | | | | |
Este serviço ou método é oferecido pelo provedor e suportado pela API da
Malga
Este serviço ou método não é oferecido pelo provedor
Este serviço ou método é oferecido pelo provedor e ainda não é suportado
pela API da Malga. Caso tenha interesse em utilizar este recurso, contate o
nosso time de atendimento pelo e-mail
[suporte@malga.io](mailto:suporte@malga.io).
Não se aplica
Se você possui interesse em receber cotações e avaliar este provedor para o seu fluxo de pagamentos, entre em contato com o nosso time para avaliar.
## Veja mais
Serviço que divide recebíveis de maneira automática, entre duas ou mais
partes envolvidas em uma transação
Protocolo que reduz o risco de fraude ao autenticar o pagador durante a
compra, permitindo transações com múltiplos provedores sem nova autenticação
em retentativas
# PagSeguro
Source: https://docs.malga.io/documentations/providers/pagseguro
Provedor de pagamento
Parte do grupo UOL e em operação desde 2006, o PagSeguro oferece soluções completas de pagamento para transações online, através de métodos como cartão de crédito e PIX, contando com ampla participação no mercado brasileiro. Destaca-se pela flexibilidade das suas soluções que atendem a negócios em diferentes estágios e segmentos.
[Mais informações.](https://developer.pagbank.com.br/docs/o-pagbank)
## Funções por métodos de pagamento suportados
| Serviços | Crédito | Pix | Boleto | Voucher | Apple Pay |
| - | :-: | :-: | :-: | :-: | :-: |
| Cobrança | | | | | |
| Pré-autorização | | | | | |
| Captura parcial | | | | | |
| Estorno parcial | | | | | |
| Estorno total | | | | | |
| Split | | | | | |
| Antifraude próprio | | | | | |
| 3DS | | | | | |
| Token de Bandeira | | | | | |
| Validação de cartão (zero dollar auth) | | | | | |
| Flag de recorrência | | | | | |
| Notificação de abertura de disputa | | | | | |
| Notificação de chargeback | | | | | |
| Suporte a moedas internacionais | | | | | |
Este serviço ou método é oferecido pelo provedor e suportado pela API da
Malga
Este serviço ou método não é oferecido pelo provedor
Este serviço ou método é oferecido pelo provedor e ainda não é suportado
pela API da Malga. Caso tenha interesse em utilizar este recurso, contate o
nosso time de atendimento pelo e-mail
[suporte@malga.io](mailto:suporte@malga.io).
Não se aplica
Se você possui interesse em receber cotações e avaliar este provedor para o seu fluxo de pagamentos, entre em contato com o nosso time para avaliar.
## Veja mais
Protocolo que reduz o risco de fraude ao autenticar o pagador durante a
compra, permitindo transações com múltiplos provedores sem nova autenticação
em retentativas
# PayPal
Source: https://docs.malga.io/documentations/providers/paypal
Provedor de pagamento
O PayPal é uma das plataformas globais pioneiras em pagamentos digitais, atuando desde o fim dos anos 1990 na facilitação de transações online seguras entre consumidores e empresas. Presente em dezenas de países, oferece soluções para pagamentos com cartões, saldo digital e transferências internacionais, sendo amplamente utilizado em e-commerce e serviços digitais.
[Mais informações.](https://developer.paypal.com/)
## Funções por métodos de pagamento suportados
| Serviços | Crédito | Pix | Boleto | Voucher | Apple Pay |
| - | :-: | :-: | :-: | :-: | :-: |
| Cobrança | | | | | |
| Pré-autorização | | | | | |
| Captura parcial | | | | | |
| Estorno parcial | | | | | |
| Estorno total | | | | | |
| Split | | | | | |
| Antifraude próprio | | | | | |
| 3DS | | | | | |
| Token de Bandeira | | | | | |
| Validação de cartão (zero dollar auth) | | | | | |
| Flag de recorrência | | | | | |
| Notificação de abertura de disputa | | | | | |
| Notificação de chargeback | | | | | |
| Suporte a moedas internacionais | | | | | |
Este serviço ou método é oferecido pelo provedor e suportado pela API da
Malga
Este serviço ou método não é oferecido pelo provedor
Este serviço ou método é oferecido pelo provedor e ainda não é suportado
pela API da Malga. Caso tenha interesse em utilizar este recurso, contate o
nosso time de atendimento pelo e-mail
[suporte@malga.io](mailto:suporte@malga.io).
Não se aplica
Se você possui interesse em receber cotações e avaliar este provedor para o seu fluxo de pagamentos, entre em contato com o nosso time para avaliar.
# PicPay
Source: https://docs.malga.io/documentations/providers/picpay
Provedor de pagamento
O PicPay é a solução ideal para lojistas que desejam realizar vendas online de forma segura e eficiente. Vem dar mais pique no seu negócio com o Picpay!
[Mais informações.](https://picpay.github.io/picpay-docs-ms-ecommerce-checkout/docs/introduction)
## Funções por métodos de pagamento suportados
| Serviços | Crédito | Pix | Boleto | Voucher | Apple Pay |
| - | :-: | :-: | :-: | :-: | :-: |
| Cobrança | | | | | |
| Pré-autorização | | | | | |
| Captura parcial | | | | | |
| Estorno parcial | | | | | |
| Estorno total | | | | | |
| Split | | | | | |
| Antifraude próprio | | | | | |
| 3DS | | | | | |
| Token de Bandeira | | | | | |
| Validação de cartão (zero dollar auth) | | | | | |
| Flag de recorrência | | | | | |
| Notificação de abertura de disputa | | | | | |
| Notificação de chargeback | | | | | |
| Suporte a moedas internacionais | | | | | |
Este serviço ou método é oferecido pelo provedor e suportado pela API da
Malga
Este serviço ou método não é oferecido pelo provedor
Este serviço ou método é oferecido pelo provedor e ainda não é suportado
pela API da Malga. Caso tenha interesse em utilizar este recurso, contate o
nosso time de atendimento pelo e-mail
[suporte@malga.io](mailto:suporte@malga.io).
Não se aplica
Se você possui interesse em receber cotações e avaliar este provedor para o seu fluxo de pagamentos, entre em contato com o nosso time para avaliar.
## Veja mais
Forma de pagamento facilitada através de carteiras digitais, com alta
conversão no checkout da loja devido à conveniência e segurança para o
cliente final.
# Rede
Source: https://docs.malga.io/documentations/providers/rede
Provedor de pagamento
A Rede é pioneira em meios de pagamento online no Brasil, oferecendo serviços para transações com cartões de crédito desde 1996. Parte do grupo Itaú, é referência em confiabilidade e suporte às lojas.
[Mais informações.](https://developer.userede.com.br/)
## Funções por métodos de pagamento suportados
| Serviços | Crédito | Pix | Boleto | Voucher | Apple Pay |
| - | :-: | :-: | :-: | :-: | :-: |
| Cobrança | | | | | |
| Pré-autorização | | | | | |
| Captura parcial | | | | | |
| Estorno parcial | | | | | |
| Estorno total | | | | | |
| Split | | | | | |
| Antifraude próprio | | | | | |
| 3DS | | | | | |
| Token de Bandeira | | | | | |
| Validação de cartão (zero dollar auth) | | | | | |
| Flag de recorrência | | | | | |
| Notificação de abertura de disputa | | | | | |
| Notificação de chargeback | | | | | |
| Suporte a moedas internacionais | | | | | |
Este serviço ou método é oferecido pelo provedor e suportado pela API da
Malga
Este serviço ou método não é oferecido pelo provedor
Este serviço ou método é oferecido pelo provedor e ainda não é suportado
pela API da Malga. Caso tenha interesse em utilizar este recurso, contate o
nosso time de atendimento pelo e-mail
[suporte@malga.io](mailto:suporte@malga.io).
Não se aplica
Se você possui interesse em receber cotações e avaliar este provedor para o seu fluxo de pagamentos, entre em contato com o nosso time para avaliar.
## Veja mais
Protocolo que reduz o risco de fraude ao autenticar o pagador durante a
compra, permitindo transações com múltiplos provedores sem nova autenticação
em retentativas
# SafraPay
Source: https://docs.malga.io/documentations/providers/safrapay
Provedor de pagamento
Em operação desde 2014 e parte do grupo Safra, a SafraPay atua em soluções como provedor de pagamento por cartão de crédito e PIX, oferecendo tecnologia para lojas processarem vendas com segurança.
A **notificação de abertura de disputa** na **SafraPay** está disponível em
**Beta**. Neste momento, a Malga recebe apenas o **webhook de início da
operação de disputa** (`transaction.dispute`); **não há integração com a API
completa de chargeback** do provedor.
[Mais informações.](https://www.safrapay.com.br/venda-online/api-ecommerce.html)
## Funções por métodos de pagamento suportados
| Serviços | Crédito | Pix | Boleto | Voucher | Apple Pay |
| - | :-: | :-: | :-: | :-: | :-: |
| Cobrança | | | | | |
| Pré-autorização | | | | | |
| Captura parcial | | | | | |
| Estorno parcial | | | | | |
| Estorno total | | | | | |
| Split | | | | | |
| Antifraude próprio | | | | | |
| 3DS | | | | | |
| Token de Bandeira | | | | | |
| Validação de cartão (zero dollar auth) | | | | | |
| Flag de recorrência | | | | | |
| Notificação de abertura de disputa | | | | | |
| Notificação de chargeback | | | | | |
| Suporte a moedas internacionais | | | | | |
Este serviço ou método é oferecido pelo provedor e suportado pela API da
Malga
Este serviço ou método não é oferecido pelo provedor
Este serviço ou método é oferecido pelo provedor e ainda não é suportado
pela API da Malga. Caso tenha interesse em utilizar este recurso, contate o
nosso time de atendimento pelo e-mail
[suporte@malga.io](mailto:suporte@malga.io).
Não se aplica
Se você possui interesse em receber cotações e avaliar este provedor para o seu fluxo de pagamentos, entre em contato com o nosso time para avaliar.
## Veja mais
Protocolo que reduz o risco de fraude ao autenticar o pagador durante a
compra, permitindo transações com múltiplos provedores sem nova autenticação
em retentativas
# Sandbox
Source: https://docs.malga.io/documentations/providers/sandbox
Provedor de pagamento
Provedor disponibilizado pela Malga para realização de testes de integração e validação dos fluxos de pagamento, disponível para todas as operações e métodos suportados pela Malga.
[Mais informações.](https://docs.malga.io/documentations/welcome/testing)
## Funções por métodos de pagamento suportados
| Serviços | Crédito | Pix | Boleto | Voucher | Apple Pay |
| - | :-: | :-: | :-: | :-: | :-: |
| Cobrança | | | | | |
| Pré-autorização | | | | | |
| Captura parcial | | | | | |
| Estorno parcial | | | | | |
| Estorno total | | | | | |
| Split | | | | | |
| Antifraude próprio | | | | | |
| 3DS | | | | | |
| Token de Bandeira | | | | | |
| Validação de cartão (zero dollar auth) | | | | | |
| Flag de recorrência | | | | | |
| Notificação de abertura de disputa | | | | | |
| Notificação de chargeback | | | | | |
| Suporte a moedas internacionais | | | | | |
Este serviço ou método é oferecido pelo provedor e suportado pela API da
Malga
Este serviço ou método não é oferecido pelo provedor
Este serviço ou método é oferecido pelo provedor e ainda não é suportado
pela API da Malga. Caso tenha interesse em utilizar este recurso, contate o
nosso time de atendimento pelo e-mail
[suporte@malga.io](mailto:suporte@malga.io).
Não se aplica
## Veja mais
Protocolo que permite prevenir e eliminar o risco de fraude em pagamentos
online ao permitir que o pagador se autentique durante o processo de compra
Protocolo que reduz o risco de fraude ao autenticar o pagador durante a
compra, permitindo transações com múltiplos provedores sem nova autenticação
em retentativas
# Stripe
Source: https://docs.malga.io/documentations/providers/stripe
Provedor de pagamento
A Stripe é uma plataforma de pagamentos global que opera no Brasil desde 2019, oferecendo infraestrutura completa para lojas processarem transações por cartão de crédito em diferentes países, além de métodos como o boleto. Referência internacional em segurança e robustez em pagamentos, possui uma ampla gama de serviços.
[Mais informações.](https://docs.stripe.com/)
## Funções por métodos de pagamento suportados
| Serviços | Crédito | Pix | Boleto | Voucher | Apple Pay |
| - | :-: | :-: | :-: | :-: | :-: |
| Cobrança | | | | | |
| Pré-autorização | | | | | |
| Captura parcial | | | | | |
| Estorno parcial | | | | | |
| Estorno total | | | | | |
| Split | | | | | |
| Antifraude próprio | | | | | |
| 3DS | | | | | |
| Token de Bandeira | | | | | |
| Validação de cartão (zero dollar auth) | | | | | |
| Flag de recorrência | | | | | |
| Notificação de abertura de disputa | | | | | |
| Notificação de chargeback | | | | | |
| Suporte a moedas internacionais | | | | | |
Este serviço ou método é oferecido pelo provedor e suportado pela API da
Malga
Este serviço ou método não é oferecido pelo provedor
Este serviço ou método é oferecido pelo provedor e ainda não é suportado
pela API da Malga. Caso tenha interesse em utilizar este recurso, contate o
nosso time de atendimento pelo e-mail
[suporte@malga.io](mailto:suporte@malga.io).
Não se aplica
Se você possui interesse em receber cotações e avaliar este provedor para o seu fluxo de pagamentos, entre em contato com o nosso time para avaliar.
# VR
Source: https://docs.malga.io/documentations/providers/vr
Provedor de pagamento
A VR oferece soluções de pagamento para benefícios de funcionários, incluindo vouchers de refeição, alimentação e transporte. Operando no Brasil desde 1977, é referência no mercado, conhecida pela diversidade de seus serviços em empresas.
[Mais informações.](https://dev.vr.com.br/api-portal/content/primeiros-passos)
## Funções por métodos de pagamento suportados
| Serviços | Crédito | Pix | Boleto | Voucher | Apple Pay |
| - | :-: | :-: | :-: | :-: | :-: |
| Cobrança | | | | | |
| Estorno parcial | | | | | |
| Estorno total | | | | | |
| Split | | | | | |
| Suporte a moedas internacionais | | | | | |
Este serviço ou método é oferecido pelo provedor e suportado pela API da
Malga
Este serviço ou método não é oferecido pelo provedor
Este serviço ou método é oferecido pelo provedor e ainda não é suportado
pela API da Malga. Caso tenha interesse em utilizar este recurso, contate o
nosso time de atendimento pelo e-mail
[suporte@malga.io](mailto:suporte@malga.io).
Não se aplica
Se você possui interesse em receber cotações e avaliar este provedor para o seu fluxo de pagamentos, entre em contato com o nosso time para avaliar.
# WorldPay
Source: https://docs.malga.io/documentations/providers/worldpay
Provedor de pagamento
Parte do grupo FIS, a Worldpay oferece soluções de pagamento global, incluindo processamento de cartões, prevenção de fraudes e suporte a múltiplas moedas. Operando no Brasil desde 2015, destaca-se pela cobertura global e tecnologia avançada.
O **Apple Pay** na **WorldPay** está disponível em **Beta**. A funcionalidade
já pode ser utilizada, mas o fluxo e a integração podem evoluir nas próximas
versões.
[Mais informações.](https://developer.worldpay.com/)
## Funções por métodos de pagamento suportados
| Serviços | Crédito | Pix | Boleto | Voucher | Apple Pay |
| - | :-: | :-: | :-: | :-: | :-: |
| Cobrança | | | | | |
| Pré-autorização | | | | | |
| Captura parcial | | | | | |
| Estorno parcial | | | | | |
| Estorno total | | | | | |
| Split | | | | | |
| Antifraude próprio | | | | | |
| 3DS | | | | | |
| Token de Bandeira | | | | | |
| Validação de cartão (zero dollar auth) | | | | | |
| Flag de recorrência | | | | | |
| Notificação de abertura de disputa | | | | | |
| Notificação de chargeback | | | | | |
| Suporte a moedas internacionais | | | | | |
Este serviço ou método é oferecido pelo provedor e suportado pela API da
Malga
Este serviço ou método não é oferecido pelo provedor
Este serviço ou método é oferecido pelo provedor e ainda não é suportado
pela API da Malga. Caso tenha interesse em utilizar este recurso, contate o
nosso time de atendimento pelo e-mail
[suporte@malga.io](mailto:suporte@malga.io).
Não se aplica
Se você possui interesse em receber cotações e avaliar este provedor para o seu fluxo de pagamentos, entre em contato com o nosso time para avaliar.
## Veja mais
Protocolo que reduz o risco de fraude ao autenticar o pagador durante a
compra, permitindo transações com múltiplos provedores sem nova autenticação
em retentativas
# Zoop
Source: https://docs.malga.io/documentations/providers/zoop
Provedor de pagamento
Operando desde 2013, a Zoop oferece diversas soluções de pagamento para e-commerces e marketplaces, incluindo processamento de crédito, PIX, boleto e Split, reconhecida pela flexibilidade de seus serviços financeiros como provedor de pagamento.
[Mais informações.](https://docs.zoop.co/)
## Funções por métodos de pagamento suportados
| Serviços | Crédito | Pix | Boleto | Voucher | Apple Pay |
| - | :-: | :-: | :-: | :-: | :-: |
| Cobrança | | | | | |
| Pré-autorização | | | | | |
| Captura parcial | | | | | |
| Estorno parcial | | | | | |
| Estorno total | | | | | |
| Split | | | | | |
| Antifraude próprio | | | | | |
| 3DS | | | | | |
| Token de Bandeira | | | | | |
| Validação de cartão (zero dollar auth) | | | | | |
| Flag de recorrência | | | | | |
| Notificação de abertura de disputa | | | | | |
| Notificação de chargeback | | | | | |
| Suporte a moedas internacionais | | | | | |
Este serviço ou método é oferecido pelo provedor e suportado pela API da
Malga
Este serviço ou método não é oferecido pelo provedor
Este serviço ou método é oferecido pelo provedor e ainda não é suportado
pela API da Malga. Caso tenha interesse em utilizar este recurso, contate o
nosso time de atendimento pelo e-mail
[suporte@malga.io](mailto:suporte@malga.io).
Não se aplica
Se você possui interesse em receber cotações e avaliar este provedor para o seu fluxo de pagamentos, entre em contato com o nosso time para avaliar.
## Veja mais
Serviço que divide recebíveis de maneira automática, entre duas ou mais
partes envolvidas em uma transação
Protocolo que reduz o risco de fraude ao autenticar o pagador durante a
compra, permitindo transações com múltiplos provedores sem nova autenticação
em retentativas
# Começando em Split de pagamentos
Source: https://docs.malga.io/documentations/split/intro
Conheça os modos de uso do split de pagamentos na Malga: cobrança direta via POST /v1/charges ou regras configuradas na criação da sessão e link.
O **Split de Pagamentos** é um serviço que divide recebíveis de maneira automática, entre duas ou mais partes envolvidas em uma transação,
usado por marketplaces, franquias, aplicativos de delivery, entre outros tipos de negócios que têm a necessidade de
fazer a divisão de recebíveis.
## Métodos de pagamento suportados
Os métodos de pagamento suportados pelo serviço de split são:
| Provedor | Cartão | Pix | Boleto |
| - | - | - | - |
| Braspag | | | |
| Pagarme v5 | | | |
| PagSeguro | | | |
| Zoop | | | |
| Sandbox | | | |
## Recebedores do Split
Os **recebedores (sellers)** precisam estar **cadastrados antes** de aparecer em `splitRules`. Na cobrança **direta** e na **criação da sessão** com split, os identificadores de seller informados devem corresponder a recebedores já existentes. O serviço de **sessions** valida essa existência ao criar a sessão; no fluxo da transação, a Malga trata o encadeamento com o provedor e o status do seller para a captura.
Para cadastro e gestão, veja [**Recebedor (seller)**](/documentations/split/seller) e a [API de sellers](/api-reference/sellers/criacao-de-um-novo-recebedor).
## Dois modos de uso do split
O split pode ser utilizado de duas formas; em ambas, cada regra referencia um `sellerId` válido.
### 1. Cobrança direta (`POST /v1/charges`)
Você envia **`splitRules` no corpo** da criação da cobrança. A Malga aplica essas regras nessa transação. Guia completo: [Cobrança com Split](/documentations/split/split).
### 2. Sessão ou link de pagamento
Você envia **`splitRules` ao criar a sessão** (`POST /v1/sessions`). As regras ficam **armazenadas na sessão**. No pagamento (`POST /v1/sessions/{id}/charge`), você **não** reenvia `splitRules`; a cobrança **herda** o split definido na sessão. Detalhes e exemplos: [Split em sessão ou link de pagamento](/documentations/split/split-em-sessao-link).
Em pagamento de sessão, **não** inclua `splitRules` no corpo da requisição de cobrança. Configure o split apenas na criação da sessão.
# Taxa da plataforma
Source: https://docs.malga.io/documentations/split/platform-fee
Configure uma comissão sobre as transações da subconta, com ou sem split, aplicada automaticamente em cada cobrança.
A taxa da plataforma `(platform-fee)` permite que intermediadores — marketplaces, SaaS de pagamentos e plataformas B2B — configurem uma comissão persistente sobre as transações dos seus sellers. Em vez de incluir a própria conta nas `splitRules` de cada cobrança, a plataforma define a taxa uma vez na subconta e a Malga aplica automaticamente antes de distribuir o valor restante entre os recebedores.
O `platform-fee` é uma camada sobre o split de provedor. Na cobrança com `splitRules`, a taxa sai da parte dos sellers do split. Na cobrança **sem** `splitRules`, com a taxa ligada, a Malga cobra a taxa do único seller ativo da subconta, como descrito em [Venda sem split](#venda-sem-split).
## Como funciona
A taxa da plataforma é simples de configurar e opera em três níveis:
* Ativação: Uma flag no merchant habilita ou desabilita a aplicação das taxas. Enquanto desativada, nenhuma regra é aplicada nas transações, dando total controle sobre quando começar a cobrar.
* Regras por método de pagamento: Cada regra define a taxa para um método específico (`credit`, `pix`, `boleto`). Não existe regra genérica: cada método que você vende precisa de regra própria. Para cartão de crédito, a taxa é definida por parcela: cada número de parcelas, de 1x a 24x, pode ter um valor diferente. A venda Apple Pay não paga a taxa da plataforma, com ou sem split.
* Regras por seller: Um seller da subconta pode ter taxa própria em um ou mais métodos. Onde ele não tem regra própria, vale a regra da subconta. Veja [Taxa por seller](#taxa-por-seller).
Quando uma cobrança é criada com `splitRules` e a subconta tem a taxa ligada, a Malga executa o seguinte antes de enviar ao provedor:
1. Calcula o valor da taxa sobre o montante bruto da transação
2. Subtrai esse valor para obter o valor líquido
3. Distribui o valor líquido entre os sellers declarados nas `splitRules`
4. O valor não declarado nos `splitRules` vai para a conta da plataforma
O cliente nunca precisa incluir a própria conta no splitRules — a fatia da plataforma é retida automaticamente.
Quando algum seller da cobrança tem regra própria para o método e a parcela, a conta é feita seller a seller, como descrito em [Conta por seller](#conta-por-seller).
Sem `splitRules`, a cobrança paga a taxa pelo único seller ativo da subconta, como descrito em [Venda sem split](#venda-sem-split).
## Configurando as regras
As regras são configuradas no nível da subconta via API. Cada regra define o método de pagamento e o valor da taxa: percentual, valor fixo ou os dois combinados.
| Campo | Descrição |
| - | - |
| `paymentMethod` | Método ao qual a regra se aplica: credit, pix ou boleto. A regra genérica `default` foi descontinuada e é recusada com `400`. |
| `percentage` | Percentual da taxa (0-100), com até 2 casas decimais. |
| `fixedAmount` | Valor fixo em centavos, de 0 a 2147483647. Pode coexistir com percentage na mesma regra. |
| `installment` | Número exato de parcelas, de 1 a 24. Obrigatório na regra avulsa de credit; proibido nos demais métodos. |
| `installmentRates` | Somente credit. Lista de percentuais em que a posição é o número de parcelas. |
| `installments` | Somente credit. Lista de parcelas, cada uma com `installment`, `percentage` e `fixedAmount`. |
| `maxInstallments`, `base`, `growth`, `surcharges`, `overrides`, `cap` | Somente credit. Fórmula que gera a tabela de parcelas. |
O corpo da requisição aceita um array de regras ou um objeto com a lista em `rules`, com até 50 objetos de regra. Uma tabela ou fórmula de crédito conta como um objeto. Um corpo com mais de 50 é recusado com `400`. Os dois exemplos abaixo têm o mesmo efeito:
```json Array theme={null}
[
{ "paymentMethod": "pix", "percentage": 1.09, "fixedAmount": 30 },
{ "paymentMethod": "boleto", "fixedAmount": 109 }
]
```
```json Objeto theme={null}
{
"rules": [
{ "paymentMethod": "pix", "percentage": 1.09, "fixedAmount": 30 },
{ "paymentMethod": "boleto", "fixedAmount": 109 }
]
}
```
Cadastre regra para cada método que você vende e, no crédito, para cada parcela. Com a taxa ligada, a venda, com ou sem split, num método ou numa parcela que não tem regra na subconta nem no seller é recusada com `422` e `platform_fee_rule_not_configured`, como descrito em Parcela sem regra própria.
Consulte o contrato completo em [Criar regras de platform fee](/api-reference/merchants/criar-regras-de-platform-fee).
### Regra default descontinuada
A regra genérica `paymentMethod: default` não existe mais. Antes de ela sair, a Malga converteu cada regra `default` em regras por método, com o mesmo valor, nos métodos que a subconta oferece. No crédito, a conversão gravou uma regra sem `installment`, que vale para toda parcela sem regra própria da subconta. Essa regra aparece em `rules` sem o campo `installment`, e não é criada pela API: a regra avulsa de crédito exige `installment`.
`POST` e `PUT` com `paymentMethod: default`, na subconta ou no seller, respondem `400` com `PLATFORM_FEE_DEFAULT_RULE_DISCONTINUED`, e nada é gravado. Cadastre regra para todo método e parcela que você vende, na subconta ou no seller, e use `coverage` para conferir o que falta.
## Taxa de crédito por parcela
No cartão de crédito, cada número de parcelas tem a própria taxa, de 1x a 24x. Uma regra com `installment: 3` vale só para vendas em 3x, e a taxa de 3x pode ser diferente da taxa de 2x e da de 4x.
A taxa incide sobre o valor total da venda, e não sobre o valor de cada parcela:
```text theme={null}
fee = floor(amount * percentage / 100) + fixedAmount
```
Numa venda de R\$ 1.000,00 em 12x com taxa de 24,30%, a plataforma retém R\$ 243,00 e os recebedores dividem R\$ 757,00.
Você pode cadastrar a tabela de crédito parcela a parcela ou por fórmula. Nos dois casos, a Malga grava uma regra por parcela, e é essa tabela que a cobrança usa.
### Cadastrando a tabela parcela a parcela
A mesma tabela pode ser escrita de três formas. Use uma forma por objeto de regra.
Use `installmentRates` quando a tabela só tem percentual. A posição na lista é o número de parcelas: o primeiro item vale para 1x, o segundo para 2x, e assim por diante, até 24 itens.
```bash theme={null}
curl --location --request POST 'https://api.malga.io/v1/merchants/YOUR_MERCHANT_ID/platform-fee' \
--header 'X-Client-Id: YOUR_CLIENT_ID' \
--header 'X-Api-Key: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"rules": [
{ "paymentMethod": "pix", "percentage": 1.09, "fixedAmount": 30 },
{ "paymentMethod": "boleto", "fixedAmount": 109 },
{
"paymentMethod": "credit",
"installmentRates": [2.99, 5.11, 6.86, 8.64, 10.45, 12.29, 14.45, 16.35, 18.29, 20.26, 22.26, 24.30]
}
]
}'
```
A requisição grava 12 regras de crédito, de 1x a 12x. As parcelas gravadas por `installmentRates` ficam sem valor fixo.
A regra de tabela curta aceita só `paymentMethod` e `installmentRates`. Qualquer outra chave no mesmo objeto recusa a requisição com `400`, em vez de ser ignorada.
Use `installments` quando alguma parcela tem valor fixo ou quando você quer cadastrar só algumas parcelas. Cada entrada informa `installment` e ao menos um entre `percentage`, com até 2 casas decimais, e `fixedAmount`. A entrada não aceita outras chaves: um campo com grafia diferente, como `fixedamount`, recusa a requisição com `400`. A regra em volta também aceita só `paymentMethod` e `installments`.
```bash theme={null}
curl --location --request POST 'https://api.malga.io/v1/merchants/YOUR_MERCHANT_ID/platform-fee' \
--header 'X-Client-Id: YOUR_CLIENT_ID' \
--header 'X-Api-Key: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"rules": [
{
"paymentMethod": "credit",
"installments": [
{ "installment": 1, "percentage": 2.99 },
{ "installment": 2, "percentage": 5.11, "fixedAmount": 50 },
{ "installment": 3, "percentage": 6.86, "fixedAmount": 50 }
]
}
]
}'
```
A requisição grava 3 regras de crédito: 1x só com percentual, 2x e 3x com percentual e R\$ 0,50 fixos.
Cada objeto descreve uma parcela, com `installment` e o valor da taxa.
```bash theme={null}
curl --location --request POST 'https://api.malga.io/v1/merchants/YOUR_MERCHANT_ID/platform-fee' \
--header 'X-Client-Id: YOUR_CLIENT_ID' \
--header 'X-Api-Key: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '[
{ "paymentMethod": "credit", "installment": 1, "percentage": 2.99 },
{ "paymentMethod": "credit", "installment": 2, "percentage": 5.11 },
{ "paymentMethod": "credit", "installment": 3, "percentage": 6.86 }
]'
```
A mesma parcela não pode aparecer duas vezes no corpo. O mesmo método também não pode aparecer duas vezes como tabela, nem como tabela e regra avulsa, na mesma requisição. Se alguma parcela já tiver regra, o `POST` retorna `409`: para alterar uma tabela existente, use o `PUT`, descrito em Atualizando a tabela de crédito.
### Cadastrando a tabela por fórmula
Quando a taxa segue uma regra de crescimento, envie a fórmula e a Malga gera a tabela. A fórmula é calculada no cadastro: o que fica gravado é uma regra por parcela, de 1x até `maxInstallments`, e a fórmula em si não é armazenada.
| Campo | Descrição |
| - | - |
| `maxInstallments` | Obrigatório. Última parcela gerada, de 1 a 24. |
| `base` | Obrigatório. `percentage` (obrigatório) e `fixedAmount` de partida de todas as parcelas. |
| `growth` | Como o percentual cresce: `mode`, `step`, `rate` e `from`. |
| `surcharges` | Sobretaxas com `fromInstallment`, `percentage` e `fixedAmount`. Valem da parcela indicada em diante e se acumulam. |
| `overrides` | Valor final de parcelas específicas, com `installment`, `percentage` e `fixedAmount`. Substitui o valor calculado. |
| `cap` | Teto do percentual (`percentage`) e do valor fixo (`fixedAmount`) calculados. |
Os modos de crescimento em `growth.mode`:
| Modo | Efeito | Campos |
| - | - | - |
| `none` | Todas as parcelas ficam com o percentual da base. É o padrão. | Não aceita `step`, `rate` nem `from`. |
| `linear` | Soma `step` pontos percentuais a cada parcela, a partir de `from`. | `step` obrigatório. `from` vai de 2 até `maxInstallments`, e o padrão é 2. |
| `exponential` | Multiplica o percentual da base por `1 + rate` a cada parcela, a partir de `from`. `rate` é uma fração, e não um percentual: com 0.06, cada parcela fica 6% acima da anterior, e com 10, 1000% acima. | `rate` e `cap.percentage` obrigatórios. `from` como no `linear`. |
Para cada parcela, a conta segue esta ordem:
1. Parte da `base`.
2. Aplica o crescimento, se a parcela for igual ou maior que `growth.from`.
3. Soma as sobretaxas cujo `fromInstallment` já foi alcançado.
4. Limita ao `cap`.
5. Substitui pelo `overrides` da parcela, se houver.
6. Arredonda o percentual para 2 casas decimais, com meio para cima.
Exemplo com crescimento linear, uma sobretaxa a partir de 7x e teto:
```bash theme={null}
curl --location --request POST 'https://api.malga.io/v1/merchants/YOUR_MERCHANT_ID/platform-fee' \
--header 'X-Client-Id: YOUR_CLIENT_ID' \
--header 'X-Api-Key: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"rules": [
{
"paymentMethod": "credit",
"maxInstallments": 8,
"base": { "percentage": 2.79 },
"growth": { "mode": "linear", "step": 0.20, "from": 2 },
"surcharges": [{ "fromInstallment": 7, "percentage": 0.50 }],
"cap": { "percentage": 4.60 }
}
]
}'
```
A requisição grava oito regras de crédito:
| Parcela | 1x | 2x | 3x | 4x | 5x | 6x | 7x | 8x |
| - | - | - | - | - | - | - | - | - |
| Percentual | 2,79% | 2,99% | 3,19% | 3,39% | 3,59% | 3,79% | 4,49% | 4,60% |
Em 7x entra a sobretaxa de 0,50 ponto. Em 8x a conta daria 4,69%, e o teto limita o valor a 4,60%.
A configuração inteira é recusada com `400` quando:
* `growth.mode` é `exponential` e falta `cap.percentage`;
* um item de `overrides` fica acima do `cap`;
* alguma parcela calculada passa de 100%;
* `maxInstallments` está ausente ou fora de 1 a 24;
* uma sobretaxa não tem `percentage` nem `fixedAmount`, ou `surcharges` e `overrides` repetem a mesma parcela;
* a regra ou algum objeto da fórmula traz uma chave desconhecida, como `capp` no lugar de `cap`. A regra de fórmula aceita só `paymentMethod`, `maxInstallments`, `base`, `growth`, `surcharges`, `overrides` e `cap`;
* a fórmula vem fora de `credit` ou junto com `installmentRates`, `installments`, `installment`, `percentage` ou `fixedAmount`.
### Parcela sem regra própria
Com a taxa ligada, a venda no crédito, com ou sem split, precisa de regra para a parcela vendida, na subconta ou no seller. Quando nenhuma das duas cobre a parcela, a cobrança é recusada com `422` e `platform_fee_rule_not_configured`, e `error.context` diz o seller, o método e a parcela. Vale o mesmo para Pix e boleto sem regra. Cadastre a tabela de crédito de 1x a 24x, ou ao menos até o maior número de parcelas que você vende.
Por exemplo, com regras de crédito só em 1x, 2x e 7x:
| Parcelas | Na cobrança | Na consulta |
| - | - | - |
| 1x, 2x e 7x | Usa a regra da própria parcela | `accepted: true` e `source: rule` |
| 3x a 6x e 8x a 24x | Recusada com `platform_fee_rule_not_configured` | `accepted: false` e `reason: no_rule_configured` |
Resposta da cobrança com split em 18x, sem regra para 18x na subconta nem no seller:
```json theme={null}
{
"error": {
"type": "unprocessable_entity",
"code": 422,
"declined_code": "platform_fee_rule_not_configured",
"details": ["No platform fee rule configured for seller aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa, payment method credit and installment 18."],
"context": { "sellerId": "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa", "paymentMethod": "credit", "installment": 18 },
"message": "No platform fee rule is configured for this charge payment method and installment."
}
}
```
A consulta descrita em Consultando a taxa calculada mostra, parcela por parcela, qual regra a cobrança usa e quais parcelas ficam sem regra.
### Atualizando a tabela de crédito
O `PUT /v1/merchants/{merchantId}/platform-fee` aceita o mesmo corpo do `POST`, e o efeito depende da forma:
* Com `installmentRates`, `installments` ou fórmula, o `PUT` substitui a tabela de crédito inteira: atualiza as parcelas que já existem, cria as que faltam e remove as que ficaram de fora. As regras de `pix` e `boleto` não mudam, nem a regra de crédito sem `installment`, quando a subconta tem uma, como descrito em [Regra default descontinuada](#regra-default-descontinuada).
* Com regra avulsa, o `PUT` atualiza só a regra da mesma parcela e só os campos enviados. Se a parcela não tiver regra, a resposta é `404`.
O `PUT` é aplicado por inteiro ou não é aplicado. Se qualquer regra avulsa do corpo não existir, a resposta é `404` e nada muda, nem a tabela enviada na mesma requisição. A resposta de sucesso traz as regras como ficaram gravadas.
Na substituição, a tabela enviada passa a ser a tabela inteira. Enviar três parcelas numa subconta que tinha doze deixa a subconta com três. As parcelas removidas deixam de ter regra própria na subconta e, sem outra regra que as cubra, a venda nelas é recusada com a taxa ligada, como descrito em Parcela sem regra própria.
```bash theme={null}
curl --location --request PUT 'https://api.malga.io/v1/merchants/YOUR_MERCHANT_ID/platform-fee' \
--header 'X-Client-Id: YOUR_CLIENT_ID' \
--header 'X-Api-Key: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"rules": [
{ "paymentMethod": "credit", "installmentRates": [3.49, 5.90, 7.80] }
]
}'
```
## Consultando a taxa calculada
O `GET /v1/merchants/{merchantId}/platform-fee` devolve as regras gravadas em `rules` e, junto, a conta feita: quanto a plataforma retém e quanto sobra para os recebedores em cada método e em cada parcela. Informe em `simulationAmount` o valor da venda simulada, em centavos.
```bash theme={null}
curl --location --request GET 'https://api.malga.io/v1/merchants/YOUR_MERCHANT_ID/platform-fee?simulationAmount=1000000' \
--header 'X-Client-Id: YOUR_CLIENT_ID' \
--header 'X-Api-Key: YOUR_API_KEY'
```
Os blocos `simulation` e `methods` só vêm quando `simulationAmount` é enviado. `platformFeeEnabled`, `rules`, `sellerRules` e `coverage` vêm sempre. `sellerRules` e o estado por seller estão descritos em [Consultando as regras dos sellers](#consultando-as-regras-dos-sellers).
Resposta para a tabela curta de 1x a 12x cadastrada acima, numa venda de R\$ 10.000,00. A lista `installments` traz sempre as 24 parcelas. A subconta não tem regra de 13x a 24x, e essas parcelas vêm com `accepted: false`, `reason: no_rule_configured` e sem os campos de taxa. O trecho abaixo omite `rules`, `sellerRules` e `coverage.merchant.methods` e mostra 1x, 2x, 12x e 13x:
```json theme={null}
{
"platformFeeEnabled": true,
"simulation": { "amount": 1000000, "currency": "BRL" },
"methods": [
{ "paymentMethod": "pix", "accepted": true, "source": "rule", "percentage": 1.09, "fixedAmount": 30, "fee": 10930, "sellerNet": 989070 },
{ "paymentMethod": "boleto", "accepted": true, "source": "rule", "percentage": 0, "fixedAmount": 109, "fee": 109, "sellerNet": 999891 },
{
"paymentMethod": "credit",
"accepted": true,
"installments": [
{ "installment": 1, "accepted": true, "source": "rule", "percentage": 2.99, "fixedAmount": 0, "fee": 29900, "sellerNet": 970100, "buyerInstallmentAmount": 1000000 },
{ "installment": 2, "accepted": true, "source": "rule", "percentage": 5.11, "fixedAmount": 0, "fee": 51100, "sellerNet": 948900, "buyerInstallmentAmount": 500000 },
{ "installment": 12, "accepted": true, "source": "rule", "percentage": 24.3, "fixedAmount": 0, "fee": 243000, "sellerNet": 757000, "buyerInstallmentAmount": 83333 },
{ "installment": 13, "accepted": false, "reason": "no_rule_configured" }
]
}
],
"coverage": {
"merchant": {
"missing": [],
"warnings": ["credit sem regra em 13x a 24x; com a taxa ligada, a venda é recusada por falta de regra"]
}
}
}
```
Campos de cada parcela em `installments`:
| Campo | Descrição |
| - | - |
| `installment` | Número de parcelas, de 1 a 24. |
| `accepted` | Indica se a venda nessa parcela, no valor simulado, passaria com a taxa calculada. |
| `reason` | Presente quando `accepted` é `false`: `fee_exceeds_amount` quando a taxa é maior ou igual ao valor simulado, e `no_rule_configured` quando nenhuma regra cobre a parcela. Com `no_rule_configured`, a parcela vem sem os campos de taxa. |
| `source` | De onde vem a taxa da parcela. É sempre `rule`, a regra cadastrada para a parcela. |
| `percentage` e `fixedAmount` | Percentual e valor fixo aplicados. |
| `fee` | Taxa sobre o valor total simulado, em centavos. |
| `sellerNet` | Valor simulado menos a taxa, em centavos. É o que fica para os recebedores. |
| `buyerInstallmentAmount` | Valor de cada parcela para o comprador, em centavos, arredondado para baixo. |
Em `pix` e `boleto`, os campos de taxa vêm no próprio item do método, com `source: rule`. Sem regra, o item vem só com `{ "paymentMethod": "boleto", "accepted": false, "reason": "no_rule_configured" }`, e o método entra em `coverage.merchant.missing`. No crédito, a origem de cada parcela está em `installments[].source`.
Em `coverage.merchant`, `missing` lista os métodos sem nenhuma regra aplicável, `warnings` traz avisos em texto, como a flag de ativação desligada ou as parcelas de crédito sem regra, e `methods` traz o estado de cada método e faixa de parcelas. Os avisos são para leitura humana: para tratar esses casos no código, use `source`, `accepted`, `reason` e `coverage.merchant.methods`.
Consulte todos os campos da resposta em [Listar regras de platform fee](/api-reference/merchants/listar-regras-de-platform-fee).
## Taxa por seller
Um seller da subconta pode ter taxa própria, diferente da taxa da subconta. A regra do seller substitui a regra da subconta para ele, método a método e só nas parcelas que ela cobre. O que a regra do seller não cobre continua seguindo a regra da subconta.
Por exemplo, um seller com regra própria só no Pix paga a própria taxa no Pix e a taxa da subconta no boleto e no crédito. Um seller com tabela de crédito própria de 1x a 4x, numa subconta com tabela de 1x a 12x, paga a própria taxa de 1x a 4x e a da subconta de 5x a 12x.
Antes de começar:
* O seller precisa estar cadastrado na subconta em que você vai criar a regra. Seller de outra subconta, sem subconta ou de outro cliente responde `404` com `PLATFORM_FEE_SELLER_NOT_FOUND`.
* A flag de ativação continua sendo da subconta e vale para todos os sellers dela. Não existe flag por seller.
* Para ligar a taxa, a subconta precisa ter ao menos uma regra própria. Regras de seller não contam. Com a taxa ligada, a última regra da subconta não pode ser apagada: o `DELETE` responde `400` com `PLATFORM_FEE_RULES_REQUIRED_WHILE_ENABLED`.
### Criando as regras de um seller
As regras do seller usam as mesmas formas de corpo das regras da subconta: regra avulsa, `installmentRates`, `installments` e fórmula, em array ou em objeto com a lista em `rules`, com o mesmo limite de 50 objetos. Como na subconta, `paymentMethod: default` é recusado com `400` e `PLATFORM_FEE_DEFAULT_RULE_DISCONTINUED`.
A diferença está no crédito: a regra do seller é só percentual por parcela. Qualquer `fixedAmount` diferente de 0 no crédito do seller recusa a requisição com `400`. No Pix e no boleto, o seller aceita percentual, valor fixo ou os dois.
```bash theme={null}
curl --location --request POST 'https://api.malga.io/v1/merchants/YOUR_MERCHANT_ID/sellers/YOUR_SELLER_ID/platform-fee' \
--header 'X-Client-Id: YOUR_CLIENT_ID' \
--header 'X-Api-Key: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"rules": [
{ "paymentMethod": "pix", "percentage": 0, "fixedAmount": 0 },
{ "paymentMethod": "credit", "installmentRates": [1.99, 2.49] }
]
}'
```
Resposta `201`, com as regras gravadas e um aviso fixo sobre assinaturas:
```json theme={null}
{
"sellerId": "9ba4c5bc-a0fe-46b9-8950-c6fdba1b3c67",
"rules": [
{ "id": "3a249406-b494-49f5-867c-86dd47ace95a", "percentage": 0, "fixedAmount": 0, "paymentMethod": "pix", "createdAt": "2026-09-29T14:49:54.612Z", "updatedAt": "2026-09-29T14:49:54.612Z" },
{ "id": "f18bcd0a-be5d-486e-883f-455ea501dcce", "percentage": 1.99, "fixedAmount": 0, "paymentMethod": "credit", "installment": 1, "createdAt": "2026-09-29T14:49:54.612Z", "updatedAt": "2026-09-29T14:49:54.612Z" },
{ "id": "9e143ffb-5de0-4298-aa3c-f5686b8f4391", "percentage": 2.49, "fixedAmount": 0, "paymentMethod": "credit", "installment": 2, "createdAt": "2026-09-29T14:49:54.612Z", "updatedAt": "2026-09-29T14:49:54.612Z" }
],
"warnings": [
"assinaturas aceitam split só em percentual, e com a taxa desta subconta ligada, uma assinatura com split por valor que inclua este seller tem as cobranças recusadas com platform_fee_requires_percentage_split quando a regra própria dele vale para o método e a parcela da cobrança"
]
}
```
Neste exemplo, o seller fica isento no Pix, paga 1,99% em 1x e 2,49% em 2x, e segue a subconta no boleto e de 3x a 24x.
O `GET` na mesma rota lista as regras próprias do seller, e o `PUT` altera as regras dele com as mesmas regras do `PUT` da subconta: a regra avulsa altera só os campos enviados, e a tabela de crédito substitui a tabela do seller inteira, sem mexer na da subconta. Consulte o contrato completo em [Criar regras de platform fee do seller](/api-reference/merchants/criar-regras-de-platform-fee-do-seller).
### Isentando um seller ou devolvendo à regra da subconta
* **Isentar** num método: regra do seller com `percentage: 0` e `fixedAmount: 0`, os dois na mesma requisição. Um `PUT` só com `percentage: 0` numa regra que tinha valor fixo continua cobrando o valor fixo.
* **Voltar à regra da subconta**: apague a regra do seller pelo `id`, com `DELETE /v1/merchants/{merchantId}/platform-fee/{platformFeeId}`. A mesma rota apaga regras da subconta e de seller.
Mudanças nas regras valem a partir da próxima cobrança. Cobranças já feitas não mudam.
### Como a cobrança escolhe a regra de cada seller
Para cada seller do split, na ordem:
1. A regra do seller para o método e a parcela da cobrança.
2. A regra da subconta para o método e a parcela. No crédito, sem regra para a parcela, vale a regra de crédito sem `installment` da subconta, quando ela existe.
3. Nenhuma: a cobrança é recusada com `422` e `platform_fee_rule_not_configured`, dizendo o seller, o método e a parcela.
### Conta por seller
Quando algum seller da cobrança tem regra própria para o método e a parcela, a conta é feita seller a seller:
```text theme={null}
parte = floor(amount * percentual_do_split / 100)
taxa = floor(parte * percentage / 100) + fixo
recebe = parte - taxa
plataforma = amount - soma do que os sellers recebem
```
* O percentual da regra incide sobre a parte bruta de cada seller, e a taxa de cada seller arredonda para baixo. O centavo do arredondamento fica com o seller.
* O valor fixo da regra do seller é cobrado inteiro dele.
* O valor fixo da regra da subconta é cobrado uma vez por cobrança e rateado, proporcional à parte bruta, só entre os sellers que usam a regra da subconta. O centavo que sobra do rateio fica com os sellers.
* Cada seller precisa receber ao menos R\$ 0,01. Senão, a cobrança é recusada com `platform_fee_exceeds_amount`.
Exemplo: Pix de R\$ 100,00 com split de 50%, 30% e 20%. A subconta cobra 1,09% mais R\$ 0,30 no Pix. O seller A tem regra própria de Pix só com R\$ 0,39 fixos.
| Seller | Regra | Parte bruta | Taxa | Recebe |
| - | - | - | - | - |
| A | Própria: R\$ 0,39 | R\$ 50,00 | R\$ 0,39 | R\$ 49,61 |
| B | Subconta: 1,09% de R\$ 30,00 mais R\$ 0,18 do fixo rateado | R\$ 30,00 | R\$ 0,50 | R\$ 29,50 |
| C | Subconta: 1,09% de R\$ 20,00 mais R\$ 0,12 do fixo rateado | R\$ 20,00 | R\$ 0,33 | R\$ 19,67 |
| Plataforma | | | R\$ 1,22 | |
Sem a regra do seller A, a mesma cobrança seguiria a conta de sempre, com a taxa da subconta sobre o valor total: R\$ 1,39.
No boleto, com a subconta e o seller A cobrando R\$ 1,09 fixos cada, A paga R\$ 1,09 e os R\$ 1,09 da subconta são rateados entre B e C: R\$ 0,65 e R\$ 0,43. O centavo que sobra do rateio não é cobrado, e a plataforma fica com R\$ 2,17.
### Split por percentual
Quando algum seller da cobrança tem regra própria para o método e a parcela, o split precisa ser por percentual. Split por valor nessa cobrança é recusado com `platform_fee_requires_percentage_split`. Sem regra de seller na cobrança, o split por valor continua como hoje.
### Validações com a taxa ligada
Com a flag de ativação da subconta ligada, a cobrança com split também é recusada nestes casos:
* **Seller repetido** (`platform_fee_duplicate_seller`): o mesmo seller aparece em mais de uma linha do split. Some as partes numa linha só.
* **Seller fora da subconta** (`platform_fee_seller_not_in_merchant` e `platform_fee_seller_without_merchant`): um seller do split está cadastrado em outra subconta ou não tem subconta. Cadastre-o na subconta da cobrança.
* **Split diferente entre provedores** (`platform_fee_split_differs_by_provider`): a cobrança manda a lista `provider` e os provedores não têm o mesmo split. Conta como diferente ter outros sellers, os mesmos sellers com percentuais ou valores diferentes, ou um provedor sem split ao lado de outro com split. Mande o mesmo split para todos os provedores ou use só o `splitRules` do topo.
* **Seller que receberia menos de R\$ 0,01** (`platform_fee_exceeds_amount`): no split por percentual, depois da taxa, algum seller ficaria com menos de R\$ 0,01. Aumente a parte dele ou o valor da cobrança, ou revise a regra.
Essas validações valem para toda cobrança com split da subconta com a flag ligada, com ou sem regra de seller. Com a flag desligada, nenhuma delas roda e a cobrança segue como hoje.
### A taxa na resposta da cobrança
O objeto `platformFee` da cobrança mantém os campos de sempre e, quando algum seller tem regra própria, ganha `lines`, um item por seller, com a regra usada, a parte bruta, a taxa e o que ele recebe. Nesse caso, `amount` é a soma de `lines[].feeAmount`, e os campos do topo trazem a regra da subconta quando alguma linha a usa. Se nenhuma linha usa a regra da subconta, eles trazem a regra da primeira linha que tem regra. Cobranças sem regra de seller e cobranças antigas não têm `lines`. O `platformFee` do webhook 1.1 da cobrança traz os mesmos campos, com `lines`.
Trecho da resposta da cobrança Pix do exemplo acima:
```json theme={null}
{
"amount": 10000,
"splitRules": [
{ "sellerId": "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa", "percentage": 50, "amount": 4961 },
{ "sellerId": "bbbbbbbb-bbbb-4bbb-8bbb-bbbbbbbbbbbb", "percentage": 30, "amount": 2950 },
{ "sellerId": "cccccccc-cccc-4ccc-8ccc-cccccccccccc", "percentage": 20, "amount": 1967 }
],
"platformFee": {
"ruleId": "1f879b65-ea91-449f-8d28-29a6c5c1cb6a",
"percentage": 1.09,
"fixedAmount": 30,
"paymentMethod": "pix",
"installment": null,
"amount": 122,
"appliedAt": "2026-09-29T18:44:22.627Z",
"lines": [
{ "sellerId": "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa", "scope": "seller", "ruleId": "007c3d89-c1dc-4542-8bf3-595a064a24c8", "percentage": 0, "fixedAmount": 39, "grossAmount": 5000, "feeAmount": 39, "netAmount": 4961 },
{ "sellerId": "bbbbbbbb-bbbb-4bbb-8bbb-bbbbbbbbbbbb", "scope": "merchant", "ruleId": "1f879b65-ea91-449f-8d28-29a6c5c1cb6a", "percentage": 1.09, "fixedAmount": 30, "grossAmount": 3000, "feeAmount": 50, "netAmount": 2950 },
{ "sellerId": "cccccccc-cccc-4ccc-8ccc-cccccccccccc", "scope": "merchant", "ruleId": "1f879b65-ea91-449f-8d28-29a6c5c1cb6a", "percentage": 1.09, "fixedAmount": 30, "grossAmount": 2000, "feeAmount": 33, "netAmount": 1967 }
]
}
}
```
| Campo de `lines` | Descrição |
| - | - |
| `sellerId` | Seller da linha. |
| `scope` | `seller` quando vale a regra do próprio seller, `merchant` quando vale a regra da subconta. |
| `ruleId`, `percentage` e `fixedAmount` | A regra aplicada e os valores configurados nela. O valor fixo efetivamente cobrado da linha está dentro de `feeAmount`. |
| `grossAmount` | Parte bruta do seller, em centavos. |
| `feeAmount` | Taxa cobrada do seller, em centavos. |
| `netAmount` | O que o seller recebe, em centavos. É o `amount` do split dele. |
### Consultando as regras dos sellers
O `GET /v1/merchants/{merchantId}/platform-fee` traz, além das regras da subconta em `rules`:
* `sellerRules`: um item por seller com ao menos uma regra própria, com as regras dele no mesmo formato de `rules`.
* `coverage.merchant.methods` e `coverage.sellers[].methods`: o estado de `pix`, `boleto` e de cada faixa de parcelas de `credit`, para a subconta e para cada seller.
| Estado | Significado |
| - | - |
| `own` | Regra própria que cobra algo. |
| `exempt` | Regra própria com `percentage: 0` e `fixedAmount: 0`. |
| `inherits` | Só em seller. Sem regra própria, segue a regra da subconta. |
| `missing` | Sem regra em nenhum nível. Com a taxa ligada, a venda é recusada com `platform_fee_rule_not_configured`. |
Um seller sem regra própria num método ou parcela em que a subconta está em `missing` também aparece como `missing`, e não como `inherits`.
Trecho de `coverage` de uma subconta com Pix, boleto e crédito de 1x a 2x próprios, sem regra de 3x a 24x, e um seller com Pix e crédito 1x próprios:
```json theme={null}
{
"merchant": {
"missing": [],
"warnings": ["credit sem regra em 3x a 24x; com a taxa ligada, a venda é recusada por falta de regra"],
"methods": [
{ "paymentMethod": "pix", "state": "own" },
{ "paymentMethod": "boleto", "state": "own" },
{ "paymentMethod": "credit", "installments": [ { "from": 1, "to": 2, "state": "own" }, { "from": 3, "to": 24, "state": "missing" } ] }
]
},
"sellers": [
{
"sellerId": "36d74a1a-a0db-45f1-bf43-d7f4ea2251e1",
"warnings": [],
"methods": [
{ "paymentMethod": "pix", "state": "own" },
{ "paymentMethod": "boleto", "state": "inherits" },
{ "paymentMethod": "credit", "installments": [ { "from": 1, "to": 1, "state": "own" }, { "from": 2, "to": 2, "state": "inherits" }, { "from": 3, "to": 24, "state": "missing" } ] }
]
}
]
}
```
Com `simulationAmount`, cada item de `sellerRules` ganha `methods`, com a taxa calculada como se o seller recebesse o valor simulado inteiro. Em cada método e parcela, `scope` diz se vale a regra do seller ou a da subconta.
## Venda sem split
Com a taxa ligada, a cobrança sem `splitRules`, no topo e na lista `provider`, também paga a taxa da plataforma. A Malga usa como recebedor o único seller ativo da subconta, calcula a taxa como se ele recebesse o valor inteiro da cobrança e envia ao provedor o split com esse seller e o valor já líquido da taxa. A plataforma fica com a taxa.
* Seller ativo é o seller da subconta com status `active` ou `partial` e ao menos um provedor ativo. Ele também precisa estar ativo em cada provedor da cobrança.
* A regra é escolhida como na cobrança com split: a regra do seller para o método e a parcela e, sem ela, a da subconta. Sem regra em nenhum nível, a cobrança é recusada com `platform_fee_rule_not_configured`. Taxa maior ou igual ao valor da cobrança é recusada com `platform_fee_exceeds_amount`.
* Na resposta, `splitRules` traz o seller com `amount` igual ao que ele recebe, e `platformFee` traz a taxa. Quando vale a regra própria do seller, `platformFee` tem `lines`, com uma linha.
* A venda Apple Pay continua sem taxa.
* Com a taxa desligada, nada muda: a cobrança sem split segue sem taxa e sem split.
Quando a subconta não tem exatamente um seller ativo, a cobrança é recusada com `422` e `platform_fee_seller_not_active`, antes de ir ao provedor. `error.context.reason` diz o motivo, e `error.context` traz também `paymentMethod` e, no crédito, `installment`:
| `reason` | Quando | Campos a mais em `context` |
| - | - | - |
| `no_active_seller` | A subconta não tem seller ativo. | Nenhum |
| `multiple_active_sellers` | A subconta tem mais de um seller ativo, e a Malga não escolhe entre eles. | `sellerIds`, com até dois dos sellers ativos |
| `seller_not_active_in_provider` | O seller ativo da subconta não está ativo em algum provedor da cobrança. | `sellerId` e `providers`, os provedores em que ele não está ativo |
Para escolher quem recebe numa subconta com mais de um seller ativo, envie `splitRules` na cobrança.
Exemplo de recusa numa subconta com dois sellers ativos:
```json theme={null}
{
"error": {
"type": "unprocessable_entity",
"code": 422,
"declined_code": "platform_fee_seller_not_active",
"details": ["Merchant 2f8410be-e7aa-45eb-b63c-d67c4b573c21 has 2 active sellers (aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa, bbbbbbbb-bbbb-4bbb-8bbb-bbbbbbbbbbbb). Send splitRules to choose who receives."],
"context": { "reason": "multiple_active_sellers", "paymentMethod": "pix", "sellerIds": ["aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa", "bbbbbbbb-bbbb-4bbb-8bbb-bbbbbbbbbbbb"] },
"message": "A charge without split under an enabled platform fee requires exactly one active seller in the merchant, in every provider of the charge. Activate one seller of the merchant in those providers or send splitRules in the charge."
}
}
```
## Estornos
Em estornos totais ou parciais, o `platform-fee` é revertido proporcionalmente ao valor estornado. A devolução de cada seller é proporcional ao que ele recebeu na cobrança, e a plataforma devolve o restante.
Exemplo:
* transação de R\$ 1.000,00 com platformFee de 2% (plataforma reteve R\$ 20,00, seller recebeu R\$ 980,00).
* Estorno parcial de R\$ 500,00:
* Plataforma devolve: R\$ 10,00
* Seller devolve: R\$ 490,00
Com taxa por seller, a conta é a mesma. No estorno de R\$ 50,00 da cobrança Pix do exemplo de [Conta por seller](#conta-por-seller), A devolve R\$ 24,80, B devolve R\$ 14,75, C devolve R\$ 9,83 e a plataforma devolve R\$ 0,62.
## Erros
### Na configuração
| Código | HTTP | Quando | O que fazer |
| - | - | - | - |
| `PLATFORM_FEE_INVALID_RULE` | 400 | Regra inválida. Na regra de seller, também valor fixo diferente de 0 no crédito. | Corrija o campo indicado em `message`. No crédito do seller, envie só `percentage`. |
| `PLATFORM_FEE_INSTALLMENT_REQUIRED` | 400 | Regra avulsa de `credit` sem `installment`. | Informe a parcela ou use uma tabela. |
| `PLATFORM_FEE_DUPLICATE_RULE` | 400 | A mesma parcela ou o mesmo método repetido no corpo. | Envie cada parcela uma vez. |
| `PLATFORM_FEE_DEFAULT_RULE_DISCONTINUED` | 400 | `paymentMethod: default` no `POST` ou no `PUT`, da subconta ou do seller, mesmo junto de regras válidas. Nada é gravado. | Troque a `default` por uma regra para cada método que você vende. |
| `PLATFORM_FEE_RULES_REQUIRED_WHILE_ENABLED` | 400 | `DELETE` da última regra da subconta com a taxa ligada. A regra continua. | Crie outra regra da subconta antes ou desligue a taxa. |
| `PLATFORM_FEE_RULES_REQUIRED_TO_ENABLE` | 400 | Ligar a taxa numa subconta sem regra própria, mesmo com regras de seller. | Crie ao menos uma regra da subconta antes de ligar. |
| `PLATFORM_FEE_SELLER_NOT_FOUND` | 404 | Seller de outro cliente, de outra subconta ou sem subconta. | Cadastre o seller na subconta e crie a regra nela. |
| `PLATFORM_FEE_RULE_NOT_FOUND` | 404 | `PUT` de regra avulsa que não existe, ou `DELETE` de `id` que não existe. | Crie a regra com `POST` ou confira o `id`. |
| `PLATFORM_FEE_RULE_ALREADY_EXISTS` | 409 | Já existe regra para o método ou a parcela, no mesmo escopo. | Use o `PUT` para alterar. |
| `SELLER_SERVICE_UNAVAILABLE` | 503 | O serviço de sellers não respondeu na escrita de regra de seller. Nada foi gravado. | Tente de novo. |
### Na cobrança
A recusa vem em `error.declined_code`. Nas recusas de seller, `error.details` traz um texto em inglês com os valores, e `error.context` traz os mesmos valores em campos, para você montar a sua mensagem.
| Código | HTTP | Quando | O que fazer |
| - | - | - | - |
| `platform_fee_rule_not_configured` | 422 | Nenhuma regra cobre um seller no método e na parcela da cobrança, com ou sem split. `context` traz `sellerId`, `paymentMethod` e `installment`. | Cadastre a regra na subconta ou no seller. |
| `platform_fee_seller_not_active` | 422 | Cobrança sem split com a taxa ligada, sem exatamente um seller ativo na subconta em todos os provedores da cobrança. `context.reason` traz `no_active_seller`, `multiple_active_sellers` ou `seller_not_active_in_provider`. | Ative um seller da subconta nos provedores da cobrança ou envie `splitRules`. |
| `platform_fee_exceeds_amount` | 422 | Algum seller receberia menos de R\$ 0,01, ou a taxa total não é menor que o valor da cobrança. Na recusa por seller, `context` traz `sellerId`, `splitAmount`, `feeAmount` e `leftoverAmount`. | Aumente a parte do seller ou o valor da cobrança, ou revise a regra. |
| `platform_fee_requires_percentage_split` | 422 | Split por valor com seller que tem regra própria. | Mande o split em percentual. |
| `platform_fee_duplicate_seller` | 422 | O mesmo seller em mais de uma linha do split, com a taxa ligada. | Some as partes numa linha só. |
| `platform_fee_seller_not_in_merchant` | 422 | Seller de outra subconta, com a taxa ligada. `context` traz `sellerMerchantId`. | Cadastre o seller na subconta da cobrança. |
| `platform_fee_seller_without_merchant` | 422 | Seller sem subconta, com a taxa ligada. | Vincule o seller à subconta da cobrança. |
| `platform_fee_split_differs_by_provider` | 422 | Provedores da lista `provider` com split diferente, com a taxa ligada. `context` traz `providers`. | Mande o mesmo split para todos os provedores. |
| `platform_fee_preview_split_percentage_sum_invalid` | 422 | Percentuais do split somando mais de 100, com a taxa ligada. | Ajuste os percentuais. |
| `split_amount_mismatch` | 422 | Split por valor, sem regra de seller, cuja soma passa do valor da cobrança menos a taxa. | Envie os valores já líquidos da taxa. |
| `platform_fee_config_unavailable` | 503 | A configuração da taxa não pôde ser lida nesta cobrança. Só acontece na cobrança com split. | Tente de novo. O erro é temporário. |
Exemplo de recusa por seller:
```json theme={null}
{
"error": {
"type": "unprocessable_entity",
"code": 422,
"declined_code": "platform_fee_exceeds_amount",
"details": ["Seller aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa would receive 0 cents: split amount 39 cents, platform fee 39 cents. Each seller must receive at least 1 cent."],
"context": { "sellerId": "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa", "splitAmount": 39, "feeAmount": 39, "leftoverAmount": 0 },
"message": "Each seller must receive at least 1 cent after the platform fee."
}
}
```
# Revisão cadastral de recebedores
Source: https://docs.malga.io/documentations/split/revisao-cadastral
Como responder às revisões cadastrais que o provedor abre para os seus recebedores, dentro do prazo e com dados coletados de forma ativa.
Periodicamente, e sempre que encontra uma inconsistência, o provedor exige que os dados cadastrais de um recebedor sejam confirmados. Quando isso acontece, a Malga abre um **processo de revisão cadastral** com prazo e com a lista dos campos a coletar, e avisa você por webhook.
Responder ao processo é responsabilidade sua: cabe a você coletar os dados **diretamente com o recebedor** e enviá-los pela API antes do prazo. Um processo que vence sem envio leva o provedor a bloquear o recebedor — e com ele o repasse do Split.
A revisão cadastral está disponível hoje para recebedores vinculados ao provedor **Zoop**.
## Os dois tipos de revisão
| Tipo | Sigla | Quando acontece |
| - | - | - |
| Periódica | `acp` | Em intervalos definidos pelo provedor, independentemente de qualquer suspeita |
| Por inconsistência | `aci` | Quando o provedor encontra divergência nos dados do recebedor |
A diferença prática está no ritmo. A revisão periódica nasce em `pending`, com uma fase inicial em que o recebedor responde no seu próprio tempo, e passa a `overdue` — cobrança ativa — antes do vencimento. A revisão por inconsistência **já nasce em cobrança**, sem fase inicial, porque o provedor já identificou um problema.
Você não precisa acompanhar essa virada: ela se reflete no `status` do processo, e o que delimita a sua janela de resposta é o `deadlineAt`. Ambos vêm na consulta.
## A regra de coleta ativa
Esta é a regra que mais costuma ser violada na integração, e a que mais custa caro.
O provedor **proíbe** preencher uma revisão cadastral com dado que você já tinha. Não vale usar bureau de crédito, a sua própria base, o que foi informado no onboarding nem o que foi enviado em uma revisão anterior. A coleta precisa ser **ativa**: feita com o recebedor, agora, por causa deste processo.
A Malga não tem como provar que a coleta foi ativa, mas se recusa a transportar um envio que nem sequer afirme isso. Por essa razão, todo envio carrega um bloco `collection` que descreve como você obteve os dados:
| Campo | Obrigatório | Descrição |
| - | - | - |
| `channel` | Sim | Canal pelo qual você falou com o recebedor (`in_app`, `email`, `phone`, o que se aplicar) |
| `collectedAt` | Sim | Quando a coleta aconteceu. Precisa ser **posterior à abertura do processo** |
| `journeyId` | Sim | Identificador da jornada de coleta do seu lado, para você reencontrar o registro depois |
| `sourceIp` | Não | Endereço de onde o recebedor enviou os dados |
| `userAgent` | Não | Agente do cliente usado na coleta |
A data de coleta é validada contra o momento em que o processo abriu: dado coletado antes de o provedor pedir é, por definição, dado que já estava guardado. Um envio nessas condições é recusado com `400`.
A Malga guarda o que foi declarado. É esse registro que você apresenta caso o provedor audite a origem dos dados.
## O fluxo de ponta a ponta
O provedor abre o processo e a Malga publica `seller.registration_review.required` no seu webhook. Enquanto o processo continuar aberto, você recebe lembretes periódicos.
Consulte o processo e leia `requestedFields.fields`. Cada item traz o caminho do campo no vocabulário da Malga, o rótulo para exibir no formulário e, quando existe, o formato esperado.
Monte o formulário a partir dessa lista e apresente ao recebedor. Registre o momento e a jornada da coleta.
Faça o `POST` de envio com os dados coletados e a evidência da coleta. A resposta é `202`: a Malga aceitou a coleta e vai encaminhá-la ao provedor.
O resultado chega por webhook: `seller.registration_review.finished` quando o provedor confirma, ou `seller.registration_review.failed` quando recusa. Enquanto houver prazo, um envio recusado pode ser corrigido e reenviado.
## Consultar os processos abertos
```bash theme={null}
curl --location --request GET 'https://api.malga.io/v1/sellers/registration-reviews?status=pending,overdue' \
--header 'X-Client-Id: YOUR_CLIENT_ID' \
--header 'X-Api-Key: YOUR_API_KEY'
< HTTP/2 200
{
"items": [
{
"processId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"sellerId": "ea115e44-7048-11ed-a1eb-0242ac120002",
"provider": "ZOOP",
"providerId": "8f14e45f-ceea-467a-9e6f-6c1a5b3a1f2d",
"reviewType": "acp",
"status": "pending",
"deadlineAt": "2026-09-15T23:59:59.000Z",
"daysRemaining": 18,
"requestedFields": {
"raw": ["revenue", "owner.address.postal_code"],
"fields": [
{
"path": "revenue",
"type": "enum",
"required": true,
"providerField": "revenue",
"label": { "pt-br": "Faixa de faturamento", "en": "Revenue range" },
"allowedValues": ["10000_to_50000", "50000_to_100000", "100000_to_500000"]
},
{
"path": "owner.address.zipCode",
"type": "string",
"required": true,
"providerField": "owner.address.postal_code",
"label": { "pt-br": "CEP", "en": "Postal code" },
"format": { "pt-br": "8 dígitos, sem pontuação", "en": "8 digits, no punctuation" },
"pattern": "^[0-9]{8}$"
}
]
},
"requestedFieldsPending": false,
"createdAt": "2026-08-28T13:04:11.320Z"
}
],
"meta": {
"totalItems": 1,
"itemCount": 1,
"itemsPerPage": 100,
"totalPages": 1,
"currentPage": 1
}
}
```
Para restringir a um recebedor, use `GET /v1/sellers/{sellerId}/registration-reviews`. Um recebedor com mais de um vínculo ao provedor recebe um item por vínculo, distinguidos pelo campo `providerId`.
### A lista de campos
O bloco `requestedFields` traduz para o vocabulário da Malga o que o provedor pediu no vocabulário dele. Você lê `fields` e ignora `raw`, que existe apenas para rastrear a origem de cada item.
Vale conhecer três detalhes da lista:
* **Um item de `raw` pode virar dois em `fields`.** O endereço é o caso típico: onde o provedor pede um campo só, a Malga separa logradouro e número. Os dois aparecem em `fields` e você coleta os dois; a junção acontece na borda.
* **`pattern` é a mesma expressão que valida o envio.** Se o seu formulário validar por ela, o envio não é recusado por formato.
* **`allowedValues` é informativo.** Um valor fora da lista não é recusado pela Malga, porque o provedor pode aceitar opções que ainda não publicou.
Enquanto o provedor não informa o que pedir, `requestedFields` vem ausente e `requestedFieldsPending` vem `true` — com o prazo já correndo. Nessa situação não há o que coletar ainda, e um envio é recusado com `409`.
## Enviar os dados coletados
O bloco `data` deve conter **exatamente** os campos listados em `requestedFields.fields`: nem um a menos, nem um que não tenha sido pedido. Os caminhos seguem o formato de `path`, aninhados.
```bash theme={null}
curl --location --request POST 'https://api.malga.io/v1/sellers/ea115e44-7048-11ed-a1eb-0242ac120002/registration-reviews/3fa85f64-5717-4562-b3fc-2c963f66afa6/submit' \
--header 'X-Client-Id: YOUR_CLIENT_ID' \
--header 'X-Api-Key: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"collection": {
"channel": "in_app",
"collectedAt": "2026-08-28T14:20:00.000Z",
"journeyId": "jr_8f14e45fceea",
"sourceIp": "200.150.10.22",
"userAgent": "Mozilla/5.0"
},
"data": {
"revenue": "10000_to_50000",
"owner": {
"address": {
"zipCode": "01310200"
}
}
}
}'
< HTTP/2 202
```
A resposta `202` significa que a Malga aceitou a coleta, e não que o provedor já a confirmou. O envio ao provedor acontece em segundo plano, justamente para que uma indisponibilidade do lado dele não vire um erro na sua chamada. Acompanhe o desfecho pelos webhooks ou pela listagem.
### Erros de envio
Todos os problemas encontrados vêm juntos em `error.details`, e não um por vez. Isso é deliberado: a coleta já foi feita com o recebedor, e descobrir um campo errado por tentativa significaria voltar até ele várias vezes, com o prazo cada vez menor.
| Código | `error.key` | Causa |
| - | - | - |
| `400` | `invalid_registration_review_payload` | O `data` não corresponde à lista de campos: falta um, sobra um que não foi pedido, ou o formato não bate |
| `400` | — | A evidência de coleta está incompleta, ou a data de coleta é anterior à abertura do processo |
| `404` | `registration_review_not_found` | O processo não existe para esse recebedor |
| `409` | `invalid_registration_review_transition` | O processo está em uma situação que não aceita envio, por exemplo já encerrado |
| `409` | `registration_review_fields_unavailable` | A lista de campos do processo ainda não está utilizável |
Exemplo de recusa por campos fora da lista:
```json theme={null}
{
"error": {
"type": "bad_request",
"code": 400,
"key": "invalid_registration_review_payload",
"details": [
"missing requested field: owner.address.zipCode",
"field not requested by the provider: business.email"
]
}
}
```
## Situações do processo
| Status | Descrição |
| - | - |
| **pending** | Dentro da fase inicial, apenas na revisão periódica |
| **overdue** | Em cobrança ativa — na periódica após a fase inicial, na inconsistência desde o início |
| **submitting** | Coleta recebida, envio ao provedor em curso |
| **submit\_failed** | Envio recusado ou falho, aguardando correção ou nova tentativa |
| **expired** | Prazo vencido. O envio continua sendo aceito, e continua sendo o melhor caminho |
| **finished** | O provedor confirmou o recebimento |
| **canceled** | Processo invalidado, por exemplo com a remoção do recebedor |
| **unmatched** | A Malga não conseguiu identificar a qual recebedor o processo se refere. É um incidente operacional, tratado pelo nosso time, com o prazo correndo |
Um processo `expired` não é um processo perdido. O envio continua sendo aceito, e segue sendo a única ação que reduz a exposição do recebedor ao bloqueio.
## Prazos e lembretes
O prazo é definido pelo provedor e chega no campo `deadlineAt`. O campo `daysRemaining` traz os dias inteiros que faltam, e fica negativo depois que o prazo passa.
Enquanto o processo continuar aberto, a Malga o lembra por webhook em uma cadência que aperta conforme o prazo se aproxima:
| Tempo até o prazo | Intervalo entre lembretes |
| - | - |
| Mais de 30 dias | A cada 7 dias |
| Entre 8 e 30 dias | A cada 3 dias |
| 7 dias ou menos | Diário |
| Prazo vencido | A cada 7 dias |
## Eventos de webhook
Os seis eventos do processo viajam pelo mesmo webhook em que você já recebe `seller.active` e `seller.inactive`. Veja o payload e a lista completa em [Webhooks](/documentations/webhooks/webhook1-1#seller).
Criação, edição e status dos recebedores usados no Split.
Payload, eventos e configuração das notificações.
# Cadastrar e gerenciar recebedores (sellers) para Split
Source: https://docs.malga.io/documentations/split/seller
Cadastre recebedores (sellers) vinculados a um merchantId para uso em splitRules de cobranças e sessões nos provedores suportados pela Malga.
Para a utilização do **Split** na cobrança ou em **sessões com split**, utilizamos o serviço de **Sellers**
para cadastrar recebedores e política de recebimento nos provedores suportados pela Malga.
É necessário cadastrar previamente os recebedores associados à sua subconta (**merchant**) antes de referenciá-los em `splitRules` — tanto em `POST /v1/charges` quanto em `POST /v1/sessions`. Na sessão, a existência dos sellers é validada na criação; na captura da cobrança, o fluxo de transações efetiva o vínculo com o provedor de acordo com o estado do recebedor.
Todo recebedor deve estar vinculado a um **`merchantId`** válido. A listagem de sellers sem merchant e o **split agnóstico** foram descontinuados. Veja os detalhes na [release de jun/2026](/release-notes/2026-06-12-Release-Notes).
**Precedência das regras de split:** as regras de responsabilidade por taxas e chargebacks definidas no momento da transação (via API ou Link de Pagamento) sempre terão prioridade sobre as regras configuradas aqui, no cadastro do recebedor.
## Status de recebedor
A criação de um Seller nos provedores ocorre de forma assíncrona, e além disso não é realizada de forma imediata, uma vez que critérios precisam ser analisados, assim como uma transação financeira.
Para ser notificado sobre atualizações nesse processo, utilize os [webhooks](/documentations/webhooks/webhook1-1#seller).
Os status possíveis para um seller são:
| Status | Descrição |
| - | - |
| **pending** | Informações recebidas e pendentes de validação no provedor |
| **active** | Recebedor ativo para transações e saque dos valores |
| **partial** | Apenas parte dos provedores está ativa para o recebedor |
| **inactive** | Recebedor não pode transacionar nem sacar valores |
| **blocked** | Recebedor bloqueado |
## Provedores suportados
Veja os provedores que suportam criação de `Sellers` na nossa [tabela de provedores e meios de pagamento suportados](/documentations/type-tables/payment-methods-by-providers).
## Exemplo de criação de recebedor
Caso precise cadastrar um recebedor do tipo **pessoa física**, utilize a propriedade **owner**:
```bash theme={null}
curl --location --request POST 'https://api.malga.io/v1/sellers' \
--header 'X-Client-Id: ' \
--header 'X-Api-Key: ' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchantId": "b1612460-0fef-447d-9590-97825cf60cf6",
"owner": {
"name": "Seller",
"email": "seller@email.com",
"phoneNumber": "85988350264",
"birthdate": "1995-01-27",
"document": {
"type": "cpf",
"number": "36243319067",
"country": "BR"
},
"address": {
"street": "Rua Nova Lua",
"streetNumber": "30",
"complement": "apto 208 bloco c",
"zipCode": "61000-320",
"country": "BR",
"state": "CE",
"city": "Maracanaú",
"district": "AB"
},
"businessCategory": "OTHER_SERVICES"
},
"mcc": 1,
"bankAccount": {
"holderName": "Seller name",
"holderDocument": "36243319067",
"bank": "077",
"branchNumber": "492",
"branchCheckDigit": "1",
"accountNumber": "4929",
"accountCheckDigit": "22",
"type": "conta_corrente"
},
"metadata": {[
"key": "768093",
"value": "informação adicional"
]},
"transferPolicy": {
"transferDay": 5,
"transferEnabled": true,
"transferInterval": "weekly",
"automaticAnticipationEnabled": false,
"anticipatableVolumePercentage": "",
"automaticAnticipationType": "",
"automaticAnticipationDays": "",
"automaticAnticipation1025Delay": ""
}
}'
< HTTP/2 201
{
"id": "19d05a45-0e92-478e-8366-955231bcf3d6",
"providers": [],
"merchantId": "b1612460-0fef-447d-9590-97825cf60cf6",
"clientId": "e234eeb3-483d-4df2-87eb-1e2be5cdaccd",
"metadata": null,
"owner": {
"id": "1ae4bc8a-f8b2-4050-bc32-a90534a803c1",
"updatedAt": "2023-07-11T22:06:14.078Z",
"createdAt": "2023-07-11T22:06:14.078Z",
"name": "Seller",
"email": "seller@email.com",
"phoneNumber": "85988350264",
"birthdate": "1995-01-27T02:00:00.000Z",
"address": {
"country": "BR",
"id": "ecccaa6c-63ac-4edf-8f5e-897f4cd56f76",
"updatedAt": "2023-07-11T22:06:14.080Z",
"createdAt": "2023-07-11T22:06:14.080Z",
"street": "Rua Nova Lua",
"streetNumber": "30",
"complement": "apto 208 bloco c",
"zipCode": "61000-320",
"state": "CE",
"city": "Maracanaú",
"district": "AB",
}
"document": {
"country": "BR",
"id": "afcb459f-168c-4b74-a2cc-85b1756cb97f",
"updatedAt": "2022-12-21T23:10:13.334Z",
"createdAt": "2022-12-21T23:10:13.334Z",
"type": "cpf",
"number": "36243319067"
}
},
"business": null,
"bankAccount": {
"id": "924ab8c7-df93-465b-97e3-c211c75a3e6e",
"updateAT": "2023-02-28T18:00:00.573Z",
"createdAt": "2023-02-28T18:00:00.573Z",
"holderName": "Seller name",
"holderDocument": "36243319067",
"bank": "077",
"branchNumber": "492",
"branchCheckDigit": "1",
"accountNumber": "4929",
"accountCheckDigit": "22",
"type": "conta_corrente"
},
"transferPolicy": {
"id": "6d76b361-a9a8-4e26-865e-d1c790ad5c72",
"updatedAt": "2023-07-05T18:55:29.809Z",
"createdAt": "2023-07-05T18:55:29.809Z",
"transferDay": 5,
"transferEnabled": true,
"transferInterval": "weekly",
"automaticAnticipationEnabled": false,
"anticipatableVolumePercentage": null,
"automaticAnticipationType": null,
"automaticAnticipationDays": null,
"automaticAnticipation1025Delay": null
},
"mcc": 1,
"status": "active"
}
```
## Identificador do banco: `bank` e `ispb`
A `bankAccount` aceita dois identificadores da instituição financeira:
* **`bank`** — código **COMPE** de 3 dígitos do banco (ex.: `077` para Banco Inter). Consulte a [tabela de códigos COMPE dos principais bancos](/documentations/type-tables/main-banks).
* **`ispb`** — identificador **ISPB** da instituição no Sistema de Pagamentos Brasileiro, com 8 dígitos numéricos. A relação canônica de ISPBs é publicada pelo Banco Central (BCB).
Regras de uso:
* **Pelo menos um obrigatório.** Na criação (`POST /v1/sellers`), envie `bank`, `ispb` ou ambos — não vale omitir os dois.
* **`ispb` tem precedência.** Quando os dois forem enviados, o roteamento downstream usa o `ispb`; o `bank` permanece aceito como fallback/auxiliar.
* **Semântica PATCH.** Em `PATCH /v1/sellers/{id}`, omitir a chave preserva o valor persistido; enviar `null` em um dos identificadores limpa aquele valor. A invariante "ao menos um identificador" é validada considerando o estado mesclado (payload + persistido).
* **Erro.** Se o merge final ficar sem `bank` e sem `ispb`, a API responde `400` com `error.key = bank_identifier_required`.
### Exemplo de criação identificando o banco apenas por `ispb`
```bash theme={null}
curl --location --request POST 'https://api.malga.io/v1/sellers' \
--header 'X-Client-Id: YOUR_CLIENT_ID' \
--header 'X-Api-Key: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchantId": "b1612460-0fef-447d-9590-97825cf60cf6",
"owner": {
"name": "Seller",
"email": "seller@email.com",
"phoneNumber": "85988350264",
"birthdate": "1995-01-27",
"document": {
"type": "cpf",
"number": "36243319067",
"country": "BR"
},
"address": {
"street": "Rua Nova Lua",
"streetNumber": "30",
"complement": "apto 208 bloco c",
"zipCode": "61000-320",
"country": "BR",
"state": "CE",
"city": "Maracanaú",
"district": "AB"
},
"businessCategory": "OTHER_SERVICES"
},
"mcc": 1,
"bankAccount": {
"holderName": "Seller name",
"holderDocument": "36243319067",
"ispb": "60746948",
"branchNumber": "492",
"branchCheckDigit": "1",
"accountNumber": "4929",
"accountCheckDigit": "22",
"type": "conta_corrente"
}
}'
```
### Exemplo de PATCH trocando `bank` por `ispb`
A troca é aceita porque o estado mesclado mantém ao menos um identificador (`ispb`):
```bash theme={null}
curl --location --request PATCH 'https://api.malga.io/v1/sellers/19d05a45-0e92-478e-8366-955231bcf3d6' \
--header 'X-Client-Id: YOUR_CLIENT_ID' \
--header 'X-Api-Key: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"bankAccount": {
"bank": null,
"ispb": "60746948"
}
}'
```
Caso precise cadastrar um recebedor do tipo **pessoa jurídica**, utilize as propriedades **owner** e **business**:
```bash theme={null}
curl --location --request POST 'https://api.malga.io/v1/sellers' \
--header 'X-Client-Id: ' \
--header 'X-Api-Key: ' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchantId": "b1612460-0fef-447d-9590-97825cf60cf6",
"owner": {
"name": "Seller",
"email": "seller@email.com",
"phoneNumber": "85988350264",
"birthdate": "1995-01-27",
"document": {
"type": "cpf",
"number": "36243319067",
"country": "BR"
},
"address": {
"street": "Rua Nova Lua",
"streetNumber": "30",
"complement": "casa 4",
"zipCode": "61000-320",
"country": "BR",
"state": "CE",
"city": "Maracanaú",
"district": "AB"
},
"businessCategory": "OTHER_SERVICES"
},
"business": {
"name": "Seller business",
"corporateReason": "Company social reason",
"phoneNumber": "85988350264",
"email": "sellerbusiness@email.com",
"website": "www.sellerbusiness.com.br",
"description": "Seller business",
"facebook": "facebook Seller business",
"twitter": "twitter Seller business",
"openingDate": "1995-01-27",
"address": {
"street": "Rua Nova Lua",
"streetNumber": "30",
"complement": "sala 100",
"zipCode": "61000-320",
"country": "BR",
"state": "CE",
"city": "Maracanaú",
"district": "AB"
},
"document": {
"type": "cnpj",
"number": "94938591000196",
"country": "BR"
}
},
"mcc": 4040,
"bankAccount": {
"holderName": "Seller name",
"holderDocument": "36243319067",
"bank": "077",
"branchNumber": "492",
"branchCheckDigit": "1",
"accountNumber": "4929",
"accountCheckDigit": "22",
"type": "conta_corrente"
},
"transferPolicy": {
"transferDay": 5,
"transferEnabled": true,
"transferInterval": "weekly",
"automaticAnticipationEnabled": false,
"anticipatableVolumePercentage": "",
"automaticAnticipationType": "",
"automaticAnticipationDays": "",
"automaticAnticipation1025Delay": ""
}
}'
< HTTP/2 201
< content-type: application/json; charset=utf-8
{
"id": "19d05a45-0e92-478e-8366-955231bcf3d6",
"providers": []
"merchantId": "b1612460-0fef-447d-9590-97825cf60cf6",
"clientid": "e234eeb3-483d-4df2-87eb-1e2be5cdaccd",
"metadata": null,
"owner": {
"id": "8231ba21-3758-4bd7-b664-5b5fdeda37a0",
"updatedAt": "2023-07-11T23:02:51.581Z",
"createdAt": "2023-07-11T23:02:51.581Z",
"name": "Seller",
"email": "seller@email.com",
"phoneNumber": "85988350264",
"birthdate": "1995-01-27T02:00:00.000Z",
"address": {
"country": "BR",
"id": "883631f0-fea0-4682-ae1a-f4ac6349e0d9",
"updatedAt": "2023-07-11T23:02:51.585Z",
"createdAt": "2023-07-11T23:02:51.585Z",
"street": "Rua Nova Lua",
"streetNumber": "30",
"complement": "casa 4",
"zipCode": "61000-320",
"state": "CE",
"city": "Maracanaú",
"district": "AB"
},
"document": {
"country": "BR",
"id": "32543bbe-42c1-4000-9b68-d01a2735708e",
"updatedAt": "2023-07-11T23:02:51.588Z",
"createdAt": "2023-07-11T23:02:51.588Z",
"type": "cpf",
"number": "36243319067"
},
},
"business": {
"id": "607bb56a-974a-4d1d-9f56-cda865dfafbd",
"updatedAt": "2023-07-11T23:02:51.571Z",
"createdAt": "2023-07-11T23:02:51.571Z",
"name": "Seller business",
"corporateReason": "Company social reason",
"phoneNumber": "85988350264",
"email": "seller@email.com",
"website": "www.sellerbusiness.com.br",
"description": "Seller business",
"facebook": "facebook Seller business",
"twitter": "twitter Seller business",
"openingDate": "1995-01-27",
"address": {
"country": "BR",
"id": "b681dd2e-ebdb-4fad-8c8b-e703a17825ce",
"updatedAt": "2023-07-11T23:02:51.574Z",
"createdAt": "2023-07-11T23:02:51.574Z",
"street": "Rua Nova Lua",
"streetNumber": "30",
"complement": "sala 100",
"zipCode": "61000-320",
"state": "CE",
"city": "Maracanaú",
"district": "AB"
},
"document": {
"country": "BR",
"id": "b9380f2c-a657-4f47-a7da-21f3bf08182c",
"updatedAt": "2023-07-11T23:02:51.578Z",
"createdAt": "2023-07-11T23:02:51.578Z",
"type": "cnpj",
"number": "94938591000196"
}
},
"bankAccount": {
"id": "f7ac3221-8f69-4276-b88b-34ddbe5ec24a",
"updatedAt": "2023-07-11T23:02:51.563Z",
"createdAt": "2023-07-11T23:02:51.563Z",
"holderName": "Seller name",
"holderDocument": "36243319067",
"bank": "077",
"branchNumber": "492",
"branchCheckDigit": "1",
"accountNumber": "4929",
"accountCheckDigit": "22",
"type": "conta_corrente"
},
"transferPolicy": {
"id": "a04bca24-f7d1-4cb5-acce-41f12680e5bf",
"updatedAt": "2023-07-11T23:02:51.567Z",
"createdAt": "2023-07-11T23:02:51.567Z",
"transferDay": "5",
"transferEnabled": true,
"transferInterval": "weekly",
"automaticAnticipationEnabled": false,
"anticipatableVolumePercentage": "",
"automaticAnticipationType": "",
"automaticAnticipationDays": "",
"automaticAnticipation1025Delay": ""
},
"mcc": 1,
"status": "active"
}
```
Consulte a [tabela de códigos COMPE dos principais bancos](/documentations/type-tables/main-banks) para preencher `bankAccount.bank`. Como alternativa, o campo `bankAccount.ispb` pode ser usado para identificar a instituição financeira pelo código publicado pelo Banco Central (BCB).
## Busca de recebedor pelo ID
```bash theme={null}
curl --location --request GET 'https://api.malga.io/v1/sellers/19d05a45-0e92-478e-8366-955231bcf3d6' \
--header 'X-Client-Id: ' \
--header 'X-Api-Key: ' \
--header 'Content-Type: application/json'
< HTTP/2 201
{
"id": "19d05a45-0e92-478e-8366-955231bcf3d6",
"providers": {
"providerType": "SANDBOX",
"externalId": "1966811",
"externalStatus": "active",
"externalStatusReason": "ok",
"status": "pending",
"createdAt": "2022-12-21T23:10:13.498Z",
"updatedAt": "2022-12-21T20:10:13.951Z"
}
"merchantId": "b1612460-0fef-447d-9590-97825cf60cf6",
"clientid": "e234eeb3-483d-4df2-87eb-1e2be5cdaccd",
"metadata": null,
"owner": {
"id": "4fece86f-dd81-4115-ac55-efe6a6825a35",
"updatedAt": "2023-07-11T23:16:10.101Z",
"createdAt": "2023-07-11T23:16:10.101Z",
"name": "Seller",
"email": "seller@email.com",
"phoneNumber": "85988350264",
"birthdate": "1995-01-27",
"address": {
"country": "BR",
"id": "547a525b-cf08-4345-b4a5-4fca0f831a62",
"updatedAt": "2023-07-11T23:16:10.103Z",
"createdAt": "2023-07-11T23:16:10.103Z",
"street": "Rua Nova Lua",
"streetNumber": "30",
"complement": "casa 4",
"zipCode": "61000-320",
"state": "CE",
"city": "Maracanaú",
"district": "AB"
},
"document": {
"country": "BR",
"id": "babc1412-24c2-4c74-9791-3cd8b6926bcb",
"updatedAt": "2023-07-11T23:16:10.105Z",
"createdAt": "2023-07-11T23:16:10.105Z",
"type": "cpf",
"number": "36243319067"
},
"businessCategory": "OTHER_SERVICES"
},
"business": {
"id": "cdbeb363-0729-4271-b116-f4aee5282227",
"updatedAt": "2023-07-11T23:16:10.094Z",
"createdAt": "2023-07-11T23:16:10.094Z",
"name": "Seller business",
"corporateReason": "Company social reason",
"phoneNumber": "85988350264",
"email": "sellerbusiness@email.com",
"website": "www.sellerbusiness.com.br",
"description": "Seller business",
"facebook": "facebook Seller business",
"twitter": "twitter Seller business",
"openingDate": "1995-01-27",
"address": {
"country": "BR",
"id": "ee658a16-1b54-43ba-8ee1-1b84e3df5bd0",
"updatedAt": "2023-07-11T23:16:10.096Z",
"createdAt": "2023-07-11T23:16:10.096Z",
"street": "Rua Nova Lua",
"streetNumber": "30",
"complement": "sala 100",
"zipCode": "61000-320",
"state": "CE",
"city": "Maracanaú",
"district": "AB"
},
"document": {
"country": "BR",
"id": "f5ca5122-4479-44c1-9cad-08216df8c61e",
"updatedAt": "2023-07-11T23:16:10.099Z",
"createdAt": "2023-07-11T23:16:10.099Z",
"type": "cnpj",
"number": "94938591000196"
}
},
"bankAccount": {
"id": "a147a4fe-0e07-44e8-a58e-52806d5b72b3",
"updatedAt": "2023-07-11T23:16:10.089Z",
"createdAt": "2023-07-11T23:16:10.089Z",
"holderName": "Seller name",
"holderDocument": "36243319067",
"bank": "077",
"branchNumber": "492",
"branchCheckDigit": "1",
"accountNumber": "4929",
"accountCheckDigit": "22",
"type": "conta_corrente"
},
"transferPolicy": {
"id": "eb896600-df76-4655-ab3f-8be651659e68",
"updatedAt": "2023-07-11T23:16:10.092Z",
"createdAt": "2023-07-11T23:16:10.092Z",
"transferDay": "5",
"transferEnabled": true,
"transferInterval": "weekly",
"automaticAnticipationEnabled": false,
"anticipatableVolumePercentage": "",
"automaticAnticipationType": "",
"automaticAnticipationDays": "",
"automaticAnticipation1025Delay": ""
},
"mcc": 1,
"status": "active"
}
```
## Edição de um recebedor
A atualização é **parcial**: envie apenas os campos que deseja alterar. Campos omitidos permanecem inalterados.
Para recebedores do tipo **pessoa física**, utilize a propriedade **owner**. Para **pessoa jurídica**, utilize **owner** e **business** conforme necessário.
```bash theme={null}
curl --location --request PATCH 'https://api.malga.io/v1/sellers/b1612460-0fef-447d-9590-97825cf60cf6' \
--header 'X-Client-Id: ' \
--header 'X-Api-Key: ' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchantId": "b1612460-0fef-447d-9590-97825cf60cf6",
"owner": {
"name": "Seller",
"email": "seller@email.com",
"phoneNumber": "85988350264",
"birthdate": "1995-01-27",
"document": {
"type": "cpf",
"number": "36243319067",
"country": "BR"
},
"address": {
"street": "Rua Nova Lua",
"streetNumber": "30",
"complement": "apto 208 bloco c",
"zipCode": "61000-320",
"country": "BR",
"state": "CE",
"city": "Maracanaú",
"district": "AB"
},
"businessCategory": "OTHER_SERVICES"
},
"mcc": 1,
"bankAccount": {
"holderName": "Seller name",
"holderDocument": "36243319067",
"bank": "077",
"branchNumber": "492",
"branchCheckDigit": "1",
"accountNumber": "4929",
"accountCheckDigit": "22",
"type": "conta_corrente"
},
"metadata": {[
"key": "768093",
"value": "informação adicional"
]},
"transferPolicy": {
"transferDay": 5,
"transferEnabled": true,
"transferInterval": "weekly",
"automaticAnticipationEnabled": false,
"anticipatableVolumePercentage": "",
"automaticAnticipationType": "",
"automaticAnticipationDays": "",
"automaticAnticipation1025Delay": ""
}
}'
```
## Exclusão de um recebedor
```bash theme={null}
curl --location --request DELETE 'https://api.malga.io/v1/sellers/6fa25050-4813-4209-9faa-4170a75dd8d7' \
--header 'X-Client-Id: ' \
--header 'X-Api-Key: ' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchantId": "46b433bf-79aa-4cb1-9eaa-cdaea42cb955"
}'
```
# Cobrança com Split
Source: https://docs.malga.io/documentations/split/split
Configure split em cobranças diretas via POST /v1/charges enviando splitRules no corpo da requisição para repasse automático entre recebedores.
O **Split de pagamentos** foi criado com o objetivo de fazer o repasse automático dos valores de uma transação entre diversos recebedores com as regras estabelecidas pelo cliente Malga.
Esta página descreve o fluxo de **cobrança direta**: `POST /v1/charges` com **`splitRules` no corpo**. Para **sessão ou link de pagamento**, o split é configurado **na criação da sessão** e **não** vai no corpo do pagamento da sessão — veja [Split em sessão ou link de pagamento](/documentations/split/split-em-sessao-link).
## Criando uma cobrança com Split
Uma configuração de Split contém uma ou mais regras que definem taxas de comissão e condições, de acordo com a política comercial acordada entre a loja e o recebedor.
Para criar uma transação com split, basta adicionar o campo **splitRules** que representará as regras daquela cobrança, dentro do corpo da requisição da [criação de uma transação](/api-reference/charges/realizar-nova-cobranca).
### Regras de split
Cada regra (**splitRules**) em uma configuração dividida deve ter:
* **Identificador do destinatário (sellerId)**: O valor de ID dentro de **splitRules** deve ser correspondente ao ID gerado na [criação de seller](/api-reference/sellers/criacao-de-um-novo-recebedor).
* **Porcentagem (percentage)**: porcentagem do valor da transação original que será enviada ao destinatário
* **Valor (amount)**: valor que será enviado ao destinatário
* **Sinalizador de taxa de processamento (processingFee)**: o destinatário será cobrado pelas taxas de processamento, que serão descontadas de seu saldo, definido como falso para desconto do marketplace
* **Responsabilidade por reembolso (liable)** : o destinatário será responsável pelo reembolso (charge\_back), que será descontado de seu saldo, definido como falso para desconto do marketplace.
* **Tarifas (fares)** : o destinatário será responsável pelas tarifas, que serão descontadas de seu saldo, definido como falso para desconto do marketplace.
* **mdr (Merchant Discount Rate)**: percentual a ser descontado do valor de uma transação, definido por produto (crédito/débito/boleto), bandeira e faixa de parcelamento.
* **Tarifa fixa (fee)**: também chamada de fee transacional. Valor em centavos a ser cobrado por transação capturada. É descontado no momento da “montagem” da agenda financeira
- Não é possível realizar uma transação com split misto, isto é, utilizando as duas regras de divisão: porcentagem e valor;
- A informação de tarifas (mdr e fee) é específica para transações no provedor Braspag.
**Precedência das regras de split:** se você definir regras de responsabilidade (taxas/chargeback) diretamente na transação (no campo `splitRules`), elas terão prioridade sobre as regras configuradas no cadastro do recebedor (seller). Isso garante flexibilidade para cenários específicos de venda.
### Exemplo de cobrança com Split aprovado usando o campo percentage
```bash theme={null}
curl -X POST 'https://api.malga.io/v1/charges' \
--header 'X-Client-Id: ' \
--header 'X-Api-Key: ' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchantId": "7f8870a2-71c9-4ef0-a531-82000e00b7e1",
"amount": 150,
"currency": "BRL",
"statementDescriptor": "Pedido #231 loja joão",
"capture": false,
"paymentMethod": {
"paymentType": "credit",
"installments": 1
},
"paymentSource": {
"sourceType": "card",
"card": {
"cardHolderName": "JOAO DA SILVA",
"cardNumber": "4929564637987814",
"cardCvv": "320",
"cardExpirationDate": "06/2028"
}
},
"splitRules": [{
"sellerId": "5323ece6-816d-11ed-a1eb-0242ac120002",
"percentage": 10,
"processingFee": true,
"liable": true
},
{
"sellerId": "616605b2-816f-11ed-a1eb-0242ac120002",
"percentage": 10,
"processingFee": false,
"liable": false,
}]
}'
< HTTP/2 201
{
"id": "3768a9bf-68fd-43e8-b7f6-e7d12ee22139",
"clientId": "",
"merchantId": "46b433bf-79aa-4cb1-9eaa-cdaea42cb955",
"description": null,
"orderId": null,
"createdAt": "2023-02-04T19:02:36.769Z",
"amount": 150,
"originalAmount": 150,
"currency": "BRL",
"statementDescriptor": "Pedido #231 loja joão",
"capture": false,
"isDispute": false,
"status": "authorized",
"paymentMethod": {
"installments": 1,
"paymentType": "credit"
},
"paymentSource": {
"sourceType": "card",
"cardId": "5afcdeb3-9e56-4dd9-bfee-e6b70c75b200"
},
"splitRules": [
{
"id": "214f1995-35f0-411f-9694-0cd56ef31db9",
"updatedAt": "2023-10-04T19:02:36.814Z",
"createdAt": "2023-10-04T19:02:36.814Z",
"sellerId": "5323ece6-816d-11ed-a1eb-0242ac120002",
"percentage": 10,
"amount": null,
"processingFee": true,
"liable": true,
"fareMdr": null,
"fareFee": null
},
{
"id": "e8444bb9-ba89-4cd7-808c-9c9a8dd8af4c",
"updatedAt": "2023-10-04T19:02:36.814Z",
"createdAt": "2023-10-04T19:02:36.814Z",
"sellerId": "616605b2-816f-11ed-a1eb-0242ac120002",
"percentage": 10,
"amount": null,
"processingFee": false,
"liable": false,
"fareMdr": null,
"fareFee": null
}
],
"transactionRequests": [
{
"id": "7adfc4c6-567a-4ce0-a9a3-a08a21beff7f",
"createdAt": "2023-10-04T19:02:37.106Z",
"updatedAt": "2023-10-04T19:02:37.205Z",
"idempotencyKey": "40efd5a0-1010-5c8d-9f75-0cd455553388",
"providerId": "c6686322-f27b-90b2-a61b-106e7a564087",
"providerType": "SANDBOX",
"transactionId": "eb80f69e-de28-5060-8daf-da0fecc3b18f",
"amount": 150,
"authorizationCode": "9301661",
"authorizationNsu": "4244270",
"requestStatus": "success",
"requestType": "authorization",
"responseTs": "62ms",
"providerAuthorization": {
"networkAuthorizationCode": "7909027",
"networkResponseCode": "8168918"
}
}
],
"appInfo": null
}
}
```
### Exemplo de cobrança com Split aprovado usando o campo amount
```bash theme={null}
curl -X POST 'https://api.malga.io/v1/charges' \
--header 'X-Client-Id: ' \
--header 'X-Api-Key: ' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchantId": "7f8870a2-71c9-4ef0-a531-82000e00b7e1",
"amount": 150,
"currency": "BRL",
"statementDescriptor": "Pedido #231 loja joão",
"capture": false,
"paymentMethod": {
"paymentType": "credit",
"installments": 1
},
"paymentSource": {
"sourceType": "card",
"card": {
"cardHolderName": "JOAO DA SILVA",
"cardNumber": "4929564637987814",
"cardCvv": "320",
"cardExpirationDate": "06/2028"
}
},
"splitRules": [{
"sellerId": "5323ece6-816d-11ed-a1eb-0242ac120002",
"amount": 50,
"processingFee": true,
"liable": true
},
{
"sellerId": "616605b2-816f-11ed-a1eb-0242ac120002",
"amount": 50,
"processingFee": false,
"liable": false,
}]
}'
< HTTP/2 201 {
"id": "3768a9bf-68fd-43e8-b7f6-e7d12ee22139",
"clientId": "",
"merchantId": "46b433bf-79aa-4cb1-9eaa-cdaea42cb955",
"description": null,
"orderId": null,
"createdAt": "2023-02-04T19:02:36.769Z",
"amount": 150,
"originalAmount": 150,
"currency": "BRL",
"statementDescriptor": "Pedido #231 loja joão",
"capture": false,
"isDispute": false,
"status": "authorized",
"paymentMethod": {
"installments": 1,
"paymentType": "credit"
},
"paymentSource": {
"sourceType": "card",
"cardId": "5afcdeb3-9e56-4dd9-bfee-e6b70c75b200"
},
"splitRules": [
{
"id": "214f1995-35f0-411f-9694-0cd56ef31db9",
"updatedAt": "2023-10-04T19:02:36.814Z",
"createdAt": "2023-10-04T19:02:36.814Z",
"sellerId": "5323ece6-816d-11ed-a1eb-0242ac120002",
"percentage": null,
"amount": 50,
"processingFee": true,
"liable": true,
"fareMdr": null,
"fareFee": null
},
{
"id": "e8444bb9-ba89-4cd7-808c-9c9a8dd8af4c",
"updatedAt": "2023-10-04T19:02:36.814Z",
"createdAt": "2023-10-04T19:02:36.814Z",
"sellerId": "616605b2-816f-11ed-a1eb-0242ac120002",
"percentage": null,
"amount": 50,
"processingFee": false,
"liable": false,
"fareMdr": null,
"fareFee": null
}
],
"transactionRequests": [
{
"id": "7adfc4c6-567a-4ce0-a9a3-a08a21beff7f",
"createdAt": "2023-10-04T19:02:37.106Z",
"updatedAt": "2023-10-04T19:02:37.205Z",
"idempotencyKey": "40efd5a0-1010-5c8d-9f75-0cd455553388",
"providerId": "c6686322-f27b-90b2-a61b-106e7a564087",
"providerType": "SANDBOX",
"transactionId": "eb80f69e-de28-5060-8daf-da0fecc3b18f",
"amount": 150,
"authorizationCode": "9301661",
"authorizationNsu": "4244270",
"requestStatus": "success",
"requestType": "authorization",
"responseTs": "62ms",
"providerAuthorization": {
"networkAuthorizationCode": "7909027",
"networkResponseCode": "8168918"
}
}
],
"appInfo": null
}
}
```
### Exemplo de cobrança com Split aprovado usando o campo de tarifa
```bash theme={null}
curl -X POST 'https://api.malga.io/v1/charges' \
--header 'X-Client-Id: ' \
--header 'X-Api-Key: ' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchantId": "7f8870a2-71c9-4ef0-a531-82000e00b7e1",
"amount": 150,
"currency": "BRL",
"statementDescriptor": "Pedido #231 loja joão",
"capture": false,
"paymentMethod": {
"paymentType": "credit",
"installments": 1
},
"paymentSource": {
"sourceType": "card",
"card": {
"cardHolderName": "JOAO DA SILVA",
"cardNumber": "4929564637987814",
"cardCvv": "320",
"cardExpirationDate": "06/2028"
}
},
"splitRules": [{
"sellerId": "5323ece6-816d-11ed-a1eb-0242ac120002",
"amount": 50,
"processingFee": true,
"liable": true,
"fares": {
"mdr": 2,
"fee": 100
}
},
{
"sellerId": "616605b2-816f-11ed-a1eb-0242ac120002",
"amount": 50,
"processingFee": false,
"liable": false,
"fares": {
"mdr": 2,
"fee": 100
}
}]
}'
< HTTP/2 201 {
"id": "3768a9bf-68fd-43e8-b7f6-e7d12ee22139",
"clientId": "",
"merchantId": "46b433bf-79aa-4cb1-9eaa-cdaea42cb955",
"description": null,
"orderId": null,
"createdAt": "2023-02-04T19:02:36.769Z",
"amount": 150,
"originalAmount": 150,
"currency": "BRL",
"statementDescriptor": "Pedido #231 loja joão",
"capture": false,
"isDispute": false,
"status": "authorized",
"paymentMethod": {
"installments": 1,
"paymentType": "credit"
},
"paymentSource": {
"sourceType": "card",
"cardId": "5afcdeb3-9e56-4dd9-bfee-e6b70c75b200"
},
"splitRules": [
{
"id": "214f1995-35f0-411f-9694-0cd56ef31db9",
"updatedAt": "2023-10-04T19:02:36.814Z",
"createdAt": "2023-10-04T19:02:36.814Z",
"sellerId": "5323ece6-816d-11ed-a1eb-0242ac120002",
"percentage": null,
"amount": 50,
"processingFee": true,
"liable": true,
"fareMdr": "2.00",
"fareFee": 100
},
{
"id": "e8444bb9-ba89-4cd7-808c-9c9a8dd8af4c",
"updatedAt": "2023-10-04T19:02:36.814Z",
"createdAt": "2023-10-04T19:02:36.814Z",
"sellerId": "616605b2-816f-11ed-a1eb-0242ac120002",
"percentage": null,
"amount": 50,
"processingFee": false,
"liable": false,
"fareMdr": "2.00",
"fareFee": 100
}
],
"transactionRequests": [
{
"id": "7adfc4c6-567a-4ce0-a9a3-a08a21beff7f",
"createdAt": "2023-10-04T19:02:37.106Z",
"updatedAt": "2023-10-04T19:02:37.205Z",
"idempotencyKey": "40efd5a0-1010-5c8d-9f75-0cd455553388",
"providerId": "c6686322-f27b-90b2-a61b-106e7a564087",
"providerType": "SANDBOX",
"transactionId": "eb80f69e-de28-5060-8daf-da0fecc3b18f",
"amount": 150,
"authorizationCode": "9301661",
"authorizationNsu": "4244270",
"requestStatus": "success",
"requestType": "authorization",
"responseTs": "62ms",
"providerAuthorization": {
"networkAuthorizationCode": "7909027",
"networkResponseCode": "8168918"
}
}
],
"appInfo": null
}
}
```
## Estorno Total ou Parcial
É possível realizar um estorno no valor total ou parcial da cobrança com split. O indicador **payout eligible** (`isPayoutEligible`) foi descontinuado; use `splitRules` no void conforme documentado abaixo e não dependa desse campo. Saiba mais na [release de jun/2026](/release-notes/2026-06-12-Release-Notes).
Para um estorno parcial, é necessário determinar o valor a ser cancelado para cada participante da transação.
Esta informação deve ser inserida na [requisição de void](/api-reference/charges/estornar-cobranca-aprovada), adicionando o nó `splitRules` com os dados de `sellerId` e `amount` que se deseja estornar para o seller específico.
Para estorno total, não é necessário adicionar o nó de `splitRules`, basta enviar o valor total da transação.
O nó `splitRules` dentro da requisição de estorno contém:
* **Identificador do destinatário (sellerId)**: O valor de ID dentro de **splitRules** deve ser correspondente ao ID do seller para o qual se pretende fazer o estorno.
* **Valor (amount)**: valor que se pretende estornar
O somatório dos valores de estorno definidos para cada sellerId deve ser igual ao valor contido no campo amount que fica fora do nó de `splitRules`
### Exemplo de requisição com falha na especificação do amount
```bash theme={null}
curl -X POST 'https://api.malga.io/v1/charges/482b24a0-2165-4c67-a4c6-e2b74853e982/void' \
--header 'X-Client-Id: ' \
--header 'X-Api-Key: ' \
--header 'Content-Type: application/json' \
--data '{
"amount": 15,
"splitRules": [
{
"sellerId": "sellerId",
"amount": 12
},
{
"sellerId": "sellerId-2",
"amount": 5
}
]
}'
< HTTP/2 400
< content-type: application/json; charset=utf-8
{
"error": {
"type": "bad_request",
"code": 400,
"message": "Split sum amount must be equal to transaction amount"
}
}
```
### Exemplo de requisição de estorno parcial com Split
```bash theme={null}
curl -X POST 'https://api.malga.io/v1/charges/1feb14f6-9979-437b-8678-2989bf2cafc6/void' \
--header 'X-Client-Id: ' \
--header 'X-Api-Key: ' \
--header 'Content-Type: application/json' \
--data '{
"amount": 20,
"splitRules": [
{
"sellerId": "sellerId",
"amount": 10
},
{
"sellerId": "sellerId-2",
"amount": 10
}
]
}'
< HTTP/2 201
< content-type: application/json; charset=utf-8
{
"id": "b39d5e4c-f588-4106-9f62-52bced204c1d",
"clientId": "",
"merchantId": "",
"description": null,
"orderId": "orderId",
"providerReferenceKey": null,
"createdAt": "2024-06-18T18:33:46.801Z",
"amount": 980,
"originalAmount": 1000,
"currency": "BRL",
"statementDescriptor": "Descrição do Pedido",
"capture": true,
"isDispute": false,
"status": "authorized",
"responsibleProviderType": "SANDBOX",
"paymentMethod": {
"installments": 1,
"paymentType": "credit"
},
"paymentSource": {
"sourceType": "card",
"cardId": "ba771baa-653c-4071-a1db-19592d694b94"
},
"splitRules": [
{
"sellerId": "sellerId",
"amount": 500,
"processingFee": true,
"liable": true
},
{
"sellerId": "sellerId-2",
"amount": 500,
"processingFee": false,
"liable": false,
}
],
"transactionRequests": [
{
"id": "bac6b914-36a7-4722-829e-f60481688ddb",
"createdAt": "2024-06-18T18:33:47.096Z",
"updatedAt": "2024-06-18T18:33:47.250Z",
"idempotencyKey": "53daf149-8ea7-41d7-ad23-c148830f3392",
"providerId": "5ce68ed3-2213-423b-8eaf-9d8c4b40df2b",
"providerType": "SANDBOX",
"transactionId": "35cbc6d2-f506-4aab-8c0d-097479079297",
"amount": 20,
"authorizationCode": "3969942",
"authorizationNsu": "2052745",
"requestStatus": "success",
"requestType": "void",
"requestStatusReason": null,
"responseTs": "98ms",
"providerAuthorization": {
"networkAuthorizationCode": "4583340",
"networkResponseCode": "4953708"
},
"split": [
{
"amount": 10,
"sellerId": "sellerId"
},
{
"amount": 10,
"sellerId": "sellerId-2"
}
]
},
{
"id": "91c50b2f-c3b4-41c6-ac2b-fe36f1f5ed0d",
"createdAt": "2024-06-17T14:20:15.689Z",
"updatedAt": "2024-06-17T14:20:18.854Z",
"idempotencyKey": "37049fab-7347-4d0d-8265-c8fbd0e11309",
"providerId": "d2fc00be-c028-457f-a098-89547687922f",
"providerType": "SANDBOX",
"transactionId": "35cbc6d2-f506-4aab-8c0d-097479079297",
"amount": 1000,
"authorizationCode": "133937",
"authorizationNsu": "35cbc6d2-f506-4aab-8c0d-097479079297",
"requestStatus": "success",
"requestType": "authorization",
"requestStatusReason": null,
"responseTs": "3088ms",
"providerAuthorization": {
"networkAuthorizationCode": "133937",
"networkResponseCode": "00"
}
}
],
"appInfo": null
}
```
### Exemplo de requisição de estorno total de transação com split
```bash theme={null}
curl -X POST 'https://api.malga.io/v1/charges/692cc57b-fd3c-42e4-a7b6-867102ce2113/void' \
--header 'X-Client-Id: 0ce285e0-177d-432a-ad3e-350ca9f31050' \
--header 'X-Api-Key: 0fb5fcad-36c4-49a9-bcb1-a10a54e312dd' \
--header 'Content-Type: application/json' \
--data '{
"amount": 140
}'
< HTTP/2 201
< content-type: application/json; charset=utf-8
{
"id": "692cc57b-fd3c-42e4-a7b6-867102ce2113",
"clientId": "",
"merchantId": "",
"description": null,
"orderId": "orderId",
"providerReferenceKey": null,
"createdAt": "2024-06-21T14:58:00.522Z",
"amount": 0,
"originalAmount": 140,
"currency": "BRL",
"statementDescriptor": "Descrição do Pedido",
"capture": true,
"isDispute": false,
"status": "voided",
"responsibleProviderType": "BRASPAG",
"paymentMethod": {
"installments": 1,
"paymentType": "credit"
},
"paymentSource": {
"sourceType": "card",
"cardId": "23ef5c24-cc87-43af-9979-cd70b19faa1d"
},
"transactionRequests": [
{
"id": "4b7aa05f-1e00-4096-abbc-c54b62dcd183",
"createdAt": "2024-06-21T15:00:41.973Z",
"updatedAt": "2024-06-21T15:00:41.973Z",
"idempotencyKey": "8a9109fb-99d6-45df-b9f1-1eb377681c54",
"providerId": "1403b164-bef0-4d73-b741-9b877ff6884b",
"providerType": "BRASPAG",
"transactionId": "a6db2350-6ae6-42da-9271-a8f6b22c92a7",
"amount": 140,
"authorizationCode": "",
"authorizationNsu": null,
"requestStatus": "success",
"requestType": "void",
"requestStatusReason": null,
"responseTs": "3400ms",
"providerAuthorization": {
"networkAuthorizationCode": null,
"networkResponseCode": 0
}
},
{
"id": "dd481160-9305-43ed-bcef-7b2b209c4906",
"createdAt": "2024-06-21T14:58:00.663Z",
"updatedAt": "2024-06-21T14:58:04.512Z",
"idempotencyKey": "03b1b78f-21c0-4292-b0d0-31dbf9df83a3",
"providerId": "1403b164-bef0-4d73-b741-9b877ff6884b",
"providerType": "BRASPAG",
"transactionId": "a6db2350-6ae6-42da-9271-a8f6b22c92a7",
"amount": 140,
"authorizationCode": "040535",
"authorizationNsu": "462906",
"requestStatus": "success",
"requestType": "authorization",
"requestStatusReason": null,
"responseTs": "3823ms",
"providerAuthorization": {
"networkAuthorizationCode": "040535",
"networkResponseCode": "2"
}
}
],
"appInfo": null
}
```
# Split em sessão ou link de pagamento
Source: https://docs.malga.io/documentations/split/split-em-sessao-link
Configure regras de splitRules na criação da sessão na Malga; o pagamento da sessão ou link herda automaticamente o split já definido.
## Visão geral
No fluxo por **sessão** ou **link de pagamento**, o split não é definido no corpo da requisição de pagamento (`POST /v1/sessions/{id}/charge`). Você envia **`splitRules` ao criar a sessão** (`POST /v1/sessions`). O serviço armazena as regras; na cobrança, a Malga recupera os dados da sessão e **aplica o split já configurado** na transação.
Para cobrança **direta** com split no mesmo request, use [`POST /v1/charges`](/api-reference/charges/realizar-nova-cobranca) conforme [Cobrança com Split](/documentations/split/split).
O roteamento de pagamento da sessão obtém os dados da sessão internamente e
aplica o split armazenado. **Não** envie `splitRules` no corpo ao pagar a
sessão.
## Pré-requisitos
Os **recebedores (sellers)** precisam existir e estar válidos **antes** de referenciá-los em `splitRules`. Na criação da sessão, o serviço de sessões valida a existência dos recebedores; no momento da cobrança, o fluxo de transações e sellers trata mapeamento com o provedor e status para a captura.
Veja [Recebedor (seller)](/documentations/split/seller).
## Fluxo resumido
1. Crie os sellers necessários.
2. **Crie a sessão** com `splitRules` no JSON (junto a `amount`, `items`, `paymentMethods`, etc.).
3. **Pague a sessão** enviando apenas método e origem do pagamento (por exemplo `paymentMethod` e `paymentSource`). **Sem** `splitRules` no corpo.
```mermaid theme={null}
%%{init: {'theme': 'base', 'themeVariables': {
'primaryColor': '#1f2937', 'primaryTextColor': '#e5e7eb',
'primaryBorderColor': '#475569', 'lineColor': '#64748b',
'background': '#0b1220', 'mainBkg': '#111827',
'nodeBorder': '#334155', 'textColor': '#cbd5e1'
}}}%%
flowchart TD
sellers[Crie os sellers] --> session[Crie a sessão com splitRules]
session --> payment[Pague a sessão sem splitRules]
payment --> charge[A cobrança herda o split da sessão]
```
## Exemplo: criar sessão com split
```bash theme={null}
curl --location 'https://api.malga.io/v1/sessions' \
--header 'X-Client-Id: ' \
--header 'X-Api-Key: ' \
--header 'Content-Type: application/json' \
--data '{
"name": "Marketplace - 2 sellers",
"merchantId": "",
"amount": 1000,
"currency": "BRL",
"capture": true,
"paymentMethods": [
{
"paymentType": "credit",
"installments": 1
}
],
"dueDate": "2026-02-20",
"items": [
{
"name": "Produto",
"unitPrice": 1000,
"quantity": 1,
"tangible": true
}
],
"splitRules": [
{
"sellerId": "",
"percentage": 60,
"processingFee": true,
"chargeEntireFee": true,
"liable": true
},
{
"sellerId": "",
"percentage": 40,
"processingFee": false,
"chargeEntireFee": false,
"chargeRemainderFee": false,
"liable": false
}
]
}'
```
A resposta da sessão pode incluir `splitRules` persistidos (como em outros recursos de cobrança). Consulte a [especificação de sessões](/api-reference/sessions/criar-nova-sessao).
## Exemplo: pagar sessão (sem split no corpo)
```bash theme={null}
curl --location 'https://api.malga.io/v1/sessions//charge' \
--header 'X-Client-Id: ' \
--header 'X-Api-Key: ' \
--header 'Content-Type: application/json' \
--data '{
"paymentMethod": {
"paymentType": "credit",
"installments": 1
},
"paymentSource": {
"sourceType": "customer",
"customerId": ""
}
}'
```
O split aplicado na transação é o **definido na criação da sessão**, não o deste corpo.
## Regras de validação (split na sessão)
* Em cada regra, use **exatamente um** entre `percentage` ou `amount`.
* Não misture regras **só em valor** e **só em percentual** na mesma sessão.
* Soma de **percentuais** pode ser **até 100%**.
* Soma de **valores** em centavos não pode **ultrapassar** o valor da sessão ou da transação.
* `chargeEntireFee` e `chargeRemainderFee` **não** podem ser `true` ao mesmo tempo.
Para o detalhamento dos campos de regra, veja [Cobrança com Split](/documentations/split/split#regras-de-split) (mesmo modelo de regra, aplicado na criação da sessão em vez do `POST /v1/charges`).
# Migração de cartões
Source: https://docs.malga.io/documentations/tokenization/card-migrations
A Malga oferece a possibilidade de transferir a base de dados sensíveis de cartão de crédito de forma segura entre os Vaults de provedores de pagamentos.
## Possíveis cenários para migração dos dados
### Importando cartões de um provedor existente
Passos para importar a base de cartões de crédito para Malga.
1. Entre em contato com o time de CS ([suporte@malga.io](mailto:suporte@malga.io)) da Malga para obter a última versão do nosso Attestation of Compliance (AoC) do PCI DSS.
2. Contate a solução do provedor (Vault/Gateway) existente e faça um pedido de exportação da base de cartões. Por favor, envie junto o nosso Attestation of Compliance (AoC) do PCI DSS, e a nossa [chave PGP](#chave-pgp). Uma boa mensagem para o provedor seria:
> Olá \[Provedor], Eu gostaria de exportar toda a minha base de cartões de crédito para o Vault da Malga que é certificado no PCI DSS Level 1. Segue em anexo o AoC da Malga.
>
> Quando a exportação estiver concluída, por favor envie as informações de como acessar os dados para o email [security@malga.io](mailto:security@malga.io) passando o nome do Merchant. O time de Customer Success da Malga pode ajudar com eventuais dúvidas. A chave PGP da Malga se encontra nesta página: [https://docs.malga.io/documentations/tokenization/card-migrations#chave-pgp](https://docs.malga.io/documentations/tokenization/card-migrations#chave-pgp)
3. Passe a informação para o nosso time de CS com o clientId que os dados serão importados.
4. A transferência dos dados depende do processo do gateway e de como eles fazem a exportação.
* Se o Gateway prefere configurar o SFTP do lado deles para transferir, então eles precisam enviar as credenciais para o nosso time ([security@malga.io](mailto:security@malga.io)) usando a nossa PGP Key.
* Se o Gateway prefere acessar nosso servidor SFTP, então eles precisam passar a chave pública SSH deles para o nosso time ([security@malga.io](mailto:security@malga.io)) configurar um usuário no nosso SFTP, e em seguida passamos essa informação para o Gateway.
Se necessário, nós iremos trabalhar diretamente com o Gateway ou serviço de Vault para ajudar no processo de importação. Nossos clientes são responsáveis por autorizar a exportação dos dados para nosso Vault.
### Exportando dados da Malga para outro provedor
1. Contate o time de Customer Success (CS) da Malga pedindo os dados que vão ser exportados, e passando junto o AoC do PCI DSS do provedor de pagamentos que a base de dados será enviada, a chave PGP que precisa constar no site do provedor de pagamentos, e o endereço de email para envio das credenciais.
2. Assim que nosso time exportar a base de dados, vamos enviar as credenciais do nosso servidor SFTP para o endereço de email informado com as credenciais criptografadas com a chave PGP enviada pelo provedor.
3. Os dados ficam disponíveis no servidor SFTP por 30 dias.
## Formato dos dados
A exportação de cartões é gerada em formato CSV com separador `;` (ponto e vírgula). O arquivo contém os seguintes campos:
| Campo | Descrição |
| - | - |
| `card_id` | Identificador único do cartão no Vault da Malga |
| `card_customer_id` | Identificador do cliente associado ao cartão |
| `card_number` | Número completo do cartão (descriptografado) |
| `card_expiration_date` | Data de vencimento do cartão |
| `card_holdername` | Nome do titular do cartão |
| `card_first6_digits` | Primeiros 6 dígitos do cartão (BIN) |
| `card_last4_digits` | Últimos 4 dígitos do cartão |
Exemplo do formato gerado em CSV:
```csv theme={null}
card_id;card_customer_id;card_number;card_expiration_date;card_holdername;card_first6_digits;card_last4_digits
8c0d3c9a-ca87-4bd3-af0d-4eee47cc5a8a;cus_abc123;526607******1234;10/2030;NOME DE TESTE;526607;1234
```
Somente cartões com status `active` são incluídos na exportação.
O arquivo exportado possui dado sensível sob o escopo do PCI DSS. É criptografado com a chave PGP do provedor destino, que deve possuir certificação PCI DSS válida, e fica disponível no servidor SFTP por 30 dias. Trate o arquivo com restrição de acesso e descarte-o de forma segura após o uso.
## Chave PGP
A nossa chave pública PGP usada para transferência está disponível para [download](/assets/files/sec-malga-pgp-57D3319106E84B23-2026-04-30.txt) e reproduzida abaixo.
```text theme={null}
pub ed25519/57D3319106E84B23 2026-04-30 [SC] [expires: 2028-04-29]
Key fingerprint = 0F4C C087 286F 768E D03C 8A25 57D3 3191 06E8 4B23
uid Malga Security Team
sub cv25519/FFBF8BD6E12AF63B 2026-04-30 [E] [expires: 2028-04-29]
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEafPADRYJKwYBBAHaRw8BAQdAltOSv7hMbwvgYYqxDjHOJ26G3TTXJoIENZb/
DD3Cqfe0J01hbGdhIFNlY3VyaXR5IFRlYW0gPHNlY3VyaXR5QG1hbGdhLmlvPoiZ
BBMWCgBBFiEED0zAhyhvdo7QPIolV9MxkQboSyMFAmnzwA0CGwMFCQPCZwAFCwkI
BwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQV9MxkQboSyOT0wEA5oT/3x3EI8fq
j77Xw5EOdF7v+sVkQ1YyZ6Mi9RpLtowBAMm/t6n8QDLztaTXdlRGhcs/ZGxLVWiL
1rQnakNbkmsHuDgEafPADRIKKwYBBAGXVQEFAQEHQChTt1EnSdvFFMSaO1DNDQrJ
YrCswk9DnpyTZKBdQJBNAwEIB4h+BBgWCgAmFiEED0zAhyhvdo7QPIolV9MxkQbo
SyMFAmnzwA0CGwwFCQPCZwAACgkQV9MxkQboSyP/8AD+LeNPKza5J4VsQ6EkBfeA
Vl+3RpzO6BaJT50Ucq6HWbwBAP/EzA6kbj3GNLmu9sjGIVLnCCjgoWzdPl+PO9zR
ZZEI
=TJTN
-----END PGP PUBLIC KEY BLOCK-----
```
# Serviço de Tokenização da Malga
Source: https://docs.malga.io/documentations/tokenization/intro
Conheça o Serviço de Tokenização da Malga: processe dados sensíveis de cartões de forma segura usando tokens criptografados em vez do número real.
Malga criou este [Serviço de Tokenização](/api-reference/tokens/criar-um-novo-token) para permitir que os dados sensíveis de cartão sejam processados de maneira segura.
Através da [Tokenização](/api-reference/tokens/criar-um-novo-token), é possível garantir que os dados sensíveis do cartão (holder name, pan, cvv) não passem pelo seu backend e possam ser enviados para os servidores da Malga diretamente da sua aplicação cliente.
Um token representa dados sensíveis de cartão armazenados de maneira segura na Malga, seguindo as melhores práticas do PCI, sendo os dados enviados direto do seu frontend para os servidores da Malga.
É extremamente recomendado que você realize o processo de tokenização diretamente no lado do cliente, coletando os dados sensíveis de cartão na sua interface e enviando diretamente para o Serviço de Tokenização, a partir de um client token criado para essa funcionalidade, enviando para seu backend o identificador do token gerado que não guarda dados sensíveis e pode ser trafegado normalmente pelos seus servidores.
Os Tokens são invalidados após o primeiro uso, não sendo possível armazenar o
token gerado para uso futuro em compras recorrentes. Caso queira salvar os
dados de um cartão para uso futuro, você deve realizar a criação de um token e
na sequência solicitar a criação de um cartão a partir do token criado, dessa
forma o cartão ficará armazenado em definitivo no nosso *vault*, servidor de
armazenamento seguro de cartões, bastando enviar somente o card id gerado nas
transações futuras.
Você pode criar cartões a partir de tokens gerados, sendo possível associar múltiplos cartões a um mesmo comprador, de maneira a possibilitar cobrança futura.
O **token** gerado na tokenização é temporário e expira em 2
horas. Esse token guarda os dados sensíveis (como o CVV) usados para criar o
cartão. O **`cardId`**, gerado a partir do token, é **permanente** e não
expira, ele identifica o cartão salvo em definitivo no vault da Malga.
## Criando um Card ID
Uma vez criado um cartão é gerado um identificador único `cardId` que pode ser armazenado no seu sistema, já que não contém dados sensíveis de cartão, somente um identificador de um cartão salvo de maneira segura no vault da Malga.
A partir de um `cardId` gerado é possível realizar cobranças recorrentes, bastando enviar esse identificador no momento da criação do `charge`.
## Por que uma cobrança é aceita após a expiração do token?
Uma dúvida comum é por que um `cardId` continua aceitando cobranças mesmo depois das 2 horas de expiração do token. O motivo é que **o que expira é o token (e o CVV nele guardado), não o cartão**: o `cardId` permanece válido no vault e segue disponível para cobranças.
Após a expiração do token, a cobrança com `cardId` ainda pode ser aprovada quando:
* **Você envia o `cvv` na própria cobrança.** O campo `cvv` é opcional no `paymentSource` e, quando informado, é repassado ao provedor, não dependendo do token tokenizado.
* **O merchant está habilitado a cobrar sem CVV.** Nesse cenário, a transação segue para o provedor sem o código de segurança e a aprovação depende das regras do emissor.
* **O cartão está com status `active` ou `pending`.** Ambos seguem utilizáveis no fluxo transacional (veja [Status de Cartão](#status-de-cartão)).
Durante a janela de 2 horas após a tokenização, a Malga ainda consegue
recuperar o CVV a partir do token para aumentar a chance de aprovação. Passado
esse prazo, o CVV não está mais disponível pelo token, mas a cobrança com
`cardId` continua possível pelos caminhos descritos acima. Por isso o
comportamento pode parecer diferente conforme o merchant exija ou não o CVV na
cobrança.
O código de segurança (cvv) do cartão, que foi enviado na tokenização, é
validado através de uma transação de valor zero junto ao emissor do cartão,
dessa maneira a Malga consegue validar se os dados tokenizados do cartão são
válidos sem que seja necessário realizar uma cobrança efetiva. Após a
validação com sucesso dos dados do cartão, o mesmo fica com status:active e
disponível para compras futuras, caso contrário, o cartão ficará com
status:failed e invalidado, devendo ser gerado um novo token e um novo cartão.
## Status de Cartão
1. O atributo `cvvchecked` identifica se o cartão teve ou não seus dados validados na tokenização. Algumas bandeiras não permitem validação zero dollar, nesse caso o cartão passa a ser criado como `status=active` e `cvvchecked=false`.
2. O status `active` continua identificando se o cartão está disponível para uso no fluxo transacional, porém não é garantia de que um cartão `status=active` retornar sucesso na cobrança, é possível retorno de falha na cobrança por parte dos bancos.
3. O status `failed` continua identificando um cartão que NÃO pode ser usado no fluxo transacional, é um token já identificado como inválido e não poderá ser utilizado.
4. O status `pending` passa a identificar os casos de impossibilidade de validação dos dados do cartão na sua criação. Enquanto o status estiver pending o cartão pode ser usado para criar transação *durante a janela de validade do token (2 horas)*, garantindo maior resiliência do transacional. Um cartão `status=pending` *ao ser utilizado para uma cobrança*, tem seu status atualizado para `active` se os dados do cartão forem válidos, e atualizado para `failed` se os dados do cartão forem inválidos.
Os status possíveis para um `card` na Malga são:
| Status | Descrição |
| - | - |
| **active** | Caso os dados do cartão sejam validados, o status é retornado como active e cvvchecked true |
| **failed** | Caso os dados do cartão não sejam validados, o status é retornado como failed e cvvchecked false |
| **pending** | Caso o Serviço de Validação dos dados do cartão esteja indisponível, o status é retornado como pending e cvvchecked: false; Enquanto o status estiver pending o cartão pode ser usado para criar transação, garantindo maior resiliência do transacional. |
É possível enviar o `cvv` do cartão como opcional na requisição de cobrança,
sendo útil nos cenários onde o cartão está com status pending ou active, sendo
este `cvv` repassado para o provedor aumentando assim as chances de aprovação
nos casos onde você pode solicitar o código de segurança no momento da
cobrança.
## Bandeiras aceitas
As bandeiras aceitas para transações na plataforma da Malga, de acordo com o método de pagamento, são:
| | Bandeira | Crédito | Débito | Voucher |
| - | - | - | - | - |
| | Amex | | | |
| | Dinners | | | |
| | Discover | | | |
| | Elo | | | |
| | JCB | | | |
| | Maestro | | | |
| | Mastercard | | | |
| | MIR | | | |
| | Sodexo | | | |
| | Ticket | | | |
| | Union Pay | | | |
| | Visa | | | |
| | VR | | | |
**Importante:** Apesar do suporte à tokenização para o método de pagamento
voucher, é importante observar limitações próprias em cartões desse método de
pagamento, que impossibilitam transações sem CVV. Em decorrência disso, o
cartão tokenizado só pode ser utilizado em uma única transação.
# Tokenização de Bandeira
Source: https://docs.malga.io/documentations/tokenization/network-tokens
Tokenização de Bandeira na Malga: substitua dados sensíveis por tokens criptografados registrados diretamente nas bandeiras dos cartões.
A Tokenização de Bandeira é um sistema de segurança que substitui os dados sensíveis de um cartão de crédito por um token criptografado registrado diretamente na bandeira do cartão. Cada transação feita após a tokenização do cartão passará a utilizar o token, dispensando o uso dos dados do cartão como nome do portador do cartão, data de validade, CVV, entre outros.
Com a Tokenização de Bandeira Malga é possível gerar tokens de cartões de crédito utilizados para processar pagamentos na Malga diretamente nas bandeiras. Este processo é automático e faz parte do ciclo de vida dos cartões de crédito na Malga.
Para habilitar a funcionalidade de tokenização de bandeira na sua conta Malga entre em contato com o nosso time de suporte.
## Provedores com suporte a tokens de bandeira
Atualmente a Malga só suporta tokenização das bandeiras Visa e Master.
| Provedor | Bandeiras Suportadas |
| - | - |
| Adyen | Visa, Master |
| Cielo | Visa, Master |
| Getnet SEP | Visa, Master |
| Mercado Pago | Visa, Master |
| PagSeguro | Visa, Master |
| Rede | Visa, Master |
| WorldPay | Visa, Master |
## Transações com Tokens de Bandeira
Transações com Token de Bandeira se comportam da mesma forma que transações de [Cartão de Crédito](/documentations/payment-methods/credit-card). Durante o processo de geração de uma transação com Token de Bandeira é gerado obrigatoriamente um Criptograma para fazer a comunicação com os provedores de cobrança, aumentando a segurança da transação.
O criptograma é gerado automaticamente, de forma interna na Malga, e não é necessária nenhuma alteração em sua integração para que ele seja gerado.
### Ciclo de vida do Token de Bandeira
O token de bandeira na Malga possui um ciclo de vida composto por quatro status diferentes:
| Status | Descrição |
| - | - |
| `active` | O token está disponível para gerar criptogramas e transacionar. |
| `suspended` | Token está temporariamente indisponível para transacionar. Um token suspenso pode ser reativado. |
| `deleted` | O Token deletado não pode transacionar e não pode mais ser reabilitado. |
| `failed` | O Token não chegou a ser criado e encontrou uma falha durante sua tentativa de criação. |
### Quais cartões são tokenizados?
São tokenizados na bandeira apenas cartões **válidos**. São considerados cartões **válidos** cartões que tenham tido uma transação bem-sucedida ou uma validação de [Zero Dollar](/documentations/tokenization/zero-dollar) bem-sucedida no passado e que não tenha um token de bandeira associado ao seu fingerprint.
Você também pode definir quais bandeiras gostaria de habilitar ou desabilitar o processo de tokenização individualmente.
### Atualizações de tokens
A bandeira pode atualizar seus tokens através de um evento de ciclo de vida do token. Estes eventos ficam registrados na Malga e os tokens são atualizados automaticamente.
# Token CVV
Source: https://docs.malga.io/documentations/tokenization/token-cvv
O CVV (Valor de verificação do cartão), é o código de segurança composto por três ou quatro dígitos,
utilizado nas compras online, o código substitui a senha usada em estabelecimentos físicos. Com a finalidade
de garantir que no ato da compra o cliente tenha o seu cartão em mãos, evitando fraudes.
A tokenização é um método de substituição dos dados sensíveis do portador (CVV), por um token, para que
a experiência de pagamento digital seja mais segura.
## Cenário de utilização
O recurso de tokenização do CVV é normalmente utilizado em transações usando dados de cartão de crédito já armazenados no cofre, no qual
os clientes desejam passar o CVV de forma segura através de um token, ao invés do CVV em texto plano. Para isso, utiliza-se a
solução de `Token CVV`, garantindo que a aplicação dos clientes não consiga enxergar o conteúdo desse token.
O token é invalidado após o seu uso e/ou pelo tempo de expiração, sendo
impossível utilizá-lo futuramente. Para isso é necessário gerar um novo token
e informar esse na transação.
## Exemplo de tokenização do CVV
```bash theme={null}
curl --location 'https://api.malga.io/v1/tokens' \
--header 'X-Client-Id: ' \
--header 'X-Api-Key: ' \
--header 'Content-Type: application/json' \
--data '{
"cvvUpdate": "410"
}'
< HTTP/2 201
< content-type: application/json; charset=utf-8
{
"tokenId": "2d930a61-67d5-45bb-8b90-24a993b292e3"
}
```
## Exemplo de transação utilizando a tokenização CVV
```bash theme={null}
curl --location 'https://api.malga.io/v1/charges' \
--header 'X-Client-Id: ' \
--header 'X-Api-Key: ' \
--header 'Content-Type: application/json' \
--data '{
"merchantId": "39a10bed-6ee1-46ea-94ce-565c1f52e2e6",
"amount": 150,
"currency": "BRL",
"statementDescriptor": "Pedido #231 loja joão",
"capture": true,
"orderId": "7171717171",
"description": "descrição"
"paymentMethod": {
"paymentType": "credit",
"installments": 1
},
"paymentSource": {
"sourceType": "card",
"cardId": "8d930a61-67d5-45bb-8b90-24a993b292e3",
"tokenCvv": "2d930a61-67d5-45bb-8b90-24a993b292e3"
}
}'
< HTTP/2 201
< content-type: application/json; charset=utf-8
{
"id": "55d8b213-f3c9-4ef9-9476-4d874edb8ac1",
"clientId": "523afbe7-36dc-4654-9dba-e7167d0e5e2d",
"merchantId": "ba5cefe2-bf93-4fe3-bd4f-d87af60b21f8",
"description": "d9965173-5543-41d1-9709-5d8347a36e53",
"orderId": "ca0011e3-ff94-4fc3-a254-f72c8b86fe6e",
"createdAt": "2023-08-04T14:02:05.082Z",
"amount": 100,
"originalAmount": 100,
"currency": "BRL",
"statementDescriptor": "Token CVV",
"capture": true,
"isDispute": false,
"status": "failed",
"paymentMethod": {
"installments": 1,
"paymentType": "credit"
},
"paymentSource": {
"sourceType": "card",
"cardId": "e98ea785-aa5e-4ce4-8cc7-812f1b55ba3d"
},
"transactionRequests": [
{
"id": "0559f1f2-ef81-46b7-8f7c-516428fd8a72",
"createdAt": "2023-08-04T14:02:05.166Z",
"updatedAt": "2023-08-04T14:02:05.271Z",
"idempotencyKey": "d24296b2-dd60-49b5-bc28-0034fb04d293",
"providerId": "cd5f2a7c-5fc2-48d3-87bd-ae6573184fb7",
"providerType": "SANDBOX",
"transactionId": "2767078",
"amount": 100,
"authorizationCode": "1547251",
"authorizationNsu": "6783923",
"requestStatus": "failed",
"requestType": "authorization",
"responseTs": "41ms",
"providerError": {
"retryable": false,
"declinedCode": "invalid_cvv",
"message": null,
"networkDeniedMessage": "Invalid CVV",
"networkDeniedReason": "sandbox invalid cvv"
}
}
]
}
```
Para saber mais sobre a Tokenização confira em [nossa
documentação](/documentations/tokenization).
# Validação de Cartões
Source: https://docs.malga.io/documentations/tokenization/zero-dollar
Uma transação de validação de cartões, também conhecida como zero dollar ou zero dólar, é uma funcionalidade usada para verificar se o cartão de crédito é válido sem gerar cobranças ao portador do cartão.
Para usar essa funcionalidade você precisa informar o número do cartão, o nome impresso no cartão, o CVV e a data de expiração.
## Validar um cartão via zero dollar
A funcionalidade de zero dollar funciona no momento de salvar um cartão de crédito.
Abaixo detalhamos o passo a passo:
### Passo 1 - Criar um merchant
Crie um merchant com pelo menos 1 provedor com suporte a validação de zero dollar.
Esse passo é importante porque o merchant criado será usado no passo 3
(validar e salvar o cartão)
```bash theme={null}
curl --location 'https://sandbox-api.malga.io/v1/merchants' \
--header 'x-api-key: ' \
--header 'x-client-id: ' \
--header 'Content-Type: application/json' \
--data '{
"name": "zero dollar validator",
"mcc": "4040",
"providers": [{
"priority": 1,
"name": "SANDBOX",
"credentials": {
"type": "SANDBOX",
"apiKey": "123"
}
}]
}'
```
Resultado:
```bash theme={null}
{
"id": "3fb1884c-f442-4044-be6f-5afe2e0629b5",
"name": "zero dollar validator",
"mcc": "4040",
"clientId": "e234eeb3-483d-4df2-87eb-1e2be5cdaccd",
"status": false,
"createdAt": "2023-05-30T13:16:06.979Z",
"updatedAt": "2023-05-30T13:16:06.979Z",
"providers": [
{
"id": "ead031bb-cd67-40e7-a5b2-aa3e5b08f934",
"name": "SANDBOX",
"priority": 1,
"credentials": {
"type": "SANDBOX",
"apiKey": "******"
},
"options": null,
"createdAt": "2023-05-30T13:16:06.979Z",
"updatedAt": "2023-05-30T13:16:06.979Z"
}
]
}
```
Nesse exemplo acima criamos um merchant usando nosso adapter de sandbox.
É importante dizer que nosso adapter sandbox não faz uma verificação real do
cartão. Usamos mocks para emular cenários.
### Passo 2 - Tokenização
Agora precisamos tokenizar os dados do cartão para trafegar os dados de forma segura.
```bash theme={null}
curl --location 'https://api.malga.io/v1/tokens' \
--header 'x-client-id: ' \
--header 'x-api-key: ' \
--header 'Content-Type: application/json' \
--data '{
"cardHolderName": "JOAO DA SILVA",
"cardNumber": "4929564637987814",
"cardCvv": "320",
"cardExpirationDate": "12/2026"
}'
```
Resultado:
```bash theme={null}
{
"tokenId": "d3202b89-1ccd-4dea-95f2-05b3561bc055"
}
```
Se você estiver usando um merchant com nosso provedor SANDBOX de testes, você pode variar o CVV para testar um cenário de cartão válido e outro de cartão inválido.
Para testar um cenário válido basta que o CVV termine com 0 (zero), por exemplo, 320.
Para testar um cenário que o cartão não é válido basta que o CVV não termine com 0 (zero), por exemplo, 321
Se tiver dúvidas sobre tokenização de cartão [clicando aqui](/documentations/tokenization/intro) você acessa nossa documentação sobre esse assunto.
### Passo 3 - Validar e salvar o cartão
O processo de verificação do cartão ocorre no momento que o cartão será salvo no cofre (vault) de cartões.
Para validar o cartão usando zero dollar precisamos informar 3 propriedades no payload:
* **merchantId:** Merchant contendo pelo menos 1 provedor com validação de zero dollar.
* **tokenId:** Token que contém os dados do cartão
* **cvvCheck:** `true` ou `false` para indicar o desejo de verificar ou não o cartão via zero dollar. Importante dizer que se você optar por não verificar o cartão, o mesmo será criado com status `pending`, permitindo que você tente validar esse cartão via uma transação.
```bash theme={null}
curl --location 'https://api.malga.io/v1/cards' \
--header 'x-client-id: ' \
--header 'x-api-key: ' \
--header 'Content-Type: application/json' \
--data '{
"merchantId": "",
"tokenId": "",
"cvvCheck": true
}'
```
Resultado:
```bash theme={null}
{
"id": "59085c6d-4d21-4fc0-a6da-dda38b51c2aa",
"status": "active",
"statusReason": null,
"createdAt": "2023-05-30T16:18:11.045Z",
"clientId": "e234eeb3-483d-4df2-87eb-1e2be5cdaccd",
"brand": "Visa",
"cardHolderName": "JOAO DA SILVA",
"cvvChecked": true,
"fingerprint": "p5hgkYxaw5EXgim3GbJ7KzDUhdtxo1O2+qkLFj/Qyoo=",
"first6digits": "492956",
"last4digits": "7814",
"expirationMonth": "12",
"expirationYear": "2026",
"transactionRequests": [
{
"id": "edd0d86a-76d0-4c2c-b924-1528510a5a32",
"createdAt": "2023-09-25T18:09:59.001Z",
"providerId": "5ce68ed3-2213-423b-8eaf-9d8c4b40df2b",
"providerType": "SANDBOX",
"requestStatus": "success",
"requestType": "zero_dollar",
"responseTs": "32ms"
}
]
}
```
## Provedores com suporte a zero dollar
| Provedor | Detalhes |
| - | - |
| Sandbox | Somente para testes. Use para emular comportamentos de cartão válido / inválido |
| Bolt | — |
| Braspag | — |
| Cielo | Suporta somente bandeiras Visa, Master e Elo |
| Getnet Sep | [https://devportalgetnet.sensedia-eng.com/pt/products/online-payments/regional-api?doc=api-ref-card-verification](https://devportalgetnet.sensedia-eng.com/pt/products/online-payments/regional-api?doc=api-ref-card-verification) |
| Klap | [https://api.pasarela.multicaja.cl/docs/apitarjetas#operation/Demorado%20(Modelo%20PSP)](https://api.pasarela.multicaja.cl/docs/apitarjetas#operation/Demorado%20\(Modelo%20PSP\)) |
| PagSeguro | [https://dev.pagbank.uol.com.br/docs/validando-um-cart%C3%A3o](https://dev.pagbank.uol.com.br/docs/validando-um-cart%C3%A3o) |
| Rede | — |
| SafraPay | — |
# Introdução
Source: https://docs.malga.io/documentations/type-tables/antifraude-providers
Aqui você encontra uma visão geral dos produtos de antifraude disponíveis para integração:
| Provedor | Realtime | Assíncrono |
| - | :-: | :-: |
| Clearsale Realtime Decision | | |
| Clearsale Tickets | | |
| Clearsale Total | | |
| B2E group | | |
| Konduto | | |
| Koin | | |
# Tabela tipos de moedas aceitas
Source: https://docs.malga.io/documentations/type-tables/currency-not-supportted
| Currency Code | Currency |
| - | - |
| *BRL* | Brazilian real |
| *USD* | United States dollar |
| *EUR* | Euro |
| *YER* | Yemeni rial |
| *ZAR* | South African rand |
| *AED* | United Arab Emirates dirham |
| *AFN* | Afghan afghani |
| *ALL* | Albanian lek |
| *AMD* | Armenian dram |
| *ANG* | Netherlands Antillean guilder |
| *AOA* | Angolan kwanza |
| *ARS* | Argentine peso |
| *AUD* | Australian dollar |
| *AWG* | Aruban florin |
| *AZN* | Azerbaijani manat |
| *BAM* | Bosnia and Herzegovina convertible mark |
| *BBD* | Barbados dollar |
| *BDT* | Bangladeshi taka |
| *BGN* | Bulgarian lev |
| *BIF* | Burundian franc |
| *BMD* | Bermudian dollar |
| *BND* | Brunei dollar |
| *BOB* | Boliviano |
| *BSD* | Bahamian dollar |
| *BWP* | Botswana pula |
| *BZD* | Belize dollar |
| *CAD* | Canadian dollar |
| *CDF* | Congolese franc |
| *CHF* | Swiss franc |
| *CLP* | Chilean peso |
| *CNY* | Chinese yuan\[8] |
| *COP* | Colombian peso |
| *CRC* | Costa Rican colon |
| *CVE* | Cape Verdean escudo |
| *CZK* | Czech koruna |
| *DJF* | Djiboutian franc |
| *DKK* | Danish krone |
| *DOP* | Dominican peso |
| *DZD* | Algerian dinar |
| *EGP* | Egyptian pound |
| *ETB* | Ethiopian birr |
| *ZMW* | Zambian kwacha |
| *FJD* | Fiji dollar |
| *FKP* | Falkland Islands pound |
| *GBP* | Pound sterling |
| *GEL* | Georgian lari |
| *GIP* | Gibraltar pound |
| *GMD* | Gambian dalasi |
| *GNF* | Guinean franc |
| *GTQ* | Guatemalan quetzal |
| *GYD* | Guyanese dollar |
| *HKD* | Hong Kong dollar |
| *HNL* | Honduran lempira |
| *HRK* | Croatian kuna |
| *HTG* | Haitian gourde |
| *HUF* | Hungarian forint |
| *IDR* | Indonesian rupiah |
| *ILS* | Israeli new shekel |
| *INR* | Indian rupee |
| *ISK* | Icelandic króna |
| *JMD* | Jamaican dollar |
| *JPY* | Japanese yen |
| *KES* | Kenyan shilling |
| *KGS* | Kyrgyzstani som |
| *KHR* | Cambodian riel |
| *KMF* | Comoro franc |
| *KRW* | South Korean won |
| *KYD* | Cayman Islands dollar |
| *KZT* | Kazakhstani tenge |
| *LAK* | Lao kip |
| *LBP* | Lebanese pound |
| *LKR* | Sri Lankan rupee |
| *LRD* | Liberian dollar |
| *LSL* | Lesotho loti |
| *MAD* | Moroccan dirham |
| *MDL* | Moldovan leu |
| *MGA* | Malagasy ariary |
| *MKD* | Macedonian denar |
| *MMK* | Myanmar kyat |
| *MNT* | Mongolian tögrög |
| *MOP* | Macanese pataca |
| *MRO* | Macanese pataca |
| *MUR* | Mauritian rupee |
| *MVR* | Maldivian rufiyaa |
| *MWK* | Malawian kwacha |
| *MXN* | Mexican peso |
| *MYR* | Malaysian ringgit |
| *MZN* | Mozambican metical |
| *NAD* | Namibian dollar |
| *NGN* | Nigerian naira |
| *NIO* | Nicaraguan córdoba |
| *NOK* | Norwegian krone |
| *NPR* | Nepalese rupee |
| *NZD* | New Zealand dollar |
| *PAB* | Panamanian balboa |
| *PEN* | Peruvian sol |
| *PGK* | Papua New Guinean kina |
| *PHP* | Philippine peso\[12] |
| *PKR* | Pakistani rupee |
| *PLN* | Polish złoty |
| *PYG* | Paraguayan guaraní |
| *QAR* | Qatari riyal |
| *RON* | Romanian leu |
| *RSD* | Serbian dinar |
| *RUB* | Russian ruble |
| *RWF* | Rwandan franc |
| *SAR* | Saudi riyal |
| *SBD* | Solomon Islands dollar |
| *SCR* | Seychelles rupee |
| *SEK* | Swedish krona/kronor |
| *SGD* | Singapore dollar |
| *SHP* | Saint Helena pound |
| *SLL* | Sierra Leonean leone |
| *SOS* | Somali shilling |
| *SRD* | Surinamese dollar |
| *STD* | South Sudanese pound |
| *SZL* | Swazi lilangeni |
| *THB* | Thai baht |
| *TJS* | Tajikistani somoni |
| *TOP* | Tongan pa'anga |
| *TRY* | Turkish lira |
| *TTD* | Trinidad and Tobago dollar |
| *TWD* | New Taiwan dollar |
| *TZS* | Tanzanian shilling |
| *UAH* | Ukrainian hryvnia |
| *UGX* | Ugandan shilling |
| *UYU* | Uruguayan peso |
| *UZS* | Uzbekistan som |
| *VND* | Vietnamese đồng |
| *VUV* | Vanuatu vatu |
| *WST* | Samoan tala |
| *XAF* | CFA franc BEAC |
| *XCD* | East Caribbean dollar |
| *XOF* | CFA franc BCEAO |
| *XPF* | CFP franc (franc Pacifique) |
# Tabela tipos de países e documentos de cadastro de Customer
Source: https://docs.malga.io/documentations/type-tables/customer-document-by-country
| Country Code | Document Type | Group | Country | Meaning |
| - | - | - | - | - |
| *AL* | *NIPT* | Vat | Albania | Vat Identifier (Numri i Identifikimit për Personin e Tatueshëm) |
| *AD* | *NRT* | Tax | Andorra | Tax Identifier (Número de Registre Tributari) |
| *AR* | *CBU* | Bank | Argentina | Bank Account (Clave Bancaria Uniforme) |
| *AR* | *CUIT* | Tax | Argentina | Tax Identity (Código Único de Identificación Tributaria) |
| *AR* | *DNI* | Person | Argentina | National Identity (Documento Nacional de Identidad) |
| *AT* | *Businessid* | Company | Austria | Austrian Company Register Numbers |
| *AT* | *TIN* | Tax | Austria | Austrian tax identification number (Abgabenkontonummer) |
| *AT* | *UID* | VAT | Austria | Austrian VAT number (Umsatzsteuer-Identifikationsnummer) |
| *AT* | *VNR* | Person | Austria | Austrian social security number(Versicherungsnummer) |
| *AU* | *ABN* | Company | Australia | Australian Business Number |
| *AU* | *ACN* | Company | Australia | Australian Company Number |
| *AU* | *TFN* | Tax/Person/Company | Australia | Australian Tax File Number |
| *BA* | *JMBG* | Person | Bosnia and Herzegovina | Unique Master Citizen Number |
| *BZ* | *TIN* | Person/Company | Belize | Brazilian Tax ID () |
| *BE* | *VAT* | Company | Belgium | Belgian Enterprise Number |
| *BG* | *EGN* | Person | Bulgaria | ЕГН, Единен граждански номер, Bulgarian personal identity codes |
| *BG* | *PNF* | Person | Bulgaria | PNF (ЛНЧ, Личен номер на чужденец, Bulgarian number of a foreigner). |
| *BG* | *VAT* | Company | Bulgaria | Идентификационен номер по ДДС, Bulgarian VAT number |
| *BR* | *CPF* | Person | Brazil | Brazilian identity number (Cadastro de Pessoas Físicas) |
| *BR* | *CNPJ* | Company | Brazil | Brazilian company number (Cadastro Nacional da Pessoa Jurídica) |
| *BY* | *UNP* | Person/Company | Belarus | Учетный номер плательщика, the Belarus VAT number |
| *CA* | *BN* | Company | Canada | Company Identifier (Canadian Business Number) |
| *CA* | *SIN* | Person | Canada | Person Identifier (Social Insurance Number) |
| *CU* | *NI* | Person | Cuba | Número de identidad, Cuban identity card numbers |
| *CY* | *VAT* | Company | Cyprus | Αριθμός Εγγραφής Φ.Π.Α. (Cypriot VAT number) |
| *CZ* | *DIC* | Company | Czech Republic | Daňové identifikační číslo, Czech VAT number |
| *CZ* | *RC* | Person | Czech Republic | Rodné číslo, the Czech birth number |
| *CH* | *SSN* | Person | Swisserland | Swiss social security number ("Sozialversicherungsnummer") |
| *CH* | *UID* | Company | Swisserland | Unternehmens-Identifikationsnummer, Swiss business identifier |
| *CH* | *VAT* | Company | Swisserland | Mehrwertsteuernummer, the Swiss VAT number |
| *CL* | *RUT* | Tax | Chile | Tax Identifier (Rol Unico Tributario) \[RUN] |
| *CN* | *RIC* | Person | China | Person Identifier (Chinese Resident Identity Card Number) |
| *CN* | *USCC* | Company | China | Company Identifier (Unified Social Credit Code, 统一社会信用代码, China tax number) |
| *CO* | *NIT* | Tax | Columbia | Tax Identifier (Número de Identificación Tributaria) |
| *CR* | *CPF* | Person | Costa Rica | Person Identifier (Cédula de Persona Física) |
| *CR* | *CPJ* | Company | Costa Rica | Company Identifier (Cédula de Persona Jurídica) |
| *CR* | *CR* | Person | Costa Rica | Person Identifier (Cédula de Residencia) |
| *DE* | *IDNR* | Person | Germany | Steuerliche Identifikationsnummer, German personal tax number |
| *DE* | *STNR* | Company | Germany | Steuernummer, German tax number |
| *DE* | *VAT* | Company | Germany | Vat identifier |
| *DK* | *VAT* | Company | Denmark | Momsregistreringsnummer, Danish VAT number |
| *DO* | *CEDULA* | Person | Dominican Republic | Person Identifier (Cédula de Residencia) |
| *DO* | *NCF* | Vat | Dominican Republic | Tax Receipt Number (Números de Comprobante Fiscal) |
| *DO* | *RNC* | Tax | Dominican Republic | Person Identifier (Registro Nacional del Contribuyente) |
| *EC* | *CI* | Person | Ecuador | Ecuadorian person identifier (Cédula de identidad) |
| *EE* | *IK* | Person | Estonia | Isikukood (Estonian Personcal ID number). |
| *EE* | *KMKR* | Company | Estonia | KMKR (Käibemaksukohuslase, Estonian VAT number) |
| *EE* | *Registrikood* | Company | Estonia | Registrikood (Estonian organisation registration code) |
| *EC* | *RUC* | Tax/Vat | Ecuador | Ecuadorian company tax number (Registro Único de Contribuyentes) |
| *SV* | *NIT* | Tax | El Salvador | Tax Identifier (Número de Identificación Tributaria) |
| *GT* | *CUI* | Person | Guatemala | Guatemala person (Código Único de Identificación) |
| *GT* | *NIT* | Company | Guatemala | Guatemala company tax number (Número de Identificación Tributaria) |
| *FI* | *ALV* | Company | Finland | ALV nro (Arvonlisäveronumero, Finnish VAT number) |
| *FI* | *HETU* | Person | Finland | HETU (Henkilötunnus, Finnish personal identity code) |
| *FI* | *YTUNNUS* | Company | Finland | Y-tunnus (Finnish business identifier) |
| *FR* | *NIF* | Person | France | NIF (Numéro d'Immatriculation Fiscale, French tax identification number) |
| *GB* | *UTR* | Person | Great Brittan | UTR (United Kingdom Unique Taxpayer Reference) |
| *GB* | *VAT* | Company | Great Brittan | VAT (United Kingdom (and Isle of Man) VAT registration number) |
| *GR* | *AMKA* | Company | Greece | AMKA (Αριθμός Μητρώου Κοινωνικής Ασφάλισης, Greek social security number) |
| *GR* | *VAT* | Company | Greece | FPA, ΦΠΑ, ΑΦΜ (Αριθμός Φορολογικού Μητρώου, the Greek VAT number) |
| *FR* | *NIR* | Person | France | NIR (French personal identification number) |
| *FR* | *SIREN* | Company | France | SIREN (a French company identification number) |
| *FR* | *SIRET* | Company | France | SIRET (a French company establishment identification number) |
| *FR* | *TVA* | Vat | France | VAT Identifier |
| *HR* | *OIB* | Person | Croatia | Osobni identifikacijski broj, Croatian identification number |
| *HK* | *HKID* | Person | Hong Kong | Hong Kong Identity Card |
| *HU* | *ANUM* | Vat | Hungaria | ANUM (Közösségi adószám, Hungarian VAT number) |
| *IS* | *KENNITALA* | Person/Company | Iceland | Icelandic personal and organisation identity code |
| *IS* | *VSK* | Vat | Iceland | Virðisaukaskattsnúmer, Icelandic VAT number |
| *ID* | *NPWP* | Person/Company | Indonesia | NPWP (Nomor Pokok Wajib Pajak, Indonesian VAT Number). |
| *IE* | *PPS* | Person | Ireland | Personal Public Service Number, Irish personal number |
| *IE* | *VAT* | Tax/Vat | Ireland | Ireland Value Added Tax ID |
| *IN* | *AADHAAR* | Company | India | Indian digital resident personal identity number |
| *IN* | *PAN* | Person | India | Permanent Account Number, Indian income tax identifier |
| *IL* | *IDNR* | Person | Israel | Identity Number (Mispar Zehut, מספר זהות, Israeli identity number) |
| *IL* | *HR* | Company | Israel | Company Number (מספר חברה, or short ח.פ. Israeli company number) |
| *IT* | *AIC* | Drug | Italy | Italian code for identification of drugs |
| *IT* | *CODICEFISCALE* | Person | Italy | Codice Fiscale (Italian tax code for individuals) |
| *IT* | *IVA* | Vat | Italy | Partita IVA (Italian VAT number) |
| *LI* | *PEID* | Person/Company | Liechtenstein | Personenidentifikationsnummer |
| *LT* | *ASMENS* | Person | Lithuanian | Asmens kodas (Person Number) |
| *LT* | *PVM* | Vat | Lithuanian | Pridėtinės vertės mokestis mokėtojo kodas |
| *LU* | *TVA* | Vat | Luxembourgian | taxe sur la valeur ajoutée |
| *LV* | *PVN* | Person/Vat | Latvian | Pievienotās vērtības nodokļa |
| *MK* | *JMBG* | Person | Macedonia | Unique Master Citizen Number (Единствен матичен број на граѓанинот) |
| *MC* | *TVA* | Vat | Monaco | taxe sur la valeur ajoutée, Monacan VAT number |
| *MD* | *IDNO* | Vat | Moldavia | Moldavian VAT number |
| *MT* | *VAT* | Vat | Malta | Maltese VAT number |
| *MU* | *NID* | Person | Mauritius | ID number (Mauritian national identifier) |
| *JP* | *CN* | Company | Japan | 法人番号, hōjin bangō, Japanese Corporate Number |
| *KR* | *BRN* | Company | South Korea | 사업자 등록 번호, South Korea Business Registration Number) |
| *KR* | *RRN* | Person | South Korea | South Korean resident registration number |
| *MX* | *RFC* | Tax/Vat | Mexico | Tax Identifier (Registro Federal de Contribuyentes) |
| *MX* | *CURP* | Person | Mexico | Individual Identifier (Clave Única de Registro de Población) |
| *MX* | *CLABE* | Bank | Mexico | Bank Account (Clave Bancaria Estandarizada) |
| *ME* | *JMBG* | Person | Montenegro | Unique Master Citizen Number |
| *MY* | *NRIC* | Person | Malaysia | Malaysian National Registration Identity Card Number |
| *NL* | *BSN* | Person | Netherlands | Burgerservicenummer, the Dutch citizen identification number |
| *NL* | *BTW* | Vat | Netherlands | Btw-identificatienummer (Omzetbelastingnummer, the Dutch VAT number) |
| *NL* | *Onderwijsnummer* | Person | Netherlands | Onderwijsnummer (the Dutch student identification number) |
| *NZ* | *IRD* | Person/Company | New Zealand | New Zealand Inland Revenue Department (Te Tari Tāke) number |
| *NZ* | *BANK* | Bank | New Zealand | New Zealand Bank Account numbers - checkdigit |
| *NO* | *Fodsels* | Person | Norway | Fødselsnummer (Norwegian birth number, the national identity number) |
| *NO* | *Konto* | Bank | Norway | Konto nr. (Norwegian bank account number) |
| *NO* | *MVA* | Vat | Norway | Merverdiavgift, Norwegian VAT number |
| *NO* | *Orgnr* | Company | Norway | Organisasjonsnummer, Norwegian organisation number |
| *PY* | *RUC* | Tax/Vat | Paraguay | Tax Identifier (Registro Único de Contribuyentes) |
| *PE* | *CUI* | Person | Peru | Person Identifier (Cédula Única de Identidad) |
| *PE* | *RUC* | Tax/Vat | Peru | Tax Identifier (Registro Único de Contribuyentes) |
| *PE* | *CE* | Person | Peru | Person Identifier (Carné de Extranjería) |
| *PK* | *CNIC* | Person | Pakistan | National Identity Card |
| *PK* | *NTN* | Company | Pakistan | Tax Identification Number |
| *PL* | *NIP* | Vat | Poland | Numer Identyfikacji Podatkowej, Polish VAT number |
| *PL* | *PESEL* | Person | Poland | Polish national identification number |
| *PL* | *REGON* | Company | Poland | Rejestr Gospodarki Narodowej, Polish register of economic units |
| *PT* | *NIF* | Vat | Portugual | Número de identificação fiscal, Portuguese VAT number |
| *RU* | *INN* | Tax/Vat | Russia | Tax Identifier (Идентификационный номер налогоплательщика) |
| *RO* | *CF* | Vat | Romania | Cod de înregistrare în scopuri de TVA, Romanian VAT number |
| *RO* | *CNP* | Person | Romania | Cod Numeric Personal, Romanian Numerical Personal Code) |
| *RO* | *CUI* | Tax | Romania | Codul Unic de Înregistrare, Romanian company identifier |
| *RO* | *ONRC* | Company | Romania | Ordine din Registrul Comerţului, Romanian Trade Register identifier |
| *SM* | *COE* | Company | San Marcos | Codice operatore economico, San Marino national tax number |
| *RS* | *PIB* | Vat | Serbia | Poreski identifikacioni broj Tax identification number |
| *RS* | *JMBG* | Person | Serbia | Unique Master Citizen Number (Jedinstveni matični broj građana) |
| *SE* | *ORGNR* | Company | Sweden | Organisationsnummer, Swedish company number |
| *SE* | *PERSONNUMMER* | Person | Sweden | Personnummer (Swedish personal identity number) |
| *SE* | *VAT* | Vat | Sweden | VAT (Moms, Mervärdesskatt, Swedish VAT number) |
| *SG* | *UEN* | Company | Singapore | Singapore's Unique Entity Number |
| *TH* | *IDNR* | Person | Thailand | Thai National ID (บัตรประจำตัวประชาชนไทย) |
| *TW* | *UBN* | Company | Taiwan | Unified Business Number, 統一編號, Taiwanese tax number |
| *TR* | *TCKIMLIK* | Person | Turkey | Türkiye Cumhuriyeti Kimlik Numarası (Personal ID) |
| *TR* | *VKN* | Tax | Turkey | Vergi Kimlik Numarası, Turkish tax identification number |
| *SI* | *DDV* | Vatl | Slovenia | ID za DDV (Davčna številka, Slovenian VAT number) |
| *SI* | *JMBG* | Person | Slovenia | Unique Master Citizen Number (Enotna matična številka občana) |
| *SK* | *DPH* | Vat | Slovakia | IČ DPH (IČ pre daň z pridanej hodnoty, Slovak VAT number) |
| *SK* | *RC* | Person | Slovakia | RČ (Rodné číslo, the Slovak birth number) |
| *ES* | *CIF* | Tax/Vat | Spain | Tax Identifier (Código de Identificación Fiscal) |
| *ES* | *DNI* | Person | Spain | Identity code (Documento Nacional de Identidad) |
| *ES* | *NIE* | Person | Spain | Identity code foreigner (Número de Identificación de Extranjero) |
| *ES* | *NIF* | Tax | Spain | Tax Identifier (Número de Identificación Fiscal) |
| *UY* | *RUT* | Tax/Vat | Uruguay | Tax Identifier (Registro Único Tributario) |
| *UY* | *CEDULA* | Person | Uruguay | Person Identifier (Cédula de Residencia) |
| *UY* | *NIE* | Person | Uruguay | ForeignersI identification Number |
| *UA* | *RNTRC* | Person | Ukraine | КПП, RNTRC (Individual taxpayer registration number in Ukraine) |
| *UA* | *EDRPOU* | Company | Ukraine | ЄДРПОУ, EDRPOU (Identifier for enterprises and organizations in Ukraine) |
| *US* | *EIN* | Tax/Company | United States | Tax Identifier (Employer Identification Number) |
| *US* | *SSN* | Tax/Individual | United States | Tax Identifier (Social Security Number) |
| *VE* | *RIF* | Vat | Venezuelan | Vat Identifier (Registro de Identificación Fiscal) |
| *VN* | *MST* | Company | Vietnam | Mã số thuế, Vietnam tax number |
| *ZA* | *IDNR* | Person | South Africa | ID number (South African Identity Document number). |
| *ZA* | *TIN* | Person/Company | South Africa | TIN (South African Tax Identification Number). |
| | *noDocument* | Document number | | The document number is not provided |
# Tabela de DeclinedCode da Malga
Source: https://docs.malga.io/documentations/type-tables/declined-code
Tabela com os códigos de recusa (declinedCode) retornados pela Malga, suas mensagens, retentabilidade e orientação ABECS para cada caso.
| DeclinedCode | ResponseMessage | Retentável | O que fazer (ABECS) |
| - | - | - | - |
| *authentication\_attempts\_unavailable\_by\_issuer* | Authentication attempts unavailable by issuer | Não | - |
| *authentication\_error* | Authentication Error | Não | - |
| *authentication\_error\_without\_challenge* | Authentication error without challenge | Não | - |
| *authentication\_unavailable* | Authentication Unavailable | Não | - |
| *bad\_request* | Request failed with status code 400 | Sim | VERIFIQUE OS DADOS |
| *blocked\_card* | Blocked Card | Sim | TRANSAÇÃO NÃO PERMITIDA PARA O CARTÃO - NÃO TENTE NOVAMENTE |
| *canceled\_card* | Canceled Card | Sim | TRANSAÇÃO NÃO PERMITIDA PARA O CARTÃO - NÃO TENTE NOVAMENTE |
| *card\_not\_supported* | The card does not support this type of purchase | Não | UTILIZE FUNÇÃO DÉBITO |
| *cardholder\_not\_complete\_authentication* | Cardholder did not complete authentication | Não | - |
| *denied\_reason\_not\_available* | The charge has been declined because the provider behaved unexpectedly and didn't sent a denied reason. | Sim | REFAZER A TRANSAÇÃO |
| *expired\_card* | The card expiration date is invalid | Sim | VERIFIQUE OS DADOS DO CARTÃO |
| *failed\_authentication* | Failed authentication eciRaw 07/00 | Não | - |
| *fraud\_confirmed* | The charge has been declined for confirmed fraud | Não | TRANSAÇÃO NÃO PERMITIDA PARA O CARTÃO - NÃO TENTE NOVAMENTE |
| *fraud\_suspect* | The charge has been declined for suspect it is fraudulent | Sim | CONTATE A CENTRAL DO SEU CARTÃO |
| *generic* | The card has been declined for a unknown reason | Sim | CONTATE A CENTRAL DO SEU CARTÃO |
| *insufficient\_funds* | The card has insufficient funds | Sim | NÃO AUTORIZADA |
| *internal\_error* | The charge has been declined for a unknown reason | Sim | REFAZER A TRANSAÇÃO |
| *invalid\_amount* | The charge amount is not valid or exceeded maximum allowed | Depende do provedor | VALOR DA TRANSAÇÃO NÃO PERMITIDO |
| *invalid\_credentials* | Invalid credentials | Sim | REFAZER A TRANSAÇÃO |
| *invalid\_cvv* | The security code is invalid | Sim | SENHA INVÁLIDA |
| *invalid\_data* | The card has been declined for invalid data | Não | VERIFIQUE OS DADOS DO CARTÃO |
| *invalid\_installment* | The charge has been declined because invalid number of installments | Sim | PARCELAMENTO INVÁLIDO |
| *invalid\_merchant* | The charge has been declined because merchant is not valid | Depende do provedor | CONTA ORIGEM INVÁLIDA |
| *invalid\_number* | The card number is invalid | Não | VERIFIQUE OS DADOS DO CARTÃO |
| *invalid\_pares* | Invalid PARes | Não | - |
| *invalid\_pin* | The card has been declined because pin is invalid | Não | SENHA INVÁLIDA |
| *issuer\_not\_available* | The card issuer could not be reached, charge not authorized | Sim | DADOS DO CARTÃO INVÁLIDO |
| *lost\_card* | The card has been declined because the card is reported lost | Não | TRANSAÇÃO NÃO PERMITIDA - NÃO TENTE NOVAMENTE |
| *maximum\_pin\_tries* | The card has been declined because pin validation has been exceeded | Depende do provedor | ERRO NO CARTÃO |
| *not\_permitted* | The charge is not permitted to the card | Sim | TRANSAÇÃO NÃO PERMITIDA PARA O CARTÃO |
| *pickup\_card* | The card cannot be used to make this charges | Sim | CONTATE A CENTRAL DO SEU CARTÃO |
| *pin\_try\_exceeded* | The card has been declined because exceeded maximum pin tries | Não | EXCEDIDAS TENTATIVAS DE SENHA. CONTATE A CENTRAL DO SEU CARTÃO |
| *processing\_error* | The charge has been declined for a unknown reason | Sim | REFAZER A TRANSAÇÃO |
| *request\_not\_sent* | The charge has been declined for a unknown reason | Sim | REFAZER A TRANSAÇÃO |
| *restricted\_card* | The card cannot be used to make this charge | Sim | DESBLOQUEIE O CARTÃO |
| *security\_violation* | The card has been declined for a unknown reason | Sim | VERIFIQUE OS DADOS DO CARTÃO |
| *service\_not\_allowed* | The card has been declined because do not support international charge | Não | CARTÃO NÃO PERMITE TRANSAÇÃO INTERNACIONAL |
| *stolen\_card* | The card has been declined because the card is reported stolen | Não | TRANSAÇÃO NÃO PERMITIDA - NÃO TENTE NOVAMENTE |
| *transaction\_not\_allowed* | The card has been declined for a unknown reason | Não | ERRO NO CARTÃO |
| *try\_again* | The card has been declined for a unknown reason | Sim | REFAZER A TRANSAÇÃO |
| *unable\_to\_perform\_authentication* | Issuer unable to perform authentication | Não | - |
# Tabela de códigos COMPE dos principais bancos
Source: https://docs.malga.io/documentations/type-tables/main-banks
Códigos COMPE (3 dígitos) usados em `bankAccount.bank` na criação e atualização de recebedores.
Esta tabela lista os códigos **COMPE** (3 dígitos) das principais instituições financeiras brasileiras, usados em `bankAccount.bank` ao criar ou atualizar um [recebedor](/documentations/split/seller).
Como alternativa ao `bank` (COMPE), a `bankAccount` aceita o campo `ispb` — identificador da instituição financeira no Sistema de Pagamentos Brasileiro, com 8 dígitos numéricos.
Pelo menos um entre `bank` e `ispb` deve ser informado; quando ambos são enviados, **`ispb` tem precedência**. A relação canônica de ISPBs é publicada e atualizada pelo Banco Central — para evitar listas desatualizadas, consulte a fonte oficial em [bcb.gov.br/estabilidadefinanceira/spbparticipantes](https://www.bcb.gov.br/estabilidadefinanceira/spbparticipantes).
| Código | Banco |
| - | - |
| **001** | Banco do Brasil S.A. |
| *033* | Banco Santander (Brasil) S.A. |
| *104* | Caixa Econômica Federal |
| *237* | Banco Bradesco S.A. |
| *260* | Nubank |
| *341* | Banco Itaú S.A. |
| *356* | Banco Real S.A. (antigo) |
| *389* | Banco Mercantil do Brasil S.A. |
| *399* | HSBC Bank Brasil S.A. – Banco Múltiplo |
| *422* | Banco Safra S.A. |
| *453* | Banco Rural S.A. |
| *633* | Banco Rendimento S.A. |
| *652* | Itaú Unibanco Holding S.A. |
| *745* | Banco Citibank S.A. |
# Tabela de códigos MCC
Source: https://docs.malga.io/documentations/type-tables/mcc-code
Lista completa dos códigos MCC (Merchant Category Code) suportados pela Malga, com a descrição da categoria de negócio para cada código.
| MCC | Descrição |
| - | - |
| *742* | VETERINARIA |
| *744* | Carefree Resorts |
| *763* | COOPERATIVA AGRÍCOLA |
| *780* | SERVIÇOS DE PAISAGISMO E HORTICULTURA |
| *1520* | EMPREITEIROS EM GERAL - COMERCIAL E RESIDENCIAL |
| *1711* | PREST. DE SERV. PARA AR COND., ENCANAMENTO E AQUEC. |
| *1731* | ELETRICISTAS E SERVIÇOS ELÉTRICOS |
| *1740* | PEDREIROS E SERVIÇOS DE INSTALAÇÃO |
| *1750* | MARCENEIROS E SERVIÇOS DE CARPINTARIA |
| *1761* | METALURGICOS |
| *1771* | EMPREITEIRO PARA SERVIÇOS ESPECIALIZADOS |
| *1799* | DEMAIS SVS DE REFORMA E CONSTRUÇÃO NÃO-CLASSIFICADOS |
| *2741* | EDITORAS - PUBLICAÇÕES E IMPRESSÕES |
| *2791* | TYPESETTING, PLATE MAKING AND RELATED SERVICES |
| *2842* | SERVIÇOS DE LIMPEZA E POLIMENTO |
| *4011* | TRANSPORTE FERROVIÁRIO DE CARGA |
| *4111* | TRANSPORTE LOCAL DE PASSAGEIROS, INCLUINDO BALSAS |
| *4112* | TRANSPORTE DE PASSAGEIROS EM TREM (LONGA DISTÂNCIA) |
| *4119* | AMBULANCIAS |
| *4121* | LIMUSINES E TÁXIS (TAXICABS AND LIMOUSINES) |
| *4131* | COMPANHIAS DE ONIBUS |
| *4214* | TRANSPORTE DE CARGA RODOVIÁRIO E ARMAZENAMENTO |
| *4215* | CORREIOS - AÉREO, TERRESTRE E TRANSITÓRIOS |
| *4225* | ARMAZENAM. PROD AGRÍCOLAS,MERCAD REFRIGERADAS,BENS DOMÉSTICO |
| *4411* | LINHAS DE CRUZEROS (CRUISE LINES) |
| *4457* | ALUGUEL E ARRENDAMENTO DE BARCOS, ESQUIS E IATES |
| *4468* | MARINAS, SERVIÇOS E FORNECEDORES |
| *4511* | OUTRAS CIAS AÉREAS |
| *4582* | AEROPORTOS E SERVIÇOS LIGADOS A AERONAVES |
| *4722* | AGÊNCIAS DE VIAGENS (TRAVEL AGENCIES) |
| *4723* | AGÊNCIAS DE VIAGEM TUI (TUI TRAVEL AGENCY) |
| *4784* | PEDÁGIOS |
| *4789* | SERVIÇOS DE TRANSPORTE |
| *4812* | TELEFONES E EQUIPAMENTOS DE TELECOMUN. |
| *4813* | SERVIÇOS DE TELEC.- CHAM. LOCAIS E LONGA DISTÂNCIA |
| *4814* | SERVIÇOS DE TELECOMUNICAÇÃO |
| *4816* | REDES DE COMPUTADORES / SERVIÇOS DE INFORMAÇÃO |
| *4821* | TELEGRAFO |
| *4829* | ORDENS DE PAGAMENTO POR TRANSFERÊNCIA BANCÁRIA |
| *4899* | SERVIÇOS DE TV A CABO/PAGA (CABLE/PAY TV SERVICES) |
| *4900* | UTILID./ELEC/GAS/ÁGUA/SANI (UT../ELEC/GAS/H2O/SANI) |
| *5013* | ATACADISTAS E DISTRIBUIDORES DE ACESSÓRIOS DE VEÍCULOS |
| *5021* | MÓVEIS PARA ESCRITÓRIOS (COMMERCIAL FURNITURE) |
| *5039* | MATERIAL PARA CONSTRUÇÃO E AFINS (CONST. MAT. - DEF) |
| *5044* | A/D DE EQUIPAMENTOS DE FOTOGRAFIA, CÓPIA E MICROFILME |
| *5045* | COMPUTADORES, EQUIPAMENTOS E SOFTWARES |
| *5046* | A/D DE MÁQUINAS E EQUIPAMENTOS PARA EC |
| *5047* | A/D DE EQUIPAMENTO HOSPITALARES, MÉDICOS E OFTÁLMICOS |
| *5051* | CENTROS DE SERVIÇOS DE METAIS (METAL SERVICE CENTERS) |
| *5065* | LOJA ARTIGOS ELETRÔNICOS |
| *5072* | EQUIP./DISTRIB. DE HARDWARE (HARDWARE EQUIP.SUPPLIES) |
| *5074* | EQUIP. DE AQUECIMENTO/ENCANAMENTO (PLUMB./HEAT. E.) |
| *5085* | A/D DE SUPRIMENTOS INDUSTRIAIS (NÃO CLASSIFICADO EM OUTRO) |
| *5094* | JOALHERIA, PEDRAS PRECIOSAS, METAIS |
| *5099* | ATACADISTAS E DISTRIBUIDORES DE MERCADORIAS DURÁVEIS |
| *5111* | A/D DE ARTIGOS DE PAPELARIA E SUPRIMENTOS PARA ESCRITÓRIO |
| *5122* | FARMACEUTICOS/DROGAS (DRUGS/DRUGGISTS SUNDRIES) |
| *5131* | A/D DE TECIDOS E PRODUTOS DE ARMARINHO |
| *5137* | ATACADISTAS E DISTRIBUIDORES DE ROUPAS |
| *5139* | ATACADISTAS E DISTRIBUIDORES DE CALÇADOS |
| *5169* | A/D DE PRODUTOS QUIMICOS E SEMELHANTES (N CLASSIF. EM OUTRO) |
| *5172* | PRODUTOS DE PETRÓLEO (PETROLEUM/PETROLEUM PRODUCTS) |
| *5192* | ATAC. E DISTRIB. DE LIVROS, PERIÓDICOS E JORNAIS |
| *5193* | ATACADISTAS E DISTRIBUIDORES DE FLORES, PLANTAS E SEMENTES |
| *5198* | PINTURA, POLIMENTO E SUPRIM. (PAN.,VARN. & SUPPLIES) |
| *5199* | A/D DE MERCADORIAS NÃO DURÁVEIS (NÃO CLASSIF. EM OUTRO) |
| *5200* | LOJAS DE MATERIAL DE CONSTRUÇÃO (PEQUENO/MÉDIO PORTE) |
| *5211* | LOJAS DE MATERIAL DE CONSTRUÇÃO-PRODUTOS BRUTOS (EX: TIJOLO) |
| *5231* | LOJAS DE VIDROS, TINTAS E PAPÉIS DE PAREDE |
| *5251* | VENDA DE EQUIPAMENTOS, INCLUINDO DE FERRAGEM |
| *5261* | JARDINAGEM |
| *5271* | CORRETORES DE RESIDÊNCIAS MÓVEIS |
| *5300* | VENDA POR ATACADO (WHOLESALE CLUBS) |
| *5309* | DUTY FREE STORES |
| *5310* | LOJAS DE DESCONTO |
| *5311* | LOJAS DE DEPARTAMENTOS (DEPARTMENT STORES) |
| *5331* | LOJAS DE VARIEDADES |
| *5399* | LOJA MERCADORIAS GERAIS |
| *5411* | MERCEARIAS/SUPERMERCADOS (GROCERY STORES/SUPERM.) |
| *5422* | AÇOGUEIRO (FREEZER/MEAT LOCKERS) |
| *5441* | LOJA DE DOCES |
| *5451* | LOJA DE PRODUTOS DE LATICÍNIOS (DAIRY PROD. STORES) |
| *5462* | CONFEITARIAS (BAKERIES) |
| *5499* | LOJA DE ALIMENTOS VARIADOS (MISC FOOD S. - DEFAULT) |
| *5511* | VENDA DE CARROS E CAMINHÕES (NOVOS E USADOS) |
| *5521* | VENDA DE CARROS USADOS |
| *5531* | Lojas de Automóveis, Lojas de Acessórios Domésticos |
| *5532* | LOJA DE PNEUS |
| *5533* | LOJA DE PEÇAS E ACESSÓRIOS DE CARROS |
| *5541* | ESTAÇÕES DE SERVIÇOS (SERVICE STATIONS) |
| *5551* | VENDA DE BARCOS MOTORIZADOS |
| *5561* | ARTIGOS PARA ACAMPAMENTO |
| *5571* | LOJAS DE MOTOCICLETAS E ACESSÓRIOS |
| *5592* | VENDA DE TRAILERS |
| *5598* | CONCESSIONÁRIA DE SNOWMOBILE |
| *5599* | SERVIÇOS GERAIS PARA CARROS |
| *5611* | ARTIGOS MASCULINOS |
| *5621* | LOJA DE ROUPAS FEMININAS "PRONTA PARA USAR" |
| *5631* | ACESSORIOS FEMININOS E LINGERIES |
| *5641* | ARTIGOS PARA CRIANÇAS E BEBÊS |
| *5651* | ROUPAS MASCULINAS, FEMININAS E INFANTIS |
| *5655* | ROUPA ESPORTIVA |
| *5661* | LOJAS DE SAPATOS |
| *5681* | LOJA DE PELES |
| *5691* | LOJA ROUPA UNISSEX |
| *5697* | COSTUREIRAS E ALFAIATES |
| *5698* | LOJAS DE PERUCA |
| *5699* | SERVIÇOS GERAIS PARA VESTIMENTA |
| *5712* | LOJA DE MÓVEIS |
| *5713* | Loja de Pisos |
| *5714* | LOJA DE ESTOFADOS (DRAPERY & UPHOLSTERY STORES) |
| *5718* | LAREIRAS E ACESSÓRIOS (FIREPLACES & ACCESSORIES) |
| *5719* | LOJA DE MÓVEIS ESPECIALIZADA (HOME FURNISHING SPEC.) |
| *5722* | LOJAS DE ELETRODOMÉSTICOS |
| *5732* | LOJA DE ELETRÔNICOS |
| *5733* | LOJA INSTRUMENTO MUSICAIS |
| *5734* | LOJA DE SOFTWARE |
| *5735* | LOJAS DE DISCOS |
| *5811* | DISTRIBUIÇÃO E PRODUÇÃO DE ALIMENTOS |
| *5812* | RESTAURANTES |
| *5813* | BARES, PUBS E CASA NOTURNAS |
| *5814* | LANCHONETES DE COMIDAS RÁPIDAS (FAST FOOD) |
| *5815* | Produtos Digitais - De comunicação social audiovisual, incluindo Livros, Filmes e Música |
| *5816* | Produtos Digitais - Jogos |
| *5817* | Produtos Digitais - Aplicativos de Software (Exceto Jogos) |
| *5818* | Produtos Digitais - Diversas Categorias |
| *5912* | FARMÁCIAS (DRUG STORES & PHARMACIES) |
| *5921* | CERVEJAS, VINHOS E LICORES (STORE/BEER/WINE/LIQUOR) |
| *5931* | LOJAS DE ARTIGOS DE SEGUNDA MÃO / BRECHÓS |
| *5932* | LOJA DE ANTIGUIDADES (ANTIQUE SHOPS) |
| *5933* | LOJAS DE PENHORES |
| *5935* | DEMOLIÇÕES, SUCATAS, DESMANCHES DE AUTOMÓVEIS |
| *5937* | L. DE REPRODUÇÃO DE ANTIQUIDADES (ANT.REPROD. STORES) |
| *5940* | LOJA DE BICICLETAS - VENDAS E SERVIÇOS |
| *5941* | SERVIÇOS GERAIS PARA ESPORTES |
| *5942* | LIVRARIAS |
| *5943* | PAPELARIAS |
| *5944* | JOALHERIA (JEWERLY STORE) |
| *5945* | LOJA DE BRINQUEDOS |
| *5946* | LOJA DE FOTOGRAFIA |
| *5947* | LOJA DE PRESENTES |
| *5948* | ARTIGOS DE COURO |
| *5949* | ARMARINHOS E LOJAS DE TECIDO |
| *5950* | LOJA DE COPOS/CRISTAIS (GLASSWARE/CRYSTAL STORES) |
| *5960* | MARK.DIRETO DE SEGUROS (DIR. MARKET. INSURANCE SVC) |
| *5962* | SERV. DIRETOS DE VIAGENS (D. MKTG-TRAV. RELATED ARR) |
| *5963* | VENDA DIRETA (DIRECT SELL/DOOR-TO-DOOR) |
| *5964* | CATALOGO DE COMERCIOS (CATALOG MERCHANT) |
| *5965* | CATÁLOGO DE VAREJO (COMB.CATALOG & RETAIL) |
| *5966* | MARKETING DIRETO-SAÍDA (OUTB. TELEMARKETING M.) |
| *5967* | MARKETING DIRETO - ENTRADA (INB. TELEMARKETING M.) |
| *5968* | ASSINATURA COMERCIAL (CONTINUITY/SUBSCRIP. MERCHANT) |
| *5969* | OUTROS VENDEDORES DE MARKETING DIRETO |
| *5970* | PRODUTOS ARTESANAIS |
| *5971* | GALERIA DE ARTE (ART DEALERS & GALLERIES) |
| *5972* | LOJA DE MOEDAS E SELOS |
| *5973* | LOJA DE BENS RELIGIOSOS |
| *5975* | APARELHOS AUDITIVOS - VENDAS E SERVIÇOS |
| *5976* | BENS ORTOPÉDICOS - PRÓTESES |
| *5977* | LOJA DE COSMÉTICOS |
| *5978* | MÁQUINAS DE ESCREVER - VENDA, ALUGUEL E SERVIÇOS |
| *5983* | REVENDEDORES DE COMBUSTÍVEIS (FUEL DEALERS) |
| *5992* | FLORICULTURA |
| *5993* | TABACARIA |
| *5994* | BANCA DE JORNAL E PROVEDOR DE NOTÍCIAS |
| *5995* | PET SHOP |
| *5996* | PISCINAS E BANHEIRAS - SERVIÇOS, SUPRIMENTOS E VENDAS |
| *5997* | NAVALHA ELÉTRICA - VENDA E SERVIÇOS |
| *5998* | LOJAS DE BARRACAS E TOLDOS |
| *5999* | LOJAS ESPECIALIZADAS NÃO LISTADAS ANTERIORMENTE |
| *6010* | BANCOS / LOJAS DE POUPANÇA E INST. FINANCEIRA |
| *6011* | INSTITUIÇÃO FINANCEIRA - CAIXA ELETRÔNICO |
| *6012* | INSTITUIÇÃO FINANCEIRA - AGÊNCIAS E SERVIÇOS |
| *6050* | Similar a Dinheiro (Quase Cash) - Instituição Financeira Cliente |
| *6051* | CASAS DE CÂMBIO |
| *6211* | CORRETORES DE IMÓVEIS (SECURITIES BROKERS/DEALERS) |
| *6300* | VENDA DE SEGUROS(INSURANCE SALES/UNDERWRITE) |
| *6513* | CORRETOR DE IMÓVEIS (ALUGUEL) |
| *6532* | PAGTOS DE TRANSAÇÕES DE INST.FINANCEIRAS |
| *6533* | PAGTOS DE TRANSAÇÕES COMERCIAIS |
| *7011* | HOTEIS (HOTELS/MOTELS/RESORTS) |
| *7012* | TEMPO COMPARTILHADO (TIMESHARE) |
| *7032* | ACAMPAMENTOS RECREATIVOS E ESPORTIVOS |
| *7033* | SERVIÇOS DE ACAMPAMENTOS |
| *7210* | LAVANDARIA, LIMPEZA E SERVIÇOS DE VESTUÁRIO |
| *7211* | LAVANDERIA - FAMILIAR E COMERCIAL |
| *7216* | LAVANDERIA TINTURARIA |
| *7217* | LIMPEZA DE TAPETES E ESTOFADOS |
| *7221* | ESTÚDIOS DE FOTOGRAFIA |
| *7230* | SALAO DE BELEZA / BARBEARIA / DEPILAÇÃO / MANICURE |
| *7251* | LOJA/REPARO DE SAPATOS |
| *7261* | SERVIÇO FUNERÁRIO |
| *7273* | SERVIÇO DE ENCONTROS E ACOMPANHANTE |
| *7276* | SERVIÇOS DE PREP. IMPOST. DE RENDA (TAX PREP. SVCS) |
| *7277* | S. DE ACONSELHAMENTO DE DÍVIDAS, CASAMENTO E PESSOAL |
| *7278* | CLUBES DE COMPRAS |
| *7296* | ALUGUEL DE ROUPAS - FANTASIAS, UNIFORMES E ROUPAS SOCIAIS |
| *7297* | CENTRO DE SAUNAS E MASSAGENS |
| *7298* | CLÍNICAS DE ESTÉTICA FACIAL / CORPORAL |
| *7299* | OUTROS SERVIÇOS PESSOAIS |
| *7311* | PUBLICIDADES |
| *7321* | AGÊNCIAS DE ANÁLISE DE CRÉDITO DE CONSUMIDORES |
| *7333* | SERVIÇOS DE IMPRESSÃO E ARTE GRÁFICA |
| *7338* | COPIADORAS E FOTOCOPIADORAS |
| *7339* | SERVIÇO DE SECRETARIADO E ESTENOGRAFIA |
| *7342* | DEDETIZAÇÃO E DESINFECÇÃO |
| *7343* | SERVIÇO DE EXTERMINIO E DESINFETAÇÃO |
| *7349* | SERVIÇO LIMPEZA E MANUTENÇÃO |
| *7361* | AGÊNCIAS DE EMPREGO |
| *7372* | SERVIÇOS DE PROGRAMAÇÃO DE COMPUTADORES E PROCESS. DE DADOS |
| *7375* | SERVIÇO DE RECUPERAÇÃO DE INFORMAÇÃO |
| *7379* | COMPUTADORES: CONSERTOS E REPAROS |
| *7392* | CONSULTORIA EMPRESARIAL E SERVIÇOS DE RELAÇÕES PÚBLICAS |
| *7393* | AGÊNCIAS DE DETETIVES, PROTEÇÃO E DE SEGURANÇA |
| *7394* | ALUGUEL DE EQUIPAMENTO E MOBÍLIA DE ESCRITÓRIOS |
| *7395* | LABORATÓRIOS FOTOGRÁFICOS |
| *7399* | SERVIÇOS DE NEGÓCIOS |
| *7511* | PARADA DE CAMINHÕES (TRUCK STOP) |
| *7512* | ALUGUEL DE AUTOMÓVEIS (AUTOMOBILE RENTAL AGENCY) |
| *7513* | ALUGUEL DE CAMINHÕES (TRUCK/UTILITY TRAILER RENTALS) |
| *7519* | ALUGUEL DE MOTOR HOME (MOTOR HOME/RV RENTALS) |
| *7523* | ESTACIONAMENTOS E GARAGENS DE CARRO |
| *7531* | FUNILARIAS E PINTURA AUTOMOTIVA |
| *7534* | BORRACHARIAS |
| *7535* | LOJAS DE PINTURA DE AUTOMÓVEIS |
| *7538* | SERVIÇOS PARA CARROS (NÃO CONCESSIONÁRIA) |
| *7542* | LAVA JATO |
| *7549* | GUINCHO |
| *7622* | CONSERTO DE EQUIP. AUDIO E TV |
| *7623* | CONSERTO DE AR CONDICIONADO |
| *7629* | CONSERTO DE ELETRONICOS |
| *7631* | CONSERTO DE RELÓGIOS E JÓIAS |
| *7641* | RESTAURAÇÃO DE MÓVEIS (FURNITURE REPAIR) |
| *7692* | SERRALHEIROS E SOLDADORES |
| *7699* | LOJA DE CONSERTOS GERAIS E SERVIÇOS RELACIONADOS |
| *7829* | PRODUTORES E DISTRIBUIDORES DE FILMES |
| *7832* | CINEMAS, PRODUÇÕES CINEMATOGRÁFICAS |
| *7841* | LOJAS DE VIDEOS |
| *7911* | DANÇA (ESTUDIOS, ESCOLAS E SALÕES) |
| *7922* | TEATROS, PRODUC. TEATR. E ESPECTAC. |
| *7929* | BANDAS,ORQUESTRAS,ARTISTAS DIVERSOS(N CLASSIFICADO EM OUTRO) |
| *7932* | BARES DE SINUCA |
| *7933* | BOLICHE |
| *7941* | QUADRAS DE ESPORTE / PROPAGANDA ESPORTIVA |
| *7991* | ATRAÇÕES TURÍSTICAS E EXPOSIÇÕES |
| *7992* | AULAS DE GOLF PUBLICA |
| *7993* | FORNECEDORES DE MÁQUINAS DE VIDEOGAME OU JOGOS |
| *7994* | LOJAS DE DIVERSÃO / VIDEO GAME / LAN HOUSE / CIBER CAFÉ |
| *7995* | CASSINOS, LOTERIAS E JOGOS DE AZAR |
| *7996* | PARQUE DE DIVERSAO, CIRCO E AFINS |
| *7997* | ACADEMIAS / CLUBES |
| *7998* | AQUÁRIOS E ZOOLÓGICOS |
| *7999* | SERVIÇOS DE RECREAÇÃO E FESTAS |
| *8011* | MÉDICOS (CLÍNICAS E CONSULTÓRIOS) |
| *8021* | DENTISTAS E ORTODONTISTAS (CLÍNICAS E CONSULTÓRIOS) |
| *8031* | OSTEOPATAS |
| *8041* | QUIROPRAXIA |
| *8042* | OFTALMOLOGISTA E OPTOMETRISTAS |
| *8043* | OPTICIANS, OPTICAL GOODS, AND EYEGLASSES |
| *8049* | TRATAMENTOS PODIÁTRICOS |
| *8050* | CASAS DE REPOUSO, CLÍN. DE RECUPERAÇÃO E ENFERMAGEM |
| *8062* | HOSPITAIS |
| *8071* | ANALISES CLÍNICAS MÉDICAS E DENTAIS |
| *8099* | MEDICINA EM GERAL E PRATICANTES DE SERVIÇOS DE SAÚDE |
| *8111* | SERVIÇOS JURÍDICOS - ADVOGADOS |
| *8211* | EDUCAÇÃO PRIMÁRIA E SECUNDÁRIA (ELEM./SEC.S.) |
| *8220* | UNIVERSIDADES E FACULDADES (COLLEGES/UNIV/JC/PROF.) |
| *8241* | EDUCAÇÃO A DISTÂNCIA (CORRESPONDENCE SCHOOLS) |
| *8244* | ESCOLA DE COMÉRCIOS E SECRETARIADO (BUS./SEC. SCHOOL) |
| *8249* | ESCOLA DE NEGÓCIOS/VOCAÇÕES (TRADE/VOCATIONS S.) |
| *8299* | COLEGIOS (SCHOOLS) |
| *8351* | SERVIÇOS DE CUIDADOS DE CRIANÇAS (CHILD CARE SVCS) |
| *8398* | ORGANIZAÇÕES DE SERVIÇOS BENEFICENTES E SOCIAIS |
| *8641* | ASSOCIAÇÕES CÍVICAS E SOCIAIS |
| *8651* | ORGANIZAÇÕES POLITICAS |
| *8661* | ORGANIZAÇÕES RELIGIOSAS |
| *8675* | ASSOCIAÇÃO DE CARROS |
| *8699* | ORG. SIND., ASSOC. CULT. E OTRS ASSOC. NÃO CLASSIF. |
| *8734* | LABORATÓRIOS DE TESTE (PARA TESTES NÃO MÉDICOS) |
| *8911* | ARQUITETURA, ENGENHARIA E AGRIMENSURA |
| *8931* | CONTABILIDADE, AUDITORIA E SERVIÇOS DE CONTABILIDADE |
| *8999* | OUTROS SERVIÇOS PROFISSIONAIS DE ESPECIALIZADOS |
| *9211* | PENSÃO ALIMENTÍCIA (COURT COSTS/ALIMONY/SUPPORT) |
| *9222* | MULTAS (FINES) |
| *9223* | PAGAMENTOS DE TÍTULOS E FINANÇAS (BAIL AND BOND P.) |
| *9311* | PAGAMENTOS DE IMPOSTOS (TAX PAYMENTS) |
| *9399* | SERVIÇOS GOVERNAMENTAIS (GOVT SERV - DEFAULT) |
| *9402* | POSTAGENS (POSTAGE STAMPS) |
| *9405* | COMPRAS GOVERNAMENTAIS (INTRA-GOVERNMENT PURCHASES) |
| *9406* | Loteria de Propriedade do Governo (Países Específicos) |
| *9950* | DEPART. DE COMPRAS (INTRA- COMPANY PURCHASES) |
# Introdução
Source: https://docs.malga.io/documentations/type-tables/payment-methods-by-providers
Aqui você encontra uma visão completa dos provedores e métodos de pagamento suportados por cada um.
| Provedor | Crédito | Pix | Boleto | Voucher | Apple Pay | Serviços |
| - | :-: | :-: | :-: | :-: | :-: | :- |
| Sandbox | | | | | | |
| Adyen | | | | | | |
| Banrisul | | | | | | |
| Barte | | | | | | |
| Banco do Brasil | | | | | | |
| Bolt | | | | | | |
| Braintree | | | | | | |
| Braspag | | | | | | |
| BS2 | | | | | | |
| Cielo | | | | | | |
| Drip | | | | | | |
| Getnet SEP | | | | | | |
| Itaú | | | | | | |
| Klap | | | | | | |
| Malga | | | | | | |
| MapInvest | | | | | | |
| Mercado Pago | | | | | | |
| NuPay | | | | | | |
| Pagar.me v5 | | | | | | |
| PagSeguro | | | | | | |
| PicPay | | | | | | |
| PayPal | | | | | | |
| Rede | | | | | | |
| SafraPay | | | | | | |
| Stripe | | | | | | |
| VR | | | | | | |
| WorldPay | | | | | | |
| Zoop | | | | | | |
Este serviço ou método é oferecido pelo provedor e suportado pela API da
Malga
Este serviço ou método não é oferecido pelo provedor
Este serviço ou método é oferecido pelo provedor e ainda não é suportado
pela API da Malga. Caso tenha interesse em utilizar este recurso, contate o
nosso time de atendimento pelo e-mail
[suporte@malga.io](mailto:suporte@malga.io).
Não se aplica
# Começando em Vendors
Source: https://docs.malga.io/documentations/vendors/intro
O serviço de [**Vendedores**](/api-reference/vendors/criacao-de-um-novo-vendedor) permite que facilitadores de pagamento identifiquem os beneficiários finais de suas transações durante sua execução. Este serviço deve ser utilizado por marketplaces, franquias, aplicativos de delivery, entre outros tipos de negócios que possuem exigência regulatória prevista na circular [Bacen N° 3978 de 23 Janeiro de 2020](https://normativos.bcb.gov.br/Lists/Normativos/Attachments/50905/Circ_3978_v3_P.pdf).
## Facilitador de pagamentos
São entidades que habilitam estabelecimentos comerciais a aceitarem pagamentos eletrônicos em nome de um adquirente.
## Fluxo de transação com vendedor
Para identificar um vendedor/fornecedor em uma transação você deve:
* Possuir o código de facilitador de pagamentos (`paymentFacilitatorId`) fornecido por cada bandeira.
Obrigatório em alguns provedores, para mais detalhes [verifique a lista de provedores suportados](/documentations/vendors/provedores)
* Criar um vendedor, **[veja mais sobre a criação do vendor](/api-reference/vendors/criacao-de-um-novo-vendedor)**.
* Criar uma nova transação (**[charge](/api-reference/charges/realizar-nova-cobranca)**), informando o atributo `vendor`, informando o `id` do vendedor criado previamente, e o `paymentFacilitatorId` disponibilizado por sua respectiva bandeira.
## Informações sobre o vendedor
| Atributo | Tipo | Tamanho | Obrigatório | Descrição |
| - | - | - | - | - |
| referenceId | string | `<= 15` | Sim | Identificador do vendedor no seu sistema. (Número máximo de caracteres 15) |
| identityType | string | `enum` | Sim | Tipo de documento `CPF` ou `CNPJ` |
| identity | string | `<= 14` | Sim | Número do documento formato conforme tipo selecionado |
| mcc | string | `<= 10` | Sim | Código de segmento do lojista no adquirente |
| name | string | `<= 100` | Sim | Nome Completo ou Razão Social |
| email | string | `<= 100` | Não | Email do vendedor |
| phoneNumber | string | `13` | Não | Telefone de contato do vendedor |
| website | string | `<= 100` | Não | identificação do merchant id a ser utilizado |
| address.country | string | `2` | Sim | País onde se localiza o endereço - Padrão ISO 3166-1 alpha-2 |
| address.state | string | `2` | Sim | Estado |
| address.city | string | `<= 20` | Sim | Cidade |
| address.district | string | `<= 20` | Sim | Bairro |
| address.zipCode | string | `<= 10` | Sim | Código postal CEP |
| address.street | string | `<= 100` | Sim | Nome da rua/avenida/travessa |
| address.streetNumber | string | `<= 5` | Sim | Número da rua |
| address.complement | string | `<= 20` | Não | Complemento caso exista |
## Exemplo de criação de um vendedor
```bash theme={null}
curl --location --request POST \
--url https://api.malga.io/v1/vendors \
--header 'Content-Type: application/json' \
--header 'X-Client-Id: ' \
--header 'X-Api-Key: ' \
--data '{
"referenceId": "12345",
"identityType": "CNPJ",
"identity": "12345678000199",
"mcc": "1234",
"name": "Empresa Exemplo Ltda",
"email": "contato@empresaexemplo.com",
"phoneNumber": "5511999999999",
"website": "https://www.empresaexemplo.com",
"address": {
"country": "BR",
"state": "SP",
"city": "São Paulo",
"district": "Centro",
"zipCode": "01001-000",
"street": "Avenida Paulista",
"number": "1000",
"complement": "Apto 101"
}
}'
```
```bash theme={null}
< HTTP/2 201
{
"id": "db56bd6a-10d7-4039-9c68-fc4405a1a3e1",
"referenceId": "12345",
"identityType": "CNPJ",
"identity": "12345678000199",
"mcc": "1234",
"name": "Empresa Exemplo Ltda",
"email": "contato@empresaexemplo.com",
"phoneNumber": "5511999999999",
"website": "https://www.empresaexemplo.com",
"address": {
"country": "BR",
"state": "SP",
"city": "São Paulo",
"district": "Centro",
"zipCode": "01001-000",
"street": "Avenida Paulista",
"number": "1000",
"complement": "Apto 101"
},
"updatedAt": "2024-06-26T12:34:56Z",
"createdAt": "2024-06-01T08:00:00Z"
}
```
### Exemplo de cobrança com vendedor
```bash theme={null}
curl -X POST 'https://api.malga.io/v1/charges' \
--header 'X-Client-Id: ' \
--header 'X-Api-Key: ' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchantId": "7f8870a2-71c9-4ef0-a531-82000e00b7e1",
"amount": 150,
"currency": "BRL",
"statementDescriptor": "Pedido #231 loja joão",
"capture": false,
"paymentMethod": {
"paymentType": "credit",
"installments": 1
},
"paymentSource": {
"sourceType": "card",
"card": {
"cardHolderName": "JOAO DA SILVA",
"cardNumber": "4929564637987814",
"cardCvv": "320",
"cardExpirationDate": "06/2028"
}
},
"vendor": {
"id": "db56bd6a-10d7-4039-9c68-fc4405a1a3e1",
"paymentFacilitatorId": "123456"
}
}'
```
```bash theme={null}
< HTTP/2 201
{
"id": "3768a9bf-68fd-43e8-b7f6-e7d12ee22139",
"clientId": "",
"merchantId": "46b433bf-79aa-4cb1-9eaa-cdaea42cb955",
"description": null,
"orderId": null,
"createdAt": "2023-02-04T19:02:36.769Z",
"amount": 150,
"originalAmount": 150,
"currency": "BRL",
"statementDescriptor": "Pedido #231 loja joão",
"capture": false,
"isDispute": false,
"status": "authorized",
"paymentMethod": {
"installments": 1,
"paymentType": "credit"
},
"paymentSource": {
"sourceType": "card",
"cardId": "5afcdeb3-9e56-4dd9-bfee-e6b70c75b200"
},
"vendor": {
"id": "db56bd6a-10d7-4039-9c68-fc4405a1a3e1",
"paymentFacilitatorId": "123456"
},
"transactionRequests": [
{
"id": "7adfc4c6-567a-4ce0-a9a3-a08a21beff7f",
"createdAt": "2023-10-04T19:02:37.106Z",
"updatedAt": "2023-10-04T19:02:37.205Z",
"idempotencyKey": "40efd5a0-1010-5c8d-9f75-0cd455553388",
"providerId": "c6686322-f27b-90b2-a61b-106e7a564087",
"providerType": "SANDBOX",
"transactionId": "eb80f69e-de28-5060-8daf-da0fecc3b18f",
"amount": 150,
"authorizationCode": "9301661",
"authorizationNsu": "4244270",
"requestStatus": "success",
"requestType": "authorization",
"responseTs": "62ms",
"providerAuthorization": {
"networkAuthorizationCode": "7909027",
"networkResponseCode": "8168918"
}
}
],
"appInfo": null
}
}
```
# Provedores suportados no serviço de Vendors
Source: https://docs.malga.io/documentations/vendors/provedores
Lista dos provedores de pagamento suportados pelo serviço de Vendors na Malga, indicando quais exigem o envio do paymentFacilitatorId.
Os provedores de pagamento suportados pelo serviço são:
| Provedor | Precisa enviar o `paymentFacilitatorId`? |
| - | :-: |
| Adyen | |
| Cielo | |
| Rede | |
| SafraPay | |
| Sandbox | |
Para maiores informações sobre o `paymentFacilitatorId` consulte sua bandeira.
* [Visa](https://www.visa.com.br/parceiros-visa/informacoes-para-parceiros/facilitadores-de-pagamento.html#O_que_%C3%A9_arranjo_de_pagamento_da_Visa_-1356886403)
* [MasterCard](https://www.mastercard.com.br/pt-br/visao/quem-somos/participantes-arranjo-mastercard.html)
# Recebendo webhooks com filas de mensagens
Source: https://docs.malga.io/documentations/webhooks/webhook-receiver-aws-sqs
Implemente um receiver de webhooks da Malga resiliente usando filas de mensagens AWS SQS para evitar timeouts e garantir processamento assíncrono.
Um erro comum ao integrar webhooks é colocar regras de negócio diretamente no endpoint que recebe os eventos. Isso aumenta o risco de timeouts e falhas de processamento, fazendo com que a Malga interprete a entrega como malsucedida e inicie reentregas desnecessárias.
A abordagem recomendada é separar o **recebimento** do **processamento**: o endpoint apenas valida e enfileira o evento, e um worker separado consome a fila e executa a lógica de negócio.
## Arquitetura
```text theme={null}
Malga → seu endpoint (receiver) → fila → worker → sua lógica de negócio
↓ (em caso de falha)
DLQ
```
O receiver deve:
1. Receber o `POST` da Malga
2. Verificar a assinatura do evento (veja [Segurança Webhook](/documentations/webhooks/webhook1-1#segurança-webhook))
3. Enfileirar o payload
4. Retornar `HTTP 200` imediatamente
O worker consome as mensagens da fila e executa as regras de negócio. Se o processamento falhar, a mensagem é retentada automaticamente pela fila e, após o número máximo de tentativas, encaminhada para a **DLQ (Dead Letter Queue)**, garantindo que nenhum evento seja perdido silenciosamente.
## Opções de fila
| Serviço | Tipo | Observações |
| - | - | - |
| **AWS SQS** | Gerenciado (cloud) | DLQ nativa, fácil integração com outros serviços AWS |
| **Google Cloud Pub/Sub** | Gerenciado (cloud) | Suporte a múltiplos subscribers, retenção configurável |
| **Azure Service Bus** | Gerenciado (cloud) | Suporte a filas e tópicos, DLQ nativa |
| **RabbitMQ** | Self-hosted / gerenciado | Flexível, amplamente adotado, suporte a DLQ via dead-letter exchange |
| **Redis (BullMQ / Sidekiq)** | Self-hosted / gerenciado | Simples de operar, ideal para quem já usa Redis na stack |
# Webhooks v1.0 (obsoleto)
Source: https://docs.malga.io/documentations/webhooks/webhook1-0
Acesse a versão 1.1 [clicando aqui](/documentations/webhooks/webhook1-1)
A Malga utiliza o Serviço de Webhooks para notificar o seu sistema sobre os eventos ocorridos na nossa plataforma. Através de webhooks você consegue atualizar seu sistema sempre que um evento importante acontece, como a atualização de status de uma cobrança para confirmar ou cancelar um determinado pagamento.
## Fluxo básico para receber notificações via webhooks
* Crie um serviço com um endpoint acessível dentro do seu sistema para receber as requisições de notificação dos eventos feitas pela Malga.
* Registre seu endpoint na Malga criando um webhook para receber notificações dos eventos desejados.
* A Malga enviará uma requisição HTTP para seu endpoint com os dados do objeto alterado sempre que o determinado evento registrado no seu webhook acontecer.
## Criação de um webhook
Realize a criação e gestão de webhooks usando o [Serviço de Webhooks](/api-reference/webhooks/listagem-de-webhooks-cadastrados).
```bash theme={null}
curl --location --request POST 'https://api.malga.io/v1/webhooks' \
--header 'X-Client-Id: ' \
--header 'X-Api-Key: ' \
--header 'Content-Type: application/json' \
--data-raw '{
"event": "transaction.authorized",
"endpoint": "https://enuqkxq2lu8be0y.m.pipedream.net",
"version": 1,
"status": true
}'
< HTTP/2 201
{
"id": "31c142ad-4c30-4964-ba24-2df0f2bbb745",
"clientId": "cc0b1e41-2936-45c5-947f-93995ffcdc00",
"event": "transaction.authorized",
"endpoint": "https://enuqkxq2lu8be0y.m.pipedream.net",
"version": 1,
"status": true,
"createdAt": "2021-07-06T21:03:36.590Z",
"updatedAt": "2021-07-06T21:03:36.590Z"
}
```
## Evento de notificação enviado
Muitos dos eventos que ocorrem na sua integração com a Malga são síncronos e você recebe um retorno direto como resposta da sua requisição, como nos casos de criar um cliente, criar um cartão, etc.
Porém, em determinados casos, a resposta que você recebe após realizar uma requisição não contempla o status final daquele objeto, sendo necessário registrar um webhook para receber respostas assíncronas da API da Malga, mantendo seu sistema atualizado, isso ocorre principalmente nos casos de cobrança através de PIX e Boleto, notificação de suspeita de fraude, liquidação financeira de transações, entre outros.
Quando um determinado evento ocorre a Malga então cria um objeto do tipo `event` que é enviado através de uma requisição HTTP para o seu endpoint cadastrado. O evento é imutável dentro da estrutura de notificações da Malga, isso significa que os dados do objeto que sofreu alteração são gravados junto com o evento, representando o estado do objeto imediatamente após o evento que o alterou.
**Exemplo de requisição de notificação de evento enviada pela Malga para seu endpoint:**
```bash theme={null}
> POST HTTP/2
> Host:
> User-Agent: axios/0.21.1
> Accept: application/json, text/plain, */*
> Content-Type: application/json
> x-idempotency-key: 5616b19e-4d99-4bd3-b415-4990e5cab4f4
> HTTP/2
{
"id": "421b0e9d-ab3f-4d29-b626-d832e89f3a3b",
"apiVersion": "1",
"object": "transaction",
"event": "authorized",
"data": {
"status": "authorized",
"id": "ca18308b-6846-43c4-aa92-bc7685e1f979",
"updatedAt": "2022-08-01T21:27:54.759Z",
"createdAt": "2022-08-01T21:27:52.088Z",
"idempotencyKey": null,
"requestId": null,
"orderId": "17",
"amount": 200,
"originalAmount": 200,
"currency": "BRL",
"installments": 1,
"clientId": "cc0b1e41-2936-45c5-947f-93995ffcdc00",
"statementDescriptor": "W✔️C-",
"merchantId": "5002bdcd-e816-4741-871c-6de4f31ea965",
"capture": false,
"isDispute": false,
"isProcessing": false,
"customerId": null,
"description": null,
"fee": null,
"feeAmount": null,
"transactionRequests": [
{
"id": "50c7da2f-6283-4e4d-93f9-3f5df50808ca",
"updatedAt": "2022-08-01T21:27:53.719Z",
"createdAt": "2022-08-01T21:27:53.317Z",
"idempotencyKey": "d108207f-3189-4166-b774-34e2c535ece5",
"requestId": null,
"providerId": "e78f2c8a-2c13-4e2b-ba67-efe528452c61",
"providerType": "STRIPE",
"networkTransactionId": "ch_3JYE7MHjGFBGEeiP0lfTD3Ob",
"amount": 200,
"authorizationCode": null,
"authorizationNsu": null,
"requestStatus": "success",
"requestType": "authorization",
"responseTs": "395ms",
"pix": null,
"boleto": null,
"providerError": null,
"providerAuthorization": null
}
],
"transactionError": null
},
"createdAt": "2022-08-31T11:41:51.583Z"
}
```
## Boas práticas para receber notificações
**Tentativas e Retentativas de envio de notificações**
A Malga fará a tentativa de envio de uma determinada notificação para seu webhook, em caso de problemas no processamento do serviço passamos a realizar novas tentativas de entrega das notificações com um escalonamento de tempo entre as tentativas.
Para concluir o processamento da notificação o seu serviço deve retornar um HTTP STATUS 200 (OK) ou 201 (CREATED) dentro do tempo máximo de espera, caso contrário, será entendido que o endpoint não o recebeu corretamente e o evento será marcado para retentativa.
| Evento | Prazo de intervalo do disparo | Tempo de espera para resposta |
| - | - | - |
| Criado | Imediatamente | 30 segundos |
| Primeira tentativa | 5 minutos | 5 segundos |
| Segunda tentativa | 45 minutos | 5 segundos |
| Terceira tentativa | 6 horas | 5 segundos |
| Quarta tentativa | 1 dia | 5 segundos |
| Quinta tentativa | 2 dias | 5 segundos |
| Sexta tentativa | 4 dias | 5 segundos |
A Malga mantém o registro de todas as notificações enviadas, incluindo os dados da requisição (Request) e da resposta do servidor externo (Response), pelo período de 45 dias.
Quando uma notificação ultrapassa o número máximo de tentativas de entrega, a mensagem é marcada como perdida e permanece armazenada para reprocessamento futuro mediante solicitação.
A URL do seu webhook deve estar exposta (pública) para a internet, de forma que a plataforma da Malga a alcance e consiga enviar os eventos.
**Processando eventos, ordem e duplicidade**
Quando um determinado evento ocorre, a Malga então cria um objeto do tipo `event` que registra o objeto e o tipo do evento de atualização, bem como a data da ocorrência. Cada evento possui um identificador único que deve ser utilizado do lado do cliente para evitar duplicidade de processamento. O identificador é enviado no objeto `event` no corpo da requisição e também no header `x-idempotency-key` do request, sendo o mesmo valor.
Os eventos são enviados através de uma requisição HTTP para o seu endpoint exatamente na ordem em que eles ocorreram no sistema da Malga, porém recomendamos que seja utilizada a data de criação do evento, também enviada no objeto `event`, para garantir uma ordem cronológica no processamento dos eventos do lado do cliente. Caso você receba um evento com data de criação inferior à data de criação de um outro evento já processado pelo seu sistema, os dados do objeto enviado no evento estarão desatualizados, ficando a seu critério tomar ou não alguma ação com esse evento.
## Testando notificação via webhooks
Para testar sua integração com os webhooks da Malga, você pode desenvolver direto seu sistema ou utilizar algum serviço como request.bin ou pipedream.com para validar inicialmente os eventos enviados. Basta gerar um novo endpoint nestes serviços e cadastrar um webhook na Malga com o endpoint gerado que todos os eventos enviados ficarão registrados nestes serviços para consulta e debug.
Permitimos no ambiente de sandbox `sandbox-api.malga.io` a atualização manual de transações criadas para os status de authorized, voided e charged\_back, dessa forma você consegue criar uma transação e simular o evento desejado.
**Requisição para atualizar manualmente uma transação em sandbox**
```bash theme={null}
curl --location --request POST 'https://api.malga.io/v1/charges/' \
--header 'X-Client-Id: ' \
--header 'X-Api-Key: ' \
--header 'Content-Type: application/json' \
--data-raw '{
"status": "charged_back"
}'
```
## Eventos suportados para notificação via webhooks
| Evento | Descrição |
| - | - |
| **transaction.pending** | Evento enviado quando a cobrança é registrada e os dados para pagamento estão disponíveis |
| **transaction.pre\_authorized** | Evento enviado quando é reconhecida a confirmação do pagamento da cobrança |
| **transaction.authorized** | Evento enviado quando é reconhecida a confirmação da captura do pagamento da cobrança |
| **transaction.failed** | Evento enviado quando a cobrança é negada pela instituição financeira antes de ter sido autorizada |
| **transaction.canceled** | Evento enviado quando a cobrança é cancelada após ter sido autorizada porém não capturada, sem estorno financeiro |
| **transaction.voided** | Evento enviado quando a cobrança é cancelada após ter sido autorizada e capturada, produzindo um estorno financeiro |
| **transaction.charged\_back** | Evento enviado quando a cobrança é cancelada após ter sido contestada e/ou não reconhecida pelo portador do cartão |
| **transaction.dispute** | Evento enviado quando uma disputa relacionada à transação é aberta |
| **transaction.dispute\_closed** | Evento enviado quando uma disputa é encerrada. Caso você receba charged\_back ao invés de dispute\_closed, significa que o cliente ganhou a disputa. |
| **transaction.revert\_void** | Evento enviado quando precisamos fazer a reversão de um estorno bem-sucedido. [Veja mais](/documentations/payment-methods/credit-card#reversao-automatica-de-um-estorno-revert-void) |
# Webhooks v1.1
Source: https://docs.malga.io/documentations/webhooks/webhook1-1
A Malga utiliza o serviço de webhooks para notificar o seu sistema sobre os eventos ocorridos na nossa plataforma. Através de webhooks, você consegue atualizar seu sistema sempre que um evento importante acontece, como a atualização de status de uma cobrança para confirmar ou cancelar um determinado pagamento.
Procurando pela doc da versão 1.0? [Acesse aqui](/documentations/webhooks/webhook1-0).
## Fluxo básico para receber notificações via webhooks
* Crie um serviço com um endpoint acessível dentro do seu sistema para receber as requisições de notificação dos eventos feitos pela Malga.
* Registre seu endpoint na Malga criando um webhook para receber notificações dos eventos desejados.
* A Malga enviará uma requisição HTTP para seu endpoint com os dados do objeto alterado sempre que o determinado evento registrado no seu webhook acontecer.
## Criação de um webhook
Realize a criação e gestão de webhooks usando o [Serviço de Webhooks](/api-reference/webhooks/listagem-de-webhooks-cadastrados).
```bash theme={null}
curl --location --request POST 'https://api.malga.io/v1/webhooks' \
--header 'X-Client-Id: ' \
--header 'X-Api-Key: ' \
--header 'Content-Type: application/json' \
--data-raw '{
"event": "transaction.authorized",
"endpoint": "https://enuqkxq2lu8be0y.m.pipedream.net",
"version": 1.1,
"status": true
}'
< HTTP/2 201
{
"id": "31c142ad-4c30-4964-ba24-2df0f2bbb745",
"clientId": "cc0b1e41-2936-45c5-947f-93995ffcdc00",
"event": "transaction.authorized",
"endpoint": "https://enuqkxq2lu8be0y.m.pipedream.net",
"publicKey": "-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEAIda0HljovhG1yKez/Du7MUoKup/cbXqPgwyGOATOiJQ=\n-----END PUBLIC KEY-----\n"
"version": 1.1,
"status": true,
"createdAt": "2021-07-06T21:03:36.590Z",
"updatedAt": "2021-07-06T21:03:36.590Z"
}
```
## Evento de notificação enviado
Muitos dos eventos que ocorrem na sua integração com a Malga são síncronos e você recebe um retorno direto como resposta da sua requisição, como nos casos de criar um cliente, criar um cartão, etc.
Porém, em determinados casos, a resposta que você recebe após realizar uma requisição não contempla o status final daquele objeto, sendo necessário registrar um webhook para receber respostas assíncronas da API da Malga para manter seu sistema atualizado, isso ocorre principalmente nos casos de cobrança através de PIX e Boleto, notificação de suspeita de fraude, liquidação financeira de transações, entre outros.
Quando um determinado evento ocorre, a Malga então cria um objeto do tipo `event` que é enviado através de uma requisição HTTP para o seu endpoint cadastrado. O evento é imutável dentro da estrutura de notificações da Malga, isso significa que os dados do objeto que sofreu alteração são gravados junto com o evento, representando o estado do objeto imediatamente após o evento que o alterou.
## transaction
**Exemplo de requisição de notificação de evento de uma transação enviada pela Malga para seu endpoint:**
```bash theme={null}
> POST HTTP/2
> Host:
> User-Agent: axios/0.21.1
> Accept: application/json, text/plain, */*
> Content-Type: application/json
> X-Idempotency-Key: 5616b19e-4d99-4bd3-b415-4990e5cab4f4
> X-Plug-Date: 1660053072711
> X-Plug-Signature: 1f40fc92da241694750979ee6cf582f2d5d7d28e18335de05abc54d0560e0f5302860c652bf08d560252aa5e74210546f369fbbbce8c12cfc7957b2652fe9a75
> HTTP/2
{
"id": "5616b19e-4d99-4bd3-b415-4990e5cab4f4",
"apiVersion": "1.1",
"object": "transaction",
"event": "authorized",
"createdAt": "2021-07-05T18:56:08.672Z"
"data": {
"id": "242b9be8-cd60-461d-af27-f31e3d6e3fb7",
"updatedAt": "2021-07-05T18:56:08.247Z",
"createdAt": "2021-07-05T18:56:08.247Z",
"idempotencyKey": null,
"requestId": null,
"amount": 1500,
"originalAmount": 1500,
"installments": 1,
"clientId": "cc0b1e41-2936-45c5-947f-93995ffcdc00",
"description": null,
"statementDescriptor": "Pedido #231 loja joão",
"status": "authorized",
"capture": true,
"isDispute": false,
"fee": null,
"feeAmount": null,
"transactionRequests": [{
"id": "87c3973c-6a8d-40a5-8b3b-f6e89a8393ab",
"updatedAt": "2021-07-05T18:56:08.648Z",
"createdAt": "2021-07-05T18:56:08.255Z",
"idempotencyKey": "fdd134fa-f79e-4164-b635-a6510908e1a2",
"requestId": null,
"providerId": "367b118f-a9be-421b-bb61-5df4261df634",
"providerType": "STRIPE",
"transactionId": "ch_3JYE7MHjGFBGEeiP0lfTD3Ob",
"amount": 1500,
"authorizationCode": "486677",
"authorizationNsu": "d8d230ce-7222-4ca6-b08f-135289588bc8",
"responseCode": "1",
"requestStatus": "success",
"requestType": "authorization",
"responseTs": "377ms",
}],
"paymentFlow": {
"id": "0b4e9c3e-2f1a-4b6c-8d9e-1f2a3b4c5d6e",
"metadata": {
"stringProperty": "value for property 1",
"numericProperty": 10
}
}
}
}
```
Quando a cobrança é processada por um [Fluxo Inteligente](/documentations/flow-guide/introduction#uso-de-metadados-de-transacao), o objeto `data` inclui a propriedade `paymentFlow`:
* **`paymentFlow.id`** — identificador do fluxo que processou a cobrança.
* **`paymentFlow.metadata`** — o mesmo objeto de `metadata` que você enviou em `paymentFlow.metadata` na criação da cobrança, usado nas regras condicionais do fluxo.
A propriedade `paymentFlow` só é enviada quando a cobrança passa por um Fluxo Inteligente. Cobranças que não acionam um fluxo não trazem esse campo, mesmo que `metadata` tenha sido informado apenas para o roteamento.
## seller
Na propriedade data, você terá acesso a dois objetos aninhados: origin e seller.
Dentro do objeto seller, você poderá visualizar o estado atual do vendedor com informações de todos os provedores.
Já na propriedade origin, você receberá o nome do provedor que originou a emissão do evento. Por exemplo, se o valor de origin for SANDBOX, significa que somente o provedor SANDBOX sofreu modificação de status.
Confira o exemplo abaixo para entender melhor como funciona:
Dentro de `seller.bankAccount`, os identificadores `bank` (COMPE) e `ispb` podem estar ambos preenchidos ou apenas um deles, conforme o cadastro do recebedor. Consulte a [seção sobre `bank` e `ispb`](/documentations/split/seller#identificador-do-banco-bank-e-ispb) para detalhes.
```json theme={null}
{
"id": "f2406fde-0c6b-4084-a23f-cec980ab72cc",
"apiVersion": "1.1",
"object": "seller",
"event": "active",
"data": {
"origin": {
"provider": "SANDBOX",
"providerId": "af1f0562-150b-45df-93d3-ced36c6967f0",
"status": "active"
},
"seller": {
"bankAccount": {
"accountCheckDigit": "22",
"accountNumber": "3850",
"bank": "077",
"ispb": "60746948",
"branchCheckDigit": "1",
"branchNumber": "492",
"createdAt": "2023-03-24T19:53:38.780Z",
"holderDocument": "603933950",
"holderName": "Vitória Julia Agatha Aparício",
"id": "9c1adcfa-a4c2-41cf-b717-30af7807342a",
"type": "conta_corrente",
"updatedAt": "2023-03-24T19:53:38.780Z"
},
"business": {
"address": {
"city": "Maracan",
"complement": null,
"country": "BR",
"createdAt": "2023-03-24T19:53:38.826Z",
"district": "AB",
"id": "59b67976-5d66-4870-921d-7eac4cf6d45a",
"state": "CE",
"street": "Rua Nova Lua",
"streetNumber": "30",
"updatedAt": "2023-03-24T19:53:38.826Z",
"zipCode": "61000-320"
},
"createdAt": "2023-03-24T19:53:38.815Z",
"description": "business description",
"document": {
"country": "BR",
"createdAt": "2023-03-24T19:53:38.838Z",
"id": "364d26de-98d3-4c44-b99c-4f7eec069350",
"number": "88.627.023/0001-71",
"type": "cnpj",
"updatedAt": "2023-03-24T19:53:38.838Z"
},
"email": "email@email.com",
"facebook": null,
"id": "d4cfef03-fd11-4ce7-8240-5b197143795b",
"name": "Business 1",
"openingDate": "2022-01-10",
"phoneNumber": "12345667",
"twitter": null,
"updatedAt": "2023-03-24T19:53:38.815Z",
"website": null
},
"clientId": "e234eeb3-483d-4df2-87eb-1e2be5cdaccd",
"id": "1705bde2-6707-49bb-8f72-63b7f91e9f38",
"mcc": 4040,
"merchantId": "37a9aed8-b1a9-4069-befa-71479f54e0b1",
"metadata": null,
"owner": null,
"providers": [
{
"createdAt": "2023-03-24T19:53:38.939Z",
"externalId": "4039535",
"externalStatus": "active",
"externalStatusReason": "ok",
"providerType": "SANDBOX",
"status": "pending",
"updatedAt": "2023-03-24T19:58:00.452Z"
}
],
"transferPolicy": {
"anticipatableVolumePercentage": null,
"automaticAnticipation1025Delay": null,
"automaticAnticipationDays": null,
"automaticAnticipationEnabled": null,
"automaticAnticipationType": null,
"createdAt": "2023-03-24T19:53:38.800Z",
"id": "837ea08e-f6f8-4148-bd22-48783751d7fb",
"transferDay": "5",
"transferEnabled": true,
"transferInterval": "monthly",
"updatedAt": "2023-03-24T19:53:38.800Z"
}
}
},
"createdAt": "2023-03-24T19:58:03.663Z"
}
```
## subscription
**Exemplo de requisição de notificação de evento de uma assinatura enviada pela Malga para seu endpoint:**
```bash theme={null}
> POST HTTP/2
> Host:
> User-Agent: axios/0.21.1
> Accept: application/json, text/plain, */*
> Content-Type: application/json
> X-Idempotency-Key: 5616b19e-4d99-4bd3-b415-4990e5cab4f4
> X-Plug-Date: 1660053072711
> X-Plug-Signature: 1f40fc92da241694750979ee6cf582f2d5d7d28e18335de05abc54d0560e0f5302860c652bf08d560252aa5e74210546f369fbbbce8c12cfc7957b2652fe9a75
> HTTP/2
{
"id": "019a362f-f69c-7789-b535-7051a0031bbe",
"apiVersion": "1.1",
"object": "subscription",
"event": "created",
"data": {
"subscription": {
"id": "019a362f-f69c-7789-b535-7051a0031bbe",
"name": "Test Subscription for Events",
"clientId": "e0d26950-541b-4b28-b4ec-a95fb61f1a0d",
"merchantId": "3e452afd-4b0f-4d11-87bb-6ad3345709d7",
"customerId": "a3994087-d867-4c30-8b07-fe0a2f3db77b",
"referenceKey": "test-event-ref",
"currency": "BRL",
"items": [
{
"name": "Test Product",
"description": "Test Description",
"amount": 2500,
"quantity": 1
}
],
"recurrence": {
"interval": "monthly",
"startAt": "2025-10-30",
"nextDueDate": "2025-11-30"
},
"paymentMethod": {
"type": "credit",
"card": {
"cardId": "5e334112-6f22-4c31-8e24-2f89ff77e21c"
}
},
"status": "created",
"amount": 2500,
"liveMode": false,
"createdAt": "2025-10-30T17:35:04.348495Z",
"updatedAt": "2025-10-30T17:35:04.348495Z"
}
},
"createdAt": "2025-10-30T17:36:16.718Z"
}
```
**Exemplo de evento subscription.activated com cycle:**
```json theme={null}
{
"id": "019a353e-bae2-7e5f-96e3-c0eab8681652",
"apiVersion": "1.1",
"object": "subscription",
"event": "activated",
"data": {
"subscription": {
"id": "019a353e-bae2-7e5f-96e3-c0eab8681652",
"name": "Assinatura Premium com Eventos",
"clientId": "e234eeb3-483d-4df2-87eb-1e2be5cdaccd",
"merchantId": "225d39bc-1fbb-480a-90bd-f0caad05d2d0",
"customerId": "2a8b64ce-904c-4256-b79a-49525808609c",
"referenceKey": "SUB-PREMIUM-001",
"currency": "BRL",
"items": [
{
"name": "Ingresso VIP Mensal",
"description": "Acesso VIP premium a eventos mensais",
"amount": 29900,
"quantity": 1,
"sku": "VIP-EVENT-001",
"risk": "Low",
"categoryId": "entertainment",
"locality": "São Paulo",
"date": "2025-12-01",
"type": 1,
"genre": "Shows e Eventos",
"tickets": {
"quantityTicketSale": 1,
"convenienceFeeValue": 15.5,
"quantityFull": 1,
"batch": 1
},
"location": {
"street": "Av. Paulista",
"number": "1000",
"complement": "Centro de Convenções",
"zipCode": "01310-100",
"city": "São Paulo",
"state": "SP",
"country": "Brasil",
"district": "Bela Vista",
"reference": "Próximo ao MASP"
}
}
],
"recurrence": {
"interval": "monthly",
"startAt": "2025-10-30",
"nextDueDate": "2025-11-30"
},
"paymentMethod": {
"type": "credit",
"card": {
"cardId": "ebef4e7e-b5d3-49d8-ac8f-b973faaa3ac5"
},
"installments": 1
},
"status": "active",
"amount": 29900,
"liveMode": false,
"createdAt": "2025-10-30T13:11:34.882942Z",
"updatedAt": "2025-10-30T13:11:35.921247966Z"
},
"cycle": {
"id": "019a353e-bafa-774b-9664-8217b3d19da6",
"customerId": "2a8b64ce-904c-4256-b79a-49525808609c",
"merchantId": "225d39bc-1fbb-480a-90bd-f0caad05d2d0",
"cycle": 1,
"status": "authorized",
"amount": 29900,
"scheduledAt": "2025-10-30",
"paymentHistory": [
{
"id": "d6738023-a45c-4d58-a303-456da757cca6",
"createdAt": "2025-10-30T13:11:34.917233965Z",
"executedAt": "2025-10-30T13:11:34.905674924Z",
"chargeId": "fe703f43-8f77-4780-80d1-b1c4ad44db6c",
"attemptNumber": 1,
"paymentMethod": {
"type": "credit",
"card": {
"cardId": "ebef4e7e-b5d3-49d8-ac8f-b973faaa3ac5"
},
"installments": 1
},
"error": null
}
],
"createdAt": "2025-10-30T13:11:34.906418Z"
}
},
"createdAt": "2025-10-30T14:38:59.398Z"
}
```
## purchase
Os eventos `purchase.*` notificam o andamento de uma [Venda com múltiplos cartões](/documentations/payment-methods/multiple-cards). São sete eventos, listados em [Eventos Purchase](#eventos-purchase), e todos existem somente na versão 1.1 do webhook.
Um webhook em `"version": 1.0` não recebe nenhum evento `purchase.*`, nem com `"event": "*"`. Cadastrar um evento `purchase.*` com versão abaixo de 1.1 devolve `400` com `webhook_purchase_event_requires_version_1_1`.
### Cadastro do webhook
Cadastre um evento específico ou use `"event": "*"` para receber todos os eventos da conta na versão 1.1. Com o curinga, o seu endpoint também recebe `transaction.*`, `seller.*` e `subscription.*`: filtre pelo campo `object` e responda `200` aos objetos que você não processa.
```bash theme={null}
curl --location --request POST 'https://api.malga.io/v1/webhooks' \
--header 'X-Client-Id: ' \
--header 'X-Api-Key: ' \
--header 'Content-Type: application/json' \
--data-raw '{
"event": "purchase.paid",
"endpoint": "https://seu-dominio.com/webhooks/malga",
"version": 1.1,
"status": true
}'
```
### Como a notificação chega
O corpo tem sempre a mesma estrutura, para qualquer evento de Venda. O nome do evento chega dividido em dois campos: `purchase.paid` é entregue como `"object": "purchase"` e `"event": "paid"`. Concatene `object` e `event` para montar o nome. O campo `apiVersion` é uma string (`"1.1"`).
O campo `id` identifica a notificação, não a Venda, e é igual ao header `X-Idempotency-Key`. O `data` traz o conteúdo do evento e varia conforme o evento, como mostram os exemplos a seguir.
**Exemplo de requisição de notificação do evento `purchase.created` enviada pela Malga para seu endpoint:**
```bash theme={null}
> POST HTTP/2
> Host:
> Content-Type: application/json; charset=utf-8
> X-Idempotency-Key: 5616b19e-4d99-4bd3-b415-4990e5cab4f4
> X-Plug-Date: 1660053072711
> X-Plug-Signature: 1f40fc92da241694750979ee6cf582f2d5d7d28e18335de05abc54d0560e0f5302860c652bf08d560252aa5e74210546f369fbbbce8c12cfc7957b2652fe9a75
> HTTP/2
{
"id": "5616b19e-4d99-4bd3-b415-4990e5cab4f4",
"apiVersion": "1.1",
"object": "purchase",
"event": "created",
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"merchantId": "3b8c1f2a-4d5e-6f70-8192-a3b4c5d6e7f8",
"amount": 15000,
"currency": "BRL",
"capture": true,
"status": "pending",
"orderId": "pedido-1001",
"sessionId": null,
"payments": [
{
"id": "16167219-c4a5-4866-939e-afd42be1d2b4",
"slotIndex": 0,
"amount": 10000,
"installments": 1,
"status": "pending",
"paymentMethodSnapshot": {
"sourceType": "card",
"cardId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"last4": "4242"
}
},
{
"id": "67aef675-5aab-4e66-a647-6252e0989695",
"slotIndex": 1,
"amount": 5000,
"installments": 3,
"status": "pending",
"paymentMethodSnapshot": {
"sourceType": "token",
"tokenId": "9f8e7d6c-5b4a-3928-1706-5e4d3c2b1a09",
"last4": "4444"
}
}
],
"createdAt": "2026-07-27T18:00:00Z",
"updatedAt": "2026-07-27T18:00:00Z"
},
"createdAt": "2026-07-27T18:00:00.412Z"
}
```
`orderId` e `sessionId` chegam como `null` quando você não os informa na criação. O `id` de cada item de `payments` é o identificador do cartão dentro da Venda, e não o `chargeId` da cobrança, que só existe depois da autorização. O `paymentMethodSnapshot` traz a referência do cartão (`cardId` ou `tokenId`) e, quando conhecidos, `brand` e `last4`. Ele nunca traz o número do cartão.
### purchase.charge\_authorized
Refere-se a um único cartão da Venda. Neste evento, o identificador da Venda vem em `purchaseId`, e não em `id`. O `status` é o do cartão e pode ser `pre_authorized` ou `authorized`, inclusive em Vendas com `capture: true`. Uma Venda pode gerar mais de um evento deste tipo, portanto não trate o primeiro como o desfecho.
```json theme={null}
{
"id": "0f7a3c52-9d1e-4b86-a5c4-3e2d1f0a9b8c",
"apiVersion": "1.1",
"object": "purchase",
"event": "charge_authorized",
"data": {
"purchaseId": "550e8400-e29b-41d4-a716-446655440000",
"slotIndex": 1,
"status": "pre_authorized",
"chargeId": "82650b96-70ea-45b9-aea8-c83c4afb3361",
"merchantId": "3b8c1f2a-4d5e-6f70-8192-a3b4c5d6e7f8",
"amount": 5000,
"currency": "BRL",
"capture": true
},
"createdAt": "2026-07-27T18:00:21.237Z"
}
```
### Desfechos da Venda
Os eventos `purchase.pre_authorized`, `purchase.paid`, `purchase.failed`, `purchase.cancelled` e `purchase.void_failed` trazem o mesmo resumo da Venda, sem a lista de cartões. Só o `status` muda.
| Evento | `data.status` |
| - | - |
| **purchase.pre\_authorized** | `pre_authorized`. A Venda continua `pending`, porque esse não é um status de Venda |
| **purchase.paid** | `paid` |
| **purchase.failed** | `failed` |
| **purchase.cancelled** | `cancelled`, com dois "L" |
| **purchase.void\_failed** | Status da Venda naquele instante: `failed`, quando a compensação vem de uma recusa, ou `paid`, quando um estorno não conclui |
**`purchase.pre_authorized`** — todos os cartões ficaram pré-autorizados em uma Venda criada com `capture: false`:
```json theme={null}
{
"id": "c1d2e3f4-a5b6-4c7d-8e9f-0a1b2c3d4e5f",
"apiVersion": "1.1",
"object": "purchase",
"event": "pre_authorized",
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"merchantId": "3b8c1f2a-4d5e-6f70-8192-a3b4c5d6e7f8",
"status": "pre_authorized",
"amount": 15000,
"currency": "BRL",
"capture": false
},
"createdAt": "2026-07-27T18:00:22.518Z"
}
```
**`purchase.paid`** — todos os cartões foram capturados:
```json theme={null}
{
"id": "2b9d4f60-7c3a-4e15-b8a2-6d5c4b3a2f10",
"apiVersion": "1.1",
"object": "purchase",
"event": "paid",
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"merchantId": "3b8c1f2a-4d5e-6f70-8192-a3b4c5d6e7f8",
"status": "paid",
"amount": 15000,
"currency": "BRL",
"capture": true
},
"createdAt": "2026-07-27T18:00:41.093Z"
}
```
**`purchase.failed`** — a Venda foi recusada de forma definitiva. O evento não traz o motivo da recusa: consulte `payments[].declineReason` em [`GET /v1/purchases/{id}`](/api-reference/purchases/recuperar-detalhes-de-uma-venda). A Malga compensa automaticamente os cartões que já tinham sido cobrados, cancelando a pré-autorização ou estornando a captura.
```json theme={null}
{
"id": "8e7d6c5b-4a39-4281-9706-5e4d3c2b1a09",
"apiVersion": "1.1",
"object": "purchase",
"event": "failed",
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"merchantId": "3b8c1f2a-4d5e-6f70-8192-a3b4c5d6e7f8",
"status": "failed",
"amount": 15000,
"currency": "BRL",
"capture": true
},
"createdAt": "2026-07-27T18:00:19.774Z"
}
```
**`purchase.cancelled`** — o cancelamento das pré-autorizações foi concluído. O estorno de uma Venda `paid` não gera este evento:
```json theme={null}
{
"id": "a4b5c6d7-e8f9-4a0b-9c1d-2e3f4a5b6c7d",
"apiVersion": "1.1",
"object": "purchase",
"event": "cancelled",
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"merchantId": "3b8c1f2a-4d5e-6f70-8192-a3b4c5d6e7f8",
"status": "cancelled",
"amount": 15000,
"currency": "BRL",
"capture": false
},
"createdAt": "2026-07-27T18:06:03.660Z"
}
```
**`purchase.void_failed`** — a liberação ou o estorno de um cartão não concluiu depois das tentativas automáticas. Trate este evento como alerta operacional: há valor retido sem desfecho automático. Consulte a Venda em `GET /v1/purchases/{id}` para identificar o cartão afetado, que permanece `pre_authorized` ou `authorized`, e acione o suporte da Malga com o `id` da Venda.
```json theme={null}
{
"id": "d9e8f7a6-b5c4-4d3e-a2f1-0b9c8d7e6f5a",
"apiVersion": "1.1",
"object": "purchase",
"event": "void_failed",
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"merchantId": "3b8c1f2a-4d5e-6f70-8192-a3b4c5d6e7f8",
"status": "failed",
"amount": 15000,
"currency": "BRL",
"capture": true
},
"createdAt": "2026-07-27T18:10:44.301Z"
}
```
Em casos de abandono da Venda ou de esgotamento das tentativas, os eventos `purchase.failed` e `purchase.void_failed` podem trazer apenas `id` e `status` no `data`. Modele o seu parser de forma tolerante: campos ausentes são esperados.
### Corpo reduzido
Em parte dos cenários, os eventos `purchase.paid`, `purchase.cancelled` e `purchase.charge_authorized` são entregues com o `data` reduzido:
```json theme={null}
{
"id": "3c4d5e6f-7a8b-4c9d-8e0f-1a2b3c4d5e6f",
"apiVersion": "1.1",
"object": "purchase",
"event": "paid",
"data": {
"source": "transaction"
},
"createdAt": "2026-07-27T18:00:41.093Z"
}
```
Esse corpo não traz o identificador da Venda. Responda `200` e use a notificação como sinal de que algo mudou: consulte as Vendas que você ainda tem como não terminais. Nunca descarte a notificação nem a trate como erro.
### Como processar os eventos de Venda
* Use o evento como gatilho e leia o estado em [`GET /v1/purchases/{id}`](/api-reference/purchases/recuperar-detalhes-de-uma-venda). O `data` pode ser um retrato antigo, no caso de uma retentativa, ou reduzido. Nunca grave o estado da Venda a partir do `data`.
* Extraia o identificador da Venda de `data.id` e, na falta dele, de `data.purchaseId`. Se nenhum dos dois existir, faça a reconciliação por varredura.
* Libere o pedido pelo status da Venda, nunca pelo status de um cartão isolado. Enquanto houver cartão pendente, a Venda continua `pending`.
* Não presuma ordem entre os eventos de uma mesma Venda. O `purchase.paid` pode chegar antes de um `purchase.charge_authorized`.
* Deduplique pelo campo `id` da notificação, igual ao header `X-Idempotency-Key`.
* Se a Venda trouxer o campo `pendingReview` na consulta, interrompa a consulta automática e acione o suporte da Malga.
* O estorno de uma Venda `paid` não gera evento `purchase.*` e a Venda permanece `paid`. Acompanhe o valor estornado em `payments[].refundedAmount`, na consulta da Venda.
## Boas práticas para receber notificações
Recomendamos que seu endpoint de webhook seja responsável **apenas por receber e enfileirar o evento**, sem executar nenhuma regra de negócio diretamente. Isso evita erros de timeout, falhas de processamento e reentregas desnecessárias. Veja como implementar esse padrão em [Recebendo webhooks com filas de mensagens](/documentations/webhooks/webhook-receiver-aws-sqs).
**Tentativas e Retentativas de envio de notificações**
A Malga fará a tentativa de envio de uma determinada notificação para seu webhook, em caso de problemas no processamento do serviço, passamos a realizar novas tentativas de entrega das notificações com um escalonamento de tempo entre as tentativas.
Para concluir o processamento da notificação, o seu serviço deve retornar um HTTP STATUS 200 (OK) ou 201 (CREATED) dentro do tempo máximo de espera, caso contrário, será entendido que o endpoint não o recebeu corretamente e o evento será marcado para retentativa.
| Evento | Prazo de intervalo do disparo | Tempo de espera para resposta |
| - | - | - |
| Criado | Imediatamente | 30 segundos |
| Primeira tentativa | 5 minutos | 5 segundos |
| Segunda tentativa | 45 minutos | 5 segundos |
| Terceira tentativa | 6 horas | 5 segundos |
| Quarta tentativa | 1 dia | 5 segundos |
| Quinta tentativa | 2 dias | 5 segundos |
| Sexta tentativa | 4 dias | 5 segundos |
A Malga mantém o registro de todas as notificações enviadas, incluindo os dados da requisição (Request) e da resposta do servidor externo (Response), pelo período de 45 dias.
Quando uma notificação ultrapassa o número máximo de tentativas de entrega, a mensagem é marcada como perdida e permanece armazenada para reprocessamento futuro mediante solicitação.
Se o seu webhook apresentar 50 ou mais falhas de entrega em um período de 24 horas, a Malga envia um e-mail de resumo para o contato com papel de proprietário cadastrado na sua conta.
A URL do seu webhook deve estar exposta (pública) para a internet, de forma que a plataforma da Malga a alcance e consiga enviar os eventos.
**Processando eventos, ordem e duplicidade**
Quando um determinado evento ocorre, a Malga então cria um objeto do tipo `event` que registra o objeto e o tipo do evento de atualização, bem como a data da ocorrência. Cada evento possui um identificador único que deve ser utilizado do lado do cliente para evitar duplicidade de processamento. O identificador é enviado no objeto `event` no corpo da requisição e também no header `x-idempotency-key` do request, sendo o mesmo valor.
Os eventos são enviados através de uma requisição HTTP para o seu endpoint exatamente na ordem em que eles ocorreram no sistema da Malga, porém recomendamos que seja utilizada a data de criação do evento, também enviada no objeto `event`, para garantir uma ordem cronológica no processamento dos eventos do lado do cliente. Caso você receba um evento com data de criação inferior à data de criação de um outro evento já processado pelo seu sistema, os dados do objeto enviado no evento estarão desatualizados, ficando a seu critério tomar ou não alguma ação com esse evento.
## Testando notificação via webhooks
Para testar sua integração com os webhooks da Malga, você pode desenvolver direto seu sistema ou utilizar algum serviço como request.bin ou pipedream.com para validar inicialmente os eventos enviados. Basta gerar um novo endpoint nestes serviços e cadastrar um webhook na Malga com o endpoint gerado que todos os eventos enviados ficarão registrados nestes serviços para consulta e debug.
Permitimos no ambiente de sandbox `sandbox-api.malga.io` a atualização manual de transações criadas para os status de authorized, voided e charged\_back, dessa forma você consegue criar uma transação e simular o evento desejado.
**Requisição para atualizar manualmente uma transação em sandbox**
```bash theme={null}
curl --location --request POST 'https://api.malga.io/v1/charges/' \
--header 'X-Client-Id: ' \
--header 'X-Api-Key: ' \
--header 'Content-Type: application/json' \
--data-raw '{
"status": "charged_back"
}'
```
## Segurança Webhook
A partir da versão 1.1 do webhook a Malga passou a assinar todos os eventos para garantir a segurança do recebimento do evento.
Utilizamos uma chave privada do tipo [Ed25519](https://ed25519.cr.yp.to/) para assinar os eventos. No momento do cadastro do webhook, você recebe a chave pública de mesmo tipo para verificar se a assinatura enviada bate com o payload recebido.
Todo evento recebido deve ser verificado e caso a assinatura não seja reconhecida, por medidas de segurança, você deve descartar o evento.
### Como verificar a assinatura do evento?
Enviamos 2 headers:
* **X-Plug-Date** contendo a data que o evento foi gerado. O formato segue o padrão UTC Unix Timestamp.
* **X-Plug-Signature** contendo um hash em hexadecimal de 64 bits.
Para prevenir um [ataque de replay](https://en.wikipedia.org/wiki/Replay_attack), verifique se a data do evento (X-Plug-Date) está dentro de seu critério de aceite. Recomendamos não aceitar eventos com mais de 5 minutos.
Agora você deve validar a assinatura (X-Plug-Signature). Para isso você precisará utilizar 4 dados, **X-Plug-Date**, **X-Plug-Signature**, **payload** e a **chave pública (pubKey)** (que é retornada na criação do webhook).
Primeiro você deve concatenar o date com o body encodado para utf8, criptografar com a chave pública do webhook criado, e validar o criptograma recebido no header signature com o criptograma gerado para verificar integridade.
O algoritmo para verificar a assinatura se parece com o declarado abaixo:
```bash theme={null}
date = header['X-Plug-Date']
msg = "{date}\n{payload}"
sig_raw = header['X-Plug-Signature']
sig_byte = hex_to_bin(sig_raw)
EdDSA_signature_verify(msg, pubKey, sig_byte) --> bool
```
[Clique aqui e saiba mais sobre EdDSA e Ed25519](https://cryptobook.nakov.com/digital-signatures/eddsa-and-ed25519#eddsa-verify-signature)
### Exemplos de validação da signature
Os exemplos estão disponíveis nesse repositório github:
[https://github.com/plughacker/plug-sample-signature-verify/](https://github.com/plughacker/plug-sample-signature-verify/)
Veja um trecho de cada linguagem:
```javascript theme={null}
const crypto = require("crypto");
module.exports = {
/**
* Example of a function that validates the payload signature
* @param {string} publicKey Key returned on webhook creation
* @param {string} payload Event sent by the plug. This information goes in the body http
* @param {number} signatureTime Time in unix timestamp that the event was subscribed to
* @param {string} signature Hash sha512
* @returns {bool}
*/
verify: function (publicKey, payload, signatureTime, signature) {
const payloadUtf8 = Buffer.from(payload, "utf-8").toString();
const signatureBuffer = Buffer.from(signature, "hex");
const data = Buffer.from(`${signatureTime}\n${payloadUtf8}`);
return crypto.verify(null, data, publicKey, signatureBuffer);
},
};
```
```go theme={null}
func Verify(publicKeyRaw string, payload string, signatureTime int64, sigHex string) (bool, error) {
sig, err := hex.DecodeString(sigHex)
if err != nil {
return false, err
}
publicKey, err := getEd25519PublicKey(publicKeyRaw)
if err != nil {
return false, err
}
body := fmt.Sprintf("%d\n%s", signatureTime, payload)
message := []byte(body)
isValid := ed25519.Verify(publicKey, message, sig)
return isValid, nil
}
```
```py theme={null}
signaturePayload = str.encode(httpSample['headers']['X-Plug-Date'] + "\n" + httpSample['body'])
signature = bytes.fromhex(httpSample['headers']['X-Plug-Signature'])
try:
public_key.verify(signature, signaturePayload)
print('Congrats ... signature is valid!!!')
except:
print('Ops ... Signature is not valid!')
```
```csharp theme={null}
namespace PlugPagamentos;
using System.Text;
using NSec.Cryptography;
public class PlugSignature
{
private static Ed25519 algorithm = SignatureAlgorithm.Ed25519;
public static Boolean verify(String payload, long signatureDate, String signatureHex, string publicKeyRaw)
{
var signature = Convert.FromHexString(signatureHex);
var payloadToVerify = Encoding.UTF8.GetBytes($"{signatureDate}\n{payload}");
var publicKeyBytes = Encoding.UTF8.GetBytes(publicKeyRaw);
var publicKey = PublicKey.Import(algorithm, publicKeyBytes, KeyBlobFormat.PkixPublicKeyText);
return algorithm.Verify(publicKey, payloadToVerify, signature);
}
}
```
```java theme={null}
package com.plugpagamentos;
import org.bouncycastle.crypto.params.Ed25519PublicKeyParameters;
import org.bouncycastle.crypto.signers.Ed25519Signer;
import org.bouncycastle.util.encoders.Hex;
public class PlugSignature {
public static boolean verify(String publicKeyHex, String payload, String signatureTime, String signatureHex) {
var publicKeyBytes = Hex.decode(publicKeyHex);
var signatureBytes = Hex.decode(signatureHex);
var signingDataBytes = (signatureTime+"\n"+payload).getBytes();
var params = new Ed25519PublicKeyParameters(publicKeyBytes, 0);
var verifier = new Ed25519Signer();
verifier.init(false, params);
verifier.update(signingDataBytes, 0, signingDataBytes.length);
return verifier.verifySignature(signatureBytes);
}
}
```
```php theme={null}
$data = "{$sampleHttp['headers']['X-Plug-Date']}\n{$sampleHttp['body']}";
// convert signature hex to bin
$signature = hex2bin($sampleHttp['headers']['X-Plug-Signature']);
if ($key->verify($data, $signature)) {
echo 'Congrats ... signature is valid!!!';
} else {
echo 'Ops ... Signature is not valid!';
}
```
```ruby theme={null}
sig_bytes = hex_to_bin(http_sample['headers']['X-Plug-Signature'])
message = http_sample['headers']['X-Plug-Date'] + "\n" + http_sample['body']
begin
verify_key.verify(sig_bytes, message)
puts 'Congrats ... signature is valid!!!'
rescue StandardError
puts 'Ops ... Signature is not valid!'
end
```
## Eventos suportados para notificação via webhooks
### Eventos Transaction
| Evento | Descrição |
| - | - |
| **transaction.pending** | Evento enviado quando a cobrança é registrada e os dados para pagamento estão disponíveis |
| **transaction.pre\_authorized** | Evento enviado quando é reconhecida a confirmação da pré-captura do pagamento da cobrança |
| **transaction.authorized** | Evento enviado quando é reconhecida a confirmação da captura do pagamento da cobrança |
| **transaction.failed** | Evento enviado quando a cobrança é negada pela instituição financeira antes de ter sido autorizada |
| **transaction.canceled** | Evento enviado quando a cobrança é cancelada após ter sido autorizada porém não capturada, sem estorno financeiro |
| **transaction.voided** | Evento enviado quando a cobrança é cancelada após ter sido autorizada e capturada, produzindo um estorno financeiro |
| **transaction.charged\_back** | Evento enviado quando a cobrança é cancelada após ter sido contestada e/ou não reconhecida pelo portador do cartão |
| **transaction.dispute** | Evento enviado quando uma disputa relacionada à transação é aberta |
| **transaction.dispute\_closed** | Evento enviado quando uma disputa é encerrada. Caso você receba charged\_back ao invés de dispute\_closed, significa que o cliente ganhou a disputa. |
| **transaction.refund\_pending** | Evento enviado quando um estorno está pendente. Isso pode ocorrer em fluxos assíncronos como o PIX. |
| **transaction.revert\_void** | Evento enviado quando precisamos fazer a reversão de um estorno bem-sucedido. [Veja mais](/documentations/payment-methods/credit-card#reversao-automatica-de-um-estorno-revert-void) |
| **transaction.probe\_void** | Evento enviado quando a sonda faz o cancelamento de uma cobrança que foi duplicada. |
### Eventos Seller
| Evento | Descrição |
| - | - |
| **seller.active** | Evento enviado quando um seller é aprovado no provedor. Isso indica que podemos gerar uma transação com split usando esse seller. |
| **seller.inactive** | Evento enviado quando o seller é inativado manualmente ou não aprovado na análise do provedor. |
### Eventos de revisão cadastral
Estes eventos acompanham os processos de revisão cadastral que o provedor abre para os seus recebedores. Entenda o fluxo em [Revisão cadastral](/documentations/split/revisao-cadastral).
| Evento | Descrição |
| - | - |
| **seller.registration\_review\.required** | Evento enviado quando o provedor abre um processo. É o aviso de que há dados a coletar dentro de um prazo. |
| **seller.registration\_review\.reminder** | Lembrete periódico enquanto o processo continua sem envio. A frequência aumenta conforme o prazo se aproxima. |
| **seller.registration\_review\.overdue** | Evento enviado quando o processo entra em cobrança ativa, na virada da fase inicial da revisão periódica. |
| **seller.registration\_review\.expired** | Evento enviado quando o prazo vence sem envio. O provedor ainda aceita a submissão. |
| **seller.registration\_review\.failed** | Evento enviado quando o provedor recusa a submissão. Havendo prazo, ela pode ser corrigida e reenviada. |
| **seller.registration\_review\.finished** | Evento enviado quando o provedor confirma o recebimento e encerra o processo. |
O objeto `data` traz o estado do processo, o que há para coletar e a origem no provedor:
```json theme={null}
{
"id": "a3f1c9d2-1b47-4e80-9c3a-2f5d6e7b8a91",
"apiVersion": "1.1",
"object": "seller",
"event": "registration_review.required",
"data": {
"processId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"reviewType": "acp",
"status": "pending",
"deadlineAt": "2026-09-15T23:59:59.000Z",
"daysRemaining": 18,
"requestedFieldsPending": false,
"requestedFields": {
"raw": ["revenue"],
"fields": [
{
"path": "revenue",
"type": "enum",
"required": true,
"providerField": "revenue",
"label": { "pt-br": "Faixa de faturamento", "en": "Revenue range" },
"allowedValues": ["10000_to_50000", "50000_to_100000", "100000_to_500000"]
}
]
},
"seller": {
"id": "ea115e44-7048-11ed-a1eb-0242ac120002",
"merchantId": "b1612460-0fef-447d-9590-97825cf60cf6"
},
"origin": {
"provider": "ZOOP",
"providerId": "8f14e45f-ceea-467a-9e6f-6c1a5b3a1f2d"
}
}
}
```
Quando o provedor abre o processo sem informar ainda o que pedir, `requestedFields` vem ausente e `requestedFieldsPending` vem `true`. O aviso é enviado mesmo assim, porque o prazo já está correndo.
### Eventos Subscription
| Evento | Descrição |
| - | - |
| **subscription.created** | Evento enviado quando uma nova assinatura é criada (exceto quando trial ativo) |
| **subscription.trial\_started** | Evento enviado quando uma assinatura é criada com período de trial ativo |
| **subscription.activated** | Evento enviado quando uma assinatura tem seu primeiro pagamento aprovado |
| **subscription.updated** | Evento enviado quando uma assinatura é atualizada (mudança de valor, produtos, etc.) |
| **subscription.paused** | Evento enviado quando uma assinatura é pausada |
| **subscription.resumed** | Evento enviado quando uma assinatura pausada é retomada |
| **subscription.unpaid** | Evento enviado quando uma assinatura fica em situação de não paga |
| **subscription.expired** | Evento enviado quando uma assinatura expira |
| **subscription.canceled** | Evento enviado quando uma assinatura é cancelada manualmente |
| **subscription.cycle\_failed** | Evento enviado quando um ciclo de pagamento falhar devido a inconsistência de dados |
### Eventos Purchase
Os eventos de Venda existem somente na versão 1.1 do webhook. Veja o formato de cada um em [purchase](#purchase).
| Evento | Descrição |
| - | - |
| **purchase.created** | Evento enviado quando a venda é criada e aceita e a autorização é enfileirada |
| **purchase.charge\_authorized** | Evento enviado quando uma cobrança da venda conclui a autorização com sucesso |
| **purchase.pre\_authorized** | Evento enviado quando todas as cobranças da venda estão pré-autorizadas e a venda permanece pendente |
| **purchase.paid** | Evento enviado quando a venda é paga |
| **purchase.failed** | Evento enviado quando a venda falha por recusa ou abandono de uma cobrança órfã |
| **purchase.cancelled** | Evento enviado quando a venda é cancelada |
| **purchase.void\_failed** | Evento enviado quando o estorno das cobranças da venda esgota as tentativas, ou quando esse estorno é encerrado com uma cobrança ainda retida |
# Sobre o produto
Source: https://docs.malga.io/documentations/welcome/about-the-product
Conheça a infraestrutura de pagamentos online da Malga, com múltiplos provedores, motor de autorização inteligente, antifraude e conformidade PCI.
Somos uma infraestrutura completa de pagamentos online que permite que você construa a combinação ideal de provedores, com melhores custos e maior taxa de aprovação. Na Malga você vai ter:
* **Acesso a diversos provedores de pagamento:** Conecte-se a múltiplos provedores de pagamento com uma única integração, expandindo suas possibilidades e flexibilidade.
* **Motor de autorização inteligente:** Aumente suas conversões com o fluxo inteligente de transações, maximizando suas chances de sucesso a cada venda.
* **Segurança e resiliência:** Proteja seus dados e transações com nosso sistema robusto e em conformidade com a regulamentação PCI.
* **Proteção contra fraudes:** Utilize nosso antifraude avançado para detectar e prevenir transações fraudulentas, protegendo seu negócio e seus clientes.
* **Tokenização de cartões:** Simplifique compras futuras para seus clientes e reduza o risco de fraudes com nosso serviço seguro de tokenização.
* **Foco no seu negócio:** Deixe a Malga ajudar você com os dados e a gestão financeira para que você possa se concentrar no que realmente importa: o seu negócio e os seus clientes.
* **Painel de dados:** Visualize seus dados financeiros de forma intuitiva e imediata.
* **Analytics API:** Obtenha insights valiosos sobre o seu negócio através da nossa API de análise.
* **Exportação de dados:** Exporte seus dados configurando os campos do arquivo gerado de acordo com a sua necessidade.
## Métodos de integração
Faça a integração via back-end direto com a nossa [API](/api-reference) ou use algum dos nossos [SDKs](/sdks).
Use nosso plugin [VTEX](/sdks/plugins/vtex-connector)
Utilize um [Link de Pagamento](/documentations/payment-link/intro) para receber pagamentos sem a necessidade de um site ou plataforma.
Compare e escolha o método de integração ideal para o seu negócio:
| Provedor | API Charges | API Session | Checkout SDK | Checkout Full SDK | SDK Node JS | Link de Pagamento |
| :- | :-: | :-: | :-: | :-: | :-: | :-: |
| Fluxo Inteligente | | | | | | |
| Antifraude | | | | | | |
| Campo Personalizado na Transação | | | | | | |
| Envio de customer sem documento\* | | | | | | |
| Split | | | | | | |
| Tokenização | | | | | | |
| Migração da base de cartões | | | | | | |
| WebHooks | | | | | | |
| Cartão, Pix e Boleto | | | | | | |
| Nupay, Drip e Voucher | | | | | | |
Também é possível integrar facilmente através do nosso plugin Vtex:
| Provedor | VTEX |
| - | :-: |
| Fluxo Inteligente | |
| Antifraude | |
| Campo Personalizado na Transação | |
| Envio de customer sem documento\* | |
| Split | |
| Tokenização | |
| Migração da base de cartões | |
| WebHooks | |
| Cartão, Pix e Boleto | |
| Nupay, Drip e Voucher | |
Independente do método, conte com um serviço excelente de **autonomia** e **flexibilidade** em nosso [Dashboard](https://dashboard.malga.io) através do [Fluxo Inteligente](/documentations/flow-guide/flow-dash) e realize **modificações** quanto aos provedores e às regras de orquestração de pagamento.
## Recursos
Aprimore sua experiência aproveitando nossos recursos dedicados a orientá-lo para uma integração rápida e eficaz:
* **Documentação Específica:** Cada funcionalidade possui documentação detalhada, incluindo exemplos e casos de uso específicos.
* **Melhores práticas:** Dicas e sugestões para otimizar o uso da Malga e garantir o máximo de segurança e eficiência em seus pagamentos.
* **Suporte completo:** Conte com nossa equipe de especialistas para auxiliar em qualquer etapa do processo, desde a integração até o suporte técnico.
# Ativando sua conta
Source: https://docs.malga.io/documentations/welcome/activating-account
Nesta documentação, apresentamos **o que você precisa configurar para ativar a conta em produção na Malga e começar a processar pagamentos reais da sua loja.**
Através do cadastro no [Dashboard Malga](https://dashboard.malga.io/), é possível testar e integrar a solução da Malga utilizando as **credenciais de teste** disponíveis na entrada do ambiente: `client-id`, `api-key` e `merchant-ID`. Com elas, você pode simular a criação de uma cobrança e validar os cenários para a sua loja processar pagamentos com a Malga.
Antes de ativar sua conta em produção, é importante **testar sua integração.** Acesse a página de [Testes](/documentations/welcome/testing) e verifique as funcionalidades disponíveis para explorar diferentes cenários e garantir a cobertura completa.
Para realizar a **ativação da sua conta em produção** e processar transações reais, siga o passo a passo descrito a seguir:
### 1. **Acesse sua conta no Dashboard**
A conta criada no Dashboard possuirá papel de administrador e terá acesso às credenciais de teste da sua empresa, que estarão sempre disponíveis para validação dos serviços na sua integração;
### 2. **Obtenha as chaves de produção**
Com a sua conta criada no Dashboard e os testes finalizados, é hora de entrar em contato com a equipe da Malga para iniciar o processo de ativação da sua conta em produção:
* Envie um e-mail para [**suporte@malga.io**](mailto:suporte@malga.io) informando que já concluiu a etapa de testes e solicitando a geração das chaves necessárias para ativação da conta.
* Indique os **provedores e métodos de pagamento** que deseja utilizar na sua loja;
**NEGOCIAÇÃO COM PROVEDORES**
Caso necessite de **cotação de taxas de provedores ou abertura de novas contas**, nosso time de atendimento poderá realizar a negociação e intermediação de propostas para o seu negócio, através do nosso pacote de serviços. Confira os provedores disponíveis [aqui](/documentations/type-tables/payment-methods-by-providers);
### 3. **Criação da subconta para processar pagamentos (merchant)**
Nosso time de atendimento é responsável pela **criação da sua primeira subconta** e pelo envio das chaves de produção. Este processo pode ser realizado antes ou depois dos testes e do processo de integração;
* **Funcionamento do Merchant na Malga:** O **merchant (subconta)** na Malga é a entidade que representa sua loja ou negócio na plataforma. Ele é utilizado para processar cobranças e para separar operações, recebíveis e dados de cada loja ou cliente (para modelos de subadquirência);
* Cada merchant possui um `client-id` associado, que é usado para identificar e autenticar suas requisições na API da Malga;
* O merchant contém as informações de **provedores habilitados na conta, status (ativo/inativo) e código MCC (Merchant Category Code)**, que é um padrão global para classificar negócios de acordo com o tipo de atividades comerciais;
* O merchant pode ser configurado com **diferentes provedores de pagamento**, cada um com suas próprias credenciais e configurações específicas. Isso permite que você customize o processamento de pagamentos conforme as necessidades do seu negócio;
* A configuração dos provedores dentro do merchant permite definir a **prioridade** de cada um, o que pode influenciar a ordem de tentativa de processamento das transações;
* Saiba mais sobre subcontas nesta documentação, e você pode conferir suas subcontas ativas no Dashboard, em **Gerenciar subcontas** (clique no nome da empresa, no topo do menu lateral):
### 4. **Valide sua integração**
Certifique-se de que todos os testes foram concluídos com sucesso e que sua integração está funcionando corretamente em todos os cenários desejados. Como proceder:
* **Atualização das Credenciais na Integração:** Atualize sua integração com as novas credenciais de produção. Isso inclui substituir o `client-id` e a `api-key` de testes pelas credenciais de produção em todas as chamadas à API da Malga.
* **Teste Final com Credenciais de Produção** Realize um teste final utilizando as credenciais de produção para garantir que tudo está funcionando conforme esperado no ambiente de produção. Este passo é crucial para verificar se a mudança de credenciais ocorreu sem problemas.
* **Configuração de Webhooks** A Malga disponibiliza o serviço de webhooks para informar o seu sistema sobre eventos ocorridos em nossa plataforma. Por meio dos webhooks, você pode manter seu sistema atualizado sempre que um evento significativo ocorre, como a atualização do status de uma cobrança para confirmar ou cancelar um pagamento específico.
* **Início das Operações em Produção** Com a integração testada e as credenciais de produção configuradas, você está pronto para iniciar as operações em produção. Isso significa que sua loja agora está preparada para processar pagamentos reais através da Malga.
### 5. **Configuração do fluxo inteligente de pagamentos da sua loja**
Após a **ativação da sua conta em produção**, você poderá realizar a configuração do fluxo inteligente de pagamentos no Dashboard (selecione a subconta no seletor do menu lateral e acesse **Fluxos Inteligentes**), com a inserção de condicionais e regras flexíveis para garantir a máxima aprovação e otimização de custos para a sua loja.
Você poderá fazer alterações a qualquer momento e publicar ajustes nos provedores e regras diretamente pelo Dashboard. [Saiba mais aqui.](/documentations/flow-guide/flow-dash)
### 6. **Conte com o nosso time de Suporte e Monitoramento**
Após a ativação, continue monitorando as transações e o desempenho da integração. A equipe da Malga está disponível para oferecer suporte e assistência caso você encontre qualquer dificuldade ou tenha dúvidas durante a operação em produção.
Faça a integração via back-end direto com a nossa [API](/api-reference) ou use algum dos nossos [SDKs](/sdks).
Use nosso plugin [VTEX](/sdks/plugins/vtex-connector)
Utilize um [Link de Pagamento](/documentations/payment-link/intro) para receber pagamentos sem a necessidade de um site ou plataforma.
**Seguindo estes passos, sua loja estará pronta para processar pagamentos em produção com a Malga, oferecendo aos seus clientes uma experiência de pagamento segura e eficiente.**
Você pode acionar o nosso time a qualquer momento pelo email [**suporte@malga.io**](mailto:suporte@malga.io) ou clicando no botão **Falar com o Time** disponível no *banner das chaves no ambiente de testes do Dashboard*;
# Autentique-se com a Malga
Source: https://docs.malga.io/documentations/welcome/authentication
Os serviços da Malga são protegidos através de chaves de acesso. Você pode gerenciar suas chaves de acesso através do seu Dashboard.
É importante armazenar suas chaves de maneira privada e segura, uma vez que elas possuem privilégios de alteração na sua conta. Não compartilhe suas chaves, não deixe elas fixadas no seu código e nem armazene elas no seu servidor de controle de versão. Recomendamos utilizar variáveis de ambiente secretas para deixar a chave disponível para sua aplicação.
A Autenticação para todas as chamadas da API é feita através de headers HTTP,
sendo necessário informar seu identificador de cliente na Malga e a chave
secreta de acesso.
```bash theme={null}
curl --location --request GET 'https://api.malga.io/v1/' \
--header 'X-Client-Id: ' \
--header 'X-Api-Key: '
```
## Gestão de chaves
Sua conta tem dois tipos de chave:
| Tipo | Onde obter | Acesso | Validade |
| - | - | - | - |
| Chave secreta (chave principal) | No Dashboard | Toda a API | Até ser revogada |
| Sub-key | Pela API (`POST /v1/auth`), usando a chave secreta | Só os escopos escolhidos na criação | Definida por você no campo `expires` |
## Sub-keys
Sub-keys são chaves derivadas da chave secreta da sua conta, com escopo e tempo de validade limitados. Você gerencia as sub-keys integralmente pela API, sem abrir chamado com a Malga:
* **Criação:** com escopos (`scope`) e tempo de validade em segundos (`expires`). Veja [Criar sub-key](/api-reference/client-token/criar-nova-chave-publica-para-uso-no-client-side).
* **Remoção:** antes do fim da validade, para fazer uma rotação manual. Veja [Remover sub-key](/api-reference/client-token/remover-sub-key).
Uma sub-key é usada como a chave secreta, no header `X-Api-Key`, mas só acessa os escopos dela e deixa de funcionar quando expira ou é removida.
### Onde usar sub-keys
* **Aplicações back-end:** dê a cada serviço ou time uma sub-key só com os escopos de que ele precisa, em vez de compartilhar a chave secreta. Por exemplo, uma ferramenta interna que só estorna cobranças recebe uma sub-key com o escopo `charges/*/void`.
* **Aplicações client-side:** no navegador ou em aplicativos, a sub-key fica exposta. Use sub-keys de curta duração (por exemplo, `900` segundos) e, de preferência, só com o escopo `tokens`, para tokenizar cartões. Crie uma sub-key nova a cada sessão de compra.
| Uso | Escopo | Validade sugerida |
| - | - | - |
| Tokenização de cartões no checkout do navegador | `tokens` | `900` (15 minutos) |
| Aplicativo que tokeniza e lista cartões salvos | `tokens`, `cards` | `3600` (1 hora) |
| Ferramenta interna de atendimento que só estorna cobranças | `charges/*/void` | `86400` (24 horas) |
| Ferramenta de BI que consulta a [Analytics API](/analytics/authentication/authentication) | `graphql` | Conforme a política de rotação da sua empresa |
### Criar uma sub-key
Faça a chamada no seu servidor, com a chave secreta:
```bash theme={null}
curl --location --request POST 'https://api.malga.io/v1/auth' \
--header 'X-Client-Id: YOUR_CLIENT_ID' \
--header 'X-Api-Key: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"scope": ["tokens"],
"expires": 900
}'
```
Resposta `201`:
```json theme={null}
{
"clientId": "YOUR_CLIENT_ID",
"publicKey": "YOUR_PUBLIC_KEY",
"scope": ["tokens"],
"expires": 900,
"createdAt": "2026-09-30T14:00:00.000Z"
}
```
Use o `publicKey` no header `X-Api-Key`:
```bash theme={null}
curl --location --request POST 'https://api.malga.io/v1/tokens' \
--header 'X-Client-Id: YOUR_CLIENT_ID' \
--header 'X-Api-Key: YOUR_PUBLIC_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"cardHolderName": "JOSE DAS NEVES",
"cardNumber": "4019598346009339",
"cardCvv": "123",
"cardExpirationDate": "12/2026"
}'
```
### Remover uma sub-key
A sub-key expira sozinha quando termina o tempo definido em `expires`. Se você quiser fazer uma rotação manual ou bloquear uma sub-key exposta, remova a sub-key antes do prazo, informando o `publicKey` dela na rota:
```bash theme={null}
curl --location --request DELETE 'https://api.malga.io/v1/auth/YOUR_PUBLIC_KEY' \
--header 'X-Client-Id: YOUR_CLIENT_ID' \
--header 'X-Api-Key: YOUR_API_KEY'
```
A resposta de sucesso é `200`, sem corpo. Depois disso, as chamadas com a sub-key removida são recusadas com `403`.
## Chave secreta
A Malga oferece suporte a duas chaves secretas ativas ao mesmo tempo. Para trocar a chave secreta, gere uma nova chave e mantenha a anterior ativa durante a transição. Assim, você migra a integração sem interromper as chamadas à API.
Depois da migração, revogue a chave anterior. Hoje, a revogação da chave secreta é feita pelo suporte da Malga: abra um chamado pedindo a revogação. Não envie a chave secreta no chamado. Chamados urgentes, como o vazamento de uma chave, têm SLA contratual de resolução em até 2 horas, 24/7.
# Tratamento de erros na integração
Source: https://docs.malga.io/documentations/welcome/errors
A Malga disponibiliza uma lista de códigos de erro bem definida para facilitar a identificação dos diferentes tipos de problema que podem acontecer na integração.
Através desta especificação de erros é possível identificar os erros que acontecem quando uma requisição é processada com falha na autorização, ou quando ela é rejeitada por erro funcional. As categorias de erro HTTP possíveis são:
* (2xx) não autorizado;
* (4xx) problema no conteúdo da requisição;
* (5xx) erro interno;
* falha na comunicação ou timeout.
## Código de retorno
Para transações não autorizadas que são recusadas pelo emissor, a Malga fornece uma padronização dos códigos de retorno e uma recomendação de como você deve proceder com as principais falhas.
### Tabela de erros possíveis `error.type`
| Type | HTTP code | Descrição | O que fazer |
| - | - | - | - |
| *api\_error* | *500* | Erro inesperado | Entre em contato com o suporte da Malga |
| *bad\_request* | *400* | Erro na validação dos dados enviados no request | Verifique o detalhe do erro |
| *invalid\_request\_error* | *400* | Erro no processamento com base nos dados enviados no request | Verifique o detalhe do erro |
| *card\_declined* | *200* | Transação não aprovada pelo provedor | Verifique o motivo de rejeição no declinedCode |
| *too\_many\_requests* | *429* | Estorno recusado por falhas seguidas no provedor | Aguarde até o horário de `retry_after_at` e tente de novo |
| *unprocessable\_entity* | *422* | Erro de regra de negócio, como o estorno bloqueado pelo limite de falhas no provedor | Verifique a mensagem do erro. No caso do estorno bloqueado, entre em contato com o suporte da Malga |
Veja como funciona o [limite de falhas no estorno](/documentations/more/limite-falhas-estorno).
### Consulte a [tabela com os códigos de erro](/documentations/type-tables/declined-code) para o `error.declinedCode`
# Sobre a Malga
Source: https://docs.malga.io/documentations/welcome/introduction
Otimize vendas e simplifique pagamentos online com a Malga, integrando múltiplos provedores ao seu e-commerce em uma única infraestrutura.
Otimize suas vendas e simplifique pagamentos online com a Malga!
Somos uma infraestrutura completa de pagamentos online que se integra facilmente ao seu e-commerce dando acesso a diversos provedores de pagamento e maximizando suas chances de sucesso a cada venda.
### Começando
Desenvolvedor, este é o seu guia para testar e realizar as configurações necessárias para integrar com a Malga.
Entenda como uma única integração pode evoluir a experiência de pagamentos do seu negócio
Prepare-se para uma integração simples e segura neste guia para testar e integrar com a Malga
### Integrando com um agente de código?
Instale a skill da Malga para o assistente usar esta documentação com mais contexto.
npx skills add [https://docs.malga.io](https://docs.malga.io)
## Consulte também
Sua última integração de pagamentos agora mais simples e fácil de integrar
Explore nossa documentação detalhada da API para integrar facilmente e aproveitar ao máximo nossos serviços
Tenha todos os seus dados de pagamentos para análises e insights em um só lugar
Fique por dentro das últimas atualizações e melhorias em nosso produto
# Primeiros passos
Source: https://docs.malga.io/documentations/welcome/primeiros-passos
Siga os primeiros passos na Malga: crie sua conta no Dashboard e obtenha credenciais como client-id e api-key para iniciar suas integrações.
Vá até nosso [Dashboard](https://dashboard.malga.io) para iniciar o processo de criação da sua conta. Complete o processo de criação da conta para obter suas **credenciais**, como `client-id` e `api-key`
As chaves que deverão ser enviadas nas requisições para a Malga estão disponíveis na Dashboard da Malga. A `api-key` deve ser enviada como `X-Api-Key`, já o `client-id` deve ser enviado como `X-Client-Id`. Além disso, um merchant também será disponibilizado para que você possa começar a realizar cobranças dentro da Malga.
A Malga conta com diversos tipos de integração, escolha a ideal para o seu negócio.
Integre direto com a nossa API de Cobranças para criar transações para o seu negócio
Crie Links de Pagamento utilizando a nossa API de Sessions
Utilize nosso SDK para acelerar a sua integração
Conheça as nossas soluções para integração rápida no front-end
Vtex
Crie Links de Pagamento sem nenhuma integração
* Acesse a página [Testando](/documentations/welcome/testing) para conferir nossas funcionalidades de testes
* Comece com testes simples e vá aumentando a complexidade gradativamente
* Explore diferentes cenários e casos de uso para garantir a cobertura completa
* Registre todos os resultados e anomalias para análise posterior
* Utilize a documentação e o suporte para solucionar dúvidas e otimizar seus testes
* Suporte dedicado: Nossa equipe de especialistas está pronta para te ajudar a qualquer momento. Entre em contato se tiver dúvidas ou precisar de assistência
Parabéns! Você concluiu a etapa de testes e integração e está pronto para dar o próximo passo: ativar sua conta e criar seu ambiente de produção.
**É simples assim:**
* **Acesse o Dashboard:** Faça login no [Dashboard](https://dashboard.malga.io) e localize o botão "Entrar em contato".
* **Clique em "Entrar em contato":** Nossa equipe de especialistas estará pronta para te atender e te guiar na criação do seu ambiente de produção.
**O que esperar:**
**Atendimento personalizado:** Nossa equipe irá entender suas necessidades e te auxiliar em todo o processo.
**Configuração personalizada:** Ajustaremos a plataforma de acordo com suas especificidades.
**Treinamento e suporte:** Te forneceremos todo o suporte necessário para você aproveitar ao máximo a plataforma.
### Integrando com um agente de código?
Instale a skill da Malga para o assistente usar esta documentação com mais contexto.
npx skills add [https://docs.malga.io](https://docs.malga.io)
# Guia de teste
Source: https://docs.malga.io/documentations/welcome/testing
Guia de teste da integração com a Malga: use cartões fictícios e regras por final do número para simular aprovação, recusa e antifraude no Sandbox.
Os números de cartões a serem utilizados no teste podem ser gerados a partir de qualquer site gerador de cartões, devendo o comportamento seguir a seguinte regra:
| Cartão | Autorizado? | Status |
| - | - | - |
| Final 0, 1 ou 4 | SIM | Aprovado |
| Final 2 | NÃO | Não autorizado |
| Final 3 | NÃO | Cartão expirado |
| Final 5 | NÃO | Cartão bloqueado |
| Final 6 | NÃO | Timeout |
| Final 7 | NÃO | Cartão cancelado |
| Final 8 | Aleatório SIM/NÃO | Aprovado / Timeout |
Transações no ambiente de sandbox envolvendo tokenização funcionam normalmente
com base em cartões de teste. Cada cartão salvo na tokenização é tratado como
um cartão normal, podendo ser usado no processo de simulação. A informação de
Cód. Segurança (CVV) segue a seguinte regra de validação em sandbox, CVV final
zero "0" o cartão é validado, para qualquer outro valor o status retorna como
não validado.
Os cenários da tabela acima são os únicos disponíveis para simulação de cartão em sandbox. Não é possível simular códigos de recusa específicos, como `insufficient_funds`. Esses códigos aparecem apenas em respostas reais dos emissores e estão listados na [tabela de declined codes](/documentations/type-tables/declined-code). Para gerar cartões de teste com um status específico via SDK, consulte [Gerar cartão](/sdks/api-sdks/docs/sandbox/generate-card).
**Se você conseguiu inserir os dados de cartão na sua aplicação cliente, criar um token, enviar os dados para o seu servidor e criar uma cobrança, então sua integração está finalizada.**
## Captura e estorno
Caso queira testar o cenário de falha na captura ou estorno, o valor **991** deverá ser utilizado como valor para essas duas requisições.
## Antifraude
Caso queira testar cenários antifraude, o valor analisado em sandbox será o final do documento enviado no nó de antifraude (`fraudAnalysis`) na criação da transação. O status retornado para antifraude seguirá as regras dispostas na tabela abaixo:
| Documento | Autorizado? | Status | Declined Code |
| - | - | - | - |
| Final 0 | NÃO | Pendente | Nulo |
| Final 1 | SIM | Aprovado | Nulo |
| Final 2 | NÃO | Falha | Aleatório `timeout` ou `processing_error` |
| Qualquer outro final | NÃO | Reprovado | Nulo |
## Recebedores
No ambiente de sandbox, o status inicial de um recebedor é derivado de forma determinística a partir do **último dígito do documento**. O documento considerado é o `owner.document.number` e, na sua ausência, o `business.document.number` (nessa ordem de prioridade).
| Documento | Status inicial do recebedor |
| - | - |
| Final 7 | `pending` |
| Final 8 | `inactive` |
| Final 9 | `failed` |
| Qualquer outro final | `active` |
A cada mudança de status (na criação e na troca manual) o webhook correspondente `seller.` é enviado ao cliente.
### Alterar o status de um recebedor no sandbox
Também é possível alterar manualmente o status de um recebedor em sandbox por meio de um endpoint dedicado, recebendo o webhook correspondente à mudança.
Este endpoint está disponível apenas no ambiente de sandbox.
`POST /v1/sellers/{id}/status`
Cabeçalho: `X-Client-Id`
Corpo:
```json theme={null}
{
"status": "inactive"
}
```
Valores aceitos para `status`: `pending`, `active`, `inactive`, `failed`. Após a alteração, o recebedor tem seu status recalculado e o webhook `seller.` é disparado.
# Feb 21 - Parcelas pela Drip
Source: https://docs.malga.io/release-notes/2024-02-21-Release-Notes
Adição do campo de quantidade de parcelas máximas (opcional) para determinada transação realizada pela DRIP
É possível informar a quantidade máxima de
parcelas de forma opcional para as transações realizadas através da **DRIP**,
por meio do novo campo: "maxInstallments", [conforme descrito na
documentação](https://docs.dev.malga.io/api-reference/charges/realizar-nova-cobranca)
Siga acompanhando as novidades da Malga 🤓🎉
# Feb 28 - Safrapay
Source: https://docs.malga.io/release-notes/2024-02-28-Release-Notes
Adição de Safrapay
A partir de agora, é possível transacionar com **cartão de crédito** e **pix** junto ao provedor **Safrapay**.
Siga acompanhando as novidades Malga 🤓🎉
# Mar 05 - Reversão de estorno
Source: https://docs.malga.io/release-notes/2024-03-05-Release-Notes
Reversão de uma operação de estorno bem-sucedido
**Tratar eventos de reversão de um estorno que foi bem-sucedido**
Adicionamos um novo tipo de evento que pode ocorrer em transações que tiveram uma solicitação de estorno bem-sucedido: a reversão do estorno. Embora seja pouco comum, alguns provedores têm a capacidade de reverter uma transação de estorno bem-sucedida, como é o caso do provedor ADYEN. Conforme indicado pela ADYEN, tais ocorrências não são frequentes, porém são possíveis. Portanto, é necessário que lidemos com essa eventualidade de forma adequada.
Na plataforma Malga, esse evento é tratado como **revert\_void**. Se ocorrer uma operação desse tipo, você receberá um webhook com o evento **transaction.revert\_void**. Além disso, essa informação estará disponível nas transactionRequests com um novo requestType do tipo **revert\_void**.
Para maiores informações sobre essa funcionalidade [acesse aqui](/documentations/payment-methods/credit-card#reversao-automatica-de-um-estorno-revert-void)
Siga acompanhando as novidades da Malga 🤓🎉
# Mar 06 - Cobrança por status
Source: https://docs.malga.io/release-notes/2024-03-06-Release-Notes
Novas visões no Painel de Dados 🔢
Estamos felizes em apresentar as novas visões no [Painel de
Dados](https://dashboard.malga.io/app/insights) no Dashboard Malga, confira!
Adicionamos a visão de **Cobranças por status**, com a participação % de cada status de cobrança, pelo maior volume de transações, no período selecionado para exibição no Painel. Passando o mouse em cada status, são exibidas as informações detalhadas de **volume**, **quantidade de cobranças** e **total financeiro** daquele status;
Status das Cobranças Os status exibidos no gráfico de **Cobranças por Status**
correspondem à soma das cobranças realizadas nos métodos de pagamento da loja.
No gráfico seguinte de **Principais métodos de pagamento**, é exibido o
detalhamento de cobranças autorizadas por método de pagamento. Saiba mais
sobre os [status das
cobranças](/api-reference/charges/recuperar-detalhes-de-cobranca)
na Malga em nossa documentação;
### Novidades nas Cobranças do Dashboard 🤘
Realizamos ajustes nas **nomenclaturas da listagem e detalhes de Cobranças** em nosso Dashboard:
Data de criação (refere-se ao `created_at` da cobrança);
ID da cobrança (charge ID);
Valor original;
Valor atual.
MELHORIAS
**Adição das parcelas Nupay** no relatório .csv de exportação de cobranças,
agora retornando o número de parcelas (installments) das cobranças do método
Nupay;
Correção na exibição das **informações da Transaction Request** no Histórico
de Operações dentro do detalhe da cobrança;
Correção em **traduções** para eng-us, carregamento de ilustrações e
melhoria de performance.
Siga acompanhando as melhorias e novidades da Malga! Até mais 🤓
# Mar 11 - Pesquisa por NSU
Source: https://docs.malga.io/release-notes/2024-03-11-Release-Notes
Grandes novidades no Dashboard 🤩
Adicionamos novos recursos ao [Dashboard Malga](https://dashboard.malga.io/app),
evoluindo a experiência de gestão financeira através da nossa plataforma.
Confira as mudanças:
Pesquisa de cobranças por NSU;
Informações de cobranças recusadas no Painel de Dados;
Exibição de reversão de estorno no Histórico de Operações da cobrança.
### Pesquisa de cobranças por NSU
Agora é possível **buscar Cobranças pelo NSU** (número sequencial único), ID do pedido e ID da cobrança, em uma nova experiência no menu lateral. Cada cobrança possui um NSU referente à autorização no provedor **(authorizationNsu)** retornado para a Malga.
Para utilizar a pesquisa, basta selecionar o **ícone de pesquisa na Listagem de Cobranças,** selecionando "NSU" em Buscar por e inserindo NSU no campo de busca. A cobrança, se encontrada, será exibida na listagem com a busca aplicada, refletindo o NSU pesquisado, conforme as imagens:
***
***
Presença do NSU nas cobranças Cada cobrança possui um NSU para identificação
da transação realizada no provedor. O NSU não está presente em
cobranças dos métodos Drip, Nupay e PIX, podendo ser buscadas pelo ID do
pedido (se enviado) ou ID da cobrança na Malga.
### Cobranças recusadas no Painel de dados
Ajustamos a visão geral de Cobranças no [Painel](https://dashboard.malga.io/app/insights), passando a exibir as **Cobranças Recusadas**, correspondentes ao status falha (failed), com o volume de cobranças e total financeiro de acordo com o período e moeda selecionados.
No gráfico de **Principais motivos de recusa**, é possível conferir os principais motivos de recusa das cobranças falhadas (declinedCode), conforme as imagens:
### Exibição da requisição de Reversão de Estorno
Adicionamos o evento de **Reversão do estorno** (revert\_void) no Histórico de Operações, no detalhe das cobranças, com os detalhes de uma requisição de estorno revertida pelo provedor. No detalhe do Histórico, é possível conferir o provedor responsável pela atualização e os valores da cobrança alterada:
**Valor atual da cobrança** (no momento da requisição);
**Valor revertido;**
**Valor da cobrança após a reversão do estorno pelo provedor.**
REVERSÃO DO ESTORNO Quando este cenário acontece, é necessário realizar um
**novo estorno parcial ou total na cobrança**, utilizando o botão de
**Estornar**, habilitado no detalhe da cobrança que sofreu reversão do estorno
anterior;
***
Para mais informações sobre a **requisição de reversão de estorno**, confira o [release](https://docs.malga.io/blog/release-2024-03-05) e a [documentação](/documentations/payment-methods/credit-card#reversao-automatica-de-um-estorno-revert-void);
MELHORIAS NO DASHBOARD
Implementação de **nova tela de erro** por motivo inesperado;
Reorganização dos menus para **busca e filtro de cobranças**;
Em breve, mais novidades em nossa plataforma! 🙌
# Apr 02 - Filtro por provedor
Source: https://docs.malga.io/release-notes/2024-04-02-Release-Notes
Nova forma de encontrar cobranças pelo Dashboard Malga 🙌
### Filtro por provedor
Implementamos o **filtro por provedor** no menu de Cobranças do Dashboard, facilitando a experiência de encontrar os pagamentos realizados na sua loja. O filtro está disponível no menu lateral e pode ser combinado com outros filtros por período, status e método de pagamento, refletindo as cobranças processadas pelo provedor no período selecionado.
O filtro corresponde ao provedor responsável pelo processamento final da transação (equivalente ao último status da cobrança), também exibido na listagem:
O filtro exibe a listagem dos **provedores cadastrados na conta do cliente Malga**, em ordem alfabética, conforme a imagem:
MELHORIAS NO DASHBOARD
Retiramos a validação de formato na criação de conta do Dashboard, agora
permitindo o uso de caracteres especiais e números;
Em breve, mais novidades em nossa plataforma! Siga acompanhando por aqui e através dos canais da Malga 😍
# Apr 18 - Export relatórios
Source: https://docs.malga.io/release-notes/2024-04-18-Release-Notes
Export V2 🚀
**Novo!** Relatório completo no Dashboard, nova opção para exportação de
cobranças em formato .csv!
Liberamos o **novo relatório completo de cobranças**, disponível através do [Dashboard](https://dashboard.malga.io/). Agora, os clientes Malga possuem duas opções de relatório, de acordo com as suas necessidades de análise:
**Relatório simples** Recomendado para análises e consolidação das informações
pelo **último status da cobrança**. Confira os dados desse relatório através
do link 🔗
**Relatório completo** Recomendado para analisar cobranças pelo histórico
completo de operações da cobrança e os detalhes de cada etapa do
processamento. Confira os dados desse relatório através do link 🔗
**Confira a documentação detalhada [Link para o guia de uso novo](/documentations/dashboard/export-data) e o passo a passo para exportação dos relatórios no Dashboard:**

Informações dos tipos de relatórios disponíveis
O período de exportação corresponde à data de **criação das cobranças**;
As informações exportadas correspondem às **cobranças realizadas até o dia anterior (D-1)**, de acordo com o período selecionado;
É possível exportar cobranças realizadas no ambiente de produção e em sandbox, com um período de até **31 dias anteriores à data selecionada**. Caso seja necessário um período de análise maior, entre em contato com o suporte da Malga.
Os relatórios são **enviados por e-mail** para a conta cadastrada no Dashboard Malga, garantindo a segurança das informações. Em casos de relatórios grandes, o envio pode levar mais tempo.
Para mais informações, consulte a documentação: [Exportando dados](/documentations/dashboard/export-data)
Melhorias no Dashboard
Adição da informação de NSU no detalhe da cobrança, junto às informações
básicas da transação;
Novos ícones indicando se a transação possui split e recorrência no detalhe da
cobrança;
Caso enfrente alguma dificuldade ou ainda não possua acesso ao Dashboard para as informações da sua empresa, avise o nosso time através do e-mail [suporte@malga.io](mailto:suporte@malga.io).
Até mais! 🤓
# May 09 - Filtro de disputa
Source: https://docs.malga.io/release-notes/2024-05-09-Release-Notes
### Mais informações nas cobranças do Dashboard 🔢
Implementamos melhorias na **visualização de cobranças** no [Dashboard](https://dashboard.malga.io/app/insights), incluindo o **novo filtro de cobranças em disputa**, informações na listagem, detalhe dos pagamentos e opções de bandeira nos [Fluxos Inteligentes](https://dashboard.malga.io/app/smart-flows).
**CONFIRA AS NOVIDADES**
* **Cobranças em disputa**: Novo **filtro de cobranças em disputa** (flag
is\_dispute: true), refletindo os pagamentos que sofreram abertura de disputa;
* **Transações recorrentes**: Novo campo **"Recorrência"** nos **detalhes da
cobrança** contendo a informação de que a transação correspondente a qual
momento da recorrência: **initial**, **subsequent** ou **unscheduled**,
traduzidas respectivamente para: - Primeira transação recorrente - Transação
recorrente consecutiva - Cobrança avulsa;
* **Split e Recorrência**: Novas etiquetas no detalhe da cobrança indicando a
presença de split ou recorrência, junto ao Histórico de Operações da Cobrança;
* **Eventos de Disputa e Reversão de estorno em destaque** - Marcação nos
eventos do Histórico de Operações da cobrança indicando a presença de uma
notificação de **disputa aberta** e **estorno revertido** (ocorrência para o
provedor Adyen);
* **Novas bandeiras nos condicionais dos Fluxos Inteligentes**: Agora é
possível utilizar as bandeiras **Hipercard** e **Hiper** como condicionais no
fluxo, adicionando mais possibilidades de customização no processamento das
cobranças;
**TRANSAÇÕES RECORRENTES PARA CARTÕES DE CRÉDITO**
A flag de “Recorrência” nas transações é enviada nas cobranças do **método de pagamento de crédito**. Assim, se uma cobrança tiver o [paymentType](https://docs.malga.io/api#tag/Charges) igual a **card** e **existir recorrência**, a informação do tipo de recorrência será exibida nos detalhes dessa cobrança.
Confira a [documentação](/documentations/dashboard/charge-details) detalhada da API Charges e abaixo apresentamos as melhorias implementadas:
#### Filtro de Cobranças em Disputa no menu lateral da listagem de Cobranças
**NOTIFICAÇÃO DE ABERTURA DE DISPUTA**
A informação se uma cobrança sofreu **abertura de processo de disputa** é recebida através da notificação do provedor para a Malga, indicada pela flag "em disputa" (is\_dispute true).
**Confira os provedores que enviam esta informação em nossa [documentação](/documentations/dashboard/charge-details)**
#### Informações de **Recorrência** e **Split** nos detalhes da cobrança
#### Eventos de **disputa** e **reversão de estorno** sinalizados nos detalhes de uma cobrança
**EVENTOS DE DISPUTA E REVERSÃO DE ESTORNO**
Adicionamos o marcador em destaque para indicar transações com **disputa aberta** e transações com **reversão de estorno** (quando este for o último evento do histórico). Em ambos cenários, o cliente deve tratar as cobranças a partir de cada cenário, realizando um estorno ou tratativa da disputa no provedor responsável;
#### Parâmetros de bandeira Hiper e HiperCard como condicionais nos Fluxos Inteligentes
**CONDICIONAIS DO FLUXO INTELIGENTE**
Saiba mais sobre as regras e opções de parâmetros condicionais para o processamento das transações em nossa [documentação](/documentations/flow-guide/conditional).
Caso enfrente alguma dificuldade ou ainda não possua acesso às informações da sua empresa no Dashboard, avise o nosso time através do e-mail [suporte@malga.io](mailto:suporte@malga.io).
Até mais! 🤓
# May 23 - Correções Dash
Source: https://docs.malga.io/release-notes/2024-05-23-Release-Notes
### **Ajustes e Correções no Dashboard 💻**
Implementamos ajustes na experiência do Dashboard Malga, confira as mudanças:
**Gráfico de taxa de aprovação diária no Painel de Dados**
Alteramos a exibição das informações do gráfico de taxa de aprovação diária no Painel de Dados, agora exibindo o detalhe das cobranças ao passar o mouse nos pontos do gráfico. Em cada ponto, é possível conferir a taxa de aprovação e a quantidade total de transações autorizadas e recusadas do dia.
CORREÇÕES NO DASHBOARD
* Ajuste nos ícones das bandeiras Diners e Maestro no menu de Cartões;
* Correção nos campos do [relatório completo](https://docs.malga.io/documentations/dashboard/full-report) da Exportação de cobranças, para correta exibição dos dados de `metadata` e `payment_flow_id`;
Siga acompanhando as novidades! Até mais 🚀
# May 28 - Tokens de Bandeira
Source: https://docs.malga.io/release-notes/2024-05-28-Release-Notes
### **Tokens de Bandeira (Network tokens)**
Adicionamos a possibilidade de tokenizar cartões diretamente nas bandeiras diretamente através da integração com a Malga. A **Tokenização de Bandeira** é um sistema de segurança que substitui os dados sensíveis de um cartão de crédito por um **token criptografado** registrado diretamente na bandeira do cartão.
Cada transação feita após a tokenização do cartão passará a utilizar o token, dispensando o uso dos dados do cartão como nome do portador do cartão, data de validade, CVV, entre outros.
Além de trazer uma maior conversão das transações, também ajuda a prevenir perdas pois é um processo mais seguro para captura.
**CONFIRA AS NOVIDADES**
* Quando uma cobrança em cartão de crédito é feita, tokenizamos o cartão na bandeira e armazenamos o token no sistema da Malga para ser utilizado em transações futuras.
* A cada nova transação, é criado e utilizado um novo criptograma, garantindo a segurança de cada transação.
* Caso exista atualização do cartão na bandeira, fazemos automaticamente a atualização do token na Malga (LCM).
**SUPORTE A PROVEDORES**
Nem todos os Provedores suportam transacionar utilizando Tokens de Bandeira, consulte [nossa documentação](/documentations/tokenization/network-tokens) para mais informações!
Siga acompanhando as novidades! Até a próxima 🚀
# May 28 - Barte
Source: https://docs.malga.io/release-notes/2024-05-28-Release-Notes-2
Adição da Barte como novo provedor de crédito
**Novo Provedor de Crédito na Malga!💳🎉**
Estamos animados em anunciar a integração com um novo provedor de pagamento, a **Barte**! Esta novidade traz alguns benefícios para nossos usuários:
* **Parcelamento em até 21 vezes**: Ofereça maior flexibilidade de pagamento, permitindo parcelamentos em até 21 vezes.
SAIBA MAIS
1. Barte agora disponível como provedor de pagamento na Malga.
2. Facilite as transações com condições de parcelamento vantajosas.
Continue acompanhando as novidades da Malga 🤓🎉
# Jun 24 - Exportação de Cobranças
Source: https://docs.malga.io/release-notes/2024-06-24-Release-Notes
Novos campos de Tokenização de Bandeira
### **Exportação de Cobranças**
**Novos dados na exportação de cobranças em .csv do Dashboard 🚀**
Adicionamos novos campos para que seja possível identificar transações criadas com **Tokenização de Bandeira**. Confira:
| **Campo no relatório pt-br** | **Campo no relatório eng-us** |
| - | - |
| Transação utilizando token de bandeira | Transaction using network token |
| Cartão tokenizado na bandeira em | Tokenized card in network on |
#### Relatórios atualizados
Simples
Completo
Siga acompanhando as novidades! Até a próxima 🚀
# June 28 - Estorno Parcial de Split
Source: https://docs.malga.io/release-notes/2024-06-28-Release-Notes
Adição do parâmetro splitRules no estorno para possibilitar o estorno parcial de split
**Nova Capacidade de Estorno Parcial de Split na Malga!🔄✨**
Adicionamos uma nova capacidade ao Split da Malga! Agora é possível escolher como estornos são divididos entre os recebedores da transação utilizando o parâmetro **splitRules** no corpo da request de estorno. Esta novidade traz alguns benefícios para nossos usuários:
* **Flexibilidade de Gestão**: Permite maior controle sobre como os estornos de transações split.
* **Compatibilidade**: Funciona com os provedores **Pagarme**, **Zoop**, e **Braspag**.
IMPORTANTE
Ainda não é possível fazer estornos parciais com splitRules através do Dashboard, mas em breve estará disponível.
Continue acompanhando as novidades da Malga 🤓🎉
# July 03 - Facilitadores de pagamentos
Source: https://docs.malga.io/release-notes/2024-07-03-Release-Notes
**Novo serviço de Vendors!✨**
Estamos felizes em anunciar que adicionamos um novo serviço para clientes Malga que atuam como facilitadores de pagamento!
Este serviço permite identificar os beneficiários finais de suas transações,
e deve ser utilizado por marketplaces, franquias, aplicativos de delivery, entre outros tipos de negócios que possuem exigência regulatória prevista na Circular do BACEN N° 3978.
Para mais informações [**clique aqui**](/documentations/vendors/intro)
#### Provedores suportados
Adyen
Cielo
Getnet
Rede
SANDBOX
Siga acompanhando as novidades! Até a próxima 🚀
# July 05 - Busca de cobranças
Source: https://docs.malga.io/release-notes/2024-07-05-Release-Notes
### **Novidades na busca de cobranças do Dashboard 🔎**
É com muita alegria que anunciamos a **nova experiência de busca de cobranças**, agora diretamente pela listagem do [Dashboard](https://dashboard.malga.io/app), confira:
NOVAS BUSCAS
* Documento do cliente
* E-mail do cliente
* Número de cartão (4 últimos dígitos)
#### Passo a passo para buscar cobranças
1. Selecione a chave que deseja utilizar para encontrar a cobrança, entre as opções disponíveis;
2. Insira a informação pela qual deseja buscar no campo de "Buscar cobranças" e pressione Enter ou clique no botão de pesquisar (ícone da lupa);
3. A listagem de cobranças retornará os resultados para a chave pesquisada;
4. Clique na cobrança desejada para acessar os detalhes da transação e mais informações sobre o processamento nos provedores, dados do cliente, cartão, entre outros;
####
Chaves disponíveis para busca de cobranças:
| **Chave de pesquisa** | **Onde encontrar** | **Forma de busca** | **Disponibilidade** | **Resultado** |
| - | - | - | - | - |
| Email do cliente (customer email) | Malga, provedor e sistema próprio | [exemplo@exemplo.com](mailto:exemplo@exemplo.com) | Todas as cobranças / [Customers API](https://docs.malga.io/api-reference/customers/cria%C3%A7%C3%A3o-de-novo-customer-para-cobran%C3%A7a) | 1h após a ocorrência da transação |
| Documento do cliente (customer document) | Malga, provedor e sistema próprio | Pode variar entre texto e números | Todas as cobranças / [Customers API](https://docs.malga.io/api-reference/customers/cria%C3%A7%C3%A3o-de-novo-customer-para-cobran%C3%A7a) | 1h após a ocorrência da transação |
| Número de cartão | Malga e provedor | 4 últimos dígitos | Todas as cobranças crédito/voucher | 1h após a ocorrência da transação |
| NSU (authorization NSU) | Malga, provedor e sistema próprio | Pode variar entre texto e números | Cartão, voucher e boleto (gerada pelo provedor) | Tempo real |
| ID do pedido (order ID) | Malga e sistema próprio | Pode variar entre número, texto ou caracteres | Chave opcional enviada pelo cliente para a Malga para identificação do pedido | Tempo real |
| ID da cobrança (charge ID) | Malga e sistema próprio | Combinação de texto, número e caracteres | Chave gerada pela Malga para identificação da cobrança, que pode ser salva no sistema do cliente | Tempo real |
ESCOLHA DA CHAVE DE BUSCA\
A chave selecionada ficará registrada para futuras
consultas, e pode ser alterada sempre que necessário, realizando uma nova
seleção dentre as opções disponíveis;
Em breve, mais novidades na gestão de cobranças pelo Dashboard, e contamos com seus
feedbacks para seguir evoluindo a sua experiência Malga. Até mais! 🤝
# Aug 19 - Picpay
Source: https://docs.malga.io/release-notes/2024-08-19-Release-Notes
Novo método Picpay
**Agora contamos com a PicPay como provedor e método de pagamento na Malga!🎉**
Estamos animados em anunciar a nova integração com o **PicPay**!
Agora os clientes Malga podem utilizar o Picpay como provedor de crédito 💳, ou [utilizar a wallet do PicPay como método de pagamento](/documentations/payment-methods/picpay).
Continue acompanhando as novidades da Malga 🤓🎉
# Aug 29 - Dashboard
Source: https://docs.malga.io/release-notes/2024-08-29-Release-Notes
Melhorias de UX no Dashboard e novas documentações
Liberamos novidades para tornar a sua experiência com a Malga ainda mais fácil! 🤝
## Novo filtro de período
Implementamos um novo calendário para filtrar períodos no Painel de Dados e nos menus de Cobranças, Links e Exportação de Relatórios, com uma interface intuitiva e simples de utilizar:
## Busca nas listagens de Clientes, Subcontas, Recebedores e Links de pagamento
Agora é possível pesquisar informações diretamente pela listagem, inserindo os IDs para localizar clientes, subcontas, recebedores ou links de pagamentos, nos respectivos menus. Confira no [Dashboard](https://dashboard.malga.io/) 🔗;
## Novas documentações
Atualizamos documentações e adicionamos o menu de [Conexões](https://docs.malga.io/documentations/type-tables/payment-methods-by-providers), com detalhes sobre os recursos de cada provedor disponível na Malga:
Melhorias
* Atualização da documentação Sobre as APIs, com a especificação da
OpenAPI;
* Mudanças na interface com reorganização dos menus e novos ícones e
cores;
* Páginas específicas por provedor de pagamento, detalhando os serviços
suportados em cada um deles e na Malga;
# Sep 04 - PicPay PIX
Source: https://docs.malga.io/release-notes/2024-09-04-Release-Notes
Novo método de pagamento na PicPay
**PicPay agora possui suporte a PIX na Malga!🎉**
Estamos felizes em anunciar que adicionamos o [método de pagamento PIX](/documentations/payment-methods/pix#pix) à integração com o **PicPay**!
Continue acompanhando as novidades da Malga 🤓🎉
# Sep 10 - Usuários e permissões
Source: https://docs.malga.io/release-notes/2024-09-10-Release-Notes
Gestão de contas do Dashboard
### Permissões de Usuários no Dashboard
Disponibilizamos **novos papéis com permissões** específicas para os usuários da sua empresa, aprimorando a segurança e controle da sua operação no Dashboard.
Através dos papéis disponíveis de **Visualizador** e **Visualizador (cobranças)**, é possível restringir o acesso de usuários somente para visualização das informações, sem a possibilidade de realização de operações. Os dois perfis não podem realizar ações como estorno, captura e exportação de relatórios, possuindo permissão para visualização de detalhe de cobranças ou visualização integral da área de Vendas (cobranças, clientes, cartões, links de pagamento e recebedores);
Ambos perfis **não possuem acesso** aos menus de Fluxos Inteligentes, Painel de Dados, Subcontas e Usuários, que são restritos ao perfil de Administrador;
Através do menu [Usuários](https://dashboard.malga.io/app/accounts), disponível para o Administrador da conta na Malga, é possível atribuir os novos papéis aos usuários do seu time, e também excluir usuários, caso necessário.
### Como editar o perfil de um usuário no Dashboard
🔗 Confira os detalhes nesta [documentação](/documentations/dashboard/users), onde descrevemos as permissões específicas de cada perfil.
Em breve, mais novidades por aqui! 🤝🚀
# Sep 19 - Barte
Source: https://docs.malga.io/release-notes/2024-09-19-Release-Notes
Pré-autorização e captura
**Barte agora possui suporte à pré-autorização na Malga!🎉**
Estamos felizes em anunciar que o provedor [Barte](/documentations/providers/barte) agora suporta [pré-autorização e captura!](/api-reference/charges/capturar-cobranca-pre-autorizada)
Disponível apenas para o método de pagamento crédito.
Continue acompanhando as novidades da Malga 🤓🎉
# Oct 07 - Novos filtros
Source: https://docs.malga.io/release-notes/2024-10-07-Release-Notes
Novos filtros de provedor e método de pagamento
Lançamos novos filtros no [Painel de Dados](https://dashboard.malga.io/app/insights), facilitando as análises sobre a performance dos provedores e métodos de pagamento da loja.
Agora você pode filtrar os dados por:
* **Provedor de pagamento**
* **Método de pagamento**
* **Subconta (merchant)**
* **Moeda**
* **Período**
**Confira a nova experiência:**
Os filtros e resultados do Painel de Dados estão ordenados por maior volume de cobranças ao longo do histórico de pagamentos na Malga, e estão disponíveis no padrão d-1, retornando as cobranças criadas até o dia anterior;
MELHORIAS IMPLEMENTADAS
* Atualização da [documentação](/documentations/dashboard/insights) sobre os dados do Painel
* Melhorias de UX no Dashboard
Em breve, disponibilizaremos novas métricas e recursos na plataforma. Até o próximo release! 🤓
# Oct 21 - Bandeira de cartão | Painel
Source: https://docs.malga.io/release-notes/2024-10-21-Release-Notes
É com muita alegria que anunciamos novidades no Painel de Dados 🔢✨
* Novo dado de vendas autorizadas por **bandeira de cartão**;
* Filtro de período ampliado para **seleção de até 3 meses**;
* Visão **diária, semanal e mensal da taxa de aprovação** e cobranças por período.
## Dados de cobranças autorizadas por bandeira de cartão
* **Volume de vendas por bandeira** → participação % da bandeira sobre o total de cobranças do período selecionado (métodos crédito, wallet e voucher);
* **Autorização** → % de cobranças pré-autorizadas e autorizadas sobre o total de cobranças;
* **Quantidade** → volume de cobranças realizadas na bandeira;
* **Valor** → total financeiro processado na bandeira.
## Visão detalhada da taxa de aprovação diária, semanal e mensal
Agora é possível visualizar o gráfico de **taxa de aprovação diária, semanal e mensal**, com o detalhamento das cobranças autorizadas, recusadas e o total, facilitando a comparação dos resultados entre os períodos selecionados.
MELHORIAS IMPLEMENTADAS
API Sessions
* Implementação de regra de unicidade da idempotency key.
Checkout
* Adição de novas propriedades no objeto de itens e carrinho do fraudAnalysis;
* Correção da versão mobile do pagamento do tipo crédito;
Gerais
* Ajustes nas nomenclaturas do Painel de Dados;
Siga acompanhando as novidades e até a próxima! 🤝
# Nov 11 - Query Cards | Analytics
Source: https://docs.malga.io/release-notes/2024-11-11-Release-Notes
Disponibilizamos a query de **Cards** na [Analytics API](/analytics/intro), onde é possível consultar e extrair a base de cartões e tokens salvos através da Malga, aplicando filtros por card id, data de criação, status, bandeira, customer ID e holder name.
Através da query, é possível analisar a **base de cartões e tokens** gerados nas cobranças, e informações como o volume de bandeiras, clientes vinculados aos cartões, entre outras análises.
Confira em nossa [documentação](/analytics/queries/cards) todas as informações retornadas na query, com os detalhes do cartão, token e do cliente associado ao cartão, caso exista.
É possível testar a [query Cards](/analytics/queries/cards) e a Analytics API
através do playground disponível neste [link](https://graphql.malga.io/),
utilizando suas credenciais de acesso à Malga.
Até a próxima! 🚀
# Nov 14 - API Settings
Source: https://docs.malga.io/release-notes/2024-11-14-Release-Notes
Personalização do Link de Pagamento
Disponibilizamos o serviço de [settings](/api-reference/settings) para facilitar a personalização do link de pagamento com as cores e configurações da sua empresa.
Hoje através da funcionalidade do link de pagamento Malga, é possível direcionar o seu cliente final diretamente para o pagamento de um pedido, optando pelo método e realizando a cobrança. Saiba mais aqui sobre os recursos do [Link de Pagamento](/documentations/payment-link/intro), que pode ser configurado pelo Dashboard ou pela API [Sessions](/documentations/more/sessions), e aqui como funciona a experiência do checkout [personalizado](https://checkout-full.vanilla.malga.io/).
Através do serviço, é possível atribuir cores, logo da sua empresa e até configurar a URL do Link de Pagamento.
COMO CONFIGURAR A URL DO LINK DE PAGAMENTO
Do nosso lado, apenas estamos retornando nos endpoints de Sessions o domínio personalizado junto ao identificador da sessão criada.
Para que seja possível ter a personalização de URL funcionando, também será necessário ter algum redirecionamento configurado no seu servidor.
MELHORIAS
Melhorias nas validações de CEP do Checkout e do Link de Pagamento
Correção de bug no botão avançar do Checkout
Melhoria na configuração de parcela do Checkout (agora é possível configurar o número de parcelas sem exibir a interface de seleção)
Correção de bug na exibição das subcontas no Painel de Dados
Se precisar de ajuda nas configurações para personalizar o Link de Pagamento ou em algum dos nossos serviços, entre em contato com o time de atendimento Malga! Boas vendas 🤝
# Dez 10 - Performance | Painel de Dados
Source: https://docs.malga.io/release-notes/2024-12-10-Release-Notes
Estamos muito empolgados em compartilhar a nova aba de **Performance** no Painel de dados! Agora, é possível acompanhar de forma ainda mais detalhada o desempenho do seu **fluxo inteligente de crédito**, ajudando você a tomar decisões estratégicas e otimizar a operação do seu negócio.
Confira o que tem de novo:
**- Taxa de aprovação na primeira tentativa e retentativas:** acompanhe o impacto das retentativas na sua taxa de aprovação e recuperação de vendas;
**- Taxa de aprovação por tentativa e provedor:** analise o desempenho de cada provedor em todas as tentativas do fluxo inteligente, entendendo sua contribuição e identificando oportunidades para otimizar seus resultados;
**- Histórico de fluxos inteligentes:** compare o desempenho do fluxo atual com fluxos anteriores para evoluir suas estratégias.
Para mais detalhes e informações das métricas apresentadas, confira nossa
[documentação aqui](/documentations/dashboard/insights/performance).
Qualquer dúvida, entre em contato com o time de atendimento Malga. Contamos com seu feedback para continuar evoluindo o Painel de dados.
Até mais! 🚀
# Dez 13 - 3DSecure2 Agnóstico
Source: https://docs.malga.io/release-notes/2024-12-13-Release-Notes
Agora você pode contar com o 3DS2 Agnóstico na Malga! Sendo uma evolução do 3DS2 tradicional, esta nova funcionalidade torna o processo de autenticação mais flexível, garantindo compatibilidade com diferentes provedores de pagamento e permitindo fluxos customizados, com retentativas sem a necessidade de uma nova autenticação.
O 3DS2 é um protocolo de autenticação que adiciona uma camada extra de segurança às transações online. Ele verifica a identidade do comprador durante o pagamento, transferindo a responsabilidade de chargebacks por fraude para o banco emissor. Com o 3DS2 Agnóstico da Malga, a sua empresa tem uma solução de combate à fraude sem ficar dependente de um único provedor.
Para mais informações confira a nossa [documentação completa](/documentations/3ds2-malga/intro).
Se tiver qualquer dúvida, entre em contato com o nosso time de suporte. Até mais! 🚀
# Dec 18 - Barte
Source: https://docs.malga.io/release-notes/2024-12-18-Release-Notes
Novo campo de antifraude
**Barte novo campo de antifraude!**
Agora clientes Malga que utilizam o provedor [Barte](/documentations/providers/barte) podem enviar o id da sessão nos dados de antifraude
ao [realizar uma cobrança](/api-reference/charges/realizar-nova-cobranca) através do campo `fraudAnalysis.device.sessionId`
Disponível apenas para o método de pagamento crédito.
Continue acompanhando as novidades da Malga 🤓🎉
# Dez 23 - Painel de dados em tempo real
Source: https://docs.malga.io/release-notes/2024-12-23-Release-Notes
Painel de dados real time
Estamos animados em anunciar que o Painel de Dados agora opera próximo do tempo real! Isso significa que você terá acesso quase imediato às informações mais recentes para tomar decisões mais rápidas.
Benefícios:
* Decisões mais assertivas: monitore e reaja ao desempenho da sua loja com o atraso de no máximo 20min.
* Mantenha o controle da sua operação: agora é mais fácil identificar oportunidades e resolver problemas rapidamente.
Aproveite a melhoria! Teremos mais novidades em breve, até logo 🚀
# Jan 02 - Apple Pay
Source: https://docs.malga.io/release-notes/2025-01-02-Release-Notes
Apple Pay
Apple Pay agora disponível na Malga!
Facilitamos ainda mais os pagamentos para seus clientes! Apple Pay está disponível como um novo método de pagamento para ser integrado aos provedores **Cielo** e **Pagar.me V5**, permitindo que você utilize nosso fluxo inteligente para otimizar sua operação.
Com suporte para cartões de crédito, o Apple Pay permite transações rápidas e seguras com apenas um toque ou um olhar. Isso significa maior conveniência para seus clientes e uma redução no abandono de carrinho.
[🔗 Confira a documentação para mais detalhes.](/documentations/payment-methods/apple-pay/intro)
Até mais! 🚀
# Jan 03 - Exportação de Cobranças
Source: https://docs.malga.io/release-notes/2025-01-03-Release-Notes
Novos campos de 3DSecure2
### **Exportação de Cobranças**
**Novos dados disponíveis na exportação de cobranças em CSV do Dashboard 🚀**
Agora é possível identificar transações criadas com [3DSecure2](/documentations/3ds2-malga/intro) diretamente nos relatórios. Adicionamos os seguintes campos:
| **Campo no Relatório (PT-BR)** | **Campo no Relatório (ENG-US)** |
| - | - |
| Resultado de autenticação | Authentication result |
| Análise de risco | Risk analysis |
| Cobertura de risco | Risk coverage |
| Autenticação | Authentication |
| Tipo de análise | Analysis type |
| Tipo de autenticação | Authentication type |
#### Relatórios atualizados
Simples
Completo
Siga acompanhando as novidades! Até a próxima 🚀
# Jan 03 - Barte
Source: https://docs.malga.io/release-notes/2025-01-03-Release-Notes2
Estorno parcial
**Barte agora suporta estornos parciais!**
Clientes Malga que utilizam o provedor [Barte](/documentations/providers/barte) agora podem realizar
[estornos parciais de cobranças aprovadas](/api-reference/charges/estornar-cobranca-aprovada).
Disponível apenas para o método de pagamento crédito.
Continue acompanhando as novidades da Malga 🤓🎉
# Jan 30 - 3DS DataOnly
Source: https://docs.malga.io/release-notes/2025-01-30-Release-Notes
Nova funcionalidade 3DS DataOnly
**Novo recurso: 3DS DataOnly!**
Agora nossos clientes podem realizar transações 3DS DataOnly! Esta funcionalidade permite coletar e enviar dados 3DS sem realizar a autenticação completa, oferecendo mais flexibilidade no processo de pagamento.
Para utilizar, basta adicionar a propriedade `dataOnly: true` no objeto `threeDSecure2`:
```shell theme={null}
curl --location --request POST 'https://api.malga.io/v1/charges' \
--header 'X-Client-Id: ' \
--header 'X-Api-Key: ' \
--header 'Content-Type: application/json' \
--data-raw '{
"merchantId": "469ed9e8-97d1-433a-a586-2fd282b7d9a4",
"amount": 100,
"statementDescriptor": "Pedido #231 loja joão",
"capture": true,
"paymentMethod": {
"paymentType": "credit",
"installments": 1
},
"paymentSource": {
"sourceType": "card",
"card": {
"cardHolderName": "JOSE DAS NEVES",
"cardNumber": "4929564637987814",
"cardCvv": "123",
"cardExpirationDate": "12/2026"
}
},
"threeDSecure2": {
"dataOnly": true, <-- novo campo
"redirectURL": "http://your-company/receive",
"requestorURL": "http://your-company",
"browser": {
"acceptHeader": "*/*",
"colorDepth": 24,
"javaEnabled": true,
"javaScriptEnabled": true,
"language": "pt-BR",
"screenHeight": 1080,
"screenWidth": 1920,
"timeZoneOffset": "180",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36",
"ip": "0.0.0.0"
},
"cardHolder": {
"email": "cardHolder@email.com",
"mobilePhone": "11 99329899"
},
"billingAddress": {
"city": "Rio de Janeiro",
"country": "Brasil",
"streetNumber": "45",
"zipCode": "2547896",
"state": "RJ",
"street": "Av. Brasil"
},
"shippingAddress": {
"city": "São Paulo",
"country": "Brasil",
"streetNumber": "45",
"zipCode": "2957896",
"state": "SP",
"street": "Rua das Flores"
}
}
}
```
Disponível para os provedores Zoop e Rede nos serviços:
* API Transacional
* Session API
* Export Data
Para mais detalhes, consulte nossa [API do Transacional](/documentations/3ds2-malga/3ds-data-only).
Continue acompanhando as novidades da Malga 🚀
# Mar 25 - Tokenization V2
Source: https://docs.malga.io/release-notes/2025-03-25-Release-Notes
**SDK Tokenization: mais segurança com Hosted Fields!**
Agora você pode reforçar a segurança ao tokenizar cartões utilizando o Hosted Fields! Com essa novidade, os campos sensíveis do cartão são hospedados diretamente na Malga, garantindo conformidade com PCI DSS e reduzindo a complexidade da sua implementação.
**O que muda?**
**Mais segurança:** os dados do cartão são processados em um ambiente seguro, sem transitar pelo seu servidor ou serem expostos diretamente ao navegador ou ao front-end da aplicação.
**Experiência personalizável:** estilize os campos para que se encaixem perfeitamente no seu checkout.
[🔗 Para saber mais, confira nossa documentação.](/sdks/tokenization/v2/intro)
# May 2025 - Convite de Usuários
Source: https://docs.malga.io/release-notes/2025-05-07-Release-Notes