---
updatedAt: 2026-04-06T17:16:45.000Z
agentTools:
  projectIndex: https://docs.pagar.me/v1/llms.txt
---

# Boleto bancário

Uma transação com boleto bancário é a forma mais simples de emitir uma cobrança para o seu cliente usando o Pagar.me. Veja o exemplo:

```curl
curl -X POST 'https://api.pagar.me/1/transactions' -H 'content-type: application/json' -d '{
    "amount": "1000", 
    "api_key": "SUA_API_KEY", 
    "payment_method": "boleto", 
    "postback_url": "http://requestb.in/pkt7pgpk",
    "customer":{
      "name":"Aardvark da Silva",
      "document_number":"18152564000105"
    }
}'
```
```ruby
require 'pagarme'

PagarMe.api_key = "SUA_API_KEY";

transaction  = PagarMe::Transaction.new({
    amount: 100,
  	payment_method: "boleto",
    postback_url: "http://requestb.in/pkt7pgpk",
    customer: {
        name: "Aardvark Silva",
        document_number: "18152564000105",
    }
})

transaction.charge
```
```php
<?php
require("vendor/autoload.php");

$pagarme = new PagarMe\Client('SUA_CHAVE_DE_API');

$transaction = $pagarme->transactions()->create([
  "amount" => 1000,
  "payment_method" => "boleto",
  "postback_url" => "http://requestb.in/pkt7pgpk",
  "customer" => [
    "name" => "Aardvark Silva", 
    "document_number" => "18152564000105"
  ]
]);
?>
```
```csharp
PagarMeService.DefaultApiKey = "SUA_API_KEY";

Transaction transaction = new Transaction();

transaction.Amount = 1000;
transaction.PaymentMethod = PaymentMethod.Boleto;
transaction.PostbackUrl = "http://requestb.in/pkt7pgpk";
transaction.Customer = new Customer () {
    Name = "Aardvark Silva",
    DocumentNumber = "18152564000105",
};

transaction.Save();
```
```java
import me.pagar.model.PagarMe;
import me.pagar.model.PagarMeException;
import me.pagar.model.Customer;
import me.pagar.model.Transaction;
import me.pagar.model.Transaction.PaymentMethod;

PagarMe.init("SUA_API_KEY");

Customer customer = new Customer("Aardvark Silva");
customer.setDocumentNumber("18152564000105");

Transaction tx = new Transaction();
tx.setAmount(100);
tx.setPaymentMethod(PaymentMethod.BOLETO);
tx.setPostbackUrl("http://requestb.in/pkt7pgpk");
tx.setCustomer(customer);

tx.save();
```
```javascript JS
import pagarme from 'pagarme'

pagarme.client.connect({ api_key: 'SUA_API_KEY' })
  .then(client => client.transactions.create({
    amount: 1000,
    payment_method: 'boleto',
    postback_url: 'http://requestb.in/pkt7pgpk',
    customer: {
        name: 'Aardvark Silva',
        document_number: '18152564000105',
  	},
  }))
```
```python
import pagarme

pagarme.authentication_key('SUA_API_KEY')

params = {
  'amount': '10000', 
  'payment_method': 'boleto',
  'customer': {
    'email': 'daenerys.targaryen@gmail.com',
    'name': 'Daenerys Targaryen',
    'document_number': '18152564000105'
  }
}
```

