## GET /api/v2/billing/credit-line

**Get invoice credit line**

Return the account's invoice credit line. A Swedish organisation that has paid several invoices by bank transfer from its own account earns a line: domain registration and transfer orders placed from a logged-in session are then carried out at once, and the invoice is paid on its normal terms. The limit is measured against all unpaid invoices on the account, and an invoice more than seven days overdue freezes the line until it is paid. Card and Swish payments do not build a line. Accounts without a line, including private persons and organisations outside Sweden, answer `status: "none"`; their orders are carried out when the invoice is paid. Orders placed with an API key always wait for payment.

### Related Endpoints

- `GET /api/v2/billing/cards`: List saved cards
- `POST /api/v2/billing/cards`: Store saved card
- `GET /api/v2/billing/account`: Get billing account

### Headers

- `Accept`: application/json
- `Authorization`: Bearer YOUR_API_KEY
- Required API scope: `read:billing`

### Request Example

```bash
curl -X GET "https://cloud.hostup.se/api/v2/billing/credit-line" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
```

### Response Schema

- `available` (boolean, required)
- `reason` (string, required, nullable): Nullable (may be null when not applicable).
- `reasonCode` (string, required, nullable): Nullable (may be null when not applicable).
  Allowed values: no_credit_line, overdue_invoice, limit_exceeded
- `status` (string, required)
  Allowed values: active, frozen, exhausted, none
- `tier` (string, required, nullable): Nullable (may be null when not applicable).
  Allowed values: earned, established, custom
- `limitAmount` (number, required, nullable): Major units of `currencyCode`, VAT included.
- `usedAmount` (number, required)
- `availableAmount` (number, required)
- `currencyCode` (string, required)
  Allowed values: SEK
- `unpaidInvoiceCount` (integer, required)
- `coveredOrderKinds` (array<string>, required)
- `evaluatedAt` (string, required)

### Responses

#### 200 - Invoice credit line.
```json
{
  "available": true,
  "reason": null,
  "reasonCode": null,
  "status": "active",
  "tier": "established",
  "limitAmount": 10000,
  "usedAmount": 2866.25,
  "availableAmount": 7133.75,
  "currencyCode": "SEK",
  "unpaidInvoiceCount": 11,
  "coveredOrderKinds": [
    "domain_registration",
    "domain_transfer"
  ],
  "evaluatedAt": "2026-09-18T10:00:00.000Z"
}
```

#### 400 - Invalid request. The response body is an RFC 7807 Problem Details document.
```json
{
  "type": "https://developer.hostup.se/errors/invalid_request",
  "title": "Invalid request",
  "status": 400,
  "detail": "The request body failed validation.",
  "code": "invalid_request",
  "instance": "/api/v2/resource",
  "requestId": "req_01hxa3b4c5d6e7f8g9h0j1k2m3",
  "timestamp": "2026-04-27T12:34:56.000Z",
  "errors": [
    {
      "pointer": "/items/0/domainName",
      "detail": "`domainName` is required.",
      "code": "invalid_request"
    }
  ]
}
```

#### 401 - Unauthorized. Authentication is required.
```json
{
  "type": "https://developer.hostup.se/errors/unauthorized",
  "title": "Unauthorized",
  "status": 401,
  "detail": "Authentication is required.",
  "code": "unauthorized",
  "instance": "/api/v2/resource",
  "requestId": "req_01hxa3b4c5d6e7f8g9h0j1k2m3",
  "timestamp": "2026-04-27T12:34:56.000Z"
}
```

#### 403 - Forbidden. The caller lacks a required scope or does not own the resource.
```json
{
  "type": "https://developer.hostup.se/errors/forbidden",
  "title": "Forbidden",
  "status": 403,
  "detail": "The caller lacks a required scope or does not own the resource.",
  "code": "forbidden",
  "instance": "/api/v2/resource",
  "requestId": "req_01hxa3b4c5d6e7f8g9h0j1k2m3",
  "timestamp": "2026-04-27T12:34:56.000Z"
}
```

#### 404 - Not found. The resource does not exist or is not owned by the caller.
```json
{
  "type": "https://developer.hostup.se/errors/not_found",
  "title": "Not found",
  "status": 404,
  "detail": "The requested resource could not be found.",
  "code": "not_found",
  "instance": "/api/v2/resource",
  "requestId": "req_01hxa3b4c5d6e7f8g9h0j1k2m3",
  "timestamp": "2026-04-27T12:34:56.000Z"
}
```

#### 429 - Rate limited. Retry after the limit resets. 429 responses include `Retry-After` seconds plus `X-RateLimit-*` headers.
```json
{
  "type": "https://developer.hostup.se/errors/rate_limit_exceeded",
  "title": "Too many requests",
  "status": 429,
  "detail": "Too many requests. Retry after the limit resets.",
  "code": "rate_limit_exceeded",
  "instance": "/api/v2/resource",
  "requestId": "req_01hxa3b4c5d6e7f8g9h0j1k2m3",
  "timestamp": "2026-04-27T12:34:56.000Z"
}
```

#### 500 - Internal error. Retry later or contact support if the issue persists.
```json
{
  "type": "https://developer.hostup.se/errors/internal_error",
  "title": "Internal server error",
  "status": 500,
  "detail": "An unexpected error occurred. Retry later or contact support if the issue persists.",
  "code": "internal_error",
  "instance": "/api/v2/resource",
  "requestId": "req_01hxa3b4c5d6e7f8g9h0j1k2m3",
  "timestamp": "2026-04-27T12:34:56.000Z"
}
```
