Pular para o conteúdo principal

Autorizar Transação

Disponível apenas em Sandbox

Este endpoint está disponível somente no ambiente Sandbox. Não há suporte para pré-autorização em produção no momento.

Essa rota deve ser usada para autorizar uma transação com cartão sem capturá-la imediatamente. O valor é reservado no cartão do cliente, mas o débito efetivo só ocorre quando a captura for executada.

Esse fluxo é indicado quando sua aplicação precisa confirmar a disponibilidade de saldo antes de efetivar a cobrança — por exemplo, em cenários de reserva de hospedagem, aluguel de veículos ou qualquer operação onde a confirmação do serviço acontece após a autorização.

Após a autorização, você deve escolher entre:

POSTv3/transactions/authorize
Contas com Cross Border

Esta rota não está disponível para contas com Cross Border habilitado e retorna 403 com o erro forbidden. Nessas contas, as transações são feitas pelas rotas de Cross Border.

Request Body Params​

Atenção

Todos os campos do tipo string devem ser informados com caracteres alfanuméricos sem acentuação ou caracteres especiais.

Os parâmetros aceitos neste endpoint são idênticos aos do POST v3/transactions. Consulte a documentação de criação de transação para a lista completa de campos disponíveis.

AtributoTipoDescrição
amountint32Valor final a ser cobrado do cliente pagador. Deve ser passado em centavos.
installmentsstringNúmero de parcelas da transação, sendo mínimo: 1 e máximo: 24. Por padrão o valor máximo é 12, para habilitar parcelamentos com mais de 12 vezes entre em contato com o nosso suporte.
item_idstringID da transação na sua plataforma.
card_holder_namestringNome do portador do cartão, apenas letras e espaços sem acentuação ou caracteres especiais.
Caso inclua um card_id ou card_hash, esse campo torna-se dispensável.
card_numberstringNúmero do cartão.
Caso inclua um card_id ou card_hash, esse campo torna-se dispensável.
card_expiration_datestringData 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_cvvstringCódigo verificador do cartão.
Caso inclua um card_id ou card_hash, esse campo torna-se dispensável.
card_idstringID 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_hashstringHash 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.
customerobjectObjeto Cliente.
customer[name]stringNome do cliente.
customer[email]stringE-mail do cliente.
customer[document_number]stringNúmero do documento do cliente.
customer[phone]objectObjeto número do telefone do cliente.
customer[phone][country_code]stringCódigo do país do telefone do cliente (DDI), Ex: +55.
customer[phone][area_code]stringCódigo do estado do telefone do cliente (DDD).
customer[phone][number]stringNúmero do telefone do cliente.
customer[address]objectObjeto Endereço do Cliente da fatura do cartão ou residência do cliente.
customer[address][country]stringNacionalidade 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]stringUF da fatura do cartão ou residência do cliente, no formato sigla do estado. Ex: SP, RJ, MG...
Máximo em caracteres: 2
customer[address][city]stringCidade da fatura do cartão ou residência do cliente.
Máximo em caracteres: 50
customer[address][neighborhood]stringBairro da fatura do cartão ou residência do cliente.
Máximo em caracteres: 45
customer[address][street]stringRua da fatura do cartão ou residência do cliente.
Máximo em caracteres: 54
customer[address][number]stringNúmero da fatura do cartão ou residência do cliente.
Máximo em caracteres: 5
customer[address][complement]stringParâmetro opcional do complemento da fatura do cartão ou residência do cliente.
Máximo em caracteres: 14
customer[address][zipcode]stringCEP da fatura do cartão ou residência do cliente.
Máximo em caracteres: 9
soft_descriptorstringDescrição que aparecerá na fatura do seu cliente. Máximo de 13 caracteres, sendo alfanuméricos e espaços.
sub_seller_idstringParâmetro opcional para identificar um sub_seller cadastrado na Marlim anteriormente, responsável pela transação.
splitarrayParâmetro opcional para o array de objetos com os dados do Split de Pagamento.
split[][sub_seller_id]stringID do parceiro que fará parte do Split de Pagamento.
split[][amount]int32Valor em centavos que o parceiro deverá receber do pagamento. Deve ser passado em centavos.
webhook_urlstringParâmetro opcional para passar o endpoint do seu sistema que receberá informações a cada atualização da transação.
webhook_auth_tokenstringParâmetro opcional para autenticar as notificações enviadas para o webhook_url.
net_valueint32Parâ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_idstringID da URL que compõe o session_id criado na integração com o Antifraude da Marlim.
threeds_authentication_idstringParâmetro opcional que define o ID da autenticação 3DS retornado pelo SDK.
chargeback_ownerstringParâmetro opcional que define quem será responsável pelo chargeback da transação. Valores aceitos: acquirer ou seller. Default: acquirer
Exemplo de Request Body
{
"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"
}
}
}
Importante

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​

