O extrato é a representação detalhada do saldo Pagar.me, apresentando valores recebidos, descontados e à receber, dessa maneira extrato nada mais é do que um compilado dos recebíveis e das operações de saldo. O extrato é dividido em dois, sendo um deles o atual, ou seja todos os valores já liquidados, e o outro o à receber. Ambos os extratos possuem informações referentes às movimentações de saldo separadas dia-a-dia, exibindo cada valor positivo, cada valor negativo e o saldo final do dia.

Extraindo o extrato através da API

Extrato atual

Para reconstruir o extrato atual é necessário utilizar as informações contidas na rota /balance_operations que se refere as operações de saldo.

O primeiro passo é buscar as operações referentes ao período que deseja reconstruir através de um GET informando a data de início (start_date) e de fim (end_date), ambas no formato timestamp com milissegundos.

{
    "api_key": "CHAVE_DE_API",
    "start_date":"1598335908000",
    "end_date":"1601014308000"
}

🚧

Atenção

A API irá retornar apenas 10 itens por vez caso parâmetro "count" não seja informado, sendo que o mesmo tem o limite de 1000 itens por busca. Para paginar os resultados é necessário utilizar o parâmetro "page".

O retorno dessa busca será um vetor de objetos.

[
    {
        "object": "balance_operation",
        "id": 12979989,
        "status": "available",
        "balance_amount": 0,
        "balance_old_amount": null,
        "type": "payable",
        "amount": 10000,
        "fee": 380,
        "date_created": "2020-09-01T18:27:29.016Z",
        "movement_object": {
            "object": "payable",
            "id": 11491515,
            "status": "paid",
            "amount": 10000,
            "fee": 380,
            "anticipation_fee": 0,
            "fraud_coverage_fee": 0,
            "installment": null,
            "transaction_id": 9646500,
            "split_rule_id": null,
            "bulk_anticipation_id": null,
            "recipient_id": "re_cjsklmm5k00qu2j6exqej7tss",
            "originator_model": null,
            "originator_model_id": null,
            "payment_date": "2020-09-01T03:00:00.325Z",
            "original_payment_date": null,
            "type": "credit",
            "payment_method": "boleto",
            "accrual_date": null,
            "date_created": "2020-09-01T18:27:28.358Z"
        }
    },
    {
        "object": "balance_operation",
        "id": 12904870,
        "status": "available",
        "balance_amount": 0,
        "balance_old_amount": null,
        "type": "payable",
        "amount": 10000,
        "fee": 380,
        "date_created": "2020-08-26T15:00:46.115Z",
        "movement_object": {
            "object": "payable",
            "id": 11418966,
            "status": "paid",
            "amount": 10000,
            "fee": 380,
            "anticipation_fee": 0,
            "fraud_coverage_fee": 0,
            "installment": null,
            "transaction_id": 9592696,
            "split_rule_id": null,
            "bulk_anticipation_id": null,
            "recipient_id": "re_cjsklmm5k00qu2j6exqej7tss",
            "originator_model": null,
            "originator_model_id": null,
            "payment_date": "2020-08-26T03:00:00.892Z",
            "original_payment_date": null,
            "type": "credit",
            "payment_method": "boleto",
            "accrual_date": null,
            "date_created": "2020-08-26T15:00:45.928Z"
        }
    }
]

Após buscar todas as operações do período desejado, é necessário filtrar por recebedor (movement_object.recipient_id) as informações que irão compor o extrato, no caso da dashboard essas informações seriam: valor (amount), taxa (fee), data de criação (date_created), tipo de movimentação (movement_object.payment_method ou movement_object.type) e id da transação (movement_object.transaction_id ou movement_object.id).

Todas as operações de saldo são agrupadas de acordo com a sua data de criação, sendo que cada uma é detalhada de acordo com sua origem (no caso de movientações originadas de transações o transaction_id nos demais casos apenas id), o tipo de movimentação (payment_method ou type), valor bruto (amount), taxa (fee), valor líquido (amount subtraindo o fee)

11511151

Somando todos os valores líquidos do dia temos o balanço diário.

11481148

Extrato à receber

Para reconstruir o extrato à receber é necessário utilizar as informações contidas na rota /payables que se refere aos recebíveis.

O primeiro passo é buscar os payables referentes ao período que deseja reconstruir através de um GET informando a data de início e de fim utilizando os operadores maior igual (>=) e menor igual (<=). É importante se atentar que o formato a ser enviado é timestamp com milissegundos.

📘

Requisição

curl -X GET https://api.pagar.me/1/payables \
-d 'api_key=CHAVE_DE_API'
-d 'recipient_id'='re_cjsklmm5k00qu2j6exqej7tss'
-d 'payment_date=>=1601014308000'
-d 'payment_date=<=1603606308000'
https://api.pagar.me/1/payables?payment_date=>=1601014308000&payment_date=<=1603606308000&recipient_id=re_cjsklmm5k00qu2j6exqej7tss&api_key=CHAVE_DE_API

🚧

Atenção

A API irá retornar apenas 10 itens por vez caso parâmetro "count" não seja informado, sendo que o mesmo tem o limite de 1000 itens por busca. Para paginar os resultados é necessário utilizar o parâmetro "page".

O retorno dessa busca será um vetor de objetos.

[
    {
        "object": "payable",
        "id": 11797463,
        "status": "waiting_funds",
        "amount": 3000,
        "fee": 150,
        "anticipation_fee": 0,
        "fraud_coverage_fee": 0,
        "installment": 1,
        "transaction_id": 9831494,
        "split_rule_id": "sr_ckfee8h610fqoou6d4tjtgo9u",
        "bulk_anticipation_id": null,
        "recipient_id": "re_cjsklmm5k00qu2j6exqej7tss",
        "originator_model": null,
        "originator_model_id": null,
        "payment_date": "2020-10-23T03:00:00.000Z",
        "original_payment_date": null,
        "type": "credit",
        "payment_method": "credit_card",
        "accrual_date": "2020-09-22T20:10:53.859Z",
        "date_created": "2020-09-22T20:10:53.944Z"
    },
    {
        "object": "payable",
        "id": 11149083,
        "status": "waiting_funds",
        "amount": -100,
        "fee": -5,
        "anticipation_fee": 0,
        "fraud_coverage_fee": 0,
        "installment": 2,
        "transaction_id": 9445499,
        "split_rule_id": "sr_ckdp5xtsj01neyn6daqqn7ubw",
        "bulk_anticipation_id": null,
        "recipient_id": "re_cjsklmm5k00qu2j6exqej7tss",
        "originator_model": "refund",
        "originator_model_id": "rf_ckdp5yn28069xk13spgbkell2",
        "payment_date": "2020-10-13T03:00:00.000Z",
        "original_payment_date": null,
        "type": "refund",
        "payment_method": "credit_card",
        "accrual_date": null,
        "date_created": "2020-08-10T23:45:20.997Z"
    }
]

Após buscar todos os recebíveis do período desejado, é necessário selecionar as informações que irão compor o extrato, no caso da dashboard essas informações seriam: valor (amount), taxa (fee), data de pagamento (payment_date), tipo de movimentação (type) e id da transação (transaction_id).

Todos os recebíveis são agrupados de acordo com a sua data de pagamento, sendo que cada registro é detalhado de acordo com sua origem (transaction_id), o tipo de movimentação (type), valor bruto (amount), taxa (fee), valor líquido (amount subtraindo o fee).

11511151

Somando todos os valores líquidos do dia temos o balanço diário.

11471147