Criar Transação
Para fazer uma cobrança você deve utilizar essa rota e criar a sua transação.
É possível utilizar um card_hash
, card_id
ou todos os dados do cartão diretamente (card_holder_name
, card_number
, card_expiration_date
e card_cvv
). A primeira opção é a mais indicada, por fatores de segurança.
Toda vez que for realizado uma transação com sucesso em nossos sistemas será retornado um card_id que poderá ser utilizado em compras futuras. Assim utilizando o card_hash na primeira compra e um card_id nas compras futuras você incrementa ainda mais a segurança dos dados do seu cliente, sem precisar expor os dados sensíveis do cartão.
A Marlim é uma empresa PCI Compliance, ou seja, somos auditados para seguir todas as regras de segurança de mercado que visam proteger os dados dos cartões dos seus clientes. Caso seu sistema não esteja habilitado para criar o card_hash
, você pode transacionar com segurança com os dados abertos de cartão, uma vez que nossos sistemas criptografam todos os dados e somente nosso Adquirente (quem processa o pagamento junto ao Banco Emissor) é que tem acesso aos dados reais do cartão. No link a seguir, descrevemos o passo a passo de como criar um card_hash.
Os valores utilizados nos exemplos são apenas para ilustração. Em ambiente Sandbox, utilize dados do cliente pagador mais próximos de uma transação real. Se você utlizar valores fictícios demais, o Antifraude pode não funcionar de forma esperada.
Request Body Params
Atributo | Tipo | Descrição |
---|---|---|
amount | int32 | Valor final a ser cobrado do consumidor final. Deve ser passado em centavos. |
installments | string | Número de parcelas da transação, sendo mínimo: 1 e máximo: 12. |
item_id | string | ID da transação na sua plataforma. |
soft_descriptor | string | Descrição que aparecerá na fatura do seu cliente. Máximo de 13 caracteres, sendo alfanuméricos e espaços. |
card_holder_name | string | Nome do portador do cartão. Caso inclua um card_id ou card_hash, esse campo torna-se dispensável. |
card_number | string | Número do cartão. Caso inclua um card_id ou card_hash, esse campo torna-se dispensável. |
card_expiration_date | string | Data de validade do cartão. Somente números no formato MMAA. Caso inclua um card_id ou card_hash, esse campo torna-se dispensável. |
card_cvv | string | Código verificador do cartão. Caso inclua um card_id ou card_hash, esse campo torna-se dispensável. |
card_id | string | ID de um cartão salvo e validado anteriormente. Caso inclua um card_hash ou os dados abertos do cartão, esse campo torna-se dispensável. |
card_hash | string | Hash de um cartão criptografado manualmente usando uma chave pública. Caso inclua um card_id ou os dados abertos do cartão, esse campo torna-se dispensável. |
customer | object | Objeto Cliente. |
customer[name] | string | Nome do cliente. |
customer[email] | string | E-mail do cliente. |
customer[document_number] | string | Número do documento do cliente. |
customer[phone] | object | Objeto número do telefone do cliente. |
customer[phone][country_code] | string | Código do país do telefone do cliente (DDI). |
customer[phone][area_code] | string | Código do estado do telefone do cliente (DDD). |
customer[phone][number] | string | Número do telefone do cliente. |
customer[address] | object | Objeto Endereço do Cliente. |
customer[address][country] | string | Nacionalidade do cliente, no formato sigla do país. Só serão aceitos o formato ISO 3166-1 alfa-2 (duas-letras) Ex: BR, US, UY... Máximo em caracteres: 2 |
customer[address][state] | string | Estado do atual endereço do cliente, no formato sigla do estado. Ex: SP, RJ, MG... Máximo em caracteres: 2 |
customer[address][city] | string | Cidade do endereço do cliente. Máximo em caracteres: 50 |
customer[address][neighborhood] | string | Bairro do endereço do cliente. Máximo em caracteres: 45 |
customer[address][street] | string | Rua do endereço do cliente. Máximo em caracteres: 54 |
customer[address][number] | string | Número do atual endereço do cliente. Máximo em caracteres: 5 |
customer[address][complement] | string | Parâmetro opcional do complemento do atual endereço do cliente. Máximo em caracteres: 14 |
customer[address][zipcode] | string | CEP do cliente. Máximo em caracteres: 9 |
webhook_url | string | Parâmetro opcional para passar o endpoint do seu sistema que receberá informações a cada atualização da transação. |
webhook_auth_token | string | Parâmetro opcional para autenticar as notificações enviadas para o webhook_url . Caso o parâmetro não seja informado, as notificações serão enviadas sem autenticação. |
net_value | int32 | Parâmetro necessário caso sua plataforma repasse a taxa de adquirência para o consumidor final. Valor líquido a ser recebido pela transação. Deve ser passado em centavos. |
dfp_id | string | Parâmetro opcional do ID da URL que compõe o session_id criado na integração com o Antifraude da Marlim. |
sub_seller_document_number | string | Parâmetro opcional para informar o CNPJ do seu parceiro de venda. |
sub_seller_id | string | Parâmetro opcional para informar o ID na sua plataforma do seu parceiro de venda. |
simulate_status | string | Parâmetro opcional que pode ser passado em ambiente de teste para simular o fluxo do Antifraude. Valores aceitos: paid , review e rejected . |
simulate_refused_code | string | Parâmetro opcional que pode ser passado em ambiente de teste para simular o fluxo de retornos negativos do banco emissor. Valores aceitos: 1000 , 1011 , 1016 e 5000 . |
{
"amount": 1000,
"installments": "1",
"item_id": "ABC123456789",
"soft_descriptor": "Marlim Store",
"card_holder_name": "Luke Skywalker",
"card_number": "5555444433332222",
"card_expiration_date": "1225",
"card_cvv": "123",
"customer": {
"name": "Luke Skywalker",
"email": "luke@jedimaster.sw",
"document_number": "00099988877",
"phone": {
"country_code": "+55",
"area_code": "11",
"number": "999887766"
},
"address": {
"country": "BR",
"state": "SP",
"city": "São Paulo",
"neighborhood": "República",
"street": "Rua Aurora",
"number": "123",
"complement": "Apto 42",
"zipcode": "01209001"
}
}
}
Nossa API não aceita null
, undefined
ou empty
em valores de string em qualquer endpoint. Se passar um parâmetro com qualquer um destes 3 valores, será retornado um erro. Caso o parâmetro não seja obrigatório e você não queira que ele seja computado, basta removê-lo da requisição.
Response Object
Propriedade | Tipo | Descrição |
---|---|---|
status | string | Representa o estado atual da transação. Valores possíveis: paid , review , rejected e refused . |
amount | int32 | Valor em centavos a ser cobrado na transação. |
net_value | int32 | Parâmetro opcional do valor líquido a ser recebido pela transação. |
authorized_amount | int32 | Valor em centavos autorizado na transação. |
paid_amount | int32 | Valor em centavos capturado na transação. |
refunded_amount | int32 | Valor em centavos estornado na transação. |
installments | string | Número de parcelas em que o cliente pagou. |
nsu | string | Código que identifica a transação na adquirente. |
authorization_code | string | Código de autorização retornado pelo banco emissor. |
transaction_id | string | Número identificador Marlim da transação. |
date_created | dateTime | Data de criação da transação no formato ISODateTime. |
date_updated | dateTime | Data de atualização do status da transação no formato ISODateTime. |
card_holder_name | string | Nome do portador do cartão utilizado no pagamento. |
card_brand | string | Bandeira do cartão utilizado no pagamento. Valores possíveis: visa , mastercard , amex , hipercard e elo . |
card_first_digits | string | Primeiros 6 dígitos do cartão utilizado no pagamento. |
card_last_digits | string | Últimos 4 dígitos do cartão utilizado no pagamento. |
card_id | string | null | Ao realizar uma transação com o status paid, retornamos sempre um card_id . Se a transação foi criada usando um card_hash , criamos automaticamente esse id com os dados do cartão criptografado no vault da Marlim. Esse card_id pode ser usado em compras futuras. |
acquirer_status_code | string | Código identificador da resposta do Banco Emissor. Valores possíveis: 0000 , 1000 , 1011 , 1016 e 5000 . |
acquirer_status_message | string | Mensagem referente ao código da resposta do Banco Emissor. |
{
"status": "paid",
"nsu": "98765432",
"authorization_code": "112233",
"date_created": "2025-01-01T00:00:00.000Z",
"date_updated": "2025-01-01T00:00:00.000Z",
"amount": 1000,
"authorized_amount": 1000,
"paid_amount": 1000,
"refunded_amount": 0,
"installments": "1",
"transaction_id": "HcDscltTIVK3VMAAOj7J",
"card_holder_name": "Luke Skywalker",
"card_brand": "visa",
"card_first_digits": "555544",
"card_last_digits": "2222",
"card_id": "card_123456789",
"acquirer_status_code": "0000",
"acquirer_status_message": "The acquirer captured the amount on the card."
}
Webhook URL
Todo o processo de mudança de status de uma transação é assíncrono. Por isso, é importante que você passe um webhook_url
durante o processo de criação de uma transação para que sua aplicação receba todas as mudanças de status.
Se for passado algum valor no parâmetro webhook_auth_token
a Marlim vai enviar o token para a sua aplicação usando o padrão Authorization: Bearer
no Header da requisição:
Authorization: Bearer {webhook_auth_token}
Abaixo, a tabela com os valores possíveis de status recebidos no webhook_url
.
Status | Significado |
---|---|
paid | Transação paga e capturada com sucesso. |
review | Transação está em processo de revisão manual pelos nossos especialistas. O valor foi autorizado e reservado no cartão, mas ainda não foi capturado. |
refused | Transação recusada pelo banco emissor. |
refunded | Transação estornada. |
chargeback | Transação sofreu chargeback. |
curl -X POST "https://suaaplicacao.com.br/pedidos/123456789/webhook" \
-H "Content-Type: application/json" \
-H "User-Agent: Marlim/1.0.0" \
-H "Marlim-Api-Signature: Star98765Wars43210ANewHope1977" \
-d '{
"event": "transaction_status_changed",
"transaction_id": "HcDscltTIVK3VMAAOj7J",
"current_status": "paid",
"nsu": "98765432",
"authorization_code": "112233",
"date_created": "2025-05-28T13:20:21.275Z",
"date_updated": "2025-05-28T13:20:21.275Z",
"amount": 1000,
"paid_amount": 1000,
"installments": "1",
"card_holder_name": "Luke Skywalker",
"card_brand": "visa",
"card_first_digits": "444455",
"card_last_digits": "2222",
"acquirer_status_code": "0000"
}'
Você deve validar a origem do webhook, isto é, se ele foi realmente enviado pelos servidores da Marlim.
Para isso, enviamos no HEADER do POST do dois valores:
• User-Agent
: sempre com o valor Marlim/1.0.0
• Marlim-Api-Signature
: o final da sua api_key removendo os valores mak_test_
e mak_live_
Antifraude
Para facilitar durante a fase de desenvolvimento você pode simular os status de uma transação em conjunto com o nossos Antifraude para desenvolver esse fluxo na sua aplicação. Você pode simular os status de uma transação, utilizando o parâmetro simulate_status
passando os valores: paid
, review
ou rejected
.
Em ambiente de Produção, uma transação com status review
será revisada manualmente pelos nossos especialistas. Após essa análise, a transação poderá passar para o status de paid
(ou seja, foi aprovada por um especialista) ou refunded
(ou seja, foi rejeitada pelo especialista).
Em ambiente Sandbox, você terá acesso a um endpoint para "emular" o status futuro dessa revisão que acontece em Produção: https://api.marlim.co/v3/antifraud
podendo passar os valores accept
ou reject
e o ID de uma transação, seguindo o payload abaixo:
{
"transaction_id": "HcDscltTIVK3VMAAYC54",
"status": "accept" // accept || reject
}
Simular Status
Abaixo, alguns exemplos de simulações utilizando o parâmetro simulate_status
e suas variáveis:
- Status Pago
- Status Revisão
- Status Rejeitado
curl -X POST "https://api.marlim.co/v3/transactions" \
-H "Content-Type: application/json" \
-H "api_key: api_key_value" \
-d '{
"simulate_status": "paid",
"amount": 1000,
"installments": "1",
"item_id": "ABC123456789",
"soft_descriptor": "Marlim Store",
"card_holder_name": "Luke Skywalker",
"card_number": "5555444433332222",
"card_expiration_date": "1225",
"card_cvv": "123",
"customer": {
"name": "Luke Skywalker",
"email": "luke@jedimaster.sw",
"document_number": "00099988877",
"phone": {
"country_code": "+55",
"area_code": "11",
"number": "999887766"
},
"address": {
"country": "BR",
"state": "SP",
"city": "São Paulo",
"neighborhood": "República",
"street": "Rua Aurora",
"number": "123",
"complement": "Apto 42",
"zipcode": "01209001"
}
},
"webhook_url": "https://webhook.site/123-456-789",
"webhook_auth_token": "seu_token_secreto",
"dfp_id": "ABC123456789"
}'
{
"status": "paid",
"nsu": "98765432",
"authorization_code": "112233",
"date_created": "2025-05-28T13:20:21.275Z",
"date_updated": "2025-05-28T13:20:21.275Z",
"amount": 1000,
"paid_amount": 1000,
"installments": "1",
"transaction_id": "HcDscltTIVK3VMAAOj7J",
"card_holder_name": "Luke Skywalker",
"card_brand": "visa",
"card_first_digits": "555544",
"card_last_digits": "2222",
"acquirer_status_code": "0000",
"acquirer_status_message": "The acquirer captured the amount on the card."
}
curl -X POST "https://api.marlim.co/v3/transactions" \
-H "Content-Type: application/json" \
-H "api_key: api_key_value" \
-d '{
"simulate_status": "review",
"amount": 1000,
"installments": "1",
"item_id": "ABC123456789",
"soft_descriptor": "Marlim Store",
"card_holder_name": "Luke Skywalker",
"card_number": "5555444433332222",
"card_expiration_date": "1225",
"card_cvv": "123",
"customer": {
"name": "Luke Skywalker",
"email": "luke@jedimaster.sw",
"document_number": "00099988877",
"phone": {
"country_code": "+55",
"area_code": "11",
"number": "999887766"
},
"address": {
"country": "BR",
"state": "SP",
"city": "São Paulo",
"neighborhood": "República",
"street": "Rua Aurora",
"number": "123",
"complement": "Apto 42",
"zipcode": "01209001"
}
},
"webhook_url": "https://webhook.site/123-456-789",
"webhook_auth_token": "seu_token_secreto",
"dfp_id": "ABC123456789"
}'
{
"status": "review",
"nsu": "98765432",
"authorization_code": "112233",
"date_created": "2025-05-28T13:20:21.275Z",
"date_updated": "2025-05-28T13:20:21.275Z",
"amount": 1000,
"paid_amount": 0,
"installments": "1",
"transaction_id": "HcDscltTIVK3VMAAOj7J",
"card_holder_name": "Luke Skywalker",
"card_brand": "visa",
"card_first_digits": "555544",
"card_last_digits": "2222",
"acquirer_status_code": "0000",
"acquirer_status_message": "The bank has authorized this amount on the card."
}
curl -X POST "https://api.marlim.co/v3/transactions" \
-H "Content-Type: application/json" \
-H "api_key: api_key_value" \
-d '{
"simulate_status": "rejected",
"amount": 1000,
"installments": "1",
"item_id": "ABC123456789",
"soft_descriptor": "Marlim Store",
"card_holder_name": "Luke Skywalker",
"card_number": "5555444433332222",
"card_expiration_date": "1225",
"card_cvv": "123",
"customer": {
"name": "Luke Skywalker",
"email": "luke@jedimaster.sw",
"document_number": "00099988877",
"phone": {
"country_code": "+55",
"area_code": "11",
"number": "999887766"
},
"address": {
"country": "BR",
"state": "SP",
"city": "São Paulo",
"neighborhood": "República",
"street": "Rua Aurora",
"number": "123",
"complement": "Apto 42",
"zipcode": "01209001"
}
},
"webhook_url": "https://webhook.site/123-456-789",
"webhook_auth_token": "seu_token_secreto",
"dfp_id": "ABC123456789"
}'
{
"status": "rejected",
"nsu": null,
"authorization_code": null,
"date_created": "2025-05-28T13:20:21.275Z",
"date_updated": "2025-05-28T13:20:21.275Z",
"amount": 1000,
"paid_amount": 0,
"installments": "1",
"transaction_id": null,
"card_holder_name": "Luke Skywalker",
"card_brand": "visa",
"card_first_digits": "555544",
"card_last_digits": "2222",
"acquirer_status_code": null,
"acquirer_status_message": null
}
🕹 Criar uma transação com status review
, e emular aceitá-la no nosso Antifraude.
- 1º Criar Transação
- 2º Atualizar Antifraude
- 3º Receber o Webhook
curl -X POST "https://api.marlim.co/v3/transactions" \
-H "Content-Type: application/json" \
-H "api_key: api_key_value" \
-d '{
"simulate_status": "review",
"amount": 1000,
"installments": "1",
"item_id": "ABC123456789",
"soft_descriptor": "Marlim Store",
"card_holder_name": "Luke Skywalker",
"card_number": "5555444433332222",
"card_expiration_date": "1225",
"card_cvv": "123",
"customer": {
"name": "Luke Skywalker",
"email": "luke@jedimaster.sw",
"document_number": "00099988877",
"phone": {
"country_code": "+55",
"area_code": "11",
"number": "999887766"
},
"address": {
"country": "BR",
"state": "SP",
"city": "São Paulo",
"neighborhood": "República",
"street": "Rua Aurora",
"number": "123",
"complement": "Apto 42",
"zipcode": "01209001"
}
},
"webhook_url": "https://webhook.site/123-456-789",
"webhook_auth_token": "seu_token_secreto",
"dfp_id": "ABC123456789"
}'
{
"status": "review",
"nsu": "98765432",
"authorization_code": "112233",
"date_created": "2025-05-28T13:20:21.275Z",
"date_updated": "2025-05-28T13:20:21.275Z",
"amount": 1000,
"paid_amount": 0,
"installments": "1",
"transaction_id": "HcDscltTIVK3VMAAOj7J",
"card_holder_name": "Luke Skywalker",
"card_brand": "visa",
"card_first_digits": "555544",
"card_last_digits": "2222",
"acquirer_status_code": "0000",
"acquirer_status_message": "The bank has authorized this amount on the card."
}
curl -X PATCH "https://api.marlim.co/v3/antifraud" \
-H "Content-Type: application/json" \
-H "api_key: api_key_value" \
-d '{
"transaction_id": "HcDscltTIVK3VMAAOj7J",
"status": "accept"
}'
{
"updated": true
}
curl -X POST "https://webhook.site/123-456-789" \
-H "Content-Type: application/json" \
-H "User-Agent: Marlim/1.0.0" \
-H "Marlim-Api-Signature: Star98765Wars43210ANewHope1977" \
-d '{
"event": "transaction_status_changed",
"transaction_id": "HcDscltTIVK3VMAAOj7J",
"current_status": "paid",
"nsu": "98765432",
"authorization_code": "112233",
"date_created": "2025-05-28T13:20:21.275Z",
"date_updated": "2025-05-28T13:20:21.275Z",
"amount": 1000,
"paid_amount": 1000,
"installments": "1",
"item_id": "ABC123456789",
"card_holder_name": "Luke Skywalker",
"card_brand": "visa",
"card_first_digits": "555544",
"card_last_digits": "2222",
"acquirer_status_code": "0000"
}'
🕹 Criar uma transação com status review
, e emular rejeitá-la no nosso Antifraude.
- 1º Criar Transação
- 2º Atualizar Antifraude
- 3º Receber o Webhook
curl -X POST "https://api.marlim.co/v3/transactions" \
-H "Content-Type: application/json" \
-H "api_key: api_key_value" \
-d '{
"simulate_status": "review",
"amount": 1000,
"installments": "1",
"item_id": "ABC123456789",
"soft_descriptor": "Marlim Store",
"card_holder_name": "Luke Skywalker",
"card_number": "5555444433332222",
"card_expiration_date": "1225",
"card_cvv": "123",
"customer": {
"name": "Luke Skywalker",
"email": "luke@jedimaster.sw",
"document_number": "00099988877",
"phone": {
"country_code": "+55",
"area_code": "11",
"number": "999887766"
},
"address": {
"country": "BR",
"state": "SP",
"city": "São Paulo",
"neighborhood": "República",
"street": "Rua Aurora",
"number": "123",
"complement": "Apto 42",
"zipcode": "01209001"
}
},
"webhook_url": "https://webhook.site/123-456-789",
"webhook_auth_token": "seu_token_secreto",
"dfp_id": "ABC123456789"
}'
{
"status": "review",
"nsu": "98765432",
"authorization_code": "112233",
"date_created": "2025-05-28T13:20:21.275Z",
"date_updated": "2025-05-28T13:20:21.275Z",
"amount": 1000,
"paid_amount": 0,
"installments": "1",
"transaction_id": "HcDscltTIVK3VMAAOj7J",
"card_holder_name": "Luke Skywalker",
"card_brand": "visa",
"card_first_digits": "555544",
"card_last_digits": "2222",
"acquirer_status_code": "0000",
"acquirer_status_message": "The bank has authorized this amount on the card."
}
curl -X PATCH "https://api.marlim.co/v3/antifraud" \
-H "Content-Type: application/json" \
-H "api_key: api_key_value" \
-d '{
"transaction_id": "HcDscltTIVK3VMAAOj7J",
"status": "reject"
}'
{
"updated": true
}
curl -X POST "https://webhook.site/123-456-789" \
-H "Content-Type: application/json" \
-H "User-Agent: Marlim/1.0.0" \
-H "Marlim-Api-Signature: Star98765Wars43210ANewHope1977" \
-d '{
"event": "transaction_status_changed",
"transaction_id": "HcDscltTIVK3VMAAOj7J",
"current_status": "refunded",
"nsu": "98765432",
"authorization_code": "112233",
"date_created": "2025-05-28T13:20:21.275Z",
"date_updated": "2025-05-28T13:20:21.275Z",
"amount": 1000,
"paid_amount": 0,
"refunded_amount": 1000,
"installments": "1",
"item_id": "ABC123456789",
"card_holder_name": "Luke Skywalker",
"card_brand": "visa",
"card_first_digits": "555544",
"card_last_digits": "2222",
"acquirer_status_code": "0000"
}'
O parâmetro simulate_status
e o endpoint v3/antifraud
só são habilitados para api_key do Ambiente Sandbox. Se for utilizado um dos 2 em Ambiente de Produção, será retornado um erro 403 (Forbidden).
Recusa Banco Emissor
Quando uma transação é recusada pelo Banco Emissor, retornamos o status refused
com a propriedade acquirer_status_code
contendo o código dessa recusa. Como cada bandeira de cartão bem como o banco emissor pode ter um código diferente, a Marlim agrupa o contexto dessa recusa de acordo com a tabela abaixo. No futuro podem ser incluídos novos códigos, uma vez que esse controle está com as bandeiras e os bancos.
A propriedade acquirer_status_message
também é retornada com uma mensagem específica para cada código de recusa, conforme a tabela abaixo.
Prefixo | Significado |
---|---|
1000 | Transação não aprovada pelo banco.acquirer_status_message Transaction not approved by your bank. Please contact your bank and try again. |
1011 | Dados incorretos do cartão.acquirer_status_message Some of your card numbers are incorrect. Check the numbers and try again. |
1016 | Cartão sem saldo.acquirer_status_message The bank informed us that the card balance is insufficient for that amount. |
5000 | Erro bancário genérico.acquirer_status_message Your bank declined this purchase but did not tell us why. Contact us to understand your case! |
Simular Recusa Bancária
O fluxo de banco emissor não existe em ambiente Sandbox, então para facilitar na etapa de desenvolvimento separamos o parâmetro simulate_refused_code
, que pode ser usado para passar os códigos de recusa descritos acima, conforme os exemplos abaixo.
- 1000
- 1011
- 1016
- 5000
curl -X POST "https://api.marlim.co/v3/transactions" \
-H "Content-Type: application/json" \
-H "api_key: api_key_value" \
-d '{
"simulate_refused_code": "1000",
"amount": 1000,
"installments": "1",
"item_id": "ABC123456789",
"soft_descriptor": "Marlim Store",
"card_id": "card_jedi123master4amidala5son",
"customer": {
"name": "Luke Skywalker",
"email": "luke@jedimaster.sw",
"document_number": "00099988877",
"phone": {
"country_code": "+55",
"area_code": "11",
"number": "999887766"
},
"address": {
"country": "BR",
"state": "SP",
"city": "São Paulo",
"neighborhood": "República",
"street": "Rua Aurora",
"number": "123",
"complement": "Apto 42",
"zipcode": "01209001"
}
}
}'
{
"status": "refused",
"nsu": "98765434",
"authorization_code": null,
"date_created": "2025-05-28T13:20:21.275Z",
"date_updated": "2025-05-28T13:20:21.275Z",
"amount": 1000,
"paid_amount": 0,
"installments": "1",
"transaction_id": null,
"card_holder_name": "Luke Skywalker",
"card_brand": "visa",
"card_first_digits": "555544",
"card_last_digits": "2222",
"card_id": "card_jedi123master4amidala5son",
"acquirer_status_code": "1000",
"acquirer_status_message": "Transaction not approved by your bank. Please contact your bank and try again."
}
curl -X POST "https://api.marlim.co/v3/transactions" \
-H "Content-Type: application/json" \
-H "api_key: api_key_value" \
-d '{
"simulate_refused_code": "1011",
"amount": 1000,
"installments": "1",
"item_id": "ABC123456789",
"soft_descriptor": "Marlim Store",
"card_id": "card_jedi123master4amidala5son",
"customer": {
"name": "Luke Skywalker",
"email": "luke@jedimaster.sw",
"document_number": "00099988877",
"phone": {
"country_code": "+55",
"area_code": "11",
"number": "999887766"
},
"address": {
"country": "BR",
"state": "SP",
"city": "São Paulo",
"neighborhood": "República",
"street": "Rua Aurora",
"number": "123",
"complement": "Apto 42",
"zipcode": "01209001"
}
}
}'
{
"status": "refused",
"nsu": "98765434",
"authorization_code": null,
"date_created": "2025-05-28T13:20:21.275Z",
"date_updated": "2025-05-28T13:20:21.275Z",
"amount": 1000,
"paid_amount": 0,
"installments": "1",
"transaction_id": null,
"card_holder_name": "Luke Skywalker",
"card_brand": "visa",
"card_first_digits": "555544",
"card_last_digits": "2222",
"card_id": "card_jedi123master4amidala5son",
"acquirer_status_code": "1011",
"acquirer_status_message": "Some of your card numbers are incorrect. Check the numbers and try again."
}
curl -X POST "https://api.marlim.co/v3/transactions" \
-H "Content-Type: application/json" \
-H "api_key: api_key_value" \
-d '{
"simulate_refused_code": "1016",
"amount": 1000,
"installments": "1",
"item_id": "ABC123456789",
"soft_descriptor": "Marlim Store",
"card_id": "card_jedi123master4amidala5son",
"customer": {
"name": "Luke Skywalker",
"email": "luke@jedimaster.sw",
"document_number": "00099988877",
"phone": {
"country_code": "+55",
"area_code": "11",
"number": "999887766"
},
"address": {
"country": "BR",
"state": "SP",
"city": "São Paulo",
"neighborhood": "República",
"street": "Rua Aurora",
"number": "123",
"complement": "Apto 42",
"zipcode": "01209001"
}
}
}'
{
"status": "refused",
"nsu": "98765434",
"authorization_code": null,
"date_created": "2025-05-28T13:20:21.275Z",
"date_updated": "2025-05-28T13:20:21.275Z",
"amount": 1000,
"paid_amount": 0,
"installments": "1",
"transaction_id": null,
"card_holder_name": "Luke Skywalker",
"card_brand": "visa",
"card_first_digits": "555544",
"card_last_digits": "2222",
"card_id": "card_jedi123master4amidala5son",
"acquirer_status_code": "1016",
"acquirer_status_message": "The bank informed us that the card balance is insufficient for that amount."
}
curl -X POST "https://api.marlim.co/v3/transactions" \
-H "Content-Type: application/json" \
-H "api_key: api_key_value" \
-d '{
"simulate_refused_code": "5000",
"amount": 1000,
"installments": "1",
"item_id": "ABC123456789",
"soft_descriptor": "Marlim Store",
"card_id": "card_jedi123master4amidala5son",
"customer": {
"name": "Luke Skywalker",
"email": "luke@jedimaster.sw",
"document_number": "00099988877",
"phone": {
"country_code": "+55",
"area_code": "11",
"number": "999887766"
},
"address": {
"country": "BR",
"state": "SP",
"city": "São Paulo",
"neighborhood": "República",
"street": "Rua Aurora",
"number": "123",
"complement": "Apto 42",
"zipcode": "01209001"
}
}
}'
{
"status": "refused",
"nsu": "98765434",
"authorization_code": null,
"date_created": "2025-05-28T13:20:21.275Z",
"date_updated": "2025-05-28T13:20:21.275Z",
"amount": 1000,
"paid_amount": 0,
"installments": "1",
"transaction_id": null,
"card_holder_name": "Luke Skywalker",
"card_brand": "visa",
"card_first_digits": "555544",
"card_last_digits": "2222",
"card_id": "card_jedi123master4amidala5son",
"acquirer_status_code": "5000",
"acquirer_status_message": "Your bank declined this purchase but did not tell us why. Contact us to understand your case!"
}
O parâmetro simulate_refused_code
só está habilitado para a api_key do Ambiente Sandbox. Se você passar esses parâmetros em Ambiente de Produção, será retornado um erro 403 (Forbidden).