---
title: "Retrieve account billing details"
method: GET
path: "/companies/{company}/billing"
tags: ["Account"]
---

# Retrieve account billing details

`GET /companies/{company}/billing`

## Request

- Base URL: `https://api.factuarea.com/v1`
- URL: `https://api.factuarea.com/v1/companies/{company}/billing`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Return the subscription billing snapshot of the company: base plan, additional NIF subscription and default payment method.
- The additional NIF subscription is `null` without additional tax IDs.
- A tax ID paid by another account gets `managed: true`, plan `gestionada`, no payment data.
- Amounts are 2-decimal euro strings; unresolved ones are `null`.

## Path parameters

- `company` string, uuid, required

## Headers

- `Factuarea-Version` string, date

## Response `200`

- object
  - `data` AccountBilling, required: Billing snapshot of the authenticated company: current plan (trial, grace period, pending change), additional NIF subscription in `gestoria_seats` (when the account has additional tax IDs) and payment method. A tax ID whose billing is paid by another account returns `managed: true` with plan `gestionada`, no additional NIF subscription and no payment method: what the payer pays is never shown to it.
    - `object` 'account_billing', required: Stripe-like discriminator. Always `account_billing` for this resource.
    - `managed` boolean, required: true when the effective tax ID is paid by another account: it has no plan billing of its own, so `gestoria_seats` and `payment_method` are null.
    - `plan` object, required: Current plan subscription of the account.
      - `slug` string, nullable, required: Plan identifier (e.g. `emprendedor`, `empresario`, `integral`, `enterprise`, `gestionada`).
      - `name` string, nullable, required
      - `status` string, required: Subscription status (e.g. `active`, `trialing`, `blocked`).
      - `billing_interval` 'month' | 'year' | 'null', nullable, required: Billing interval of the plan, or null when there is no paid subscription.
      - `is_trialing` boolean, required
      - `trial_days_remaining` integer, required
      - `is_on_grace_period` boolean, required: true when the plan was cancelled but remains usable until `ends_at`.
      - `grace_period_days_remaining` integer, required
      - `current_period_end` string, date-time, nullable, required: End of the current billing period (ISO 8601), or null.
      - `ends_at` string, date-time, nullable, required: Scheduled end of the subscription (ISO 8601) when cancelled, or null.
      - `pending_change` object, nullable, required: Scheduled plan change taking effect at the end of the current period, or null.
        - `slug` string, required
        - `name` string, nullable, required
        - `effective_at` string, date-time, nullable, required
        - `billing_interval` 'month' | 'year' | 'null', nullable, required
    - `gestoria_seats` object, nullable, required: Additional NIF subscription of the account (one seat per active additional tax ID; the field keeps its original public name `gestoria_seats` for compatibility), or null when the account has no additional tax IDs. Amounts are in euros as 2-decimal strings and are null when the recurring cost is not resolvable (enterprise outside Stripe, sandbox, no active plan) — never a misleading 0.
      - `status` string, nullable, required: Status of the additional NIF subscription (`active`, `past_due`, …), or `none` when there is no subscription yet (e.g. trial: additional tax IDs are free).
      - `quantity` integer, nullable, required: Number of billed seats (one per active additional tax ID) in the additional NIF subscription.
      - `active_companies` integer, nullable, required: Number of ACTIVE additional tax IDs of the account.
      - `unit_amount` string, nullable, required: Taxable base of one seat per billing cycle, in euros as a 2-decimal string.
      - `tax_rate` integer, nullable, required: Applied VAT rate (e.g. 21), or null when not resolved.
      - `tax_amount` string, nullable, required: VAT amount of one seat, in euros as a 2-decimal string.
      - `total_per_seat` string, nullable, required: Base + VAT of one seat, in euros as a 2-decimal string.
      - `recurring_total` string, nullable, required: Projected recurring total (`total_per_seat` × `quantity`), in euros as a 2-decimal string. Null when VAT is not resolved.
      - `currency` string, nullable, required: ISO 4217 currency code.
      - `billing_interval` 'month' | 'null', nullable, required: The seat is always billed monthly, regardless of the plan interval.
      - `next_invoice_at` string, date-time, nullable, required: Next invoice date of the additional NIF subscription (ISO 8601), or null.
      - `ends_at` string, date-time, nullable, required: Scheduled end of the additional NIF subscription (ISO 8601) when cancelled at period end, or null.
    - `payment_method` object, nullable, required: Default payment method on file, or null when none is configured.
      - `brand` string, nullable, required: Card brand (e.g. `visa`, `mastercard`).
      - `last_four` string, nullable, required: Last four digits of the card.

## Other responses

- `400`: `parameter_unknown` with `subcode` `retired_active_profile_header`: the retired `X-Active-Profile` header was sent; the company goes in the path. `parameter_invalid_format` on `Factuarea-Version`: the header is not a `YYYY-MM-DD` date. `unsupported_api_version`: the `Factuarea-Version` date is not a supported version.
- `401`: Missing or invalid API key.
- `403`: The request is authenticated but not allowed: the API key lacks the required scope (`insufficient_scope`), the plan does not include the public API or this feature (`addon_not_active`, `feature_not_available_in_plan`), or the module is not available with a test key (`module_not_available_in_sandbox`).
- `404`: The requested resource does not exist or belongs to another company. `profile_not_found`: the company in the path does not exist, is not in the API key scope or belongs to the other environment (live or test).
- `429`: Rate limit exceeded. Retry after the duration in `Retry-After`.
- `500`: Unexpected server error.

---

[API](https://skmtc.dev/factuarea/apis/factuarea-public-api.md) · [All operations](https://skmtc.dev/factuarea/apis/factuarea-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/factuarea/apis/factuarea-public-api/revisions/718e77934422?raw)
