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 -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"
    }
}'
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
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"
  ]
]);
?>
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();
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();
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',
  	},
  }))
import pagarme

pagarme.authentication_key('SUA_API_KEY')

params = {
  'amount': '10000', 
  'payment_method': 'boleto',
  'customer': {
    'email': '[email protected]',
    'name': 'Daenerys Targaryen',
    'document_number': '18152564000105'
  }
}

Não se esqueça de incluir a sua chave de API, que está disponível em sua Dashboard.

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:

ParâmetroPadrãoDescrição
amount---Valor total a ser cobrado (em centavos). Ex: R$14,99 = 1499
Tipo: integer
payment_methodcredit_cardMeio de pagamento a ser utilizado
boleto_instructionsInstruções da dashboardCampo instruções do boleto. Máximo de 255 caracteres. Obs. Utilizar \n para quebra de linha
boleto_expiration_datedata atual + 7 diasData de vencimento do boleto bancário em ISODate.

Exemplo: 2017-12-31T23:59:59.000Z
postback_url---URL para receber notificações sobre alterações da transação
boleto_fine.days---Dias após a expiração do boleto quando a multa deve ser cobrada.
Tipo: integer
boleto_fine.amount---Valor em centavos da multa.
Tipo: integer
boleto_fine.percentage---Valor em porcentagem da multa.
Tipo: number
boleto_interest.days---Dias após a expiração do boleto quando o juros deve ser cobrado.
Tipo: integer
boleto_interest.amount---Valor em centavos da taxa de juros que será cobrado ao dia.
Tipo: integer
boleto_interest.percentage---Valor em porcentagem da taxa de juros que será cobrado ao mês.
Tipo: number
boleto_rules---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

🚧

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.

Aprenda mais sobre a lista completa de parâmetros em: Criar transação

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

878

Boleto resultante

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 -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": "[email protected]", 
        "name": "Aardvark Silva", 
        "phone": {
            "ddd": "11", 
            "ddi": "55", 
            "number": "99999999"
        }
    }, 
    "metadata": {
        "idProduto": "13933139"
    }, 
    "payment_method": "boleto", 
    "postback_url": "http://requestb.in/pkt7pgpk"
}'
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: "[email protected]",
        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
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" => "[email protected]",
    "address" => [
      "street" => "Avenida Brigadeiro Faria Lima", 
      "street_number" => "1811",
      "neighborhood" => "Jardim Paulistano",
      "zipcode" => "01451001"
    ],
    "phone" =>  [
      "ddi" => "55"
      "ddd" => "11",
      "number" => "99999999" 
    ]
  ],
  "metadata" => [
    "idProduto" => 13933139
  ]
]);
?>
PagarMeService.DefaultApiKey = "SUA_API_KEY";

Transaction transaction = new Transaction();

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

transaction.Customer = new Customer () {
    Name = "Aardvark Silva",
    Email = "[email protected]",
    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;
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 = "[email protected]";
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();

🚧

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 -X PUT https://api.pagar.me/1/transactions/:TRANSACTION_ID \
-d 'api_key=SUA_API_KEY' \
-d 'status=paid'

Próximo

Nessa altura sua integração conosco já deve ter cartão de crédito e boleto. Legal, que tal aprender agora o que é metadata? Esta feature pode ajudar bastante o seu negócio. Vamos lá!