---
title: "Download a statement as PDF"
method: GET
path: "/api/space/billing_statement.pdf"
tags: ["Space Billing"]
---

# Download a statement as PDF

`GET /api/space/billing_statement.pdf`

Redirects to the stored PDF of one month's statement. The response is a `302` whose
`Location` header is the download URL, so your client must follow redirects.

Only a closed month has a PDF. The current month is rejected with
`pdf_requires_a_closed_month`; check `formats` in
[List statement periods](/docs/apis/rest/space/billing/list-billing-statements) before
requesting one.

#### Permissions

Authenticate with a [Personal access token](/docs/apis/authorization#personal-access-tokens) whose holder is an owner or admin of the space. A project API token is not accepted on this endpoint, and a Personal access token has no scopes: the holder's role in the space is the whole authorization decision.

## Query parameters

- `month` string, required

## Other responses

- `302` — A redirect to the stored PDF. Follow the `Location` header to download it; the response body is empty.
- `401` — The credential is missing, unknown, or revoked; its holder is not a member of the space in the subdomain; the member is not an owner or admin; or billing for this space is not managed in the space itself, which is the case for a space purchased through a cloud marketplace and for a suspended or deactivated space. A space deactivated for nonpayment keeps the billing endpoints so that its outstanding balance can be settled. The body is the plain text `Unauthorized`. An unverified space instead receives the JSON body `{"message": "Please validate a phone number to access your account."}` on every endpoint under `/api/space`.
- `422` — `month` is not formatted `YYYY-MM` (`invalid_month`), is before the month the space was created (`month_precedes_space_creation`), or is after the current month (`month_is_in_the_future`); or the month has not closed yet, so no PDF exists for it (`pdf_requires_a_closed_month`).
- `500` — An internal server error occurred.
- `502` — An upstream billing or usage reporting service was unavailable. The body is empty; retry later.

## Changes

> 161 revisions in range; 3 could not be searched.

- **2026-09-15** `45bac4fd93ab` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/signalwire/apis/signalwire-rest-api/changes/api/space/billing_statement.pdf/get.md)

---

[API](https://skmtc.dev/signalwire/apis/signalwire-rest-api.md) · [All operations](https://skmtc.dev/signalwire/apis/signalwire-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/signalwire/apis/signalwire-rest-api/revisions/20ee0f568ece?raw)