Não se esqueça de incluir a sua [chave de API](https://dashboard.pagar.me/#/myaccount/apikeys), que está disponível em sua [Dashboard](https://dashboard.pagar.me/).

## Status da transação

A transação tem status `waiting_payment` até o pagamento do boleto bancário. A URL do boleto bancário para pagamento está disponível na variável `boleto_url`. Quando o boleto bancário for detectado como pago, a transação passa a ter o status `paid`.  Lembrando que o boleto\_url não é retornado no ambiente de testes, sendo que o parâmetro "boleto\_url" é preenchido com o seguinte link "<https://pagar.me">.

## Mais parâmetros

Além dos parâmetros passados no exemplo, você ainda pode usar:

<Table align={["left","left","left"]}>
  <thead>
    <tr>
      <th>
        Parâmetro
      </th>

      <th>
        Padrão
      </th>

      <th>
        Descrição
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        amount
      </td>

      <td>
        ***
      </td>

      <td>
        Valor total a ser cobrado (em centavos). Ex: R$14,99 = `1499`\
        Tipo: `integer`
      </td>
    </tr>

    <tr>
      <td>
        payment\_method
      </td>

      <td>
        credit\_card
      </td>

      <td>
        Meio de pagamento a ser utilizado
      </td>
    </tr>

    <tr>
      <td>
        boleto\_instructions
      </td>

      <td>
        [Instruções da dashboard](https://dashboard.pagar.me/#/myaccount/boletos)
      </td>

      <td>
        Campo instruções do boleto. Máximo de 255 caracteres. Obs. Utilizar \n para quebra de linha
      </td>
    </tr>

    <tr>
      <td>
        boleto\_expiration\_date
      </td>

      <td>
        data atual + 7 dias
      </td>

      <td>
        Data de vencimento do boleto bancário em ISODate.

        Exemplo: 2017-12-31T23:59:59.000Z
      </td>
    </tr>

    <tr>
      <td>
        postback\_url
      </td>

      <td>
        ***
      </td>

      <td>
        URL para receber notificações sobre alterações da transação
      </td>
    </tr>

    <tr>
      <td>
        boleto\_fine.days
      </td>

      <td>
        ***
      </td>

      <td>
        Dias após a expiração do boleto quando a multa deve ser cobrada.\
        Tipo: `integer`
      </td>
    </tr>

    <tr>
      <td>
        boleto\_fine.amount
      </td>

      <td>
        ***
      </td>

      <td>
        Valor em centavos da multa.\
        Tipo: `integer`
      </td>
    </tr>

    <tr>
      <td>
        boleto\_fine.percentage
      </td>

      <td>
        ***
      </td>

      <td>
        Valor em porcentagem da multa.\
        Tipo: `number`
      </td>
    </tr>

    <tr>
      <td>
        boleto\_interest.days
      </td>

      <td>
        ***
      </td>

      <td>
        Dias após a expiração do boleto quando o juros deve ser cobrado.\
        Tipo: `integer`
      </td>
    </tr>

    <tr>
      <td>
        boleto\_interest.amount
      </td>

      <td>
        ***
      </td>

      <td>
        Valor em centavos da taxa de juros que será cobrado ao dia.\
        Tipo: `integer`
      </td>
    </tr>

    <tr>
      <td>
        boleto\_interest.percentage
      </td>

      <td>
        ***
      </td>

      <td>
        Valor em porcentagem da taxa de juros que será cobrado ao mês.\
        Tipo: `number`
      </td>
    </tr>

    <tr>
      <td>
        boleto\_rules
      </td>

      <td>
        ***
      </td>

      <td>
        Permite aplicar regras ao boleto emitido. Valores possíveis: 'strict\_expiration\_date' (restringe o pagamento para até a data de vencimento e apenas o valor exato do documento), 'no\_strict' (permite pagamento após o vencimento e valores diferentes do impresso)\
        Tipo: `array`
      </td>
    </tr>
  </tbody>
</Table>

> 🚧 Limites para juros e multas
>
> Não recomendamos o uso de taxas de juros superiores a 1% a.m e valores de multa superiores a 2% a.m devido as regulações determinadas pelos artigos 52, parágrafo primeiro do código de defesa do consumidor e art. 406, do Código Civil  e 161 parágrafo primeiro do Código Tributário Nacional.

> 📘 Boleto em PDF
>
> Além da versão HTML dos boletos retornada pela API, é possível gerar uma versão em PDF. Para tal basta adicionar o sufixo ?format=pdf na url retornada. Segue um exemplo:\
> URL ORIGINAL: <https://api.pagar.me/1/boletos/test_ckj9yiyvy1obb0gm5g9yfpgbw>\
> URL PDF: <https://api.pagar.me/1/boletos/test_ckj9yiyvy1obb0gm5g9yfpgbw?format=pdf>

> 📘 Captura de transação no Boleto Bancário
>
> Para transações realizadas com `encryption_key` o valor padrão do `capture` é `false`, porém você pode realizar a captura alterando o valor para `true`. **Somente para Boleto Bancário**.

> 📘 Código de Barras e Link para Download do Boleto Bancário
>
> Para obter o Código de Barras e o Link para Download do Boleto você deve passar o parâmetro `capture` como `true`. Ou você pode realizar a captura posteriormente através da rota `/capture`, para mais informações [clique aqui](https://docs.pagar.me/reference/capturando-uma-transacao-posteriormente).

Aprenda mais sobre a lista completa de parâmetros em: [Criar transação](https://docs.pagar.me/reference/criar-transacao)

O Boleto bancário resultante tem os parâmetros mostrados como este:

<Image title="99ec0d1-Features_Boleto.png" alt={878} src="https://files.readme.io/2e3a778-99ec0d1-Features_Boleto.png">
  Boleto resultante
</Image>

## Dados do cliente no boleto

Sempre que possível, passe mais informações do seu cliente no momento da criação da transação de Boleto bancário. Faça isso para facilitar a identificação da transação tanto na sua Dashboard quanto no seu próprio sistema.

```curl
curl -X POST https://api.pagar.me/1/transactions -H 'content-type: application/json' -d '{
    "amount": "100", 
    "api_key": "SUA_API_KEY", 
    "customer": {
        "address": {
            "neighborhood": "Jardim Paulistano", 
            "street": "Avenida Brigadeiro Faria Lima", 
            "street_number": "1811", 
            "zipcode": "01451001"
        }, 
        "document_number": "18152564000105", 
        "email": "aardvark.silva@pagar.me", 
        "name": "Aardvark Silva", 
        "phone": {
            "ddd": "11", 
            "ddi": "55", 
            "number": "99999999"
        }
    }, 
    "metadata": {
        "idProduto": "13933139"
    }, 
    "payment_method": "boleto", 
    "postback_url": "http://requestb.in/pkt7pgpk"
}'
```
```ruby
require 'pagarme'

PagarMe.api_key = "SUA_API_KEY";

transaction  = PagarMe::Transaction.new({
    amount: 100,
  	payment_method: "boleto",
    postback_url: "http://requestb.in/pkt7pgpk",
    customer: {
        name: "Aardvark Silva",
        email: "aardvark.silva@pagar.me",
        document_number: "18152564000105",
        address: {
            street: "Avenida Brigadeiro Faria Lima",
            street_number: "1811",
            neighborhood: "Jardim Paulistano",
            zipcode: "01451001"
        },
        phone: {
            ddi: "55",
            ddd: "11",
            number: "99999999"
        }
    },
    metadata: {
        idProduto: "13933139"
    }
})

transaction.charge
```
```php
<?php
require("vendor/autoload.php");

$pagarme = new PagarMe\Client('SUA_CHAVE_DE_API');

$transaction = $pagarme->transactions()->create([
  "amount" => 100,
  "payment_method" => "boleto",
  "postback_url" => "http://requestb.in/pkt7pgpk",
  "customer" => [
    "name" => "Aardvark Silva", 
    "document_number" => "18152564000105",
    "email" => "aardvark.silva@pagar.me",
    "address" => [
      "street" => "Avenida Brigadeiro Faria Lima", 
      "street_number" => "1811",
      "neighborhood" => "Jardim Paulistano",
      "zipcode" => "01451001"
    ],
    "phone" =>  [
      "ddi" => "55"
      "ddd" => "11",
      "number" => "99999999" 
    ]
  ],
  "metadata" => [
    "idProduto" => 13933139
  ]
]);
?>
```
```csharp
PagarMeService.DefaultApiKey = "SUA_API_KEY";

Transaction transaction = new Transaction();

transaction.Amount = 1000;
transaction.PaymentMethod = PaymentMethod.Boleto;

transaction.Customer = new Customer () {
    Name = "Aardvark Silva",
    Email = "aardvark.silva@pagar.me",
    DocumentNumber = "18152564000105",
  
    Address = new Address () {
        Street = "Avenida Brigadeiro Faria Lima",
        StreetNumber = "123",
        Neighborhood = "Jardim Paulistano",
        Zipcode = "01451001"
    },

    Phone = new Phone () {
        Ddi = "55",
        Ddd = "11",
        Number = "23456789"
    }
};

transaction.Save();

string boletoUrl = transaction.BoletoUrl;
string boletoBarcode = transaction.BoletoBarcode;
```
```java
import java.util.HashMap;
import java.util.Map;

import me.pagar.model.Address;
import me.pagar.model.Customer;
import me.pagar.model.PagarMe;
import me.pagar.model.PagarMeException;
import me.pagar.model.Phone;
import me.pagar.model.Transaction;
import me.pagar.model.Transaction.PaymentMethod;

PagarMe.init("SUA_API_KEY");

Phone phone = new Phone();
phone.setDdd("11");
phone.setDdi("55");
phone.setNumber("99999999");

String street = "Avenida Brigadeiro Faria Lima";
String streetNumber = "1811";
String neighborhood = "Jardim Paulistano";
String zipcode = "01451001";
Address address = new Address(street, streetNumber, neighborhood, zipcode);

String name = "Aardvark Silva";
String email = "aardvark.silva@pagar.me";
String documentNumber = "18152564000105";
Customer customer = new Customer(name, email);
customer.setAddress(address);
customer.setPhone(phone);
customer.setDocumentNumber(documentNumber);

Map<String, Object> metadata = new HashMap<String, Object>();
metadata.put("IdProduto", 13933139);

Transaction tx = new Transaction();
tx.setCustomer(customer);
tx.setAmount(100);
tx.setPaymentMethod(PaymentMethod.BOLETO);
tx.setMetadata(metadata);
tx.setPostbackUrl("http://requestb.in/pkt7pgpk");
tx.save();
```
```javascript JS
```

> 🚧 Dados do cliente
>
> Além do valor a ser pago (`amount`) e do método de pagamento (`payment_method`), para a criação de transações de boleto é necessário informar também os parâmetros `customer.name` e `customer.document_number`.
>
> Esses parâmetros não são obrigatórios nesta versão da API, porém são exigidos pela FEBRABAN para a criação de boletos registrados.

> 📘 Pagando um boleto em teste
>
> Você pode simular o pagamento do boleto usando a seguinte chamada:
>
> ```curl
> curl -X PUT https://api.pagar.me/1/transactions/:TRANSACTION_ID \
> -d 'api_key=SUA_API_KEY' \
> -d 'status=paid'
> ```