Executar um relatório da API
Programe seu acesso aos relatórios financeiros da Stripe para automatizar o trabalho de reconciliação.
Observação
Agora você pode enviar automaticamente seus dados da Stripe e relatórios para Snowflake ou Amazon Redshift em alguns cliques com o Stripe Data Pipeline. Saiba mais.
Os relatórios financeiros no Dashboard fornecem relatórios que podem ser baixados em formato CSV para uma variedade de tarefas de contabilidade e reconciliação. Esses relatórios também estão disponíveis pela API, para que você possa agendar a execução automática de relatórios ou executá-los sempre que precisar dos arquivos de relatório para finalidades contábeis.
Tipos de relatório
Cada relatório financeiro no Dashboard fornece vários downloads de CSV diferentes. Todos os downloads disponíveis para os relatórios a seguir também estão disponíveis pela API:
Os formatos monetários do CSV e da API são diferentes
Os relatórios CSV formatam valores monetários usando as maiores unidades monetárias como número decimal. Por exemplo, o CSV formata 10 USD como dólares e centavos (10.
). Na API da Stripe, isso é diferente: você especifica valores na menor unidade (centavos de dólar) como um número inteiro. Na API, você formata 10 USD como centavos (1000
).
Parâmetros de execução
Cada relatório tem parâmetros obrigatórios e opcionais que você informa quando cria uma execução de relatório. Considere o seguinte ao executar relatórios:
- Praticamente todos os tipos de relatório exigem os parâmetros de execução
interval_
(inclusive) estart interval_
(exclusive) como carimbos de data e hora Unix.end - Cada recurso de tipo de relatório correspondente tem os campos
data_
eavailable_ start data_
. A API retorna um erro de solicitação inválida (código de statusavailable_ end 400
) se a execução não cumprir as seguintes restrições:- Os valores
interval_
estart interval_
precisam estar entreend data_
eavailable_ start data_
(inclusive).available_ end - O valor
interval_
deve ser anterior (e não igual a)start interval_
.end
- Os valores
- Você só pode baixar um relatório em um fuso horário para um
ReportType
com um parâmetrotimezone
. Para fazer isso, crie um objetoReportRun
e informe o nome do fuso horário desejado do banco de dados TZ. O parâmetrotimezone
é opcional e se não for informado, UTC será definido como padrão. Consulte uma lista de valores de fuso horário Banco de dados de fuso horário IANA para obter uma lista de valores de fuso horário válidos. - Os parâmetros opcionais
currency
ereport_
filtram resultados para apenas essas linhas correspondentes aos valores informados.category - Os relatórios retornam um conjunto padrão de colunas, mas a maioria dos relatórios permite personalizar a seleção e a ordem das colunas na saída ao incluir o parâmetro opcional
columns
com uma lista de nomes de colunas.
Disponibilidade de dados
A Stripe prepara os dados para os relatórios duas vezes por dia. A página Opções de relatórios mostra detalhes sobre o tempo de processamento e a disponibilidade de dados para cada relatório.
Para saber automaticamente o período de dados disponíveis para um tipo de relatório, acesse o objeto ReportType
em questão. Por exemplo, o relatório Resumo do saldo tem o ID balance.
, de forma que você pode acessar o objeto assim:
No exemplo de resposta abaixo, os campos data_
e data_
refletem todoo intervalo de horários válidos para esse tipo de relatório. No entanto, é mais comum solicitar relatórios de um intervalo menor desse período:
{ "id": "balance.summary.1", "name": "Balance summary", "version": "1", "object": "reporting.report_type", "data_available_start": 1519862400, "data_available_end": 1517356800, "updated": 1517382720, }
Carimbos de data e hora, como date_
, são medidos em segundos desde a época do Unix. Por exemplo, 1519862400
representa o carimbo de data e 2018-03-01 00:00
.
Novas notificações de dados
Assim que um tipo de relatório tem novos dados disponíveis, a Stripe publica um evento reporting.
com o objeto ReportType
atualizado. Para acessar esses eventos, você precisa ter um webhook configurado que opte explicitamente por receber eventos reporting.
; webhooks que escutam “all events” não os receberão. Após receber esse evento, você poderá executar o relatório. Para obter mais informações, consulte o padrão de integração recomendado.
Criar e acessar relatórios executados
O objeto de API ReportRun
representa uma instância de um ReportType
gerado com parâmetros específicos. Revise a documentação do tipo de relatório para ver a lista de parâmetros obrigatórios e opcionais para esse tipo. Por exemplo, você pode criar um relatório de Variação do saldo a partir de resumo de atividade para abril de 2020 da seguinte forma:
Quando for criado pela primeira vez, o objeto aparece com status="pending"
:
{ "id": "frr_123", "object": "reporting.report_run", "livemode": true, "report_type": "balance_change_from_activity.itemized.3", "parameters": { "columns": [ "created", "reporting_category", "net" ], "interval_start": 1577865600, "interval_end": 1580544000, "timezone": "America/Los_Angeles" }, "created": 1580832900, "status": "pending", "result": null }
Quando a execução é concluída, a Stripe atualiza o objeto, e o status
passa a ser succeeded
. Além disso, o objeto tem um objeto result
aninhado com um URL que pode ser usado para acessar o arquivo com a chave de API. Por exemplo, se você desejasse recuperar a execução do relatório acima após a conclusão, a resposta seria:
{ "id": "frr_123", "object": "reporting.report_run", "livemode": true, "report_type": "balance_change_from_activity.itemized.3", "parameters": { "columns": [ "created", "reporting_category", "net" ], "interval_start": 1577865600, "interval_end": 1580544000, "timezone": "America/Los_Angeles" }, "created": 1580832900, "status": "succeeded", "succeeded_at": 1580832960, "result": { "id": "file_xs8vrJzC", "object": "file", "url": "https://files.stripe.com/v1/files/file_xs8vrJzC/contents", "created": 1580832960, "purpose": "report_run", "size": 53075, "type": "csv" } }
Para recuperar os conteúdos do arquivo, use sua chave de API para acessar o arquivo especificado por result.
:
Notificação de conclusão de execução do relatório
A maioria das execuções é concluída em alguns minutos. No entanto, algumas execuções podem demorar, dependendo do tamanho do seu conjunto de dados total e do intervalo de tempo abrangido pelo seu relatório.
Quando a execução de um relatório solicitada for concluída, a Stripe enviará um destes dois webhooks:
- Um webhook
reporting.
será enviado se a execução for concluída com êxito.report_ run. succeeded - Um webhook
reporting.
será enviado se a execução falhar. (Isso deve ser raro, mas recomendamos que as integrações sejam preparadas para tratar esse caso da mesma maneira que obter uma respostareport_ run. failed 500
.)
Em ambos os casos, o conteúdo do webhook inclui o objeto ReportRun
atualizado, que inclui o status succeeded
ou failed
, respectivamente.
Padrão de integração recomendado para relatórios automatizados
Configure um webhook que explicitamente opte por receber eventos reporting.
; webhooks que escutam ‘all events’ não os receberão.
- Um webhook
reporting.
é enviado assim que os dados de um novo dia são disponibilizados para um determinado tipo de relatório. O conteúdo inclui o objetoreport_ type. updated ReportType
atualizado. Normalmente, você receberá 20 a 30 webhooks por dia, dois para cada tipo de relatório (diferentes usuários são qualificados para relatórios diferentes). - Quando receber o webhook
reporting.
para o tipo de relatório e o intervalo de disponibilidade de dados desejados, crie uma execução de relatório. A resposta conterá um novo objetoreport_ type. updated ReportRun
, inicializado comstatus=pending
. - Quando a execução for concluída, um webhook
reporting.
é enviado. Este webhook inclui o campo aninhadoreport_ run. succeeded result.
. (Como mencionado acima, no raro caso de uma falha, enviaremos um eventourl reporting.
.)report_ run. failed - Acesse os conteúdos do arquivo em
result.
, usando sua chave de API.url