O objeto de resposta é idêntico ao do POST v3/transactions, com a diferença de que o campo status retornará authorized em vez de paid.

PropriedadeTipoDescrição
statusstringRepresenta o estado atual da transação. Para este endpoint, o valor retornado será sempre authorized.
amountint32Valor em centavos a ser cobrado na transação.
net_valueint32Parâmetro opcional do valor líquido a ser recebido pela transação.
authorized_amountint32Valor em centavos autorizado na transação.
paid_amountint32Valor em centavos capturado na transação. Retorna 0 enquanto a transação estiver com status authorized.
refunded_amountint32Valor em centavos estornado na transação.
installmentsstringNúmero de parcelas em que o cliente pagou.
nsustringCódigo que identifica a transação na adquirente.
authorization_codestringCódigo de autorização retornado pelo banco emissor.
transaction_idstringNúmero identificador Marlim da transação. Guarde este valor para utilizar nos endpoints de captura e cancelamento.
item_idstringID da transação na sua plataforma.
payment_methodstringMétodo de pagamento utilizado na transação. Valores possíveis: credit_card.
date_createddateTimeData de criação da transação no formato ISODateTime.
date_updateddateTimeData de atualização do status da transação no formato ISODateTime.
card_holder_namestringNome do portador do cartão utilizado no pagamento.
card_brandstringBandeira do cartão utilizado no pagamento. Valores possíveis: visa, mastercard, amex, hipercard e elo.
card_first_digitsstringPrimeiros 6 dígitos do cartão utilizado no pagamento.
card_last_digitsstringÚltimos 4 dígitos do cartão utilizado no pagamento.
card_idstring | nullID do cartão gerado pela Marlim após a autorização.
acquirer_status_codestringCódigo identificador da resposta do Banco Emissor.
acquirer_status_messagestringMensagem referente ao código da resposta do Banco Emissor.
Exemplo de Response
{
"status": "authorized",
"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": 0,
"refunded_amount": 0,
"installments": "1",
"transaction_id": "HcDscltTIVK3VMAAOj7J",
"item_id": "ABC123456789",
"payment_method": "credit_card",
"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 bank has authorized this amount on the card."
}

Error Object​

AtributoTipoDescrição
api_referencestringUrl para a documentação.
errorsarrayArray com todos os erros encontrados ao processar a requisição.
errors[][type]stringTipo de erro ocorrido.
errors[][message]stringMensagem detalhada do erro ocorrido.
Exemplo de um Response com Erro
{
"api_reference": "https://docs.api.marlim.co/transactions/create/card",
"errors": [
{
"type": "amount",
"message": "The parameter [ amount ] is missing."
}
]
}

Webhook URL​

Assim como no endpoint de criação de transação, você pode passar um webhook_url para receber notificações a cada mudança de status.

StatusSignificado
authorizedTransação autorizada pelo banco emissor. O valor foi reservado no cartão, mas ainda não foi capturado.
paidTransação capturada com sucesso após chamada ao endpoint POST v3/transactions/:transaction_id/capture.
canceledAutorização cancelada antes da captura. O valor reservado foi liberado no cartão.
refusedTransação recusada pelo banco emissor.
failedTransação com falha no processo de autorização na Adquirente.

Fluxo de Pré-Autorização​

O fluxo completo de pré-autorização funciona em 3 etapas:

Request
curl -X POST "https://api.marlim.co/v3/transactions/authorize" \
-H "Content-Type: application/json" \
-H "api_key: api_key_value" \
-d '{
"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"
}
},
"webhook_url": "https://webhook.site/123-456-789"
}'
Response200
{
"status": "authorized",
"nsu": "98765432",
"authorization_code": "112233",
"date_created": "2026-11-03T17:17:45.513Z",
"date_updated": "2026-11-03T17:17:45.513Z",
"amount": 1000,
"authorized_amount": 1000,
"paid_amount": 0,
"refunded_amount": 0,
"installments": "1",
"transaction_id": "HcDscltTIVK3VMAAOj7J",
"item_id": "ABC123456789",
"payment_method": "credit_card",
"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 bank has authorized this amount on the card."
}
Atenção

É necessário salvar o transaction_id retornado neste endpoint na sua aplicação. Somente com este ID será possível capturar ou cancelar a autorização posteriormente.