<span aria-hidden="true" id="retrieve-a-months-bill"></span>



# Retrieve a month’s bill

Returns billing details for a selected month.

`GET` `https://api2.transloadit.com/bill/{billYearMonth}`

Retrieves the billing data for the requested month.

Check that the response has `ok === "BILL_FOUND"` before using its billing fields. A missing
bill or failed lookup returns `error: "BILL_NOT_FOUND"` with HTTP 200, so HTTP status alone
does not establish that a bill was found.

The `billYearMonth` path parameter is in `YYYY-MM` format. For example, to retrieve your bill for March
2019 you would use `2019-03`.

<span aria-hidden="true" id="request-example"></span>



## Request example

Set `BILL_YEAR_MONTH` to your resource value without percent-encoding it.

Canceled Workspaces cannot create new bearer tokens. This endpoint remains available with an existing active Auth Key: use the [signed billing recipe](#billing-access-after-cancellation) instead of the token setup below. The key must grant this endpoint’s required scopes.

Run this request in a server-side shell with `curl` and a suitable [bearer token](/docs/api/token-post.md) in `TRANSLOADIT_TOKEN`. If you need a token, expand the setup below.

**Need a bearer token?**

In a trusted server-side shell with `curl` and `jq`, set `TRANSLOADIT_KEY` and `TRANSLOADIT_SECRET` to your Auth Key and Auth Secret. Keep both credentials and the resulting token secret; never run this setup in browser code.

First, create a token with this endpoint’s required scopes. Your Auth Key must already grant those scopes.

```bash
if ! TOKEN_RESPONSE="$(curl --fail-with-body -sS \
  --request POST \
  --url 'https://api2.transloadit.com/token' \
  --user "${TRANSLOADIT_KEY:?Set TRANSLOADIT_KEY}:${TRANSLOADIT_SECRET:?Set TRANSLOADIT_SECRET}" \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data-urlencode 'grant_type=client_credentials' \
  --data-urlencode 'aud=api2' \
  --data-urlencode 'scope=billing:read')"; then
  printf '%s\n' "$TOKEN_RESPONSE" >&2
  exit 1
fi
TRANSLOADIT_TOKEN="$(printf '%s' "$TOKEN_RESPONSE" |
  jq -er '.access_token | strings | select(length > 0)')" || exit 1
```

Keep this shell open and run the request below. Reuse the token while it remains valid.

```bash
curl --fail-with-body -sS --request GET --get \
  --url "https://api2.transloadit.com/bill/${BILL_YEAR_MONTH:?Set BILL_YEAR_MONTH}" \
  --header "Authorization: Bearer ${TRANSLOADIT_TOKEN:?Set TRANSLOADIT_TOKEN}" \
  --data-urlencode 'params={}'
```

<span aria-hidden="true" id="authentication"></span>



## Authentication

This endpoint accepts signed `params` or a bearer token. See [Authentication](/docs/api/authentication.md) for setup instructions.

Required scope for the Auth Key or bearer token: `billing:read`.

Signed requests require both a `signature` and a future `params.auth.expires` timestamp. Bearer tokens do not require either.

<span aria-hidden="true" id="path-parameters"></span>



## Path parameters

* `billYearMonth` (path segment), required. pattern: `^[0-9]{4}-(?:0[1-9]|1[0-2])$`

<span aria-hidden="true" id="get-query-components"></span>



## Query parameters

* `params` (JSON string). A JSON-encoded object whose supported keys are listed below.
* `signature` (string). Required for signed requests. Omit this field when using a bearer token.

<span aria-hidden="true" id="params-fields"></span><span aria-hidden="true" id="supported-keys"></span><span aria-hidden="true" id="supported-keys-inside-the-params-field"></span>



## Supported keys inside the signed `params` field

Authentication fields in this list apply to signed requests. With a bearer token, you can omit `params.auth` and the separate `signature` field. Compare the authentication-specific request parameters below.

[Complete JSON Schema](/api-reference/schemas/bill-date-get/params-fields.json)

`params`: Only the fields listed for this object are accepted.

<span aria-hidden="true" id="params-fields-auth"></span><span aria-hidden="true" id="auth"></span>



### `params.auth` (required for signed requests; optional with a bearer token)

[`object`](#params-fields-auth-expires)

Contains the Transloadit API key and signature-authentication metadata for a Billing request.

`params.auth`: Only the fields listed for this object are accepted.

<span aria-hidden="true" id="params-fields-auth-expires"></span>



#### `params.auth.expires` (required)

`string`

ISO 8601 expiration timestamp in the future. Required when a request is signed or requires signature authentication; bearer-authenticated requests may omit it.

<span aria-hidden="true" id="params-fields-auth-key"></span>



#### `params.auth.key` (required)

`string`

Transloadit API key used to authenticate requests

<span aria-hidden="true" id="params-fields-nonce"></span><span aria-hidden="true" id="params-fields-auth-nonce"></span><span aria-hidden="true" id="nonce"></span>



### `params.nonce`

`string | integer`

Unique, random value included in signed request params to make each signature unique and prevent accidental signature reuse.

<span aria-hidden="true" id="authentication-specific-params"></span>



## Request parameters by authentication method

<span aria-hidden="true" id="signed-params"></span>



### With signed params

Include your Auth Key as `params.auth.key`. When signing the request, include a future `params.auth.expires` timestamp and send the signature in the separate `signature` field. The field definitions below use paths inside `params`.

[Complete JSON Schema](/api-reference/schemas/bill-date-get/signed-params.json)

`params`: Only the fields listed for this object are accepted.

<span aria-hidden="true" id="signed-params-auth"></span><span aria-hidden="true" id="signed-params-auth-expires"></span><span aria-hidden="true" id="signed-params-auth-key"></span><span aria-hidden="true" id="signed-params-nonce"></span><span aria-hidden="true" id="signed-params-auth-nonce"></span>



Uses the field definitions above: [`params.auth`](#params-fields-auth), [`params.nonce`](#params-fields-nonce)

<span aria-hidden="true" id="bearer-params"></span>



### With a bearer token

Send the bearer token in the `Authorization` header. You can omit `params.auth` and the separate `signature` field. Other required parameters still apply. The field definitions below use paths inside `params`.

[Complete JSON Schema](/api-reference/schemas/bill-date-get/bearer-params.json)

`params`: Only the fields listed for this object are accepted.

<span aria-hidden="true" id="bearer-params-nonce"></span><span aria-hidden="true" id="bearer-params-auth-nonce"></span>



Uses the field definitions above: [`params.nonce`](#params-fields-nonce)

<span aria-hidden="true" id="bearer-params-auth"></span>



#### `params.auth`

[`object`](#bearer-params-auth-expires)

Contains the Transloadit API key and signature-authentication metadata for a Billing request.

`params.auth`: Only the fields listed for this object are accepted.

<span aria-hidden="true" id="bearer-params-auth-expires"></span>



##### `params.auth.expires`

`string`

ISO 8601 expiration timestamp in the future. Required when a request is signed or requires signature authentication; bearer-authenticated requests may omit it.

<span aria-hidden="true" id="bearer-params-auth-key"></span>



##### `params.auth.key`

`string`

Transloadit API key used to authenticate requests

<span aria-hidden="true" id="billing-access-after-cancellation"></span>



## Billing access after cancellation

Canceled Workspaces cannot create new bearer tokens. To retrieve their bills, use a signed
request with an existing active Auth Key and its Auth Secret instead of the token setup above.
The key must still grant the scope listed for this endpoint.

The Node.js SDK signs billing requests directly; it does not call `/token`. In a trusted
server-side Node.js project, install it with `yarn add @transloadit/node`. Set `TRANSLOADIT_KEY`,
`TRANSLOADIT_SECRET`, and `BILL_YEAR_MONTH` (for example, `2026-08`) in the environment.
Keep the secret on your backend.

This SDK example uses `sha384`, the default for newly created API keys. If your key uses
another signature algorithm, follow [Signature Authentication](/docs/api/authentication.md#how-to-generate-signatures)
with that configured algorithm instead.

Save the following as `bill.mjs` and run `node bill.mjs`:

```js
import { Transloadit } from '@transloadit/node'

const { TRANSLOADIT_KEY, TRANSLOADIT_SECRET, BILL_YEAR_MONTH } = process.env
if (!TRANSLOADIT_KEY || !TRANSLOADIT_SECRET || !BILL_YEAR_MONTH) {
  throw new Error('Set TRANSLOADIT_KEY, TRANSLOADIT_SECRET, and BILL_YEAR_MONTH')
}

const transloadit = new Transloadit({
  authKey: TRANSLOADIT_KEY,
  authSecret: TRANSLOADIT_SECRET,
})
const bill = await transloadit.getBill(BILL_YEAR_MONTH)
if (bill.ok !== 'BILL_FOUND') throw new Error('No bill was returned')
console.log(JSON.stringify(bill, null, 2))
```

<span aria-hidden="true" id="response"></span>



## Response

Here’s an example response body:

```jsonc
{
  "additional_gb": 0,
  "additional_gb_fee": 0,
  "address_1": "Jimbostreet 19",
  "address_2": "",
  "bill_limit": 0,
  "city": "Berlin",
  "company": "Jimbo Jones GmbH",
  "country": "Germany",
  "created": "2014-07-01T06:58:32.000Z",
  "credit": 0,
  "email": "testuser@example.org",
  "invoice_id": "0d04b65924da41d4b68c80f776d196d5",
  "is_prorated": false,
  "month": "2014-06",
  "ok": "BILL_FOUND",
  "plan": {
    "gb_included": 35,
    "gb_limit": null,
    "has_lifetime_limit": false,
    "id": "3599821193a1f77baafb98e5f8fb17a6",
    "price_per_gb": 2.85,
    "price_per_month": 99
  },
  "reverse_charge_vat": false,
  "reward_discount": 1.98,
  "reward_discount_percent": 2,
  "robots": {
    "/assemblies": {
      "factor": 0,
      "freeGb": 0,
      "gb": 0,
      "gbFactorApplied": 0,
      "rawGb": 0
    },
    "/s3/store": {
      "factor": 10,
      "freeGb": 0.57,
      "gb": 0.6,
      "gbFactorApplied": 1.17,
      "rawGb": 11.75
    },
    "/video/encode": {
      "factor": 1,
      "freeGb": 0,
      "gb": 21.05,
      "gbFactorApplied": 21.05,
      "rawGb": 21.05
    },
    "/video/thumbs": {
      "factor": 10,
      "freeGb": 0,
      "gb": 0.34,
      "gbFactorApplied": 0.34,
      "rawGb": 3.42
    }
  },
  "signup_discount": 0,
  "signup_discount_percent": 0,
  "state": null,
  "sub_total": 99,
  "to": "Test User",
  "total": 115.45,
  "used_gb": 21.99,
  "vat": 18.43,
  "vat_id": "",
  "vat_rate": 0.19,
  "zip": "10117"
}
```

<span aria-hidden="true" id="response-1"></span>



### 2xx success

JSON response body. `application/json` `text/plain; charset=utf-8`

<span aria-hidden="true" id="response-1-body"></span>



#### Response body schema

[Complete JSON Schema](/api-reference/schemas/bill-date-get/response-1-body.json)

**Any of the following schemas may apply:**

* **Variant 1**

  The response contains only the fields listed for this object.

  * <span aria-hidden="true" id="response-1-body-anyOf-1-additional_gb"></span>



    **`additional_gb`**

    `number` (minimum: 0)
  * <span aria-hidden="true" id="response-1-body-anyOf-1-additional_gb_fee"></span>



    **`additional_gb_fee`**

    `number`
  * <span aria-hidden="true" id="response-1-body-anyOf-1-address_1"></span>



    **`address_1`**

    `null | string`
  * <span aria-hidden="true" id="response-1-body-anyOf-1-address_2"></span>



    **`address_2`**

    `null | string`
  * <span aria-hidden="true" id="response-1-body-anyOf-1-bill_limit"></span>



    **`bill_limit`**

    `number`
  * <span aria-hidden="true" id="response-1-body-anyOf-1-city"></span>



    **`city`**

    `null | string`
  * <span aria-hidden="true" id="response-1-body-anyOf-1-company"></span>



    **`company`**

    `null | string`
  * <span aria-hidden="true" id="response-1-body-anyOf-1-country"></span>



    **`country`**

    `null | string`
  * <span aria-hidden="true" id="response-1-body-anyOf-1-country_id"></span>



    **`country_id`**

    `null | string`
  * <span aria-hidden="true" id="response-1-body-anyOf-1-coupon_discount"></span>



    **`coupon_discount`**

    `number | string | null`

    * `number`
    * `string`

      Validation pattern (regular expression): `^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$`
    * `null`
  * <span aria-hidden="true" id="response-1-body-anyOf-1-coupon_discount_percent"></span>



    **`coupon_discount_percent`**

    `number | string | null`

    * `number`
    * `string`

      Validation pattern (regular expression): `^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$`
    * `null`
  * <span aria-hidden="true" id="response-1-body-anyOf-1-created"></span>



    **`created` (required)**

    `string | null` (minimum length: 1)
  * <span aria-hidden="true" id="response-1-body-anyOf-1-credit"></span>



    **`credit` (required)**

    `number | string | null`

    * `number`
    * `string`

      Validation pattern (regular expression): `^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$`
    * `null`
  * <span aria-hidden="true" id="response-1-body-anyOf-1-currency"></span>



    **`currency`**

    `null | string`
  * <span aria-hidden="true" id="response-1-body-anyOf-1-email"></span>



    **`email`**

    `null | string`
  * <span aria-hidden="true" id="response-1-body-anyOf-1-final_sub_total"></span>



    **`final_sub_total`**

    `number`
  * <span aria-hidden="true" id="response-1-body-anyOf-1-invoice_id"></span>



    **`invoice_id` (required)**

    `null`
  * <span aria-hidden="true" id="response-1-body-anyOf-1-is_prorated"></span>



    **`is_prorated` (required)**

    `boolean`
  * <span aria-hidden="true" id="response-1-body-anyOf-1-month"></span>



    **`month` (required)**

    `string`

    Validation pattern (regular expression): `^[0-9]{4}-(?:0[1-9]|1[0-2])$`
  * <span aria-hidden="true" id="response-1-body-anyOf-1-ok"></span>



    **`ok` (required)**

    `string` (always: "BILL\_FOUND")
  * <span aria-hidden="true" id="response-1-body-anyOf-1-plan"></span>



    **`plan` (required)**

    [`object`](#response-1-body-anyOf-1-plan-gb_included)

    `plan`: The response may contain additional fields.

    * <span aria-hidden="true" id="response-1-body-anyOf-1-plan-gb_included"></span>



      **`plan.gb_included` (required)**

      `number | string`

      * `number`
      * `string`

        Validation pattern (regular expression): `^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$`
    * <span aria-hidden="true" id="response-1-body-anyOf-1-plan-gb_limit"></span>



      **`plan.gb_limit` (required)**

      `number | string | null`

      * `number`
      * `string`

        Validation pattern (regular expression): `^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$`
      * `null`
    * <span aria-hidden="true" id="response-1-body-anyOf-1-plan-has_lifetime_limit"></span>



      **`plan.has_lifetime_limit` (required)**

      `boolean | 0 | 1 | "0" | "1" | null`

      **Any of the following schemas may apply:**

      * `boolean | 0 | 1 | "0" | "1"`
      * `null`
    * <span aria-hidden="true" id="response-1-body-anyOf-1-plan-id"></span>



      **`plan.id` (required)**

      `null | string`
    * <span aria-hidden="true" id="response-1-body-anyOf-1-plan-price_per_gb"></span>



      **`plan.price_per_gb` (required)**

      `number | string`

      * `number`
      * `string`

        Validation pattern (regular expression): `^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$`
    * <span aria-hidden="true" id="response-1-body-anyOf-1-plan-price_per_month"></span>



      **`plan.price_per_month` (required)**

      `number | string`

      * `number`
      * `string`

        Validation pattern (regular expression): `^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$`
  * <span aria-hidden="true" id="response-1-body-anyOf-1-po_number"></span>



    **`po_number`**

    `null | string`
  * <span aria-hidden="true" id="response-1-body-anyOf-1-reverse_charge_vat"></span>



    **`reverse_charge_vat`**

    `boolean`
  * <span aria-hidden="true" id="response-1-body-anyOf-1-reward_discount"></span>



    **`reward_discount`**

    `number | string | null`

    * `number`
    * `string`

      Validation pattern (regular expression): `^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$`
    * `null`
  * <span aria-hidden="true" id="response-1-body-anyOf-1-reward_discount_percent"></span>



    **`reward_discount_percent`**

    `number | string | null`

    * `number`
    * `string`

      Validation pattern (regular expression): `^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$`
    * `null`
  * <span aria-hidden="true" id="response-1-body-anyOf-1-robots"></span>



    **`robots` (required)**

    `object`

    * **Additional property schema**

      `object` (required properties: gb)

      [Additional schema details are available in the complete JSON Schema.](/api-reference/schemas/bill-date-get/response-1-body.json)
  * <span aria-hidden="true" id="response-1-body-anyOf-1-signup_discount"></span>



    **`signup_discount`**

    `number | string | null`

    * `number`
    * `string`

      Validation pattern (regular expression): `^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$`
    * `null`
  * <span aria-hidden="true" id="response-1-body-anyOf-1-signup_discount_percent"></span>



    **`signup_discount_percent`**

    `number | string | null`

    * `number`
    * `string`

      Validation pattern (regular expression): `^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$`
    * `null`
  * <span aria-hidden="true" id="response-1-body-anyOf-1-state"></span>



    **`state`**

    `null | string`
  * <span aria-hidden="true" id="response-1-body-anyOf-1-sub_total"></span>



    **`sub_total` (required)**

    `number`
  * <span aria-hidden="true" id="response-1-body-anyOf-1-tiers"></span>



    **`tiers`**

    `any value`
  * <span aria-hidden="true" id="response-1-body-anyOf-1-to"></span>



    **`to`**

    `null | string`
  * <span aria-hidden="true" id="response-1-body-anyOf-1-to_contact_email_address"></span>



    **`to_contact_email_address`**

    `null | string`
  * <span aria-hidden="true" id="response-1-body-anyOf-1-total"></span>



    **`total` (required)**

    `number`
  * <span aria-hidden="true" id="response-1-body-anyOf-1-used_gb"></span>



    **`used_gb`**

    `number` (minimum: 0)
  * <span aria-hidden="true" id="response-1-body-anyOf-1-vat"></span>



    **`vat`**

    `number`
  * <span aria-hidden="true" id="response-1-body-anyOf-1-vat_id"></span>



    **`vat_id`**

    `null | string`
  * <span aria-hidden="true" id="response-1-body-anyOf-1-vat_rate"></span>



    **`vat_rate`**

    `number`
  * <span aria-hidden="true" id="response-1-body-anyOf-1-zip"></span>



    **`zip`**

    `null | string`
* **Variant 2**

  The response contains only the fields listed for this object.

  * <span aria-hidden="true" id="response-1-body-anyOf-2-additional_gb"></span>



    **`additional_gb`**

    `number` (minimum: 0)
  * <span aria-hidden="true" id="response-1-body-anyOf-2-additional_gb_fee"></span>



    **`additional_gb_fee`**

    `number`
  * <span aria-hidden="true" id="response-1-body-anyOf-2-address_1"></span>



    **`address_1`**

    `null | string`
  * <span aria-hidden="true" id="response-1-body-anyOf-2-address_2"></span>



    **`address_2`**

    `null | string`
  * <span aria-hidden="true" id="response-1-body-anyOf-2-bill_limit"></span>



    **`bill_limit`**

    `number`
  * <span aria-hidden="true" id="response-1-body-anyOf-2-city"></span>



    **`city`**

    `null | string`
  * <span aria-hidden="true" id="response-1-body-anyOf-2-company"></span>



    **`company`**

    `null | string`
  * <span aria-hidden="true" id="response-1-body-anyOf-2-country"></span>



    **`country`**

    `null | string`
  * <span aria-hidden="true" id="response-1-body-anyOf-2-country_id"></span>



    **`country_id`**

    `null | string`
  * <span aria-hidden="true" id="response-1-body-anyOf-2-coupon_discount"></span>



    **`coupon_discount`**

    `number | string | null`

    * `number`
    * `string`

      Validation pattern (regular expression): `^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$`
    * `null`
  * <span aria-hidden="true" id="response-1-body-anyOf-2-coupon_discount_percent"></span>



    **`coupon_discount_percent`**

    `number | string | null`

    * `number`
    * `string`

      Validation pattern (regular expression): `^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$`
    * `null`
  * <span aria-hidden="true" id="response-1-body-anyOf-2-created"></span>



    **`created` (required)**

    `string | null` (minimum length: 1)
  * <span aria-hidden="true" id="response-1-body-anyOf-2-credit"></span>



    **`credit` (required)**

    `number | string | null`

    * `number`
    * `string`

      Validation pattern (regular expression): `^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$`
    * `null`
  * <span aria-hidden="true" id="response-1-body-anyOf-2-currency"></span>



    **`currency`**

    `null | string`
  * <span aria-hidden="true" id="response-1-body-anyOf-2-custom_expenses"></span>



    **`custom_expenses`**

    `any value`
  * <span aria-hidden="true" id="response-1-body-anyOf-2-email"></span>



    **`email`**

    `null | string`
  * <span aria-hidden="true" id="response-1-body-anyOf-2-final_sub_total"></span>



    **`final_sub_total`**

    `number`
  * <span aria-hidden="true" id="response-1-body-anyOf-2-invoice_id"></span>



    **`invoice_id` (required)**

    `string | number`
  * <span aria-hidden="true" id="response-1-body-anyOf-2-is_prorated"></span>



    **`is_prorated` (required)**

    `boolean`
  * <span aria-hidden="true" id="response-1-body-anyOf-2-month"></span>



    **`month` (required)**

    `string`

    Validation pattern (regular expression): `^[0-9]{4}-(?:0[1-9]|1[0-2])$`
  * <span aria-hidden="true" id="response-1-body-anyOf-2-ok"></span>



    **`ok` (required)**

    `string` (always: "BILL\_FOUND")
  * <span aria-hidden="true" id="response-1-body-anyOf-2-plan"></span>



    **`plan` (required)**

    [`object`](#response-1-body-anyOf-2-plan-gb_included)

    `plan`: The response may contain additional fields.

    * <span aria-hidden="true" id="response-1-body-anyOf-2-plan-gb_included"></span>



      **`plan.gb_included` (required)**

      `number | string`

      * `number`
      * `string`

        Validation pattern (regular expression): `^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$`
    * <span aria-hidden="true" id="response-1-body-anyOf-2-plan-gb_limit"></span>



      **`plan.gb_limit` (required)**

      `number | string | null`

      * `number`
      * `string`

        Validation pattern (regular expression): `^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$`
      * `null`
    * <span aria-hidden="true" id="response-1-body-anyOf-2-plan-has_lifetime_limit"></span>



      **`plan.has_lifetime_limit` (required)**

      `boolean | 0 | 1 | "0" | "1" | null`

      **Any of the following schemas may apply:**

      * `boolean | 0 | 1 | "0" | "1"`
      * `null`
    * <span aria-hidden="true" id="response-1-body-anyOf-2-plan-id"></span>



      **`plan.id` (required)**

      `null | string`
    * <span aria-hidden="true" id="response-1-body-anyOf-2-plan-price_per_gb"></span>



      **`plan.price_per_gb` (required)**

      `number | string`

      * `number`
      * `string`

        Validation pattern (regular expression): `^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$`
    * <span aria-hidden="true" id="response-1-body-anyOf-2-plan-price_per_month"></span>



      **`plan.price_per_month` (required)**

      `number | string`

      * `number`
      * `string`

        Validation pattern (regular expression): `^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$`
  * <span aria-hidden="true" id="response-1-body-anyOf-2-po_number"></span>



    **`po_number`**

    `null | string`
  * <span aria-hidden="true" id="response-1-body-anyOf-2-reverse_charge_vat"></span>



    **`reverse_charge_vat`**

    `boolean`
  * <span aria-hidden="true" id="response-1-body-anyOf-2-reward_discount"></span>



    **`reward_discount`**

    `number | string | null`

    * `number`
    * `string`

      Validation pattern (regular expression): `^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$`
    * `null`
  * <span aria-hidden="true" id="response-1-body-anyOf-2-reward_discount_percent"></span>



    **`reward_discount_percent`**

    `number | string | null`

    * `number`
    * `string`

      Validation pattern (regular expression): `^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$`
    * `null`
  * <span aria-hidden="true" id="response-1-body-anyOf-2-robots"></span>



    **`robots` (required)**

    `string | number | boolean | null | Array<any value> | object`

    **Any of the following schemas may apply:**

    * `string`
    * `number`
    * `boolean`
    * `null`
    * `Array<any value>`

      * **Array item schema**

        `any value`
    * `object`

      * **Additional property schema**

        `any value`
  * <span aria-hidden="true" id="response-1-body-anyOf-2-signup_discount"></span>



    **`signup_discount`**

    `number | string | null`

    * `number`
    * `string`

      Validation pattern (regular expression): `^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$`
    * `null`
  * <span aria-hidden="true" id="response-1-body-anyOf-2-signup_discount_percent"></span>



    **`signup_discount_percent`**

    `number | string | null`

    * `number`
    * `string`

      Validation pattern (regular expression): `^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$`
    * `null`
  * <span aria-hidden="true" id="response-1-body-anyOf-2-state"></span>



    **`state`**

    `null | string`
  * <span aria-hidden="true" id="response-1-body-anyOf-2-sub_total"></span>



    **`sub_total` (required)**

    `number`
  * <span aria-hidden="true" id="response-1-body-anyOf-2-tiers"></span>



    **`tiers`**

    `any value`
  * <span aria-hidden="true" id="response-1-body-anyOf-2-to"></span>



    **`to`**

    `null | string`
  * <span aria-hidden="true" id="response-1-body-anyOf-2-to_contact_email_address"></span>



    **`to_contact_email_address`**

    `null | string`
  * <span aria-hidden="true" id="response-1-body-anyOf-2-total"></span>



    **`total` (required)**

    `number`
  * <span aria-hidden="true" id="response-1-body-anyOf-2-used_gb"></span>



    **`used_gb`**

    `number` (minimum: 0)
  * <span aria-hidden="true" id="response-1-body-anyOf-2-vat"></span>



    **`vat`**

    `number`
  * <span aria-hidden="true" id="response-1-body-anyOf-2-vat_id"></span>



    **`vat_id`**

    `null | string`
  * <span aria-hidden="true" id="response-1-body-anyOf-2-vat_rate"></span>



    **`vat_rate`**

    `number`
  * <span aria-hidden="true" id="response-1-body-anyOf-2-zip"></span>



    **`zip`**

    `null | string`
* **error: "BILL\_NOT\_FOUND", http\_code: 200**

  The response contains only the fields listed for this object.

  * <span aria-hidden="true" id="response-1-body-anyOf-3-error"></span>



    **`error` (required)**

    `string` (always: "BILL\_NOT\_FOUND")
  * <span aria-hidden="true" id="response-1-body-anyOf-3-http_code"></span>



    **`http_code` (required)**

    `number` (always: 200)
  * <span aria-hidden="true" id="response-1-body-anyOf-3-message"></span>



    **`message` (required)**

    `string`
  * <span aria-hidden="true" id="response-1-body-anyOf-3-reason"></span>



    **`reason` (required)**

    `string`

<span aria-hidden="true" id="response-2"></span>



### Error response

JSON response body. `application/json` `text/plain; charset=utf-8`

<span aria-hidden="true" id="response-2-body"></span>



#### Response body schema

[Complete JSON Schema](/api-reference/schemas/bill-date-get/response-2-body.json)

At least one of these properties is required: error, message, reason

The response may contain additional fields.

<span aria-hidden="true" id="response-2-body-allOf-1-assembly_id"></span>



##### `assembly_id`

`string`

<span aria-hidden="true" id="response-2-body-allOf-1-error"></span>



##### `error`

`string` (minimum length: 1)

<span aria-hidden="true" id="response-2-body-allOf-1-http_code"></span>



##### `http_code`

`number | string`

* `number`
* `string`

  [Validation pattern (regular expression)](/api-reference/schemas/bill-date-get/response-2-body.json)

<span aria-hidden="true" id="response-2-body-allOf-1-message"></span>



##### `message`

`string`

Human-readable explanation of the error. Its wording can vary; use the `error` code when handling a specific failure.

<span aria-hidden="true" id="response-2-body-allOf-1-reason"></span>



##### `reason`

`null | string | number | boolean | Array<any value> | object`

**Any of the following schemas may apply:**

* `null`
* `string`
* `number`
* `boolean`
* `Array<any value>`

  * **Array item schema**

    `any value`
* `object`

  * **Additional property schema**

    `any value`

<span aria-hidden="true" id="response-3"></span>



### HTTP 400

JSON response body. `application/json` `text/plain; charset=utf-8`

<span aria-hidden="true" id="response-3-body"></span>



#### Response body schema

[Complete JSON Schema](/api-reference/schemas/bill-date-get/response-3-body.json)

**Named errors and the general error format**

* **error: "SIGNATURE\_REUSE\_DETECTED"**

  The request was denied for security reasons. If you think this is in error, please get in touch with support.

  The response may contain additional fields.

  * <span aria-hidden="true" id="response-3-body-anyOf-1-error"></span>



    **`error` (required)**

    `string` (always: "SIGNATURE\_REUSE\_DETECTED")
  * <span aria-hidden="true" id="response-3-body-anyOf-1-http_code"></span>



    **`http_code`**

    `number` (always: 400)
  * <span aria-hidden="true" id="response-3-body-anyOf-1-message"></span>



    **`message`**

    `string`

    Human-readable explanation of the error. Its wording can vary; use the `error` code when handling a specific failure.
* **General error format**

  <span aria-hidden="true" id="response-3-body-anyOf-2-allOf-1-assembly_id"></span><span aria-hidden="true" id="response-3-body-anyOf-2-allOf-1-error"></span><span aria-hidden="true" id="response-3-body-anyOf-2-allOf-1-http_code"></span><span aria-hidden="true" id="response-3-body-anyOf-2-allOf-1-message"></span><span aria-hidden="true" id="response-3-body-anyOf-2-allOf-1-reason"></span>



  [See the general error response fields.](#response-2-body)

The `invoice_id` is `null` for the current month.
