Se você já é cliente e quer começar a antecipar, é preciso entrar em contato com a nossa equipe pelo e-mail [email protected] para liberar essa opção para a sua company. Além disso, os exemplos dessa página também podem ser usados em ambiente de teste para simular antecipações.

Depois de liberar essa função (ou em ambiente de teste), realizar uma antecipação com o Pagar.me é bem simples, você só precisa passar os seguintes parâmetros:

curl -X POST https://api.pagar.me/1/recipients/re_a123sd18das9d164/bulk_anticipations/ -H 'content-type: application/json' -d '{
    "api_key": "SUA_API_KEY", 
    "payment_date": "1462999741870", 
    "requested_amount": "561599", 
    "timeframe": "start",
    "automatic_transfer":"true"
}'
require 'pagarme' 

PagarMe.api_key = 'SUA_API_KEY'

PagarMe::Recipient.default.bulk_anticipate(
   timeframe:        :start,
   payment_date:     Date.new(2016, 12, 25),
   requested_amount: 10000 # in cents
)
<?php
require("vendor/autoload.php");
$pagarme = new PagarMe\Client('SUA_CHAVE_DE_API');

$anticipation = $pagarme->bulkAnticipations()->create([
  'recipient_id' => 're_cjeptpdyg03u3cb6elj68p5ej',
  'payment_date' => '1536883200000',
  'requested_amount' => '300000',
  'timeframe' => 'start'
]);
PagarMeService.DefaultApiKey = "SUA_API_KEYzende";
var recipient = PagarMeService.GetDefaultService().Recipients.Find("re_ci7nhf1ay0007n016wd5t22nl");

var bulkAnticipation = new BulkAnticipation() {
  Timeframe = TimeFrame.Start,
  PaymentDate = DateTime.Today.AddDays(3),
  RequestedAmount = 561599
};

recipient.CreateAnticipation(bulkAnticipation);
import pagarme from 'pagarme'

pagarme.client.connect({ api_key: 'SUA_API_KEY' })
  .then(client =>  client.bulkAnticipations.create({
    payment_date: '1462999741870',
    timeframe: 'start',
    requested_amount: '100000',
  }))
import pagarme

pagarme.authentication_key('SUA_API_KEY')

params = {
    'payment_date': '1462999741870',
    'timeframe': 'start',
    'requested_amount': '100000'
}

bulk_anticipation = pagarme.bulk_anticipation.create('RECIPIENT_ID', params)

print(bulk_anticipation)

Sendo:

PropriedadeDescrição
timeframe
Tipo: String
Período de onde os recebíveis irão sair — ou seja, do ínicio ou do fim da sua agenda de recebíveis. Ex: Caso você escolha do começo (start), o custo é menor, mas há maior impacto no seu fluxo de caixa. Valores possíveis: start, end
payment_date
Tipo: String
obrigatório
Data de pagamento da antecipação. Em unixtimestamp e milisegundos.
requested_amount
obrigatório
Valor líquido, em centavos, que você deseja receber na antecipação
automatic_transferDefine se o valor da antecipação será transferido automaticamente para a conta bancária do recebedor

🚧

Atenção

É importante notar que o campo payment_date utiliza unixTimeStamp como valor. Para gerar o unixTimeStamp de uma data, é possível utilizar o console do Google Chrome com o seguinte código em Javascript: new Date("2017-12-25T02:00:00.000Z").getTime() que, neste caso, retorna 1514167200000

Limites

Antes de criar uma antecipação, você pode consultar os seus limites e validar o quanto ainda é possível pedir. Segue exemplo:

curl -X GET https://api.pagar.me/1/recipients/re_a123sd18das9d164/bulk_anticipations/limits -H 'content-type: application/json' -d '{
    "api_key": "SUA_API_KEY", 
    "payment_date": "1462999741870", 
    "timeframe": "start"
}'
require 'pagarme'
PagarMe.api_key = 'SUA_API_KEY'

recipient = PagarMe::Recipient.find("re_cix7pxz6f02ppcv6dn4ckcrcc")
limit_params = {:timeframe => "start", :payment_date => DateTime.now + 10}
limits = recipient.bulk_anticipations_limits limit_params
<?php
require("vendor/autoload.php");
$pagarme = new PagarMe\Client('SUA_CHAVE_DE_API');

$anticipationLimits = $pagarme->bulkAnticipations()->getLimits([
  'recipient_id' => 'ID_DO_RECEBEDOR',
  'payment_date' => '1536883200000',
  'timeframe' => 'start'
]);
PagarMeService.DefaultApiKey = "SUA_API_KEY";

var recipient = PagarMeService.GetDefaultService().Recipients.Find("re_ci7nhf1ay0007n016wd5t22nl");

var MaxLimit = recipient.MaxAnticipationValue(TimeFrame.Start, DateTime.Today.AddDays(3));

var MinLimit = recipient.MinAnticipationValue(TimeFrame.Start, DateTime.Today.AddDays(3));
import pagarme from 'pagarme'

pagarme.client.connect({ api_key: 'SUA_API_KEY' })
  .then(client =>  client.bulkAnticipations.limits({
    payment_date: '1462999741870',
    timeframe: 'start',
  }))
import pagarme

pagarme.authentication_key('SUA_API_KEY')

params = {
    'payment_date': '1462999741870',
    'timeframe': 'start'
}

bulk_anticipation_limits = pagarme.bulk_anticipation.limits(recipient['id'], params)

print(bulk_anticipation_limits)

Depois de fazer isso, o retorno é algo parecido com:

{
  "maximum": {
    "amount": 1923458,
    "anticipation_fee": 36281,
    "fee": 124924
  },
  "minimum": {
    "amount": 9,
    "anticipation_fee": 0,
    "fee": 1
  }
}

🚧

Antecipações em modo teste

Para simular antecipações em ambiente de teste basta que o recebedor tenha um volume antecipável.


Próximo

Além de criar antecipações, você pode também consultá-las pela API.