Criar Link de Autorização
Este endpoint está disponível somente no ambiente Sandbox. Não há suporte para Pix Automático em produção no momento.
Use esta rota para criar o link onde o cliente revisa e aprova o Pix Automático. A resposta traz a authorization_url para onde o cliente deve ser enviado.
Faça esta chamada sempre a partir do seu servidor.
Request Body Params
| Atributo | Tipo | Descrição |
|---|---|---|
| item_id | string | Parâmetro opcional. ID do link na sua plataforma. |
| contract_id | string | Identificador do contrato no seu sistema (ex.: número da matrícula, apólice ou contrato de crédito). Aparece para o cliente no banco. |
| description | string | Parâmetro opcional. Texto exibido ao cliente na tela de autorização. |
| interval | string | Periodicidade das cobranças. Valores aceitos: weekly, monthly, quarterly, semester e yearly. |
| reference_start_date | date | Data de referência do primeiro ciclo de cobrança, no formato YYYY-MM-DD. |
| fixed_amount | int32 | Parâmetro opcional. Valor fixo de cada cobrança. Deve ser passado em centavos. Use quando o valor não varia. |
| min_variable_amount | int32 | Parâmetro opcional. Valor mínimo por cobrança, quando o valor é variável. Deve ser passado em centavos. |
| max_variable_amount | int32 | Parâmetro opcional. Valor máximo por cobrança, quando o valor é variável. Deve ser passado em centavos. O cliente pode definir um teto menor no banco dele. |
| is_retry_accepted | boolean | Parâmetro opcional. Indica se o cliente aceita retentativas em caso de falha. Padrão: false. Recomendamos true. |
| expires_at | dateTime | Parâmetro opcional. Data de expiração do link no formato ISODateTime. Após esse momento o cliente não consegue mais autorizar. |
| start_date_time | dateTime | Parâmetro opcional. Início da vigência da autorização no formato ISODateTime. Preencha somente para datas futuras. |
| expiration_date_time | dateTime | Parâmetro opcional. Fim da vigência da autorização no formato ISODateTime. Se omitido, a autorização vale por prazo indeterminado. |
| customer | object | Objeto Pagador, titular da conta que será debitada. |
| customer[name] | string | Parâmetro opcional. Nome do pagador. |
| customer[document_number] | string | CPF ou CNPJ do pagador, somente números. |
| customer[ip_address] | string | Parâmetro opcional do endereço IP público do cliente ao acessar a sua página de checkout no formato IPv4 ou IPv6. Recomendado, pois é usado na análise de risco. |
| contract_debtor | object | Objeto Devedor do contrato. Pode ser diferente do pagador (ex.: o pai paga a mensalidade do filho). |
| contract_debtor[name] | string | Nome do devedor do contrato. |
| contract_debtor[document_number] | string | CPF ou CNPJ do devedor do contrato, somente números. |
| creditors | array | Recebedor(es) exibidos ao cliente na autorização. |
| creditors[][name] | string | Nome do recebedor. |
| creditors[][document_number] | string | CNPJ ou CPF do recebedor, somente números. |
| business_entity | object | Parâmetro opcional. Use quando o pagador for pessoa jurídica. |
| business_entity[document_number] | string | CNPJ da empresa pagadora, somente números. |
| first_payment | object | Parâmetro opcional. Primeira cobrança, liquidada junto com a autorização. |
| first_payment[amount] | int32 | Valor da primeira cobrança. Deve ser passado em centavos. |
| first_payment[date] | date | Parâmetro opcional. Data de liquidação no formato YYYY-MM-DD. |
| first_payment[description] | string | Parâmetro opcional. Texto exibido no extrato do cliente. |
| first_payment[creditor_account] | object | Objeto Conta recebedora da primeira cobrança. |
| first_payment[creditor_account][ispb] | string | ISPB da instituição recebedora (8 dígitos). |
| first_payment[creditor_account][agency] | string | Número da agência, sem dígito. |
| first_payment[creditor_account][account_number] | string | Número da conta, com o dígito verificador. |
| first_payment[creditor_account][type] | string | Tipo da conta. Valores aceitos: checking (conta corrente), savings (poupança) e payment (conta de pagamento). |
| participant_id | string | Parâmetro opcional. Banco do pagador, se já conhecido. Pula a etapa de escolha do banco na jornada. |
| debtor_account | object | Parâmetro opcional. Objeto Conta do pagador, se já conhecida. |
| debtor_account[ispb] | string | ISPB do banco do pagador (8 dígitos). |
| debtor_account[agency] | string | Número da agência, sem dígito. |
| debtor_account[account_number] | string | Número da conta, com o dígito verificador. |
| redirect_url | string | Parâmetro opcional. URL para onde o cliente volta após concluir a autorização. Recomendado quando a jornada começa no seu site ou app. Se omitido, a jornada termina na tela de conclusão da Marlim. |
| redirect_on_error_url | string | Parâmetro opcional. URL para onde o cliente volta em caso de erro na jornada. Se omitido, é usada a redirect_url. |
| webhook_url | string | Parâmetro opcional para passar o endpoint do seu sistema que receberá as mudanças de status do link, da autorização e das cobranças. Veja Webhooks. |
| 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. |
| metadata | object | Parâmetro opcional. Objeto livre para guardar dados da sua aplicação. É devolvido nas consultas. |
Envie ou o fixed_amount ou a faixa min_variable_amount e max_variable_amount, nunca os dois. Todos os valores do Pix Automático são em centavos.
Response Object
| Propriedade | Tipo | Descrição |
|---|---|---|
| link_id | string | ID Marlim do link de autorização. Guarde este ID: é com ele que você consulta e cancela o link. |
| item_id | string | ID do link na sua plataforma. |
| current_status | string | Status atual do link. No momento da criação, sempre created. Veja Status do Link. |
| authorization_url | string | URL para onde o cliente deve ser enviado para aprovar o Pix Automático. |
| date_created | dateTime | Data de criação do link no formato ISODateTime. |
| expires_at | dateTime | Data de expiração do link no formato ISODateTime. |
Error Object
| Atributo | Tipo | Descrição |
|---|---|---|
| api_reference | string | URL para a documentação. Retornado nos erros de parâmetro. |
| errors | array | Array com todos os erros encontrados ao processar a requisição. |
| errors[][type] | string | Tipo de erro ocorrido. |
| errors[][message] | string | Mensagem detalhada do erro ocorrido. |
Enviando o cliente para o link
Redirecione o cliente para a authorization_url pelo servidor ou exiba um botão na sua página. Botões com âncora <a> costumam converter melhor do que redirecionamentos automáticos.
// Pelo servidor
redirect(link.authorization_url)
// Pela interface
<a href={link.authorization_url}>Autorizar Pix Automático</a>
A partir daqui, acompanhe o resultado pelos webhooks ou pela consulta do link.
Exemplos
Os valores utilizados nos exemplos abaixo são apenas para ilustração e não devem ser usados para fazer requests nas APIs da Marlim. Em ambiente de desenvolvimento e testes, utilize dados mais próximos de uma transação real.
- Valor variável
- Valor fixo com primeira cobrança
- Parâmetros inválidos
- Valor fixo e variável juntos
curl -X POST "https://sandbox.api.marlim.co/v3/automatic_pix/links" \
-H "Content-Type: application/json" \
-H "api_key: api_key_value" \
-d '{
"item_id": "MATRICULA_2026_00123",
"contract_id": "CTR_2026_00123",
"description": "Mensalidade Academia Jedi",
"interval": "monthly",
"reference_start_date": "2026-12-01",
"min_variable_amount": 50000,
"max_variable_amount": 80000,
"is_retry_accepted": true,
"expires_at": "2026-11-20T23:59:59.000Z",
"customer": {
"name": "Luke Skywalker",
"document_number": "00099988877",
"ip_address": "200.150.10.20"
},
"contract_debtor": {
"name": "Luke Skywalker",
"document_number": "00099988877"
},
"creditors": [
{
"name": "Academia Jedi Ltda",
"document_number": "11222333000181"
}
],
"redirect_url": "https://suaaplicacao.com.br/obrigado",
"webhook_url": "https://suaaplicacao.com.br/webhook",
"webhook_auth_token": "1234567890",
"metadata": {
"plano": "anual"
}
}'
{
"link_id": "pXq3Lk9TzR2mWb7NcA1e",
"item_id": "MATRICULA_2026_00123",
"current_status": "created",
"authorization_url": "https://checkout.marlim.co/automatic-pix/pXq3Lk9TzR2mWb7NcA1e",
"date_created": "2026-11-12T14:19:18.051Z",
"expires_at": "2026-11-20T23:59:59.000Z"
}
curl -X POST "https://sandbox.api.marlim.co/v3/automatic_pix/links" \
-H "Content-Type: application/json" \
-H "api_key: api_key_value" \
-d '{
"item_id": "ASSINATURA_2026_00456",
"contract_id": "ASS_2026_00456",
"description": "Assinatura Holonet Premium",
"interval": "monthly",
"reference_start_date": "2026-12-12",
"fixed_amount": 4990,
"is_retry_accepted": true,
"expires_at": "2026-11-13T15:30:00.000Z",
"customer": {
"name": "Leia Organa",
"document_number": "00011122233"
},
"contract_debtor": {
"name": "Leia Organa",
"document_number": "00011122233"
},
"creditors": [
{
"name": "Holonet Midia Ltda",
"document_number": "44555666000199"
}
],
"first_payment": {
"amount": 4990,
"date": "2026-11-12",
"description": "Assinatura novembro",
"creditor_account": {
"ispb": "12345678",
"agency": "0001",
"account_number": "111882220",
"type": "checking"
}
},
"redirect_url": "https://suaaplicacao.com.br/obrigado",
"webhook_url": "https://suaaplicacao.com.br/webhook"
}'
{
"link_id": "qWe8Rt5YuI2oPa9SdF3g",
"item_id": "ASSINATURA_2026_00456",
"current_status": "created",
"authorization_url": "https://checkout.marlim.co/automatic-pix/qWe8Rt5YuI2oPa9SdF3g",
"date_created": "2026-11-12T15:30:00.000Z",
"expires_at": "2026-11-13T15:30:00.000Z"
}
curl -X POST "https://sandbox.api.marlim.co/v3/automatic_pix/links" \
-H "Content-Type: application/json" \
-H "api_key: api_key_value" \
-d '{
"contract_id": "CTR_2026_00123",
"interval": "daily",
"reference_start_date": "2026-12-01",
"fixed_amount": 65000,
"contract_debtor": {
"name": "Luke Skywalker",
"document_number": "00099988877"
},
"creditors": [
{
"name": "Academia Jedi Ltda",
"document_number": "11222333000181"
}
],
"redirect_url": "https://suaaplicacao.com.br/obrigado"
}'
{
"api_reference": "https://docs.api.marlim.co/automatic-pix/links/create",
"errors": [
{
"type": "interval",
"message": "The parameter [ interval ] must be one of: weekly, monthly, quarterly, semester, yearly."
},
{
"type": "customer",
"message": "The parameter [ customer.document_number ] is missing."
}
]
}
curl -X POST "https://sandbox.api.marlim.co/v3/automatic_pix/links" \
-H "Content-Type: application/json" \
-H "api_key: api_key_value" \
-d '{
"contract_id": "CTR_2026_00125",
"interval": "monthly",
"reference_start_date": "2026-12-01",
"fixed_amount": 65000,
"min_variable_amount": 50000,
"max_variable_amount": 80000,
"customer": {
"document_number": "00099988877"
},
"contract_debtor": {
"name": "Luke Skywalker",
"document_number": "00099988877"
},
"creditors": [
{
"name": "Academia Jedi Ltda",
"document_number": "11222333000181"
}
],
"redirect_url": "https://suaaplicacao.com.br/obrigado"
}'
{
"api_reference": "https://docs.api.marlim.co/automatic-pix/links/create",
"errors": [
{
"type": "fixed_amount",
"message": "The parameter [ fixed_amount ] can not be sent together with [ min_variable_amount ] and [ max_variable_amount ]."
}
]
}