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

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: 12.
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_idstringParâmetro opcional do ID 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-05-06T12:45:36.620Z",
"date_updated": "2026-05-06T12:45:36.620Z",
"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.