# Hyperline CLI
Source: https://docs.hyperline.co/api-reference/docs/ai/cli

Use the Hyperline CLI — an agent-first command-line tool — to query customers, subscriptions, invoices, and events directly from your terminal.

The [Hyperline CLI](https://www.npmjs.com/package/@hyperline/cli) lets you manage your billing operations directly from the terminal. It's designed to be **agent-first** — optimized for AI agents like Claude Code, Cursor, Windsurf, and any tool that can run shell commands.

## Why a CLI for AI agents?

AI agents work with tools to accomplish tasks. Today, most agents use MCP (Model Context Protocol) to connect to external services. While MCP works well, it has limitations when used at scale:

* **Context bloat** — MCP servers expose dozens of tools, each with full schemas that consume valuable context window space.
* **Slower on complex tasks** — For multi-step workflows, agents using MCP need to discover tools, read schemas, and format structured requests for each operation. On complex questions, MCP agents can loop for minutes trying to find the right tool combination.

CLIs solve these problems:

* **Token-efficient** — Short commands like `hyperline customers list` are natural for a text-predicting model to write and require minimal context to understand.
* **No tool discovery overhead** — Agents don't need to load a catalog of tools or read JSON schemas. They just run commands and read the output.
* **Composable** — CLI output can be piped, filtered with `jq`, or chained with other commands — patterns that agents handle natively.

## Installation

```bash theme={null}
npm install -g @hyperline/cli
```

Verify the installation:

```bash theme={null}
hyperline --version
```

## Authentication

### Browser login

The simplest way to authenticate — opens your browser to securely log in with your Hyperline account:

```bash theme={null}
hyperline login
```

Credentials are stored locally in `~/.hyperline/`. To log out:

```bash theme={null}
hyperline logout
```

### API key

For server environments, CI/CD pipelines, or AI agents running without a browser:

```bash theme={null}
# Via environment variable
export HYPERLINE_API_KEY=sk_test_...

# Or inline
hyperline customers list --api-key sk_test_...
```

API keys can be generated from your account [Settings](https://app.hyperline.co/app/settings/api).

<Warning>
  Keep your API key secret. Do not commit it to version control — use environment variables or a secrets manager instead.
</Warning>

<Info>
  For sandbox environments, set the base URL via environment variable or flag:

  ```bash theme={null}
  export HYPERLINE_API_URL=https://api.sandbox.hyperline.co

  # Or per-command
  hyperline customers list --base-url https://api.sandbox.hyperline.co
  ```
</Info>

## Company selection

If you have access to multiple companies, the CLI uses the last used company by default. To switch to a specific company:

```bash theme={null}
hyperline company select
```

## Usage

The CLI follows a consistent `hyperline <resource> <action>` pattern:

```bash theme={null}
# List customers
hyperline customers list

# Get a specific invoice
hyperline invoices get --id inv_xxxxx

# Create a new customer
hyperline customers create --name "Acme Inc" --currency USD
```

### Available resources

| Resource             | Description                                                 |
| -------------------- | ----------------------------------------------------------- |
| `customers`          | Create, update, list, and manage your customer base         |
| `subscriptions`      | Handle subscription lifecycle, cancellations, and templates |
| `invoices`           | Create, list, and manage invoices and transactions          |
| `products`           | Define and update your product catalog                      |
| `quotes`             | Generate and manage quotes                                  |
| `wallets`            | Prepaid wallet management and top-ups                       |
| `coupons`            | Create discount coupons and promotion codes                 |
| `webhooks`           | Configure webhook endpoints                                 |
| `payments`           | Track and manage payments                                   |
| `analytics`          | Access billing metrics                                      |
| `exports`            | Export your billing data                                    |
| `custom-properties`  | Extend resources with custom fields                         |
| `taxes`              | View tax rates and configurations                           |
| `invoicing-entities` | Manage your billing entities                                |

Use `--help` on any command to see available actions and options:

```bash theme={null}
hyperline customers --help
hyperline invoices list --help
```

### Output formats

By default, the CLI outputs human-readable text. Use `--output json` for structured output:

```bash theme={null}
# Human-readable output
hyperline customers list

# JSON output for scripting
hyperline customers list --output json

# Pipe to other tools
hyperline customers list --output json | jq '.[].name'
```

### Global options

| Option              | Description                                  |
| ------------------- | -------------------------------------------- |
| `--api-key <key>`   | API key (overrides `HYPERLINE_API_KEY`)      |
| `--base-url <url>`  | API base URL (overrides `HYPERLINE_API_URL`) |
| `--output <format>` | `json` or `text` (default: `text`)           |
| `--help`            | Show help                                    |
| `--version`         | Show version                                 |

## Setting up for AI agents

### Claude Code

Add the Hyperline CLI to your project's `CLAUDE.md` so Claude knows it's available:

```markdown theme={null}
## Tools

Hyperline CLI is available for billing operations.
Authenticate with: `export HYPERLINE_API_KEY=sk_...`
Usage: `hyperline <resource> <action> [options]`
Use `--output json` when you need to process the data.
```

### Cursor / Windsurf

Add instructions to your project rules (`.cursor/rules/` or `.windsurfrules`) so the agent knows to use the CLI:

```markdown theme={null}
## Billing

Use the Hyperline CLI for any billing-related tasks.
Run `hyperline <resource> <action>` commands in the terminal.
Use `--output json | jq` for filtering and processing data.
```

### Any agent with shell access

Any AI agent that can execute shell commands can use the Hyperline CLI. Set the `HYPERLINE_API_KEY` environment variable in the agent's environment, and the CLI is ready to use — no additional configuration or tool registration needed.

## CLI vs MCP — which should I use?

|                      | CLI                                                     | MCP                                                        |
| -------------------- | ------------------------------------------------------- | ---------------------------------------------------------- |
| **Best for**         | AI agents with shell access, scripting, automation      | AI assistants without terminal access (Claude.ai, ChatGPT) |
| **Setup**            | `npm install -g @hyperline/cli`                         | Add MCP server URL to your client                          |
| **Auth**             | API key or browser login                                | OAuth or API key                                           |
| **Context cost**     | Minimal — just command strings                          | Higher — full tool schemas loaded in context               |
| **Multi-step tasks** | Excellent — pipe, chain, and compose commands           | Can struggle with complex workflows                        |
| **Works with**       | Claude Code, Cursor, Windsurf, any terminal-based agent | Claude.ai, ChatGPT, any MCP-compatible client              |

You can use both. The MCP server is great for conversational AI assistants, while the CLI shines for agents that work in the terminal.

<Card title="Hyperline MCP Server" icon="robot" href="./mcp">
  Learn how to set up the Hyperline MCP server for AI assistants without terminal access.
</Card>


# Hyperline MCP
Source: https://docs.hyperline.co/api-reference/docs/ai/mcp

Connect AI assistants like Claude and Cursor to your Hyperline account through the Model Context Protocol for billing data lookups and actions.

Connect your AI tools to Hyperline using the [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction), an open standard that lets AI assistants interact with your billing data, manage customers, and automate revenue operations.

## What is Hyperline MCP?

Hyperline MCP is our hosted MCP server that gives AI tools secure access to your Hyperline account. It's designed to work seamlessly with popular AI assistants like Claude, ChatGPT, Cursor, and more.

### Why use Hyperline MCP?

* **Natural language billing management** — Manage customers, subscriptions, and invoices through conversational AI instead of navigating through multiple screens
* **Full account access** — AI tools can search, read, create, and update records across your Hyperline account—customers, subscriptions, invoices, products, and usage data
* **Easy setup** — Connect through OAuth with one-click installation for supported AI tools, or use an API token for direct authentication
* **Optimized for AI** — Built specifically for AI agents with efficient data formatting and human-readable responses
* **Secure by design** — Authenticates with your Hyperline credentials, with read operations auto-approved while write operations request confirmation

### What can you do with Hyperline MCP?

* **Customer management** — Look up customer details, find contacts by email or name, and create new customer records
* **Subscription operations** — View active subscriptions, check renewal dates, and manage subscription lifecycle
* **Invoice handling** — Search invoices by status, view payment history, and track overdue payments
* **Usage tracking** — Query usage data, check consumption metrics, and explore billing periods
* **Revenue analytics** — Access MRR, ARR, and other key metrics through natural language queries
* **Product catalog** — Browse products and pricing, understand your catalog structure

## Getting started

### Prerequisites

Before connecting Hyperline MCP, ensure you have:

1. An active Hyperline account
2. An MCP-compatible AI client (Claude, ChatGPT, Cursor, VS Code, etc.)

### Authentication

The Hyperline MCP server uses OAuth 2.0 for authentication. Most AI clients handle the OAuth flow automatically — you'll simply be redirected to log in with your Hyperline credentials.

If your client doesn't support OAuth (for example, in a server or machine-to-machine context), you can authenticate using an API token instead. API tokens can be generated from your workspace [Settings](https://app.hyperline.co/app/settings/api).

Some AI clients support OAuth but do not support dynamic client registration. In that case, the client may ask for an OAuth **Client ID** in addition to the MCP server URL.

If your client has a **Client ID** or **OAuth client ID** field:

1. Enter the MCP server URL: `https://mcp.hyperline.co/mcp`
2. Use dynamic client registration if the client offers it
3. If dynamic registration is not available, contact Hyperline support to get the static OAuth Client ID for your environment

<Note>
  Avoid using a shared API key when you need per-user Hyperline permissions. OAuth keeps access tied to the Hyperline user who authorizes the AI client, so existing roles and permissions still apply.
</Note>

### Connecting to Hyperline MCP

Add the following server URL to your AI client:

```
https://mcp.hyperline.co/mcp
```

<Info>
  For sandbox environments, use `https://sandbox.mcp.hyperline.co/mcp` instead.
</Info>

<Tabs>
  <Tab title="Claude">
    **For Claude Desktop or Claude.ai:**

    1. Open **Settings** → **Connectors**
    2. Select **Add custom connector**
    3. Enter a name (e.g., `hyperline`) and the URL: `https://mcp.hyperline.co/mcp`
    4. Follow the OAuth prompts to log in to your Hyperline account
  </Tab>

  <Tab title="Claude Code">
    Run the following command to add the Hyperline MCP server:

    ```bash theme={null}
    claude mcp add --transport http hyperline https://mcp.hyperline.co/mcp
    ```
  </Tab>

  <Tab title="ChatGPT">
    1. Navigate to **Settings** → **Apps** → **Advanced settings** → Enable **Developer mode**
    2. Select **Create App**
    3. Fill in the Name (e.g., `Hyperline`) and MCP Server URL
    4. Add the MCP Server URL: `https://mcp.hyperline.co/mcp`
    5. Complete the OAuth flow to authenticate with Hyperline
  </Tab>

  <Tab title="Cursor">
    1. Use <kbd>Command</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd> (<kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd> on Windows) to open the command palette
    2. Search for "Open MCP settings"
    3. Select **Add custom MCP** to open the `mcp.json` file
    4. Configure the server:

    ```json theme={null}
    {
      "mcpServers": {
        "hyperline": {
          "url": "https://mcp.hyperline.co/mcp"
        }
      }
    }
    ```
  </Tab>

  <Tab title="VS Code">
    1. Create a `.vscode/mcp.json` file in your project
    2. Configure the server:

    ```json theme={null}
    {
      "servers": {
        "hyperline": {
          "type": "http",
          "url": "https://mcp.hyperline.co/mcp"
        }
      }
    }
    ```
  </Tab>

  <Tab title="Other clients">
    Add `https://mcp.hyperline.co/mcp` as a remote MCP server and complete the OAuth authentication when prompted.

    If your client doesn't support OAuth, use your API token for direct authentication instead.
  </Tab>
</Tabs>

Once connected, you'll be authenticated with access to your Hyperline account data.

<Accordion title="Server / Machine-to-Machine (M2M) setup">
  If your MCP client runs in a server environment without a browser (e.g., a backend agent or automated pipeline), you can skip OAuth and authenticate directly with an API key.

  Generate an API key from your workspace [Settings](https://app.hyperline.co/app/settings/api), then pass it in the `Authorization` header when connecting to the MCP server:

  ```
  Authorization: Bearer <YOUR_API_KEY>
  ```

  For example, in an MCP client configuration that supports custom headers:

  ```json theme={null}
  {
    "mcpServers": {
      "hyperline": {
        "url": "https://mcp.hyperline.co/mcp",
        "headers": {
          "Authorization": "Bearer <YOUR_API_KEY>"
        }
      }
    }
  }
  ```

  <Warning>
    Keep your API key secret. Do not commit it to version control — use environment variables or a secrets manager instead.
  </Warning>
</Accordion>

## Multi-company access

If your Hyperline user has access to multiple companies, the MCP server defaults to the first (oldest) company linked to your account.

To target a specific company, include the `Hyperline-CompanyId` header in your MCP server configuration:

```json theme={null}
{
  "mcpServers": {
    "hyperline": {
      "url": "https://mcp.hyperline.co/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_API_KEY>",
        "Hyperline-CompanyId": "<YOUR_COMPANY_ID>"
      }
    }
  }
}
```

You can retrieve the list of companies your account has access to using the [`/v1/companies`](/api-reference/endpoints/companies/list-companies) endpoint.

## Supported tools

The Hyperline MCP server exposes over 100 tools covering the full breadth of your billing operations. These include listing and retrieving customers, quotes, subscriptions, invoices, and product information, as well as actions like creating and voiding invoices, generating quotes, assigning subscriptions, querying usage data, and accessing revenue metrics — among many others.

Once connected, your AI assistant automatically discovers all available tools. Simply describe what you need in natural language, and the assistant will use the right tools to get it done.

## Sample prompts

### Customer and account lookup

| Prompt                                        | What it does                                              |
| --------------------------------------------- | --------------------------------------------------------- |
| "Find all customers with overdue invoices"    | Searches for customers with unpaid invoices past due date |
| "What's the email for Acme Corp?"             | Looks up contact information for a specific customer      |
| "Show me everything we know about customer X" | Retrieves comprehensive customer information              |
| "Find customers in the Enterprise plan"       | Filters customers by subscription plan                    |
| "List customers created in the last 30 days"  | Shows recently acquired customers                         |

### Subscriptions and billing

| Prompt                                                     | What it does                           |
| ---------------------------------------------------------- | -------------------------------------- |
| "What subscriptions does Acme Corp have?"                  | Lists all subscriptions for a customer |
| "Show me subscriptions renewing next week"                 | Finds upcoming renewals                |
| "Which customers are on the Pro plan?"                     | Lists customers filtered by plan       |
| "Create a subscription for customer X on the Starter plan" | Creates a new subscription             |

### Invoices and payments

| Prompt                                       | What it does                       |
| -------------------------------------------- | ---------------------------------- |
| "List unpaid invoices from the last 30 days" | Searches for outstanding invoices  |
| "What's the total amount billed this month?" | Calculates monthly billing total   |
| "Show me the payment history for Acme Corp"  | Retrieves customer payment records |
| "Find invoices over \$10,000"                | Filters invoices by amount         |

### Revenue analytics

| Prompt                                        | What it does                       |
| --------------------------------------------- | ---------------------------------- |
| "What's my current MRR?"                      | Returns Monthly Recurring Revenue  |
| "Show me revenue trends for the last quarter" | Displays revenue metrics over time |
| "How many active subscriptions do we have?"   | Counts active subscriptions        |
| "What's our customer churn this month?"       | Calculates churn metrics           |

## Security best practices

<Warning>
  Treat your credentials and billing data as sensitive information. Only connect to AI applications you trust, and use sandbox credentials when experimenting.
</Warning>

### Tool safety

Hyperline MCP uses MCP safety annotations:

* **Read operations** — Auto-approved for seamless searching and viewing
* **Write operations** — Request user confirmation before creating or updating data

### User permissions

Hyperline MCP respects your existing user permissions. The tools available through the MCP server depend on the roles and permissions configured for your user account in your workspace [Settings](https://app.hyperline.co/app/settings/members), or API key scopes. AI assistants can only access and modify what you are authorized to do in Hyperline.

You can revoke access at any time by deleting API keys or revoking user access.

### Rate limits

Standard API rate limits apply to all MCP operations. See [Rate limiting](/api-reference/docs/rate-limiting) for details. In most cases, normal conversational use stays well within rate limits.

## Troubleshooting

If your AI assistant can't connect to Hyperline:

1. **Verify your credentials** — Make sure the credentials are correct and haven't been regenerated or revoked
2. **Check the environment** — Ensure you're using the correct URL for your environment (production vs sandbox)
3. **Test the connection** — Try a simple request like "List customers" to verify the connection works
4. **Check permissions** — Ensure your Hyperline user has the necessary permissions for the operations you're attempting

<Info>
  Is something still unclear? Don't hesitate to reach out to our team via the in-app chat if you need additional support.
</Info>


# Build with LLMs
Source: https://docs.hyperline.co/api-reference/docs/ai/overview

Use Hyperline documentation and APIs with AI assistants, LLMs, and agent frameworks through CLI, MCP server, and structured machine-readable docs.

You can use large language models (LLMs) to assist in building Hyperline integrations. This page explains how to access our documentation in LLM-friendly formats and how to connect AI assistants directly to your Hyperline account.

## Using documentation with LLMs

### llms.txt

The [llms.txt file](https://llmstxt.org) is an industry standard that helps LLMs index content efficiently, similar to how a sitemap helps search engines. AI tools use this file to understand your documentation structure and find relevant content.

We automatically host an `llms.txt` file that lists all available pages: [docs.hyperline.co/llms.txt](https://docs.hyperline.co/llms.txt)

### skill.md

The [skill.md specification](https://agentskills.io/specification) is a structured, machine-readable format that describes what AI agents can accomplish with Hyperline. While `llms.txt` tells agents where to find information, `skill.md` tells them what capabilities are available, what inputs are required, and what constraints apply.

We automatically host a `skill.md` file: [docs.hyperline.co/skill.md](https://docs.hyperline.co/skill.md)

Agents can process this file using the [skills CLI](https://www.npmjs.com/package/skills):

```bash theme={null}
npx skills add docs.hyperline.co/skill.md
```

### Documentation MCP Server

The [Model Context Protocol (MCP)](https://modelcontextprotocol.io) is an open standard that allows AI assistants to connect directly to external services. When connected to our documentation MCP server, AI tools can search our docs during response generation — providing more accurate answers than generic web searches.

Connect your AI tools to our documentation MCP server at `https://docs.hyperline.co/mcp`:

<Tabs>
  <Tab title="Claude">
    1. Navigate to the [Connectors](https://claude.ai/settings/connectors) page in the Claude settings
    2. Select **Add custom connector**
    3. Add the server name (e.g., `hyperline-docs`) and URL: `https://docs.hyperline.co/mcp`
    4. Select **Add**
    5. When using Claude, select the attachments button (the <kbd>+</kbd> icon)
    6. Select your MCP server
  </Tab>

  <Tab title="Claude Code">
    Run the following command to add the Hyperline Docs MCP server:

    ```bash theme={null}
    claude mcp add --transport http hyperline-docs https://docs.hyperline.co/mcp
    ```
  </Tab>

  <Tab title="Cursor">
    1. Use <kbd>Command</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd> (<kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd> on Windows) to open the command palette
    2. Search for "Open MCP settings"
    3. Select **Add custom MCP** to open the `mcp.json` file
    4. Configure the server:

    ```json theme={null}
    {
      "mcpServers": {
        "hyperline-docs": {
          "url": "https://docs.hyperline.co/mcp"
        }
      }
    }
    ```
  </Tab>

  <Tab title="VS Code">
    1. Create a `.vscode/mcp.json` file in your project
    2. Configure the server:

    ```json theme={null}
    {
      "servers": {
        "hyperline-docs": {
          "type": "http",
          "url": "https://docs.hyperline.co/mcp"
        }
      }
    }
    ```
  </Tab>
</Tabs>

## Hyperline MCP Server

Beyond accessing documentation, you can connect AI assistants directly to your Hyperline account to **interact with your billing data** using natural language. The Hyperline MCP server enables you to:

* Query and manage customers
* View and create subscriptions
* Generate invoices
* Access analytics and revenue metrics
* And more

This allows you to ask your AI assistant questions like:

* "Show me all customers with overdue invoices"
* "What's my current MRR?"
* "Create a new subscription for customer X"

<Card title="Hyperline MCP Server" icon="robot" href="./mcp">
  Learn how to set up and use the Hyperline MCP server to connect AI assistants to your billing data.
</Card>

## Hyperline CLI

For AI agents that work in the terminal (Claude Code, Cursor, Windsurf), the Hyperline CLI offers a lighter, faster alternative to MCP. Commands like `hyperline customers list` are token-efficient and require no tool discovery — making agents faster and more reliable on complex, multi-step tasks.

<Card title="Hyperline CLI" icon="terminal" href="./cli">
  Learn how to install and use the Hyperline CLI for agent-first billing operations.
</Card>


# Currency amounts
Source: https://docs.hyperline.co/api-reference/docs/amount

Understand how Hyperline represents monetary values in the API — currency, integer amounts in minor units, and rounding rules across endpoints.

<Note>
  Learn about [currency settings](../../docs/account/settings#currencies) in Hyperline.
</Note>

On the technical side, our APIs always represent currencies using their **three-letter ISO 4217 code** (see a complete list [here](https://en.wikipedia.org/wiki/ISO_4217#Active_codes_\(List_One\))), and accept and return integer amounts in the **currency's smallest unit**.

For **European currencies**, this means that amounts are represented in **cents**. If you want to convert an amount with decimals into its Hyperline format you need to multiply it by `100`. For example, an amount of €`34.17` (Euro, a two-decimal currency) will be represented in Hyperline as `3417`.

Hyperline also supports **zero-decimal currencies** and **three-decimal currencies**. In this case, you need to apply the right multiplier (or none). For example, an amount of `F CFA 12065` (West African CFA franc, a zero-decimal currency) will be represented in Hyperline as `12065`.


# Authentication
Source: https://docs.hyperline.co/api-reference/docs/authentication

Authenticate to the Hyperline API with bearer tokens, manage API keys, and configure secure access for production and sandbox environments.

The Hyperline API requires either an **API key** or an **access token** to identify and authorise calls. API keys are associated with a single Hyperline account, and an access token represents delegated access to a specific account (used for [third-party apps](./third-party-app)). You can have more than one token or key at any point in time.

Those tokens are able to authenticate to Hyperline and perform actions on your account so it's important that you keep them safe in the same way that you would a password.

## Manage API keys

### Generate an API key

Generating an **API key** is very simple and allows you to use Hyperline's API or integrations such as Zapier.

As a Hyperline admin:

1. Go to your workspace [Settings](https://app.hyperline.co/app/settings/api), section API
2. Select `+ New API key`
3. Add a name for this key, and select the appropriate scopes (in most cases you'll need read/write access)

<img />

4. Copy the key and store it in a safe space, you won't be able to see it later in Hyperline

<Info>
  API keys are prefixed either with `prod_` or `test_` to easily identify and
  distinguish them between environments.
</Info>

### Use an authentication token

API keys or access tokens must be provided with every API call, specified in the `Authorization` header after a `Bearer` prefix. All requests happen using HTTPS.

For example:

```sh theme={null}
curl -H "Authorization: Bearer <API key or access token>" https://api.hyperline.co/v1/customers
```

<Note>
  We also support HTTP Basic Authentication, where the `username` is the API key
  and the `password` is left blank, but we recommend using Bearer Authentication
  because it's simpler for debugging.
</Note>

### Keep your data safe

Your API keys should be treated as **highly sensitive information** - think of a token like a password. You should only give tokens to services you fully trust.

If leaked, tokens could be used maliciously - they can provide someone with access to all of your Hyperline data. If you suspect a token has been compromised, revoke it and replace it with a new one.

<Warning>
  Tokens should never be shared with support teams or your customers.
</Warning>

### Revoke a key

Workspace admins can permanently revoke tokens from the [API Settings](https://app.hyperline.co/app/settings/api) in Hyperline.

To revoke a token, select the `…` icon on the line of the key name, then `Delete` to permanently delete it. A deleted key cannot be recovered.


# Dates & timezones
Source: https://docs.hyperline.co/api-reference/docs/dates-and-timezones

Understand how Hyperline represents dates, datetimes, and timezones across the API — ISO 8601 formatting, UTC defaults, and billing-cycle conventions.

All dates in the Hyperline API are handled in UTC (Coordinated Universal Time). When sending dates to the API, you must convert your local timezone dates to UTC. Similarly, all dates returned by the API will be in UTC format.

## Working with customer timezones

When creating subscriptions for customers in specific timezones, you'll need to convert the desired local time to UTC before sending it to the API.

### Examples

Let's say you want to create a subscription that starts at midnight (00:00) in Paris timezone (Europe/Paris):

```javascript theme={null}
// Example 1: January 1st, 2024 at 00:00 Paris time
// Paris is UTC+1 in winter, so we need to convert to UTC (23:00 previous day)
"2023-12-31T23:00:00Z"

// Example 2: July 1st, 2024 at 00:00 Paris time
// Paris is UTC+2 in summer (due to daylight saving), so we need to convert to UTC (22:00 previous day)
"2024-06-30T22:00:00Z"
```

Note that the `Z` suffix in the date string indicates that the timestamp is in UTC.

## Best practices

* Always use ISO 8601 format for dates
* Include the UTC indicator (`Z`) in your timestamps
* Consider daylight saving time when converting from local timezones
* Use a reliable date library (like `date-fns` or `luxon`) to handle timezone conversions


# Error handling
Source: https://docs.hyperline.co/api-reference/docs/error-handling

Handle Hyperline API errors safely: HTTP status codes, error response payloads, validation failures, retry guidance, and common troubleshooting.

The Hyperline API uses conventional HTTP response codes to indicate the success or failure of an API request. This page details how to handle errors effectively and what to expect in error responses.

## HTTP status codes

The API uses standard HTTP status codes to indicate the success or failure of requests:

* **2xx Success**: The request was successful
* **4xx Client error**: The request was invalid or cannot be processed
* **5xx Server error**: An internal server error occurred

## Error response format

When an error occurs, the API returns a JSON response with a `message` property containing a human-readable description of the error:

```json theme={null}
{
  "message": "The requested resource was not found"
}
```

## Common error codes

### 400 Bad request

The request was malformed or contains invalid parameters.

```json theme={null}
{
  "message": "Cannot assign a subscription to a customer without a currency set"
}
```

Common validation errors include:

* Missing required fields
* Invalid parameter values

### 401 Unauthorized

The request lacks valid authentication credentials.

```json theme={null}
{
  "message": "Missing authentication token"
}
```

### 404 Not found

The requested resource was not found.

```json theme={null}
{
  "message": "Product not found"
}
```

### 429 Too many requests

The request rate limit has been exceeded. See [Rate limiting](./rate-limiting) for more details.

## Getting help

If you encounter an error that you cannot resolve, please:

1. Check the error message for guidance
2. Verify your request format and parameters
3. Ensure your authentication credentials are valid
4. Contact our support team with the error details and request information


# Getting started with the Hyperline API
Source: https://docs.hyperline.co/api-reference/docs/getting-started

Start building with the Hyperline API: create your API key, make your first request, explore key endpoints, and integrate billing into your product.

We offer a complete set of resources — APIs, a webhook system, low-code solutions, and developer tools — to help you build a full technical integration. Our main principle is to minimize the technical workload on your end and abstract away the complexities of managing a billing system, so you can focus on delivering your core product value.

The Hyperline API follows REST principles and uses JSON-encoded data payloads. It adheres to industry standards and delivers a user-friendly interface, with straightforward operations, detailed error messages, and predictable behavior.

<Tip>
  **Sandbox environment**

  Hyperline provides a test mode (sandbox environment) where no real money or banking operations are involved. This allows you to test flows without affecting your live data or interacting with the banking networks.

  Sandbox does not block outbound emails. Actions that send customer or account emails in production can send emails from sandbox to the configured addresses, so use internal or dedicated test addresses.

  To do this, you can switch on the **test mode** option on your Hyperline account.
</Tip>

## Not a developer?

Hyperline offers plenty of options to get started with pricing and billing capabilities without any code implementation.

For this, you can check out our [product documentation](../../docs).

## OpenAPI specification

The Hyperline API is fully documented using the OpenAPI specification. You can retrieve the complete OpenAPI file to generate client libraries, import into API testing tools, or integrate with your development workflow at: [https://api.hyperline.co/openapi](https://api.hyperline.co/openapi).

## Services endpoints

### Production environment

| Service              | Base URL                                                     |
| -------------------- | ------------------------------------------------------------ |
| Main API             | [https://api.hyperline.co](https://api.hyperline.co)         |
| Events ingestion API | [https://ingest.hyperline.co](https://ingest.hyperline.co)   |
| MCP server           | [https://api.hyperline.co/mcp](https://api.hyperline.co/mcp) |
| Browser application  | [https://app.hyperline.co](https://app.hyperline.co)         |

### Sandbox environment (test mode)

| Service              | Base URL                                                                     |
| -------------------- | ---------------------------------------------------------------------------- |
| Main API             | [https://sandbox.api.hyperline.co](https://sandbox.api.hyperline.co)         |
| Events ingestion API | [https://sandbox.ingest.hyperline.co](https://sandbox.ingest.hyperline.co)   |
| MCP server           | [https://sandbox.api.hyperline.co/mcp](https://sandbox.api.hyperline.co/mcp) |
| Browser application  | [https://sandbox.app.hyperline.co](https://sandbox.app.hyperline.co)         |


# Idempotent requests
Source: https://docs.hyperline.co/api-reference/docs/idempotent-requests

Safely retry Hyperline API requests using idempotency keys to avoid duplicate operations across customer, subscription, and payment endpoints.

The Hyperline API supports idempotency, allowing you to safely retry requests without accidentally performing the same operation twice. This is especially useful when a network error or timeout prevents you from knowing whether a request succeeded.

## How it works

Pass a unique `Idempotency-Key` header with any mutating request (`POST`, `PUT`, `PATCH`). If the request succeeds, Hyperline caches the response for **24 hours**. Any subsequent request with the same key returns the cached response instead of re-executing the operation.

```
POST /v1/invoices
Idempotency-Key: a8098c1a-f86e-11da-bd1a-00112444be1e
```

## Generating idempotency keys

Use a V4 UUID or any sufficiently random string (at least 16 characters). The key must be unique per **operation intent** — generate a new key for each distinct operation.

```javascript theme={null}
const { randomUUID } = require("crypto");

const response = await fetch("https://api.hyperline.co/v1/invoices", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${apiKey}`,
    "Idempotency-Key": randomUUID(),
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ customer_id: "cus_123", ... }),
});
```

## Behavior

| Scenario                                        | Result                                        |
| ----------------------------------------------- | --------------------------------------------- |
| First request with a key                        | Executes normally, caches response            |
| Retry with same key and same body               | Returns cached response (no re-execution)     |
| Request with same key but different body or URL | Returns `417 Expectation Failed`              |
| Concurrent requests with the same key           | Returns `409 Conflict` for the second request |

## Error responses

**409 Conflict - Request in progress**

A request with the same idempotency key is currently being processed. Wait for the original request to complete before retrying.

**417 Expectation Failed - Intent mismatch**

A completed request exists for this key, but the new request has a different method, URL, or body. This usually means you accidentally reused a key for a different operation. Generate a new key for the new request.

## Best practices

* **Generate keys client-side** before sending the request, so retries reuse the same key.
* **One key per operation** — do not reuse a key for logically different requests.
* **Retry on network errors** — if a request times out, retry with the same key. The operation will not be duplicated.
* **Do not retry on 4xx errors** (except 409/429) — these indicate a problem with your request that retrying won't fix.

## Supported endpoints

Idempotency keys are accepted on all mutating endpoints (`POST`, `PUT`, `PATCH`). They are ignored on `GET` requests since those are already safe to retry.


# Pagination and filtering
Source: https://docs.hyperline.co/api-reference/docs/pagination

Paginate and filter Hyperline API list endpoints with cursor-based pagination, page sizes, and per-endpoint filter parameters for efficient queries.

All list requests can be paginated and filtered using the same query format. For convenience, we've made sure all *list-based* endpoints return data with the same structure.

## Pagination

We're using 2 parameters for pagination:

* `take` is the number of items the API will return, default is **50**, max is **100**
* `skip` is the number of items the API will skip, default is **0**

So if you want to get the first 50 items of a list, you don't need any parameters. If you need items from the 350th to the 425th, you'll use `take=75` and `skip=350`.

Here's an example with the customer list:

```sh theme={null}
curl --request GET \
  --url 'https://api.hyperline.co/v1/customers?take=10&skip=10' \
  --header 'Authorization: Bearer <token>'
```

The API will always return a similarly shaped payload containing:

* `data` the items you requested
* `meta` the contextual information (total number of items, number selected...)

For instance for customers:

```json theme={null}
{
  "meta": {
    "total": 2,
    "taken": 2,
    "skipped": 0
  },
  "data": [
    {
      "id": "cus_3fhwCWcL0Rx5MQ"
      // other properties
    },
    {
      "id": "cus_9huL9ahn7KQqHo"
      // other properties
    }
  ]
}
```

## Sorting

Some list endpoints support sorting results using the `sort` and `order` query parameters:

* `sort` specifies the field to sort by (e.g., `created_at`, `emitted_at`)
* `order` specifies the sort direction: `asc` (ascending) or `desc` (descending)

For example:

```sh theme={null}
curl --request GET \
  --url 'https://api.hyperline.co/v1/invoices?sort=emitted_at&order=desc' \
  --header 'Authorization: Bearer <token>'
```

<Note>
  Not all list endpoints support sorting. Refer to each endpoint's documentation to see which sort fields are available.
</Note>

## Filtering

Our API is offering many filtering capabilities so you can always find what you're looking for. Filters are passed as query parameters using a common pattern.

`fieldName__operator=value`

For instance:

* `GET /v1/customers?name__contains=instagram` will return all customers with the name containing instagram
* `GET /v1/customers?id__in=123,456,789` will return customers with ID equal to 123, 456, or 789

## List of available operators

* `equals` (or just `<field>=xxx`)
* `not`
* `lt`
* `lte`
* `gt`
* `gte`
* `contains`
* `startsWith`
* `endsWith`
* `in`
* `notIn`
* `isNull`
* `isNotNull`

Numerical operators can be applied to numbers or dates.

<Warning>
  Not all fields can be filtered, please refer to each model in the API Reference to see which ones are available.
</Warning>


# Rate limiting
Source: https://docs.hyperline.co/api-reference/docs/rate-limiting

Understand Hyperline API rate limits, response headers, and best practices to handle 429 responses with retries and exponential backoff strategies.

Our API implements rate limiting to ensure fair usage and protect the system from abuse. This page details our rate limiting policies and how to handle them effectively.

## Rate limits

### Core API

| Operation type                   | Limit | Window     |
| -------------------------------- | ----- | ---------- |
| Read (GET)                       | 200   | 10 seconds |
| Write (POST, PUT, PATCH, DELETE) | 50    | 10 seconds |

### Events ingestion API

The events ingestion API has separate rate limits:

| Operation type | Limit | Window     |
| -------------- | ----- | ---------- |
| All requests   | 1,000 | 10 seconds |

Additionally, the following payload size limits apply:

* **`POST /v1/events/batch`**: maximum of 5,000 events per request
* **`DELETE /v1/events`**: maximum of 5,000 event IDs per request

## Rate limit headers

API responses include the following rate limit headers:

* `X-RateLimit-Limit`: The maximum number of requests allowed in the current window
* `X-RateLimit-Remaining`: The number of requests remaining in the current window
* `X-RateLimit-Reset`: The date and time when the rate limit window resets
* `Retry-After`: The minimum number of seconds to wait before retrying (only when the limit has been reached)

## Handling rate limits

When you exceed the rate limit, the API will return a **429 Too Many Requests** HTTP status code. The response body will be:

```json theme={null}
Too many requests
```

### Best practices

1. **Monitor rate limits**: Track the `X-RateLimit-Remaining` header to anticipate when you're approaching the limit
2. **Implement backoff**: When you receive a 429 response:
   * Wait until the date specified in the `X-RateLimit-Reset` header
   * Consider implementing exponential backoff for retries
3. **Batch requests**: When possible, combine multiple operations into a single request
4. **Caching**: Cache responses when appropriate to reduce the number of API calls

## Example response headers

Rate limit not exceeded:

```text theme={null}
HTTP/1.1 200 OK
X-RateLimit-Limit: 200
X-RateLimit-Remaining: 150
X-RateLimit-Reset: 2025-04-15T10:18:08.107Z
```

Rate limit exceeded:

```text theme={null}
HTTP/1.1 429 Too Many Requests
X-RateLimit-Limit: 200
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 2025-04-15T10:18:08.107Z
Retry-After: 5
```

## Custom rate limits

If your application requires higher rate limits, please contact our support team. We'll work with you to establish appropriate limits based on your use case.


# React components
Source: https://docs.hyperline.co/api-reference/docs/react-components

Embed Hyperline checkout, customer portal, and payment method components directly in your React application with the official React SDK.

Hyperline provides built-in React components to:

* Display a customer's subscriptions
* Preview and update the payment method
* List and download invoices
* List and update billing information

<Frame>
  <img />
</Frame>

<Frame>
  <img />
</Frame>

This doc assumes that you already have a basic working knowledge of [React](https://react.dev/) and that you have already set up a React project.

## Getting started

<Steps>
  <Step title="Install the dependency">
    First install the `@hyperline/react-components` NPM package.

    ```sh Install the package theme={null}
    npm install @hyperline/react-components
    ```
  </Step>

  <Step title="Create an auth token">
    To allow a customer to see their Hyperline data, you need to generate a unique authentication token on your server side. You can use our API and the [create auth token endpoint](../../api-reference/endpoints/integrations/create-component-token) for this.

    ```sh cURL theme={null}
    curl -X POST 'https://api.hyperline.co/v1/integrations/components/token' \
      -H 'Content-Type: application/json' \
      -H 'Authorization: Bearer <API key>' \ # You can create an [api key here](https://app.hyperline.co/app/settings/api)
      -d '{ "customer_id": "<customer ID>" }'
    ```
  </Step>

  <Step title="Integrate the React components">
    Then, integrate the React components. You will most likely generate a new token every time your customer accesses the page.

    ```ts theme={null}
    import { Subscriptions, PaymentMethod } from "@hyperline/react-components";

    export default function HyperlineSubscriptions() {
      return (
        <Subscriptions
          options={{
            token: "<YOUR AUTH TOKEN>",
            mode: "production" // if you're using our sandbox, set "sandbox" here
            locale: "en" // optional
          }}
        />
      );
    }

    export default function HyperlinePaymentMethod() {
      return (
        <PaymentMethod
          options={{
            token: "<YOUR AUTH TOKEN>",
            mode: "production" // if you're using our sandbox, set "sandbox" here
            locale: "en" // optional
          }}
          onPaymentMethodCreated={() => do something} // optional, from 0.2.20
          onPaymentMethodDeleted={() => do something} // optional, from 0.2.20
        />
      );
    }
    ```
  </Step>
</Steps>

<Frame>
  <img />
</Frame>

<Frame>
  <img />
</Frame>

## Components

### Subscriptions

List all active subscriptions

```tsx theme={null}
<Subscriptions
  options={{
    token: "<token>"
  }}
/>
```

### Subscription

Display a subscription by ID

```tsx theme={null}
<Subscription
  id="sub_xxxx"
  options={{
    token: "<token>"
  }}
/>
```

### InvoicesList

List and download all invoices and refunds

```tsx theme={null}
<InvoicesList
  options={{
    token: "<token>"
  }}
/>
```

### PaymentMethod

Display the current payment method, delete it if allowed, or add a new payment method

```tsx theme={null}
<PaymentMethod
  options={{
    token: "<token>"
  }}
/>
```

### CustomerBillingInfoForm

Display a form with all billing info, with an optional callback when the form has been successfully saved.

```tsx theme={null}
<CustomerBillingInfoForm
  onSuccess={() => {}}
  options={{
    token: "<token>"
  }}
/>
```

## Component options

When using the components, you will need to provide an `options` prop with the following parameters:

| Name       | Description                               | Type                  | Default value | Required |
| ---------- | ----------------------------------------- | --------------------- | ------------- | -------- |
| token      | The token specific to your customer       | string                |               | ☑️       |
| mode       | Which Hyperline environment are you using | production \| sandbox | production    |          |
| appearance | Customise the appearance of the component | Object                |               |          |

### Appearance

You can change the colors and fonts of the component.

```tsx theme={null}
<Subscriptions
  options={{
    token: "<token>",
    appearance: {
      variables: {
        borderRadius: "10px",
        colorBackground: "#000000",
        colorPrimary: "#e1e2f3",
        colorPrimaryHover: "#d0d1e5",
        colorPrimaryDisabled: "#667",
        colorBorder: "#445",
        colorText: "#f1f2f3",
        colorTextSecondary: "#dededf",
        fontFamily: "sacramento"
      },
      fonts: [
        {
          src: "url(https://fonts.gstatic.com/s/sacramento/v13/buEzpo6gcdjy0EiZMBUG4C0f_f5Iai0.woff2)",
          family: "sacramento"
        }
      ]
    }
  }}
/>
```

<Frame>
  <img />
</Frame>

### Variables

They are meant to customise all elements at once.

| Variable name          | Description                                                                                                        |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------ |
| `borderRadius`         | Change the roundness of the elements: Buttons, tables, ...                                                         |
| `colorBackground`      | Most elements have a transparent background. In other cases, you can customise the background color of the element |
| `colorPrimary`         | Color used for buttons and accent text                                                                             |
| `colorPrimaryHover`    | Hover color for buttons                                                                                            |
| `colorPrimaryDisabled` | Color of disabled buttons                                                                                          |
| `colorBorder`          | The color of all our regular borders                                                                               |
| `colorText`            | Default text color                                                                                                 |
| `colorTextSecondary`   | Text color of secondary text                                                                                       |
| `fontFamily`           | Font used. If you need to import a font, please read the next section                                              |

### Fonts

Set your application's font.

* `src` Url of the font file
* `family` Name of the font - this is the name you'll use for the `fontFamily` variable

```ts theme={null}
<Subscriptions
  options={{
    fonts: [
      {
        src: "url(https://fonts.gstatic.com/s/sacramento/v13/buEzpo6gcdjy0EiZMBUG4C0f_f5Iai0.woff2)",
        family: "sacramento"
      }
    ]
  }}
/>
```


# Third-party app
Source: https://docs.hyperline.co/api-reference/docs/third-party-app

Build a third-party app that connects to multiple Hyperline accounts via OAuth, with scoped permissions and secure token-based authorization.

Hyperline supports the creation of external integrations, so your product can connect with any Hyperline account.

This capability allows external apps to build use-cases such as:

* Automating or white-labeling billing-specific needs
* Allowing your app to view the data of a Hyperline account
* Enabling your app to manage the customer base of a Hyperline account
* Allowing your app to manage the product catalog of a Hyperline account
* Allowing your app to manage recurring subscriptions or one-time payments of a Hyperline account
* Fetching invoices from a Hyperline account

This list is non-exhaustive and a variety of flows can be built leveraging this kind of app.

## Getting started

Hyperline uses the **OAuth** standard to allow your app to access data from a connected account with the user's consent. This prevents having to manually exchange API keys. For example, with the user's consent, using OAuth you can call the subscription API on behalf of your user to create a Hyperline subscription.

Our API supports the Authorization Code Grant flow ([RFC 6749 section 4.1](https://datatracker.ietf.org/doc/html/rfc6749#section-4.1)), which allows your application to get separate access tokens for each connected Hyperline account.

We recommend using a well-established library for making OAuth requests. You can find some recommendations [here](https://oauth.net/code/).

## Registering your app

### Prerequisites

The third-party app creation capability is granted manually by Hyperline. Please contact our support if you are interested and want to enable it.

### Creating an app

The first thing you need to do is [create a new app](../../api-reference/endpoints/third-party-apps/create-app) using the Apps API. You will receive a Client ID and Client Secret, both of which should be kept secret. These credentials can be used to:

1. Redirect users to your app's authorization form (Client ID)
2. Exchange auth codes for access tokens (Client ID & Client Secret)
3. Renew your access tokens
4. Deauthorize users from your app (Client ID & Client Secret)

Use the create new app API, including the following attributes in a JSON body:

* `name`: displayed to the user during the authorization flow
* `description` (optional): to show more details to the user
* `logo_uri` (optional): to customise the authorization screen with your brand
* `callbacks`: URLs whitelisted to use as a callback/redirect after authorization (e.g. a URL within your app that processes authorizations)

For now, apps can only be managed (listed, updated, deleted) using our API.

## OAuth flow

<Steps>
  <Step title="Authorize">
    To initiate the flow, you need to direct your user to [`https://api.hyperline.co/v1/oauth/authorize`](../endpoints/oauth2/authorize) (or `https://sandbox.api.hyperline.co/v1/oauth/authorize`). You must append these four query parameters to the URL:

    * `client_id`: received upon app registration
    * `redirect_uri`: where the user will be sent after authorization, it must match the URL you set when registering your app
    * `response_type=code`: the only supported mode at the moment
    * `state`: a random string to prevent CSRF attacks that you verify when the user returns to your app - [more information](https://auth0.com/docs/secure/attack-protection/state-parameters)

    This endpoint will redirect the user to the Hyperline login page.
  </Step>

  <Step title="Retrieve tokens">
    After authorization, the user is redirected to your `redirect_uri` with the `code` and `state` query parameters. You must ensure that the query parameter `state` matches the original state you passed at the start of the flow.

    If it does, you can exchange the provided code for tokens by making a POST request to [`https://api.hyperline.co/v1/oauth/tokens`](../endpoints/oauth2/generate-tokens) (`https://sandbox.api.hyperline.co/v1/oauth/tokens`), including the following attributes in a JSON body:

    * `client_id`: as above
    * `client_secret`: received upon app registration
    * `grant_type: "authorization_code"`
    * `code`: as provided in the query parameters
    * `redirect_uri`: must match the value set at the `1. Authorize` step

    You'll then receive tokens in the JSON body:

    ```json Response JSON body theme={null}
    {
      "access_token": "<token>",
      "refresh_token": "<token>",
      "expires_in": 3600,
      "token_type": "bearer"
    }
    ```
  </Step>

  <Step title="Use tokens">
    Access tokens must be provided with every API call, specified in the `Authorization` header after a Bearer prefix. For example:

    ```sh API call using cURL theme={null}
    curl -H "Authorization: Bearer <access token>" https://api.hyperline.co/v1/customers
    ```
  </Step>
</Steps>

### Token expiration

Access tokens are time limited — you need to refresh them periodically using the refresh token. The time limits are listed below.

* Access token: 24h
* Refresh token: does not expire automatically (can be revoked)

You can use the `expires_in` field to know the number of seconds left before the app access token expires. Be sure to renew it before this reaches zero.

## Managing tokens

### Refresh a token

If you wish to renew an access token, you can make a POST request to [`https://api.hyperline.co/v1/oauth/tokens`](../endpoints/oauth2/generate-tokens) (or `https://sandbox.api.hyperline.co/v1/oauth/tokens`), including the following attributes in a JSON body:

* `client_id`: received upon app registration
* `client_secret`: received upon app registration
* `grant_type: "refresh_token"`
* `refresh_token`: received during the first authorization flow

### Revoke a token

Once issued, access tokens cannot be revoked in the same way as cookies with session IDs for server-side sessions. As a result, tokens should be refreshed periodically if the user remains active.

You can revoke refresh tokens in case they become compromised. Simply make a POST request to [`https://api.hyperline.co/v1/oauth/revoke`](../endpoints/oauth2/revoke-token) (or `https://sandbox.api.hyperline.co/v1/oauth/revoke`), including the following attributes in a JSON body:

* `client_id`: received upon app registration
* `client_secret`: received upon app registration
* `token`: refresh token you want to revoke

## Multiple accounts

<Note>
  Learn about [multiple accounts](../../docs/getting-started/sandbox#multiple-accounts) on Hyperline.
</Note>

Each access token grants access to all companies associated with the user. To retrieve a list of all user-accessible companies, utilize the [`https://api.hyperline.co/v1/companies`](../endpoints/companies/list-companies) endpoint.

For targeting a particular company, include the `Hyperline-CompanyId` header in each API request.

<Warning>
  If a user has access to multiple companies and you don't specify the `Hyperline-CompanyId` header, the first company (oldest one) linked to the user will be used.

  We advise including this header by default when constructing a third-party app/flow.
</Warning>


# API upgrades
Source: https://docs.hyperline.co/api-reference/docs/upgrades

Track Hyperline API changes, deprecations, and upgrades — see what's changed across versions and plan migrations for breaking changes safely.

## August 4, 2026

* Added `volume` and `bulk` options on `Product.price_configurations[].type` for credit products on `/v1/products` GET, POST and `/v1/products/{id}` GET, PUT endpoints

## August 3, 2026

* Added `phase_duration` option on `Subscription.phases[].products[].metering_interval_type` on `/v2/subscriptions/{id}` PUT endpoint

## July 31, 2026

* Added `/v1/price-configurations/{id}` GET endpoint
* Added `Product.price_configurations[].integrations` on `/v1/products` GET, POST and `/v1/products/{id}` GET, PUT endpoints

## July 29, 2026

* Added `ES-CE` and `ES-ML` country code options to customer, invoicing entity, organisation, product price configuration, and subscription template fields

## July 28, 2026

* Added `/v1/taxes/rates` POST endpoint
* Added `/v1/taxes/rates/{id}` PATCH endpoint
* Added `/v1/taxes/rates/{id}` DELETE endpoint

## July 22, 2026

* Added `CustomProperty.required` on `/v1/custom-properties` GET, POST and `/v1/custom-properties/{id}` PUT endpoints

## July 21, 2026

* Added `/v1/features/{code}` DELETE endpoint

## July 20, 2026

* Added `/v1/customers/{id}/arr-history` GET endpoint
* Added `/v1/subscriptions/{id}/arr-history` GET endpoint

## July 17, 2026

* Added `Coupon.deleted_at` on `/v1/coupons` and `/v1/coupons/{id}` GET endpoints
* <span>Deprecation warning</span>
  * Deprecating `Coupon.deletedAt` in favor of `Coupon.deleted_at` on `/v1/coupons/{id}` GET endpoint. The `deletedAt` field will be removed in a future version.

## July 15, 2026

* Added `/v1/products/{id}` DELETE endpoint
* Added `subscription_template_id` and `invoicing_entity_id` approval condition fields on `/v1/approvals/workflows` GET, POST and `/v1/approvals/workflows/{id}` GET, PUT endpoints

## July 10, 2026

* Added `Customer.domain` on `/v1/customers` GET, POST endpoints
* Added `Customer.domain` on `/v1/customers/{id}` GET, PUT endpoints
* Added `Customer.domain` on `/v1/customers/batch` POST endpoint
* Added `Customer.domain` on `/v2/customers` GET endpoint

## July 9, 2026

* Added `Product.accounting[].integrations` on `/v1/products` GET, POST endpoints
* Added `Product.accounting[].integrations` on `/v1/products/{id}` GET, PUT endpoints

## July 8, 2026

* Added `Quote.crm_opportunity_id` on `/v1/quotes/{id}` PATCH endpoint

## July 7, 2026

* Added `/v1/invoices/send-email` POST endpoint
* Added `Subscription.phases[].products[].children_usage_aggregation` on `/v2/subscriptions` GET endpoint
* Added `Subscription.phases[].products[].children_usage_aggregation` on `/v2/subscriptions/{id}` GET, PUT endpoints

## July 3, 2026

* Added `Product.credits_grant_mode` on `/v1/products` GET, POST endpoints
* Added `Product.credits_grant_mode` on `/v1/products/{id}` GET, PUT endpoints

## July 2, 2026

* Added `/v1/bank-accounts/{id}/transactions` GET endpoint

## June 30, 2026

* Added `quote.activated` webhook
* Added `credit_balances` option on `CreateExport.name` on `/v1/exports` POST endpoint

## June 23, 2026

* Added `Subscription.phases[].name` on `/v2/subscriptions/{id}` GET endpoint
* Added `SubscriptionPhase.name` on `/v2/subscriptions/{id}/phases` GET endpoint
* Added `SubscriptionPhase.name` on `/v2/subscriptions/{id}/phases/{phaseId}` GET endpoint

## June 19, 2026

* Added `/v1/quotes/templates` GET endpoint
* Added `/v1/quotes/templates/{id}` GET endpoint

## June 18, 2026

* Added `/v1/approvals/workflows` GET endpoint
* Added `/v1/approvals/workflows` POST endpoint
* Added `/v1/approvals/workflows/{id}` GET endpoint
* Added `/v1/approvals/workflows/{id}` PUT endpoint
* Added `/v1/approvals/workflows/{id}` DELETE endpoint

## June 17, 2026

* Added `/v1/catalog/versions` GET endpoint
* Added `/v1/catalog/versions/draft` GET endpoint
* Added `/v1/catalog/versions/draft` POST endpoint
* Added `/v1/catalog/versions/draft/publish` POST endpoint
* Added `/v1/catalog/versions/draft` DELETE endpoint
* Added `/v1/catalog/versions/{id}` GET endpoint
* Added `/v1/catalog/versions/{id}/revert` POST endpoint
* Added `/v1/catalog/export` GET endpoint
* Added optional `name` and `description` payload fields on `/v1/catalog/versions/draft` POST endpoint
* Added `CatalogSnapshot.format`, `CatalogSnapshot.sourceClientId`, `CatalogSnapshot.exportedAt`, `CatalogSnapshot.checksum`, `CatalogSnapshot.trackedEntityTypes`, and `CatalogSnapshot.resources` on `/v1/catalog/export` GET endpoint
* Added wallet debit deletion support on `/v1/invoices/{id}/transactions/{transactionId}` DELETE endpoint
* Added `netsuite` option on `provider_name` for `/v1/customers/providers-bulk-update` POST endpoint
* Added `Product.price_configurations[].price_book_id` support on `/v1/products` POST endpoint

## June 16, 2026

* Added `contract_clause_ids` on `/v1/quotes` POST endpoint
* Added `contract_clause_ids` on `/v1/quotes/{id}` PATCH endpoint
* Added `cancellation_reason` on `subscription.cancellation_scheduled` and `subscription.cancelled` webhook payloads

## June 15, 2026

* Added `/v1/quotes/{id}/duplicate` POST endpoint

## June 13, 2026

* Added `payment_method_status`, `smart_segment.payment_risk`, `paid_invoice_count`, `paid_late_invoice_count`, `late_payment_rate`, and `average_late_payment_delay_days` segment condition fields on `/v1/customers/segments` GET, POST, PATCH endpoints

## June 11, 2026

* Added `Product.integrations` on `/v1/products` GET, POST endpoints
* Added `Product.integrations` on `/v1/products/{id}` GET, PUT endpoints
* Added `Coupon.integrations` on `/v1/coupons` GET, POST endpoints
* Added `Coupon.integrations` on `/v1/coupons/{id}` GET, PUT endpoints
* Added `SubscriptionCoupon.integrations` on `/v2/subscriptions` GET endpoint
* Added `SubscriptionCoupon.integrations` on `/v2/subscriptions/{id}` GET endpoint

## June 9, 2026

* Added `/v1/quotes/{id}/finalize` POST endpoint
* Added `last_renewal` option on `SubscriptionTransition.application_schedule` on `/v2/subscriptions/transitions` POST endpoint
* Added `last_renewal` option on `SubscriptionTransition.application_schedule` on `/v2/subscriptions/transitions` GET endpoint
* Added `last_renewal` option on `SubscriptionTransition.application_schedule` on `/v2/subscriptions/transitions/{id}` GET endpoint
* Added `WalletTransaction.comment` on `/v1/wallets/{id}/transactions` GET endpoint
* Added `comment`, `bank_account_id`, and `reference` on `/v1/wallets/{id}/load` POST endpoint for paid wallet loads
* Added `type` on `/v1/wallets/{id}/load` POST endpoint to distinguish paid and free wallet loads
* Added `Aggregator.operation` `sql_formula` option on `/v1/aggregators` GET endpoint
* Added `Aggregator.operation` `sql_formula` option on `/v1/aggregators/{id}` GET endpoint
* Added `Aggregator.formula_sql` on `/v1/aggregators` GET endpoint
* Added `Aggregator.formula_sql` on `/v1/aggregators/{id}` GET endpoint
* Added `Aggregator.unit_name` on `/v1/aggregators` GET, POST, PUT endpoints
* Added `Product.aggregator.formula_sql` and `Product.aggregator.unit_name` on `/v1/products` GET endpoint
* Added `Product.unit_name` support on `/v1/products` POST endpoint for seat, dynamic, and credit products

## June 3, 2026

* Added `Customer.taxability` on `/v1/customers` GET, POST endpoints
* Added `Customer.taxability` on `/v1/customers/{id}` GET, PUT endpoints

## June 2, 2026

* Added `/v1/audit-logs` GET endpoint

## June 1, 2026

* Added `/v1/features` GET endpoint
* Added `/v1/features/{code}` GET endpoint
* Added `/v1/features` POST endpoint
* Added `/v1/features/{code}` PUT endpoint
* Added `/v1/features/{code}/archive` PUT endpoint
* Added `/v1/features/{code}/unarchive` PUT endpoint
* Added `/v1/products/{id}/features` GET endpoint
* Added `/v1/products/{id}/features/{code}` PUT endpoint
* Added `/v1/products/{id}/features/{code}` DELETE endpoint
* Added `/v1/customers/{id}/features` GET endpoint
* Added `/v1/customers/{id}/features/{code}` PUT endpoint
* Added `/v1/customers/{id}/features/{code}` DELETE endpoint

## May 31, 2026

* Added one-off quote creation with `invoice` payload on `/v1/quotes` POST endpoint
* Added one-off quote update with `invoice` payload on `/v1/quotes/{id}` PATCH endpoint
* Added `Quote.type` `one_off` option on `/v1/quotes` GET endpoint
* Added `Quote.type` `one_off` option on `/v1/quotes/{id}` GET endpoint
* Added `Quote.invoice_id` on `/v1/quotes` GET endpoint for one-off quotes
* Added `Quote.invoice_id` on `/v1/quotes/{id}` GET endpoint for one-off quotes
* Added `Coupon.repeat` `duration` option on `/v1/coupons` GET, POST endpoints
* Added `Coupon.repeat` `duration` option on `/v1/coupons/{id}` GET, PUT endpoints
* Added `Coupon.duration` on `/v1/coupons` GET, POST endpoints
* Added `Coupon.duration` on `/v1/coupons/{id}` GET, PUT endpoints
* Added `duration_count` and `duration_period` on `/v1/promotion-codes` POST endpoint

## May 29, 2026

* Added `/v1/transactions/{id}/refund` POST endpoint

## May 27, 2026

* <span>Major</span>
  * Added a hard cap to offset pagination on `/v1/customers` GET and `/v1/invoices` GET endpoints. Requests with `skip + take` greater than `10000` now return `400`; use `/v2/customers` GET or `/v2/invoices` GET cursor pagination for deeper queries.
  * Draft quote subscription configuration can no longer be updated with `/v2/subscriptions/{id}` PUT endpoint. Use `/v1/quotes/{id}` PATCH endpoint with the `subscription` payload instead.
* Added `/v1/quotes/{id}` PATCH endpoint
* Added `/v1/aggregators/{id}/usage` GET endpoint
* Added `/v1/aggregators/{id}/usage/timeseries` POST endpoint
* Added `/v1/aggregators/{id}/usage/group-by-customer` POST endpoint
* Added `/v1/aggregators/{id}/usage/events` POST endpoint
* Added `/v1/customers/{id}/usage` GET endpoint
* Added `/v1/customers/{id}/usage/{aggregator_id}` GET endpoint
* Added `/v1/customers/{id}/usage/{aggregator_id}/timeseries` POST endpoint
* Added `/v1/customers/{id}/usage/{aggregator_id}/events` POST endpoint

## May 26, 2026

* Added `Invoice.custom_properties` on `/v1/invoices` GET, POST endpoints
* Added `Invoice.custom_properties` on `/v1/invoices/{id}` GET, PATCH endpoints
* Added `Invoice.custom_properties` support on `/v1/invoices/batch` POST endpoint
* Added `Invoice.custom_properties` support on `/v2/invoices/batch` POST endpoint
* Added `/v1/invoices/{id}/events` GET endpoint
* Added `Subscription.cancellation_source` on `/v2/subscriptions` GET endpoint
* Added `Subscription.cancellation_source` on `/v2/subscriptions/{id}` GET endpoint

## May 25, 2026

* Added `/v2/customers` GET endpoint
* Added `/v2/customers/{id}` GET endpoint
* <span>Deprecation warning</span>
  * Deprecating `/v1/customers` GET endpoint in favor of `/v2/customers` GET endpoint
  * Deprecating `/v1/customers/{id}` GET endpoint in favor of `/v2/customers/{id}` GET endpoint

## May 21, 2026

* Added `trigger_refund` and `refund_method` on `/v1/invoices/{id}/credit-notes` POST endpoint
* Added `WalletSettings.credit_note_refund_to_wallet_enabled` on `/v1/wallets/settings` GET, PATCH endpoints. When enabled, credit note refunds default to the customer's wallet when `refund_method` is omitted.

## May 20, 2026

* Added `/v2/invoices` GET endpoint
* Added `/v2/invoices/{id}` GET endpoint
* <span>Deprecation warning</span>
  * Deprecating `/v1/invoices` GET endpoint in favor of `/v2/invoices` GET endpoint
  * Deprecating `/v1/invoices/{id}` GET endpoint in favor of `/v2/invoices/{id}` GET endpoint

## April 16, 2026

* <span>Major</span>
  * Removed `SubscriptionProduct.charging_method` from regular (non-connected) seat products on `/v2/subscriptions` GET endpoint. Field is now only present for connected seat products.
* Added `Subscription.invoice_schedule` on `/v2/subscriptions` GET, POST, PUT endpoints
* Added `SubscriptionProduct.seat_invoicing_schedule` on `/v2/subscriptions` GET, POST, PUT endpoints

## April 15, 2026

* Added `Subscription.products` on `/v2/subscriptions` GET endpoint
* Added `Subscription.coupons` on `/v2/subscriptions` GET endpoint

## April 10, 2026

* Added `/v1/price-books` GET endpoint
* Added `/v1/price-books/{id}` GET endpoint
* Added `/v1/price-books` POST endpoint
* Added `/v1/price-books/{id}` PUT endpoint
* Added `/v1/price-books/{id}` DELETE endpoint
* Added `/v1/price-books/{id}/products` POST endpoint
* Added `/v1/price-books/{id}/products/{productId}` DELETE endpoint
* Added `/v1/users` GET endpoint
* Added `/v1/users/{id}` GET endpoint
* Added `/v1/users/roles` GET endpoint
* Added `/v1/users/roles/{id}` GET endpoint

## April 8, 2026

* Added `Quote.require_tax_id` on `/v1/quotes` GET endpoint
* Added `Quote.require_tax_id` on `/v1/quotes/{id}` GET endpoint
* Added `Quote.require_tax_id` on `/v1/quotes` POST endpoint
* Added `SubscriptionTransition.actor` on `/v2/subscriptions/{id}` GET endpoint
* Added `SubscriptionTransition.actor` on `/v2/subscriptions` GET endpoint
* Added `PriceConfiguration.aggregator_filter_id` on `/v1/price-configurations` GET endpoint
* Added `PriceConfiguration.aggregator_filter.aggregator_id` on `/v1/price-configurations` GET endpoint
* Added `aggregator_filter_id` support on `/v1/products` PUT endpoint for dynamic price configurations

## April 2, 2026

* Added `Customer.segment_ids` on `/v1/customers` GET endpoint
* Added `Customer.segment_ids` on `/v1/customers/{id}` GET endpoint

## March 30, 2026

* Added `Aggregator.thresholds` on `/v1/aggregators` GET, POST, PUT endpoints
* Added `Aggregator.default_interval_count` on `/v1/aggregators` GET, POST, PUT endpoints
* Added `Aggregator.default_interval_period` on `/v1/aggregators` GET, POST, PUT endpoints

## March 20, 2026

* <span>Major</span>
  * Changed `PaymentMethod.last_4_digits` from number to string on `/v1/customers/{id}/payment-methods` GET endpoint
  * Changed `PaymentMethod.last_4_digits` from number to string on `/v1/customers/{id}/payment-methods/{paymentMethodId}` GET endpoint
  * Changed `PaymentMethod.last_4_digits` from number to string on `/v1/customers/{id}/payment-methods` POST endpoint
* Added `Subscription.custom_properties` on `/v2/subscriptions/{id}` PUT endpoint
* Added `Provider.slug` on provider endpoints

## March 19, 2026

* <span>Major</span>
  * Changed `Quote.display_price_tiers` from boolean to enum on `/v1/quotes` GET, POST endpoints. Accepts `all`, `matching`, or `none`. Boolean values are still accepted for backward compatibility (`true` → `all`, `false` → `matching`)

## March 18, 2026

* Added `/v1/subscriptions/{id}/valuation` GET endpoint
* Added `/v1/quotes/{id}/valuation` GET endpoint
* Added `/v1/customers/{id}/valuation` GET endpoint

## February 18, 2026

* Added `Transaction.integrations` on `/v1/invoices` GET endpoint
* Added `Transaction.integrations` on `/v1/invoices/{id}` GET endpoint
* Added `Transaction.integrations` on `/v1/invoices` POST endpoint
* Added `Transaction.integrations` on `/v2/invoices/simulate` POST endpoint
* Added `sort` and `order` query params on `/v1/invoices` GET endpoint (supports `created_at` and `emitted_at`)
* <span>Deprecation warning</span>
  * Deprecating `Transaction.provider_id` in favor of `Transaction.integrations[].entity_id`

## February 10, 2026

* Added `/v2/wallets` GET endpoint
* <span>Major</span> <span>Deprecation warning</span>
  * Deprecating `/v1/wallets` GET endpoint

## February 9, 2026

* Added `/v1/events` GET endpoint
* Added `Invoice.line_items[].original_line_item_id` on `/v1/invoices` GET endpoint
* Added `Invoice.line_items[].original_line_item_id` on `/v1/invoices/{id}` GET endpoint

## February 5, 2026

* Added `/v2/invoices/batch` POST endpoint
* Added `invoice.batch.creation_succeeded`, `invoice.batch.creation_failed` webhooks

## January 29, 2026

* Added `/v1/wallets/{id}/transactions/{transactionId}/revert` POST endpoint
* Added `WalletTransaction.original_transaction_id` on `/v1/wallets/{id}/transactions` GET endpoint
* Added `WalletTransaction.reverted_by` on `/v1/wallets/{id}/transactions` GET endpoint

## January 28, 2026

* Added `Invoice.line_items[].display_unit_amount` on `/v1/invoices` GET, POST endpoints
* Added `Invoice.line_items[].display_unit_amount` on `/v1/invoices/{id}` GET, PATCH endpoints
* Added `Invoice.line_items[].display_service_period` on `/v1/invoices` GET, POST endpoints
* Added `Invoice.line_items[].display_service_period` on `/v1/invoices/{id}` GET, PATCH endpoints

## January 26, 2026

* Added `Customer.custom_payment_initiation_delay` on `/v1/customers` GET, POST endpoints
* Added `Customer.custom_payment_initiation_delay` on `/v1/customers/{id}` GET, PUT endpoints
* Added `InvoicingEntity.registration_number` on `/v1/invoicing-entities` GET, POST endpoints
* Added `InvoicingEntity.registration_number` on `/v1/invoicing-entities/{id}` GET, PUT endpoints

## January 11, 2026

* Added `Subscription.display_quote_value`, `Subscription.display_taxes`, `Subscription.display_price_tiers`, `Subscription.display_phase_value`, `Subscription.display_first_invoice_amount`, `Subscription.display_documents_in_preview`, `Subscription.display_subscription_on_update` on `/v2/subscriptions` GET, POST endpoints

## January 9, 2026

* Added `/v2/subscriptions/transitions` POST endpoint
* Added `/v2/subscriptions/transitions` GET endpoint
* Added `/v2/subscriptions/transitions/{id}` GET endpoint
* Added `/v2/subscriptions/transitions/{id}/cancel` POST endpoint
* Added `subscription_transition.completed` webhook

## December 30, 2025

* Added `auto_load_threshold` field to wallet endpoints

## December 18, 2025

* Added `wallet.low_projected_balance` webhook

## December 11, 2025

* Added `Customer.tax_ids` and `Customer.tax_rate_custom` on `/v1/customers` GET, POST endpoints
* Added `Customer.tax_ids` and `Customer.tax_rate_custom` on `/v1/customers/{id}` GET, PUT endpoints
* Added `Invoice.customer.tax_id` on `/v1/invoices` GET endpoint
* Added `Invoice.customer.tax_id` on `/v1/invoices/{id}` GET endpoint
* <span>Major</span> <span>Deprecation warning</span>
  * Deprecating `Customer.vat_number` and `Customer.vat_number_valid` in favor of `Customer.tax_ids`
  * Deprecating `Customer.vat_rate_custom` in favor of `Customer.tax_rate_custom`
  * Deprecating `Invoice.customer.vat_number` in favor of `Invoice.customer.tax_id`

## December 4, 2025

* Added `custom_properties` query param on `/v2/subscriptions` GET endpoint

## December 1, 2025

* Added `Customer.shipping_address` on `/v1/customers` GET, POST endpoints
* Added `Customer.shipping_address` on `/v1/customers/{id}` GET, PUT endpoints

## November 28, 2025

* Added `Invoice.public_url` on `/v1/invoices/{id}` GET endpoint

## November 19, 2025

* Added `/v1/exports` POST endpoint
* Added `/v1/exports/{id}` GET endpoint
* Added `/v1/exports/{id}/download` GET endpoint

## October 31, 2025

* Added `/v1/customers/{id}/credits/{id}` PUT endpoint

## October 23, 2025

* Added `Invoice.coupons` on `/v1/invoices` POST endpoint
* Added `Invoice.coupons` on `/v1/invoices/{id}` PATCH endpoint
* Added `Invoice.coupons` on `/v1/invoices/batch` POST endpoint

## October 16, 2025

* Added `Coupon.product_ids` on `/v1/coupons` GET endpoint
* Added `Coupon.product_ids` on `/v1/coupons` POST endpoint
* Added `Coupon.product_ids` on `/v1/coupons/{id}` GET endpoint
* Added `Coupon.product_ids` on `/v1/coupons/{id}` PUT endpoint
* Added `/v1/subscriptions/templates` GET endpoint
* Added `/v1/subscriptions/templates/{id}` GET endpoint
* Added `Subscription.template_id` on `/v2/subscriptions` POST endpoint
* Added `Subscription.template_configuration_id` on `/v2/subscriptions` POST endpoint
* <span>Major</span> <span>Deprecation warning</span>
  * Deprecating `/v1/plans` GET endpoint
  * Deprecating `/v1/plans/{id}` GET endpoint

## October 1, 2025

* Added `product_id`, `customer_id`, `updated_at` query params on `/v1/customers/credits` GET endpoint

## September 30, 2025

* Added `Customer.is_government_affiliated` on `/v1/customers` POST, GET, PUT endpoints

## September 26, 2025

* Added `/v1/customers/credits` GET endpoint
* Added `Credit.auto_topup` on `/v1/customers/{id}/credits` POST, GET endpoints
* Added `Credit.auto_topup` on `/v1/customers/{id}/credits/{creditId}` GET endpoint

## September 23, 2025

* Added `/v1/quotes/{id}/approve` POST endpoint

## September 19, 2025

* Added `Customer.integrations` on `/v1/customers` GET endpoint

## September 16, 2025

* Added `period_start` and `period_end` query params on `/v1/invoices` GET endpoint

## September 15, 2025

* Added `Subscription.activation_strategy` on `/v2/subscriptions` GET endpoint

## September 11, 2025

* Added `Subscription.phases[].do_not_invoice_phase` on `/v2/subscriptions/{id}` GET endpoint
* Added `Subscription.phases[].do_not_invoice_phase` on `/v2/subscriptions` POST endpoint
* Added `Subscription.phases[].do_not_invoice_phase` on `/v2/subscriptions/{id}` PUT endpoint

## September 10, 2025

* Added `/v1/invoices/{id}/uncollectible` POST endpoint

## September 5, 2025

* Added `Subscription.phases` on `/v2/subscriptions/{id}` PUT endpoint

## August 27, 2025

* Added `Invoice.source` on `/v1/invoices` GET endpoint
* Added `Invoice.source` on `/v1/invoices/{id}` GET endpoint

## August 25, 2025

* Added `/v1/bank-accounts` GET endpoint
* Added `/v1/bank-accounts/{id}` GET endpoint

## August 18, 2025

* Added `/v1/subscriptions/{id}/simulate-updates` POST endpoint
* Added `plan.created`, `plan.updated` and `plan.deleted` webhooks

## August 8, 2025

* Added `Quote.updated_at` on `/v1/quotes` GET endpoint
* Added `Quote.updated_at` on `/v1/quotes/{id}` GET endpoint
* Added `PriceConfiguration.price_book_id` on `/v1/price-configurations` GET endpoint

## July 21, 2025

* Added `Subscription.crm_opportunity_id` on `/v2/subscriptions` POST endpoint
* Added `Subscription.crm_opportunity_id` on `/v2/subscriptions/{id}` PUT endpoint

## July 17, 2025

* Added `reason` on `/v1/subscriptions/{id}/cancel` POST endpoint
* Added `Subscription.cancellation_reason` on `/v2/subscriptions` GET endpoint
* Added `Subscription.cancellation_reason` on `/v2/subscriptions/{id}` GET endpoint

## July 11, 2025

* Added `/v1/customers/{id}/payment-methods` POST endpoint
* Added `Transaction.provider_name` and `Transaction.provider_transaction_id` on `/v1/invoices/{id}/transactions` POST endpoint

## July 7, 2025

* Added `/v1/files` GET, POST endpoints
* Added `/v1/files/{id}` DELETE endpoint
* Added `/v1/files/{id}/download` GET endpoint
* Added `Invoice.properties` on `/v1/invoices` GET, POST endpoints
* Added `Invoice.properties` on `/v1/invoices/{id}` GET, PATCH endpoints

## July 3, 2025

* Added `/v1/subscriptions/{id}/renew` POST endpoint

## June 27, 2025

* Added `Invoice.coupons` and `Invoice.transactions` on `/v1/invoices` GET endpoint

## June 18, 2025

* Added `Subscription.name` on `/v2/subscriptions/{subscriptionId}` GET endpoint
* Added `Subscription.name` on `/v2/subscriptions` GET endpoint

## June 13, 2025

* Added `Subscription.generate_document`, `Subscription.document_name` and `Subscription.add_vat_to_document` on `/v2/subscriptions` POST endpoint

## June 11, 2025

* Added `/v1/invoices/{id}/credit-notes` POST endpoint
* Added `Invoice.integrations` on `/v1/invoices/{id}` GET endpoint
* Added `Customer.integrations` on `/v1/customers/{id}` GET endpoint
* Added `PaymentMethod.integration` on `/v1/customers/{id}/payment-methods/{id}` GET endpoint
* <span>Major</span> <span>Deprecation warning</span>
  * Deprecating `Customer.providers` in favor of `Customer.integrations`

## June 6, 2025

* Added `/v1/price-configurations` GET endpoint
* Added `/v1/price-configurations/{id}` DELETE endpoint

## May 16, 2025

* Added `purchase_order` query param on `/v2/subscriptions` GET endpoint

## May 9, 2025

* Added `/v1/promotion-codes` GET, POST endpoints
* Added `/v1/promotion-codes/{id}` GET, PATCH, DELETE endpoints

## April 30, 2025

* Added `Subscription.contract_terms` on `/v2/subscriptions/{subscriptionId}` GET endpoint
* Added `Subscription.contract_terms` on `/v2/subscriptions` POST endpoint
* Added `Quote.subscription.contract_terms` on `/v1/quotes` POST endpoint
* Added `Invoice.bank_account_id` on `/v1/invoices/{id}` GET endpoint
* Added `Invoice.bank_account_id` on `/v1/invoices/{id}` PATCH endpoint
* Added `Invoice.payment_method_type` on `/v1/invoices/{id}` PATCH endpoint
* Added `Invoice.payment_method_id` on `/v1/invoices/{id}` PATCH endpoint

## April 18, 2025

* Added `Subscription.billing_cycle_alignment` on `/v2/subscriptions` POST endpoint

## April 8, 2025

* Added `Invoice.type` on `/v1/invoices` POST endpoint
* Added `Invoice.type` on `/v1/invoices/{id}` PATCH endpoint
* Added `Invoice.document_name` on `/v1/invoices` POST endpoint
* Added `Invoice.document_name` on `/v1/invoices/{id}` PATCH endpoint
* Added `Invoice.tax_scheme` on `/v1/invoices` POST endpoint
* Added `Invoice.tax_scheme` on `/v1/invoices/{id}` PATCH endpoint
* Added `Invoice.line_items` on `/v1/invoices/{id}` PATCH endpoint

## April 4, 2025

* Added `Subscription.trial` on `/v2/subscriptions` POST endpoint
* Added `Quote.subscription.trial` on `/v1/quotes` POST endpoint
* <span>Major</span> <span>Deprecation warning</span>
  * Deprecating `Subscription.trial_ends_at` and `Subscription.trial_delay_first_invoice` in favor of `Subscription.trial`
  * Deprecating `Quote.subscription.trial_ends_at` and `Quote.subscription.trial_delay_first_invoice` in favor of `Quote.subscription.trial`

## March 31, 2025

* Added `/v1/invoices/{id}/charge` POST endpoint
* Added `Invoice.transactions[].chargeback` on `/v1/invoices/{id}` GET endpoint
* Added `Subscription.phases[].billing_cycle_alignment` on `/v2/subscriptions/{subscriptionId}` GET endpoint
* Added `SubscriptionPhase.billing_cycle_alignment` on `/v2/subscriptions/{subscriptionId}/phases` GET endpoint
* Added `SubscriptionPhase.billing_cycle_alignment` on `/v2/subscriptions/{subscriptionId}/phases/{phaseId}` GET endpoint
* Added `Subscription.phases[].billing_cycle_alignment` on `/v2/subscriptions` POST endpoint
* Added `Quote.subscription.phases[].billing_cycle_alignment` on `/v1/quotes` POST endpoint
* Added `subscription.reinstated` webhook

## March 24, 2025

* Added `PaymentMethod.status` on `/v1/customers/{id}/payment-methods` GET endpoint
* Added `PaymentMethod.status` on `/v1/customers/{id}/payment-methods/{paymentMethodId}` GET endpoint
* Added `Customer.price_book_id` on `/v1/customers` GET endpoint
* Added `Customer.price_book_id` on `/v1/customers/{id}` GET endpoint

## March 11, 2025

* Added `/v1/products/{id}/archive` PUT endpoint
* Added `/v1/products/{id}/unarchive` PUT endpoint

## March 6, 2025

* Added `/v1/invoices/{id}/transactions` POST endpoint
* Added `/v1/invoices/{id}/transactions/{transactionId}` DELETE endpoint
* Added `provider_id` on `/v1/customers/providers-bulk-update` POST endpoint

## February 27, 2025

* Added `Subscription.phases` on `/v2/subscriptions` POST endpoint
* Added `Subscription.phases` on `/v2/subscriptions/{id}` GET endpoint

## February 4, 2025

* Added `Invoice.payment_method_id` on `/v1/invoices` POST endpoint
* Added `Invoice.line_items[].tax_rate` on `/v1/invoices` POST endpoint

## January 28, 2025

* Added `Invoice.line_items[].product_id` on `/v1/invoices` POST endpoint

## January 15, 2025

* Added `Subscription.quote` on `/v2/subscriptions/{id}` GET endpoint

## January 14, 2025

* Added `/v2/subscriptions/{id}/phases` GET endpoint
* Added `/v2/subscriptions/{id}/phases/{phaseId}` GET endpoint
* Added `Subscription.current_phase_id` on `/v2/subscriptions` GET endpoint
* Added `Subscription.current_phase_id` on `/v2/subscriptions/{id}` GET endpoint

## January 10, 2025

* Added `Quote.original_subscription_id` on `/v1/quotes` GET endpoint
* Added `Quote.original_subscription_id` on `/v1/quotes/{id}` GET endpoint

## January 8, 2025

* Added `/v1/invoices/{id}` DELETE endpoint

## November 6, 2024

* Added `/v1/customers/{id}/unarchive` PUT endpoint
* Added `/v1/invoices/{id}` PATCH endpoint
* Added `/v1/subscriptions/{id}/activate` POST endpoint

## October 23, 2024

* Added `/v1/customers/{id}/payment-methods` GET endpoint
* Added `/v1/customers/{id}/payment-methods/{paymentMethodId}` GET, DELETE endpoints

## October 8, 2024

* Added `/v1/companies` POST endpoint

## August 21, 2024

* Added `custom_property.created`, `custom_property.updated`, `custom_property.deleted`, `custom_property.value_created`, `custom_property.value_updated`, `bank_account.created`, `bank_account.deleted` webhooks

## August 20, 2024

* Added `/v1/taxes/rates` GET endpoint
* Added `/v1/taxes/rates/{id}` GET endpoint
* Added `Product.accounting` on `/v1/products/{id}` GET, POST, PUT endpoints
* Added `Invoice.line_items[].tax_rate_id` on `/v1/invoices` GET endpoint
* Added `Invoice.line_items[].tax_rate_id` on `/v1/invoices/{id}` GET endpoint
* Added `Customer.custom_payment_delay` on `/v1/customers` GET endpoint
* Added `Customer.custom_payment_delay` on `/v1/customers/{id}` GET, POST, PUT endpoints

## August 12, 2024

* Added `Subscription.custom_properties` on `/v2/subscriptions` GET, POST endpoints
* Added `Subscription.custom_properties` on `/v2/subscriptions/{id}` GET, PUT endpoints

## August 7, 2024

* Added `/v1/quotes/{id}/sign` POST endpoint
* Added `/v1/invoices/{id}/void` POST endpoint

## July 30, 2024

* Added `Customer.timezone` on `/v1/customers` GET, POST endpoints
* Added `Customer.timezone` on `/v1/customers/{id}` GET, PUT endpoints

## July 3, 2024

* Added `/v1/organisations/{id}` GET endpoint
* Added `/v1/organisations/{id}` PATCH endpoint
* Added `Customer.organisation_id` and `Customer.organisation_invoicing` on `/v1/customers` POST endpoint
* Added `Customer.organisation_id` and `Customer.organisation_invoicing` on `/v1/customers/{id}` GET, PUT endpoints
* Added `Subscription.contract_start` and `Subscription.contract_end` on `/v2/subscriptions/*` endpoints
* Added `Subscription.products[].attached_at` and `Subscription.products[].detached_at` on `/v2/subscriptions/*` endpoints
* Added `/v1/subscriptions/{id}/reinstate` POST endpoint
* Added `update_prices` `SubscriptionUpdate.type` on `/v1/subscriptions/{id}/update` POST endpoint
* Added `/v1/subscriptions/{id}/update-many` POST endpoint
* <span>Major</span> <span>Deprecation warning</span>
  * Deprecating `Subscription.starts_at` in favor of `Subscription.contract_start`
* <span>Major</span>
  * Removing `SubscriptionUpdate.payload.billing_item_ids` in favor of `SubscriptionUpdate.payload.product_ids` for `add_coupon` update type
  * Removing `add_item` `SubscriptionUpdate.type` in favor of `add_product`
  * Removing `remove_item` `SubscriptionUpdate.type` in favor of `remove_product`

## June 26, 2024

* Added `/v1/quotes` POST endpoint
* Added `/v1/quotes/{id}/download` GET endpoint
* Added `/v1/quotes/{id}/send` POST endpoint
* Added `/v1/quotes/{id}/void` POST endpoint

## June 12, 2024

* Added `Customer.custom_properties` on `/v1/customers` GET endpoint

## May 27, 2024

* Added `/v1/quotes` GET endpoint
* Added `/v1/quotes/{id}` GET endpoint
* Added `/v1/quotes/{quoteId}/files/{id}/download` GET endpoint

## April 2, 2024

* <span>Major</span> Removed deprecated subscription endpoints
  * Removed `GET /v1/subscriptions` in favor of `GET /v2/subscriptions`
  * Removed `GET /v1/subscriptions/{id}` in favor of `GET /v2/subscriptions/{id}`
  * Removed `POST /v1/subscriptions` in favor of `POST /v2/subscriptions`
  * Removed `GET /v1/billing-plans/{id}` in favor of `GET /v1/plans/{id}`
  * Removed `GET /v1/billing-scenarios`
  * Removed `GET /v1/billing-scenarios/{id}`

## March 6, 2024

* Added `/v1/subscriptions/{id}/pause` PUT endpoint
* Added `/v1/subscriptions/{id}/reactivate` PUT endpoint
* Added `/v1/subscriptions/refresh` POST endpoint

## March 5, 2024

* Added `/v1/webhooks/endpoints` GET, POST endpoints
* Added `/v1/webhooks/endpoints/{id}` GET, PUT, DELETE endpoints

## March 1, 2024

* <span>Major</span> Removed unit concept on wallets (only money pocket) in favor of credit-type products to manage credit units.
  * Removed `WalletBalance.units`
  * Removed `WalletSettings.unit_credit_prices`
  * Removed `WalletTransaction.units` and `WalletTransaction.transaction_id`

## February 28, 2024

* <span>Major</span> Removed unique current customer subscription in favor of subscriptions array.
  * Removed `Customer.current_subscription_id` on `/v1/customers` GET endpoint
  * Removed `Customer.current_subscription` on `/v1/customers/{id}` GET endpoint

## February 20, 2024

* Added `Customer.type` on `/v1/customers` GET, POST and PUT endpoints
* Added `Customer.invoice_emails` on `/v1/customers` GET, POST and PUT endpoints
* Added `Customer.vat_rate_custom` on `/v1/customers` GET, POST and PUT endpoints
* Added `external` option on `Customer.payment_method_type` on `/v1/customers` POST and PUT endpoints

## February 16, 2024

* <span>Major</span> <span>Planned for April 1, 2024</span>
  * Removing `GET /v1/subscriptions` in favor of `GET /v2/subscriptions`
  * Removing `GET /v1/subscriptions/{id}` in favor of `GET /v2/subscriptions/{id}`
  * Removing `POST /v1/subscriptions` in favor of `POST /v2/subscriptions`

* <span>Major</span> <span>Planned for February 28, 2024</span>
  * Removing `Customer.current_subscription_id` on `/v1/customers` GET endpoint in favor of `Customer.subscriptions`
  * Removing `Customer.current_subscription` on `/v1/customers/{id}` GET endpoint in favor of `Customer.subscriptions`


# Webhooks
Source: https://docs.hyperline.co/api-reference/docs/webhooks

Receive webhook messages from Hyperline for entity events and user-triggered custom actions, with signing, delivery, and retry guidance.

Webhooks are automated messages sent from Hyperline when something happens on our system. They have a specific payload for each action they notify and are sent to a unique URL, an HTTPS endpoint on your server. Webhooks are a great way to integrate your application with Hyperline as you can fine-tune product flows and build deeper integrations based on your needs, with little development work on your end.

## Add a webhook endpoint

To start listening to webhook messages sent by Hyperline, go to your [webhooks settings](https://app.hyperline.co/app/settings/webhooks) in the app, select **Add Endpoint**, provide the termination URL that you control, and select the event types you want to listen to. You can add as many URLs as you want, if you want to segregate the events you want to listen to.

<Frame>
  <img />
</Frame>

That's it! You will now receive webhook calls when the event occurs on the Hyperline system.

## Event types

<Note>
  A complete list of the event types and the shape of the event payload can be
  found in the product Webhooks page, on the "Event Catalog" tab.
</Note>

Here is a preview of the events you can be notified of:

* `customer.created`, `customer.updated`, `customer.archived`, `customer.recovered`, `customer.deleted`
* `subscription.created`, `subscription.trial_ended`, `subscription.activated`, `subscription.reactivated`, `subscription.contract_started`, `subscription.contract_renewed`, `subscription.paused`, `subscription.phase_activated`, `subscription.updated`, `subscription.cancellation_scheduled`, `subscription.cancelled`, `subscription.voided`, `subscription.errored`, `subscription.charged`, `subscription.commitment_renewed`, `subscription.reinstated`, `subscription.analytics_updated`
* `subscription_transition.completed`
* `invoice.created`, `invoice.grace_period.started`, `invoice.late`, `invoice.ready`, `invoice.reminder_sent`, `invoice.settled`, `invoice.errored`, `invoice.chargeback`, `invoice.voided`, `invoice.uncollectible`, `invoice.deleted`
* `invoice.batch.creation_succeeded`, `invoice.batch.creation_failed`
* `credit_note.ready`, `credit_note.settled`, `credit_note.voided`
* `checkout.created`, `checkout.completed`
* `payment_method.created`, `payment_method.activated`, `payment_method.errored`, `payment_method.deleted`, `payment_method.expiring_soon`, `payment_method.expired`
* `wallet.credited`, `wallet.debited`, `wallet.low_projected_balance`
* `credit.created`, `credit.updated`, `credit.balance_refreshed`, `credit.low_balance`, `credit.balance_at_zero`, `credit.topup_transaction_created`, `credit.usage_transaction_created`, `credit.expiration_transaction_created`
* `quote.created`, `quote.updated`, `quote.approval_requested`, `quote.approved`, `quote.sent`, `quote.viewed`, `quote.signed`, `quote.voided`
* `bank_account.created`, `bank_account.deleted`, `bank_account.errored`
* `custom_property.created`, `custom_property.updated`, `custom_property.deleted`, `custom_property.value_created`, `custom_property.value_updated`
* `product.created`, `product.updated`, `product.archived`, `product.recovered`, `product.deleted`
* `plan.created`, `plan.updated`, `plan.deleted`
* `coupon.created`, `coupon.updated`, `coupon.deleted`
* `pricebook.created`, `pricebook.updated`, `pricebook.deleted`
* `approval_workflow.created`, `approval_workflow.updated`, `approval_workflow.deleted`
* `approval_request.created`, `approval_request.step_approved`, `approval_request.step_rejected`, `approval_request.approved`, `approval_request.rejected`, `approval_request.cancelled`
* `daily_analytics.ready`
* `dataloader.failed`
* `aggregator.updated`, `aggregator.threshold_crossed`
* `event.price_calculated`
* `agent.run.completed`
* `custom_action`

## Trigger webhooks with custom actions

Custom actions let your team trigger webhook-backed workflows directly from customer, invoice, quote, and subscription pages. An action appears at the top of the pages you select and sends a `custom_action` event when a user clicks it.

### Create a custom action

1. Go to [**Settings** → **Developers** → **Custom actions**](https://app.hyperline.co/app/settings/custom-actions).
2. Click **Add action**.
3. Enter a **Name**. This label appears on the action button.
4. Enter a **Type**. This stable slug identifies the action in the webhook payload as `custom_action_type` and can contain lowercase letters, numbers, and underscores.
5. Select an **Icon**.
6. Select one or more **Entities**: customers, invoices, quotes, or subscriptions.
7. Select where the action appears: **Overview pages**, **Form pages**, or both.
8. Click **Save changes**.

<Note>
  A custom action configured for form pages appears only after the entity has
  been created, such as after a draft quote or subscription exists.
</Note>

When one action is available on a page, Hyperline displays it as a button. When several actions are available, Hyperline groups them in a **Custom actions** dropdown. You can rename this dropdown for your entire workspace under **Dropdown** on the custom actions settings page.

<Tip>
  Choose a descriptive **Type**, such as `sync_quote` or `send_to_erp`, and
  avoid changing it after connecting your webhook automation.
</Tip>

### Receive custom action events

Configure your webhook endpoint to listen for the `custom_action` event type. Hyperline sends the following payload when a user triggers an action:

```json theme={null}
{
  "event_type": "custom_action",
  "data": {
    "custom_action_type": "sync_quote",
    "origin_entity": "quote",
    "origin_entity_id": "quo_2xY7kP9mQ4rT8v",
    "triggered_at": "2026-08-12T19:47:43.000Z",
    "triggered_by": "usr_8hK3mN5pR2sV6w",
    "triggered_from": "https://app.hyperline.co/app/quoting/quotes/quo_2xY7kP9mQ4rT8v"
  }
}
```

| Field                | Description                                                                                       |
| -------------------- | ------------------------------------------------------------------------------------------------- |
| `custom_action_type` | The **Type** configured for the custom action. Use it to route the event to the correct workflow. |
| `origin_entity`      | The entity where the action was triggered: `customer`, `invoice`, `quote`, or `subscription`.     |
| `origin_entity_id`   | The ID of that entity.                                                                            |
| `triggered_at`       | The ISO 8601 timestamp when the user clicked the action.                                          |
| `triggered_by`       | The ID of the Hyperline user who clicked the action.                                              |
| `triggered_from`     | The URL of the page where the action was triggered.                                               |

<Note>
  Checkout sessions do not expire automatically, so Hyperline does not emit a `checkout.expired` event. A checkout remains open until it is completed, cancelled, or errored.
</Note>

## Consuming webhooks

Webhook calls will always be `POST` HTTPS requests containing a JSON body with this format:

```json theme={null}
{
  "event_type": "<group>.<event>",
  "data": {}
}
```

Your endpoint must quickly return a 2xx (status code 200-299) response prior to any complex logic that could cause a timeout (max 15s).

Another important aspect of handling webhooks is to verify the signature and timestamp when processing them.

## Testing events

The easiest way to be more confident in your endpoint configuration is to start receiving events as quickly as possible. The "Testing" tab is here to help you send example events to your endpoint.

<Frame>
  <img />
</Frame>

After sending an example event, you can select the message to view the message payload, all of the message attempts, and whether it succeeded or failed.

Additionally, the Logs section is here to help you have a complete view of past call attempts with their date, status, and payload.

## Event delivery

### Replaying events

If you want to replay a single (or multiple) events, you can find the message from the UI, open the options menu next to any of the attempts, and select **Resend**.

It's a great help if your service had downtime or if your endpoint was misconfigured.

### Retry schedule

Each message is attempted based on the following schedule, where each period is started following the failure of the preceding attempt:

* Immediately
* 5 seconds
* 5 minutes
* 30 minutes
* 2 hours
* 5 hours
* 10 hours
* 10 hours (in addition to the previous)

If an endpoint is removed or disabled, delivery attempts to the endpoint will be disabled as well.

### Event ordering

Hyperline doesn't guarantee delivery of events in the order in which they're generated. You can find more details about why guaranteeing order doesn't really work in [this article](https://www.svix.com/blog/guaranteeing-webhook-ordering).

Your endpoint shouldn't expect delivery of events in a specific order. We recommend designing your system in a way that doesn't require ordering. Additionally, you can use the API to fetch any missing objects (for example, you can fetch the subscription details using the ID provided in the `subscription.created` event payload).

### Static source IP addresses

In case your webhook receiving endpoint is behind a firewall or NAT, you may need to allow traffic from our webhook servers' static IP addresses.

In such scenarios, we recommend that you whitelist the following IP addresses:

```
52.215.16.239
54.216.8.72
63.33.109.123
2a05:d028:17:8000::/56
```

## Best practices

### Handling duplicate events

Webhook endpoints might occasionally receive the same event more than once. You can guard against duplicated event receipts by making your event processing [idempotent](https://en.wikipedia.org/wiki/Idempotence). One way of doing this is logging the events you've processed, and then not processing already-logged events.

### Prevent stale data

As webhooks can be retried, another update can occur once your server is finally able to process the event. Therefore, we advise you to query the latest version of the related entity upon receiving a webhook.

### Verify webhooks

Verifying webhooks is an important part of the consumption. Because of the way webhooks work, attackers can impersonate services by simply sending a fake webhook to an endpoint. This is a potential security hole for your application.

In order to prevent it, every webhook and its metadata is **signed** with a unique key for each endpoint. This signature can then be used to verify the webhook indeed comes from Hyperline, and only process it if it is.

Another potential security hole is what's called replay attacks. A replay attack is when an attacker intercepts a valid payload (including the signature), and re-transmits it to your endpoint. This payload will pass signature validation, and will therefore be acted upon.

To mitigate this attack, a timestamp (`webhook-timestamp` header) is included in every request for when the webhook attempt occurred. We recommend you reject webhooks with a timestamp that is more than five minutes away (past or future) from the current time.

**Verifying signatures**

Each webhook call includes three headers with additional information that are used for verification:

* `webhook-id`: the unique message identifier for the webhook message. This identifier is unique across all messages but will be the same when the same webhook is being resent (e.g. due to a previous failure).
* `webhook-timestamp`: timestamp in seconds since epoch.
* `webhook-signature`: the Base64 encoded list of signatures (space delimited).

**Constructing the signed content**

The content to sign is composed by concatenating the id, timestamp, and payload, separated by the full-stop character (`.`). In code, it will look something like:

```
signedContent = "${webhook_id}.${webhook_timestamp}.${body}"
```

Where `body` is the raw body of the request. The signature is sensitive to any changes, so even a small change in the body will cause the signature to be completely different. This means that you should not change the body in any way before verifying.

**Determining the expected signature**

`HMAC` with `SHA-256` is used to sign webhooks.

So to calculate the expected signature, you should HMAC the `signed_content` from above using the base64 portion of your signing secret (this is the part after the `whsec_` prefix) as the key. For example, given the secret `whsec_MfKQ9r8GKYqrTwjUPD8ILPZIo2LaLaSw` you will want to use `MfKQ9r8GKYqrTwjUPD8ILPZIo2LaLaSw`.

Here is an example of how you can calculate the signature in Node.js:

```js theme={null}
const crypto = require("crypto");

const signedContent = `${webhook_id}.${webhook_timestamp}.${body}`;
const secret = "whsec_MfKQ9r8GKYqrTwjUPD8ILPZIo2LaLaSw";

// Need to base64 decode the secret
const secretBytes = new Buffer(secret.split("_")[1], "base64");
const signature = crypto
  .createHmac("sha256", secretBytes)
  .update(signedContent)
  .digest("base64");

console.log(signature);
```

This generated signature should match one of the ones sent in the `webhook-signature` header.

This header is composed of a list of space-delimited signatures and their corresponding version identifiers. The signature list is most commonly of length one, though there could be any number of signatures. For example:

```
v1,g0hM9SsE+OTPJTGt/tmIKtSyZlE3uFJELVlNIOLJ1OE= v1,bm9ldHUjKzFob2VudXRob2VodWUzMjRvdWVvdW9ldQo= v2,MzJsNDk4MzI0K2VvdSMjMTEjQEBAQDEyMzMzMzEyMwo=
```

Make sure to remove the version prefix and delimiter (e.g. v1,) before verifying the signature.


# Create accounting rule
Source: https://docs.hyperline.co/api-reference/endpoints/accounting/create-accounting-rule

post /v1/accounting/rules
Create a new accounting rule for account code routing or journal posting.



# Delete accounting rule
Source: https://docs.hyperline.co/api-reference/endpoints/accounting/delete-accounting-rule

delete /v1/accounting/rules/{id}
Soft-delete an accounting rule.



# Get accounting rule
Source: https://docs.hyperline.co/api-reference/endpoints/accounting/get-accounting-rule

get /v1/accounting/rules/{id}
Retrieve a single accounting rule by its identifier.



# List accounting rules
Source: https://docs.hyperline.co/api-reference/endpoints/accounting/list-accounting-rules

get /v1/accounting/rules
Retrieve existing accounting rules with optional filtering.



# Resolve accounting rule
Source: https://docs.hyperline.co/api-reference/endpoints/accounting/resolve-accounting-rule

post /v1/accounting/rules/resolve
Preview which account codes would be resolved for a given context.



# Update accounting rule
Source: https://docs.hyperline.co/api-reference/endpoints/accounting/update-accounting-rule

put /v1/accounting/rules/{id}
Update an existing accounting rule.



# Get aggregator usage
Source: https://docs.hyperline.co/api-reference/endpoints/aggregators->-usage/get-aggregator-usage

get /v1/aggregators/{id}/usage
Retrieve a usage row for an aggregator (name, unit and thresholds).



# Get aggregator usage events
Source: https://docs.hyperline.co/api-reference/endpoints/aggregators->-usage/get-aggregator-usage-events

get /v1/aggregators/{id}/usage/events
List raw billable events for an aggregator across every customer of the client.



# Get aggregator usage grouped by customer
Source: https://docs.hyperline.co/api-reference/endpoints/aggregators->-usage/get-aggregator-usage-grouped-by-customer

get /v1/aggregators/{id}/usage/group-by-customer
Per-customer total usage for an aggregator over a period, ordered by total DESC, paginated.



# Get aggregator usage timeseries
Source: https://docs.hyperline.co/api-reference/endpoints/aggregators->-usage/get-aggregator-usage-timeseries

get /v1/aggregators/{id}/usage/timeseries
Get client-wide usage for an aggregator bucketed by month, day or hour.



# Create aggregator
Source: https://docs.hyperline.co/api-reference/endpoints/aggregators/create-aggregator

post /v1/aggregators
Create a new aggregator.



# Delete aggregator
Source: https://docs.hyperline.co/api-reference/endpoints/aggregators/delete-aggregator

delete /v1/aggregators/{id}
Delete an existing aggregator.



# Get aggregator
Source: https://docs.hyperline.co/api-reference/endpoints/aggregators/get-aggregator

get /v1/aggregators/{id}
Retrieve the details of an existing aggregator.



# List aggregators
Source: https://docs.hyperline.co/api-reference/endpoints/aggregators/list-aggregators

get /v1/aggregators
Retrieve existing aggregators.



# Update aggregator
Source: https://docs.hyperline.co/api-reference/endpoints/aggregators/update-aggregator

put /v1/aggregators/{id}
Update the details of an existing aggregator.



# Get analytics
Source: https://docs.hyperline.co/api-reference/endpoints/analytics/get-analytics

get /v1/analytics
Retrieve your pre-computed account's analytics (ARR, revenues, churn, etc).



# Create approval workflow
Source: https://docs.hyperline.co/api-reference/endpoints/approval-workflows/create-approval-workflow

post /v1/approvals/workflows
Create a new approval workflow.



# Delete approval workflow
Source: https://docs.hyperline.co/api-reference/endpoints/approval-workflows/delete-approval-workflow

delete /v1/approvals/workflows/{id}
Delete an existing approval workflow.



# Get approval workflow
Source: https://docs.hyperline.co/api-reference/endpoints/approval-workflows/get-approval-workflow

get /v1/approvals/workflows/{id}
Retrieve a single approval workflow.



# List approval workflows
Source: https://docs.hyperline.co/api-reference/endpoints/approval-workflows/list-approval-workflows

get /v1/approvals/workflows
Retrieve approval workflows with optional filtering.



# Update approval workflow
Source: https://docs.hyperline.co/api-reference/endpoints/approval-workflows/update-approval-workflow

put /v1/approvals/workflows/{id}
Update an existing approval workflow.



# List audit logs
Source: https://docs.hyperline.co/api-reference/endpoints/audit-logs/list-audit-logs

get /v1/audit-logs
Retrieve existing audit logs. Sorted by `happened_at` descending.



# Get bank account
Source: https://docs.hyperline.co/api-reference/endpoints/bank-accounts/get-bank-account

get /v1/bank-accounts/{id}
Retrieve a specific bank account by ID.



# List bank accounts
Source: https://docs.hyperline.co/api-reference/endpoints/bank-accounts/list-bank-accounts

get /v1/bank-accounts
Retrieve existing bank accounts.



# List bank transactions
Source: https://docs.hyperline.co/api-reference/endpoints/bank-accounts/list-bank-transactions

get /v1/bank-accounts/{id}/transactions
Retrieve transactions for a specific connected bank account.



# Delete billable events
Source: https://docs.hyperline.co/api-reference/endpoints/billable-events/delete-billable-events

delete /v1/events
Delete existing billable events.



# Get billable event prices
Source: https://docs.hyperline.co/api-reference/endpoints/billable-events/get-billable-event-prices

get /v1/events/prices
Get previous price simulation results for a billable event. You can search by either calculation_id / record_id or both.



# Get events
Source: https://docs.hyperline.co/api-reference/endpoints/billable-events/get-events

get /v1/events
Retrieve billable events filtered by event type.



# Ingest billable event
Source: https://docs.hyperline.co/api-reference/endpoints/billable-events/ingest-billable-event

post /v1/events
Ingest a new billable event. This endpoint is idempotent, an event with the same id will be updated if it already exists.



# Ingest billable events
Source: https://docs.hyperline.co/api-reference/endpoints/billable-events/ingest-billable-events

post /v1/events/batch
Ingest several billable events in batch (limited to max 5000 events per request). This endpoint is idempotent, an event with the same id, will be updated if it already exists.



# Simulate billable event prices
Source: https://docs.hyperline.co/api-reference/endpoints/billable-events/simulate-billable-event-prices

post /v1/events/simulate-prices
Simulate prices for a single billable event without ingesting it.



# Create catalog draft
Source: https://docs.hyperline.co/api-reference/endpoints/catalog/create-catalog-draft

post /v1/catalog/versions/draft
Create the pending draft from the current live catalog. Returns the existing draft when one is already pending.



# Discard catalog draft
Source: https://docs.hyperline.co/api-reference/endpoints/catalog/discard-catalog-draft

delete /v1/catalog/versions/draft
Archive the pending catalog draft without applying its changes.



# Export catalog
Source: https://docs.hyperline.co/api-reference/endpoints/catalog/export-catalog

get /v1/catalog/export
Export the live product catalog as a portable snapshot (the same artifact the app exports), usable for backups or imports into another organisation.



# Get catalog draft
Source: https://docs.hyperline.co/api-reference/endpoints/catalog/get-catalog-draft

get /v1/catalog/versions/draft
Retrieve the pending catalog draft, or null when no draft exists.



# Get catalog version
Source: https://docs.hyperline.co/api-reference/endpoints/catalog/get-catalog-version

get /v1/catalog/versions/{id}
Retrieve a single catalog version.



# List catalog versions
Source: https://docs.hyperline.co/api-reference/endpoints/catalog/list-catalog-versions

get /v1/catalog/versions
Retrieve the product catalog versions: the pending draft followed by published versions. Requires catalog versioning to be enabled.



# Publish catalog draft
Source: https://docs.hyperline.co/api-reference/endpoints/catalog/publish-catalog-draft

post /v1/catalog/versions/draft/publish
Apply the pending draft to the live catalog and mark it as a published version.



# Revert catalog version
Source: https://docs.hyperline.co/api-reference/endpoints/catalog/revert-catalog-version

post /v1/catalog/versions/{id}/revert
Publish a new catalog version restoring the state of a previous published version (revert). Fails while a draft is pending.



# Create company
Source: https://docs.hyperline.co/api-reference/endpoints/companies/create-company

post /v1/companies
Create a new company to which the authentication token will have access to.



# List companies
Source: https://docs.hyperline.co/api-reference/endpoints/companies/list-companies

get /v1/companies
Retrieve all companies that the authentication token has access to.



# Create promotion code
Source: https://docs.hyperline.co/api-reference/endpoints/coupons->-promotion-codes/create-promotion-code

post /v1/promotion-codes
Create a new promotion code.



# Delete promotion code
Source: https://docs.hyperline.co/api-reference/endpoints/coupons->-promotion-codes/delete-promotion-code

delete /v1/promotion-codes/{id}
Delete an existing promotion code.



# Get promotion code
Source: https://docs.hyperline.co/api-reference/endpoints/coupons->-promotion-codes/get-promotion-code

get /v1/promotion-codes/{id}
Retrieve the details of an existing promotion code.



# List promotion codes
Source: https://docs.hyperline.co/api-reference/endpoints/coupons->-promotion-codes/list-promotion-codes

get /v1/promotion-codes
Retrieve existing promotion codes.



# Update promotion code
Source: https://docs.hyperline.co/api-reference/endpoints/coupons->-promotion-codes/update-promotion-code

patch /v1/promotion-codes/{id}
Update the details of an existing promotion code.



# Create coupon
Source: https://docs.hyperline.co/api-reference/endpoints/coupons/create-coupon

post /v1/coupons
Create a new coupon.



# Delete coupon
Source: https://docs.hyperline.co/api-reference/endpoints/coupons/delete-coupon

delete /v1/coupons/{id}
Delete an existing coupon.



# Get coupon
Source: https://docs.hyperline.co/api-reference/endpoints/coupons/get-coupon

get /v1/coupons/{id}
Retrieve the details of an existing coupon.



# List coupons
Source: https://docs.hyperline.co/api-reference/endpoints/coupons/list-coupons

get /v1/coupons
Retrieve existing coupons.



# Update coupon
Source: https://docs.hyperline.co/api-reference/endpoints/coupons/update-coupon

put /v1/coupons/{id}
Update the details of an existing coupon.



# Create custom property
Source: https://docs.hyperline.co/api-reference/endpoints/custom-properties/create-custom-property

post /v1/custom-properties
Create a new custom property.



# Delete custom property
Source: https://docs.hyperline.co/api-reference/endpoints/custom-properties/delete-custom-property

delete /v1/custom-properties/{id}
Delete an existing custom property.



# List custom properties
Source: https://docs.hyperline.co/api-reference/endpoints/custom-properties/list-custom-properties

get /v1/custom-properties
Retrieve all custom properties previously created.



# Update custom property
Source: https://docs.hyperline.co/api-reference/endpoints/custom-properties/update-custom-property

put /v1/custom-properties/{id}
Update an existing custom property.



# Create credit product
Source: https://docs.hyperline.co/api-reference/endpoints/customers->-credits/create-credit-product

post /v1/customers/{id}/credits
Create a credit entity for a given product with an optional balance.



# Create credits usage
Source: https://docs.hyperline.co/api-reference/endpoints/customers->-credits/create-credits-usage

post /v1/customers/{id}/credits/{productId}/usage
Create a usage entry for a credit product. This will impact the balance of the customer by `usage_retained`.



# Get credit product
Source: https://docs.hyperline.co/api-reference/endpoints/customers->-credits/get-credit-product

get /v1/customers/{id}/credits/{productId}
Retrieve the details of an existing credit product for a customer.



# List all credit products
Source: https://docs.hyperline.co/api-reference/endpoints/customers->-credits/list-all-credit-products

get /v1/customers/credits
Retrieve credit products for all customers.



# List credit products
Source: https://docs.hyperline.co/api-reference/endpoints/customers->-credits/list-credit-products

get /v1/customers/{id}/credits
Retrieve credit products attached to a customer.



# List credit transactions
Source: https://docs.hyperline.co/api-reference/endpoints/customers->-credits/list-credit-transactions

get /v1/customers/{id}/credits/{productId}/transactions
Retrieve all credit transactions associated with a credit product.



# Purchase credits
Source: https://docs.hyperline.co/api-reference/endpoints/customers->-credits/purchase-credits

post /v1/customers/{id}/credits/{productId}/purchase
Purchase a number of credits. This action will generate an invoice and charge the customer.



# Topup credits
Source: https://docs.hyperline.co/api-reference/endpoints/customers->-credits/topup-credits

post /v1/customers/{id}/credits/{productId}/topup
Topup a number of free credits. This action will not charge the customer.



# Update credit product
Source: https://docs.hyperline.co/api-reference/endpoints/customers->-credits/update-credit-product

put /v1/customers/{id}/credits/{productId}
Update the configuration of a customer's credit product.



# Update credit topup expiration
Source: https://docs.hyperline.co/api-reference/endpoints/customers->-credits/update-credit-topup-expiration

patch /v1/customers/{id}/credits/{productId}/transactions/{transactionId}
Update the expiration date of a topup credit transaction. Only non-expired topup transactions can be updated.



# Delete customer feature
Source: https://docs.hyperline.co/api-reference/endpoints/customers->-features/delete-customer-feature

delete /v1/customers/{id}/features/{code}
Delete a feature override from a customer.



# Resolve customer features
Source: https://docs.hyperline.co/api-reference/endpoints/customers->-features/resolve-customer-features

get /v1/customers/{id}/features
Resolve feature values for a customer.



# Set customer feature
Source: https://docs.hyperline.co/api-reference/endpoints/customers->-features/set-customer-feature

put /v1/customers/{id}/features/{code}
Set a feature override for a customer.



# Create payment method
Source: https://docs.hyperline.co/api-reference/endpoints/customers->-payment-methods/create-payment-method

post /v1/customers/{id}/payment-methods
Import an existing customer payment method from a connected payment provider.



# Delete payment method
Source: https://docs.hyperline.co/api-reference/endpoints/customers->-payment-methods/delete-payment-method

delete /v1/customers/{id}/payment-methods/{paymentMethodId}
Delete an existing customer payment method.



# Get payment method
Source: https://docs.hyperline.co/api-reference/endpoints/customers->-payment-methods/get-payment-method

get /v1/customers/{id}/payment-methods/{paymentMethodId}
Retrieve the details of an existing customer payment method.



# List payment methods
Source: https://docs.hyperline.co/api-reference/endpoints/customers->-payment-methods/list-payment-methods

get /v1/customers/{id}/payment-methods
Retrieve payment methods attached to a customer.



# Create segment
Source: https://docs.hyperline.co/api-reference/endpoints/customers->-segments/create-segment

post /v1/customers/segments
Create a new customer segment.



# Delete segment
Source: https://docs.hyperline.co/api-reference/endpoints/customers->-segments/delete-segment

delete /v1/customers/segments/{id}
Delete an existing customer segment.



# Get segment
Source: https://docs.hyperline.co/api-reference/endpoints/customers->-segments/get-segment

get /v1/customers/segments/{id}
Retrieve the details of an existing customer segment.



# List segments
Source: https://docs.hyperline.co/api-reference/endpoints/customers->-segments/list-segments

get /v1/customers/segments
Retrieve all customer segments.



# Update segment
Source: https://docs.hyperline.co/api-reference/endpoints/customers->-segments/update-segment

patch /v1/customers/segments/{id}
Update an existing customer segment.



# Get customer usage events
Source: https://docs.hyperline.co/api-reference/endpoints/customers->-usage/get-customer-usage-events

get /v1/customers/{id}/usage/{aggregator_id}/events
List raw billable events for a customer and a specific aggregator over a period.



# Get customer usage for an aggregator
Source: https://docs.hyperline.co/api-reference/endpoints/customers->-usage/get-customer-usage-for-an-aggregator

get /v1/customers/{id}/usage/{aggregator_id}
Get the usage of a customer for a specific aggregator over a period.



# Get customer usage timeseries
Source: https://docs.hyperline.co/api-reference/endpoints/customers->-usage/get-customer-usage-timeseries

get /v1/customers/{id}/usage/{aggregator_id}/timeseries
Get the usage of a customer for an aggregator bucketed by month, day or hour.



# List customer usage
Source: https://docs.hyperline.co/api-reference/endpoints/customers->-usage/list-customer-usage

get /v1/customers/{id}/usage
List one usage row per aggregator for a single customer over a period. Use `GET /v1/aggregators/{id}/usage/group-by-customer` for the inverse: one row per customer for a single aggregator.



# Archive customer
Source: https://docs.hyperline.co/api-reference/endpoints/customers/archive-customer

put /v1/customers/{id}/archive
Archive an existing customer.



# Bulk update providers/customers mapping
Source: https://docs.hyperline.co/api-reference/endpoints/customers/bulk-update-providerscustomers-mapping

post /v1/customers/providers-bulk-update
Bulk update providers/customers mapping, make sure to check the query response to see if all customers were updated.



# Create customer
Source: https://docs.hyperline.co/api-reference/endpoints/customers/create-customer

post /v1/customers
Create a new customer.



# Create customers batch
Source: https://docs.hyperline.co/api-reference/endpoints/customers/create-customers-batch

post /v1/customers/batch
Create a batch of new customers.



# Delete customer
Source: https://docs.hyperline.co/api-reference/endpoints/customers/delete-customer

delete /v1/customers/{id}
Delete an existing customer. The customer must be archived prior to the deletion.



# Get customer
Source: https://docs.hyperline.co/api-reference/endpoints/customers/get-customer

get /v2/customers/{id}
Retrieve the details of an existing customer.



# Get customer
Source: https://docs.hyperline.co/api-reference/endpoints/customers/get-customer-1

get /v1/customers/{id}
We recommend using the `GET /v2/customers/{id}` endpoint instead.



# Get customer ARR history
Source: https://docs.hyperline.co/api-reference/endpoints/customers/get-customer-arr-history

get /v1/customers/{id}/arr-history
List the subscription-level ARR evolutions for a customer in reverse chronological order.



# Get customer portal
Source: https://docs.hyperline.co/api-reference/endpoints/customers/get-customer-portal

get /v1/customers/{id}/portal
Retrieve the URL of the customer portal.



# Get customer tax rates
Source: https://docs.hyperline.co/api-reference/endpoints/customers/get-customer-tax-rates

get /v1/customers/{id}/taxes/rates
Retrieve the eligible tax rates for a customer.



# Get customer valuation
Source: https://docs.hyperline.co/api-reference/endpoints/customers/get-customer-valuation

get /v1/customers/{id}/valuation
Compute aggregated valuation metrics across all active subscriptions for a customer.



# List customers
Source: https://docs.hyperline.co/api-reference/endpoints/customers/list-customers

get /v1/customers
We recommend using the `GET /v2/customers` endpoint instead.



# List customers
Source: https://docs.hyperline.co/api-reference/endpoints/customers/list-customers-1

get /v2/customers
Retrieve existing customers.



# Unarchive customer
Source: https://docs.hyperline.co/api-reference/endpoints/customers/unarchive-customer

put /v1/customers/{id}/unarchive
Unarchive an archived customer.



# Update customer
Source: https://docs.hyperline.co/api-reference/endpoints/customers/update-customer

put /v1/customers/{id}
Update the details of an existing customer.



# Create export
Source: https://docs.hyperline.co/api-reference/endpoints/exports/create-export

post /v1/exports
Prepare an export of a given type for download. You can check the export readiness status using the GET endpoint. Once the export is ready, download the export using the download endpoint.



# Download export
Source: https://docs.hyperline.co/api-reference/endpoints/exports/download-export

get /v1/exports/{exportId}/download
Download the file associated with a specific export. Pass `as_redirect=true` to receive a 302 redirect to a short-lived S3 signed URL instead of the file body.



# Get export
Source: https://docs.hyperline.co/api-reference/endpoints/exports/get-export

get /v1/exports/{exportId}
Retrieve the details of an existing export.



# List exports
Source: https://docs.hyperline.co/api-reference/endpoints/exports/list-exports

get /v1/exports
List previously created exports, most recent first.



# Archive feature
Source: https://docs.hyperline.co/api-reference/endpoints/features/archive-feature

put /v1/features/{code}/archive
Archive a feature definition.



# Create feature
Source: https://docs.hyperline.co/api-reference/endpoints/features/create-feature

post /v1/features
Create a feature definition.



# Delete feature
Source: https://docs.hyperline.co/api-reference/endpoints/features/delete-feature

delete /v1/features/{code}
Delete an archived feature definition that is not in use.



# Get feature
Source: https://docs.hyperline.co/api-reference/endpoints/features/get-feature

get /v1/features/{code}
Retrieve a feature definition.



# List features
Source: https://docs.hyperline.co/api-reference/endpoints/features/list-features

get /v1/features
List feature definitions.



# Unarchive feature
Source: https://docs.hyperline.co/api-reference/endpoints/features/unarchive-feature

put /v1/features/{code}/unarchive
Unarchive a feature definition.



# Update feature
Source: https://docs.hyperline.co/api-reference/endpoints/features/update-feature

put /v1/features/{code}
Update a feature definition.



# Create file
Source: https://docs.hyperline.co/api-reference/endpoints/files/create-file

post /v1/files
Create a new file.



# Delete file
Source: https://docs.hyperline.co/api-reference/endpoints/files/delete-file

delete /v1/files/{id}
Delete an existing file.



# Download file
Source: https://docs.hyperline.co/api-reference/endpoints/files/download-file

get /v1/files/{id}/download
Download an existing file content.



# List files
Source: https://docs.hyperline.co/api-reference/endpoints/files/list-files

get /v1/files
Retrieve existing files.



# Create component token
Source: https://docs.hyperline.co/api-reference/endpoints/integrations/create-component-token

post /v1/integrations/components/token
Create a new token for embedded components.



# List invoice events
Source: https://docs.hyperline.co/api-reference/endpoints/invoices->-events/list-invoice-events

get /v1/invoices/{id}/events
Retrieve billable events for an invoice, with per-event pricing computed against the invoice's billing rules. Works for any invoice status: draft and open invoices compute pricing live, finalized invoices serve the snapshot taken at issuance. Per-event amounts are gross — discounts (coupons, percentage, fixed amount) are applied at the line-item or invoice level, not redistributed across events. Use the invoice endpoint to read `discount_amount` if you need the net.



# Create transaction
Source: https://docs.hyperline.co/api-reference/endpoints/invoices->-transactions/create-transaction

post /v1/invoices/{id}/transactions
Create a transaction linked to an existing invoice. This may update the invoice status to paid/partially paid.



# Delete transaction
Source: https://docs.hyperline.co/api-reference/endpoints/invoices->-transactions/delete-transaction

delete /v1/invoices/{id}/transactions/{transactionId}
Delete a scheduled transaction or wallet debit linked to an existing invoice.



# Charge invoice
Source: https://docs.hyperline.co/api-reference/endpoints/invoices/charge-invoice

post /v1/invoices/{id}/charge
Manually trigger the payment of the invoice.



# Create credit note
Source: https://docs.hyperline.co/api-reference/endpoints/invoices/create-credit-note

post /v1/invoices/{id}/credit-notes
Create a credit note for an existing invoice.



# Create invoice
Source: https://docs.hyperline.co/api-reference/endpoints/invoices/create-invoice

post /v1/invoices
Create a new invoice.



# Create invoices
Source: https://docs.hyperline.co/api-reference/endpoints/invoices/create-invoices

post /v2/invoices/batch
Create invoices async in batch. Results can be tracked via webhooks with the `invoice.batch.creation_succeeded` and `invoice.batch.creation_failed` events.



# Delete invoice
Source: https://docs.hyperline.co/api-reference/endpoints/invoices/delete-invoice

delete /v1/invoices/{id}
Delete an invoice in `draft` status or imported from an external source. For other statuses, the `POST /v1/invoices/{id}/void` endpoint must be used.



# Download invoice
Source: https://docs.hyperline.co/api-reference/endpoints/invoices/download-invoice

get /v1/invoices/{id}/download
Download the PDF of an existing invoice. If the invoice is in draft or open status, the PDF will be generated without redirect



# Get invoice
Source: https://docs.hyperline.co/api-reference/endpoints/invoices/get-invoice

get /v1/invoices/{id}
We recommend using the `GET /v2/invoices/{id}` endpoint instead.



# Get invoice
Source: https://docs.hyperline.co/api-reference/endpoints/invoices/get-invoice-1

get /v2/invoices/{id}
Retrieve the details of an existing invoice.



# List invoices
Source: https://docs.hyperline.co/api-reference/endpoints/invoices/list-invoices

get /v1/invoices
We recommend using the `GET /v2/invoices` endpoint instead.



# List invoices
Source: https://docs.hyperline.co/api-reference/endpoints/invoices/list-invoices-1

get /v2/invoices
Retrieve existing invoices. By default, invoices with status open are not included.



# Mark as uncollectible
Source: https://docs.hyperline.co/api-reference/endpoints/invoices/mark-as-uncollectible

post /v1/invoices/{id}/uncollectible
Mark an invoice as uncollectible, useful for keeping track of bad debts that can be written off for accounting purposes.



# Send invoice emails
Source: https://docs.hyperline.co/api-reference/endpoints/invoices/send-invoice-emails

post /v1/invoices/send-email
Send a specific email (`email_type`) to the customer for a list of invoices, asynchronously in batch. An invoice whose status doesn't resolve to the requested email is skipped. Results can be tracked via webhooks with the `invoice.batch.email_succeeded`, `invoice.batch.email_skipped` and `invoice.batch.email_failed` events.



# Update invoice
Source: https://docs.hyperline.co/api-reference/endpoints/invoices/update-invoice

patch /v1/invoices/{id}
Update an invoice. Draft and grace_period invoices allow full edits; finalized invoices are restricted (paid: custom_note and purchase_order only; uncollectible: metadata only — properties, custom_note, custom_properties).



# Upload PDF to invoice
Source: https://docs.hyperline.co/api-reference/endpoints/invoices/upload-pdf-to-invoice

post /v1/invoices/{id}/upload
Upload a PDF file to an existing invoice.



# Validate draft invoice
Source: https://docs.hyperline.co/api-reference/endpoints/invoices/validate-draft-invoice

post /v1/invoices/{id}/validate
Send a draft invoice for payment, set the status to `to_pay` and its number. This is not reversible.



# Void invoice
Source: https://docs.hyperline.co/api-reference/endpoints/invoices/void-invoice

post /v1/invoices/{id}/void
Void an invoice in a `to_pay` status. This action generates a corresponding credit note.



# Create invoicing entity
Source: https://docs.hyperline.co/api-reference/endpoints/invoicing-entities/create-invoicing-entity

post /v1/invoicing-entities
Create a new invoicing entity to send invoices from.



# Delete invoicing entity
Source: https://docs.hyperline.co/api-reference/endpoints/invoicing-entities/delete-invoicing-entity

delete /v1/invoicing-entities/{id}
Soft deletes an invoicing entity. This action won't delete the associated invoices.



# Get invoicing entity
Source: https://docs.hyperline.co/api-reference/endpoints/invoicing-entities/get-invoicing-entity

get /v1/invoicing-entities/{id}
Retrieve a specific invoicing entity.



# List invoicing entities
Source: https://docs.hyperline.co/api-reference/endpoints/invoicing-entities/list-invoicing-entities

get /v1/invoicing-entities
Retrieve existing invoicing entities.



# Update invoicing entity
Source: https://docs.hyperline.co/api-reference/endpoints/invoicing-entities/update-invoicing-entity

put /v1/invoicing-entities/{id}
Update an existing invoicing entity.



# Authorize
Source: https://docs.hyperline.co/api-reference/endpoints/oauth2/authorize

get /oauth/authorize
Initiates OAuth authorization flow.



# Generate tokens
Source: https://docs.hyperline.co/api-reference/endpoints/oauth2/generate-tokens

post /oauth/tokens
Exchange authorization code for access token or refresh an existing token.



# Get user info
Source: https://docs.hyperline.co/api-reference/endpoints/oauth2/get-user-info

get /oauth/userinfo
Returns user information for the authenticated access token.



# OAuth callback
Source: https://docs.hyperline.co/api-reference/endpoints/oauth2/oauth-callback

get /oauth/callback
Handles authorization callback and redirects to client's registered URI.



# Register OAuth client
Source: https://docs.hyperline.co/api-reference/endpoints/oauth2/register-oauth-client

post /oauth/register
Register a dynamic OAuth client per RFC 7591.



# Revoke token
Source: https://docs.hyperline.co/api-reference/endpoints/oauth2/revoke-token

post /oauth/revoke
Revoke an access or refresh token.



# Get organisation
Source: https://docs.hyperline.co/api-reference/endpoints/organisations/get-organisation

get /v1/organisations/{id}
Retrieve the details of an existing organisation.



# Patch organisation
Source: https://docs.hyperline.co/api-reference/endpoints/organisations/patch-organisation

patch /v1/organisations/{id}
Update the details of an existing organisation.



# Create payment
Source: https://docs.hyperline.co/api-reference/endpoints/payments/create-payment

post /v1/payments
Initiate a new payment (limited to one-time): generate an invoice and charge it directly or with a checkout session



# Add products to price book
Source: https://docs.hyperline.co/api-reference/endpoints/price-books/add-products-to-price-book

post /v1/price-books/{id}/products
Add products to a price book by copying their default price configurations.



# Create price book
Source: https://docs.hyperline.co/api-reference/endpoints/price-books/create-price-book

post /v1/price-books
Create a new price book.



# Delete price book
Source: https://docs.hyperline.co/api-reference/endpoints/price-books/delete-price-book

delete /v1/price-books/{id}
Delete an existing price book.



# Get price book
Source: https://docs.hyperline.co/api-reference/endpoints/price-books/get-price-book

get /v1/price-books/{id}
Retrieve the details of an existing price book.



# List price books
Source: https://docs.hyperline.co/api-reference/endpoints/price-books/list-price-books

get /v1/price-books
Retrieve existing price books.



# Remove product from price book
Source: https://docs.hyperline.co/api-reference/endpoints/price-books/remove-product-from-price-book

delete /v1/price-books/{id}/products/{productId}
Remove a product and its price configurations from a price book.



# Update price book
Source: https://docs.hyperline.co/api-reference/endpoints/price-books/update-price-book

put /v1/price-books/{id}
Update the details of an existing price book.



# Create price configuration
Source: https://docs.hyperline.co/api-reference/endpoints/price-configurations/create-price-configuration

post /v1/price-configurations
Create a new price configuration on an existing product.



# Delete price configuration
Source: https://docs.hyperline.co/api-reference/endpoints/price-configurations/delete-price-configuration

delete /v1/price-configurations/{id}
Delete an existing price configuration.



# Get price configuration
Source: https://docs.hyperline.co/api-reference/endpoints/price-configurations/get-price-configuration

get /v1/price-configurations/{id}
Retrieve the details of an existing price configuration.



# List price configurations
Source: https://docs.hyperline.co/api-reference/endpoints/price-configurations/list-price-configurations

get /v1/price-configurations
Retrieve existing price configurations.



# Update prices
Source: https://docs.hyperline.co/api-reference/endpoints/price-configurations/update-prices

put /v1/price-configurations/{id}/prices
Update prices of an existing price configuration.



# Delete product feature
Source: https://docs.hyperline.co/api-reference/endpoints/products->-features/delete-product-feature

delete /v1/products/{id}/features/{code}
Delete a feature value from a product.



# List product features
Source: https://docs.hyperline.co/api-reference/endpoints/products->-features/list-product-features

get /v1/products/{id}/features
List feature values assigned to a product.



# Set product feature
Source: https://docs.hyperline.co/api-reference/endpoints/products->-features/set-product-feature

put /v1/products/{id}/features/{code}
Set a feature value for a product.



# Archive product
Source: https://docs.hyperline.co/api-reference/endpoints/products/archive-product

put /v1/products/{id}/archive
Archive an existing product.



# Create product
Source: https://docs.hyperline.co/api-reference/endpoints/products/create-product

post /v1/products
Create a new product.



# Delete product
Source: https://docs.hyperline.co/api-reference/endpoints/products/delete-product

delete /v1/products/{id}
Delete an archived product that is not in use.



# Get product
Source: https://docs.hyperline.co/api-reference/endpoints/products/get-product

get /v1/products/{id}
Retrieve the details of an existing product. Only the first 50 price configurations are returned, to retrieve all of them use `GET /v1/price-configurations`.



# List products
Source: https://docs.hyperline.co/api-reference/endpoints/products/list-products

get /v1/products
Retrieve existing products.



# Unarchive product
Source: https://docs.hyperline.co/api-reference/endpoints/products/unarchive-product

put /v1/products/{id}/unarchive
Unarchive an archived product.



# Update product
Source: https://docs.hyperline.co/api-reference/endpoints/products/update-product

put /v1/products/{id}
Update the details of an existing product.



# Get quote template
Source: https://docs.hyperline.co/api-reference/endpoints/quotes->-templates/get-quote-template

get /v1/quotes/templates/{id}
Retrieve the details of an existing quote template.



# List quote templates
Source: https://docs.hyperline.co/api-reference/endpoints/quotes->-templates/list-quote-templates

get /v1/quotes/templates
Retrieve existing quote templates.



# Approve quote
Source: https://docs.hyperline.co/api-reference/endpoints/quotes/approve-quote

post /v1/quotes/{id}/approve
Approve an existing quote (acting as the account owner).



# Create quote
Source: https://docs.hyperline.co/api-reference/endpoints/quotes/create-quote

post /v1/quotes
Create a new quote.



# Download quote
Source: https://docs.hyperline.co/api-reference/endpoints/quotes/download-quote

get /v1/quotes/{id}/download
Download an existing quote.



# Download quote file
Source: https://docs.hyperline.co/api-reference/endpoints/quotes/download-quote-file

get /v1/quotes/{quoteId}/files/{id}/download
Download a file (attachment or manually signed file) attached to an existing quote.



# Duplicate quote
Source: https://docs.hyperline.co/api-reference/endpoints/quotes/duplicate-quote

post /v1/quotes/{id}/duplicate
Create a draft duplicate of an existing quote.



# Finalize quote
Source: https://docs.hyperline.co/api-reference/endpoints/quotes/finalize-quote

post /v1/quotes/{id}/finalize
Finalize a draft quote by submitting it for approval or marking it approved when no approval is required.



# Get quote
Source: https://docs.hyperline.co/api-reference/endpoints/quotes/get-quote

get /v1/quotes/{id}
Retrieve the details of an existing quote.



# Get quote valuation
Source: https://docs.hyperline.co/api-reference/endpoints/quotes/get-quote-valuation

get /v1/quotes/{id}/valuation
Compute valuation metrics for an existing quote.



# List quotes
Source: https://docs.hyperline.co/api-reference/endpoints/quotes/list-quotes

get /v1/quotes
Retrieve existing quotes.



# Send quote
Source: https://docs.hyperline.co/api-reference/endpoints/quotes/send-quote

post /v1/quotes/{id}/send
Send an existing quote by email for signature.



# Sign quote
Source: https://docs.hyperline.co/api-reference/endpoints/quotes/sign-quote

post /v1/quotes/{id}/sign
Manually mark the quote as signed externally. Built-in Hyperline signature flow won't be used.



# Update quote
Source: https://docs.hyperline.co/api-reference/endpoints/quotes/update-quote

patch /v1/quotes/{id}
Update an existing quote.



# Void quote
Source: https://docs.hyperline.co/api-reference/endpoints/quotes/void-quote

post /v1/quotes/{id}/void
Void an existing quote.



# Get subscription phase
Source: https://docs.hyperline.co/api-reference/endpoints/subscriptions->-phases/get-subscription-phase

get /v2/subscriptions/{id}/phases/{phaseId}
Retrieve the details of a phase for an existing subscription.



# List subscription phases
Source: https://docs.hyperline.co/api-reference/endpoints/subscriptions->-phases/list-subscription-phases

get /v2/subscriptions/{id}/phases
Retrieve the details of the phases for an existing subscription.



# Transition subscription to next phase
Source: https://docs.hyperline.co/api-reference/endpoints/subscriptions->-phases/transition-subscription-to-next-phase

post /v2/subscriptions/{id}/next-phase
Update a subscription and transition it to the next available phase.



# Create subscription template
Source: https://docs.hyperline.co/api-reference/endpoints/subscriptions->-templates/create-subscription-template

post /v1/subscriptions/templates
Create a new subscription template.



# Create subscription template configuration
Source: https://docs.hyperline.co/api-reference/endpoints/subscriptions->-templates/create-subscription-template-configuration

post /v1/subscriptions/templates/{id}/configurations
Add a configuration (currency/country, phases, products, contract terms) to a subscription template.



# Delete subscription template
Source: https://docs.hyperline.co/api-reference/endpoints/subscriptions->-templates/delete-subscription-template

delete /v1/subscriptions/templates/{id}
Delete a subscription template. Fails if a quote template depends on it.



# Delete subscription template configuration
Source: https://docs.hyperline.co/api-reference/endpoints/subscriptions->-templates/delete-subscription-template-configuration

delete /v1/subscriptions/templates/{templateId}/configurations/{id}
Delete a configuration from a subscription template.



# Get subscription template
Source: https://docs.hyperline.co/api-reference/endpoints/subscriptions->-templates/get-subscription-template

get /v1/subscriptions/templates/{id}
Retrieve an existing subscription template with its configurations details.



# List subscription templates
Source: https://docs.hyperline.co/api-reference/endpoints/subscriptions->-templates/list-subscription-templates

get /v1/subscriptions/templates
Retrieve existing subscription templates.



# Update subscription template
Source: https://docs.hyperline.co/api-reference/endpoints/subscriptions->-templates/update-subscription-template

patch /v1/subscriptions/templates/{id}
Update the name or description of a subscription template.



# Update subscription template configuration
Source: https://docs.hyperline.co/api-reference/endpoints/subscriptions->-templates/update-subscription-template-configuration

put /v1/subscriptions/templates/{templateId}/configurations/{id}
Replace an existing configuration for a subscription template.



# Cancel subscription transition
Source: https://docs.hyperline.co/api-reference/endpoints/subscriptions->-transitions/cancel-subscription-transition

post /v2/subscriptions/transitions/{id}/cancel
Cancel a scheduled subscription transition.



# Create subscription transition
Source: https://docs.hyperline.co/api-reference/endpoints/subscriptions->-transitions/create-subscription-transition

post /v2/subscriptions/transitions
Transition a subscription to another subscription, configured from a subscription, a plan or a template. If the application_schedule is `immediately`, the transition is applied right away.



# Get subscription transition
Source: https://docs.hyperline.co/api-reference/endpoints/subscriptions->-transitions/get-subscription-transition

get /v2/subscriptions/transitions/{id}
Retrieve the details of an existing subscription transition.



# List subscription transitions
Source: https://docs.hyperline.co/api-reference/endpoints/subscriptions->-transitions/list-subscription-transitions

get /v2/subscriptions/transitions
Retrieve existing subscription transitions.



# Activate subscription
Source: https://docs.hyperline.co/api-reference/endpoints/subscriptions/activate-subscription

post /v1/subscriptions/{id}/activate
Manually start a subscription for the first time.



# Cancel subscription
Source: https://docs.hyperline.co/api-reference/endpoints/subscriptions/cancel-subscription

post /v1/subscriptions/{id}/cancel
Cancel an existing subscription.



# Create subscription
Source: https://docs.hyperline.co/api-reference/endpoints/subscriptions/create-subscription

post /v2/subscriptions
Create a new subscription from a plan or manually with products.



# Create subscription update
Source: https://docs.hyperline.co/api-reference/endpoints/subscriptions/create-subscription-update

post /v1/subscriptions/{id}/update
Create an update to apply on an existing subscription.



# Create subscription updates
Source: https://docs.hyperline.co/api-reference/endpoints/subscriptions/create-subscription-updates

post /v1/subscriptions/{id}/update-many
Create multiple updates to apply at once to an existing subscription.



# Get subscription
Source: https://docs.hyperline.co/api-reference/endpoints/subscriptions/get-subscription

get /v2/subscriptions/{id}
Retrieve the details of an existing subscription.



# Get subscription ARR history
Source: https://docs.hyperline.co/api-reference/endpoints/subscriptions/get-subscription-arr-history

get /v1/subscriptions/{id}/arr-history
List the ARR evolutions for a subscription in reverse chronological order.



# Get subscription valuation
Source: https://docs.hyperline.co/api-reference/endpoints/subscriptions/get-subscription-valuation

get /v1/subscriptions/{id}/valuation
Compute valuation metrics for an existing subscription.



# List subscriptions
Source: https://docs.hyperline.co/api-reference/endpoints/subscriptions/list-subscriptions

get /v2/subscriptions
Retrieve existing subscriptions. By default, draft, voided, and cancelled subscriptions are not included.



# Pause subscription
Source: https://docs.hyperline.co/api-reference/endpoints/subscriptions/pause-subscription

post /v1/subscriptions/{id}/pause
Pause a subscription. If the subscription is already paused, updates its reactivation date.



# Reactivate subscription
Source: https://docs.hyperline.co/api-reference/endpoints/subscriptions/reactivate-subscription

post /v1/subscriptions/{id}/reactivate
Reactivate a paused subscription.



# Refresh seat products
Source: https://docs.hyperline.co/api-reference/endpoints/subscriptions/refresh-seat-products

post /v2/subscriptions/{id}/refresh-seat-products
Triggers 'count' updates on connected seat products within the subscription. This action will use the dataloader query to retrieve and update the number of units for each seat product.



# Refresh subscriptions
Source: https://docs.hyperline.co/api-reference/endpoints/subscriptions/refresh-subscriptions

post /v1/subscriptions/refresh
Triggers refresh of subscriptions usage data and related open invoices. This action is used when the automatic billing update upon ingestion option is disabled for the account.



# Reinstate subscription
Source: https://docs.hyperline.co/api-reference/endpoints/subscriptions/reinstate-subscription

post /v1/subscriptions/{id}/reinstate
Reinstate an existing subscription scheduled for cancellation.



# Renew subscription
Source: https://docs.hyperline.co/api-reference/endpoints/subscriptions/renew-subscription

post /v1/subscriptions/{id}/renew

This action will move the subscription into the future up to a specific date (exclusive), as if the renewals had occurred. As a result, the corresponding future invoices will be generated.

If the subscription is currently pending, this action will activate it. A limit of 36 renewals applies.



# Simulate subscription updates
Source: https://docs.hyperline.co/api-reference/endpoints/subscriptions/simulate-subscription-updates

post /v1/subscriptions/{id}/simulate-updates
Simulate the effect of updates on a subscription without actually applying them.



# Update subscription
Source: https://docs.hyperline.co/api-reference/endpoints/subscriptions/update-subscription

put /v2/subscriptions/{id}
Update configuration of a subscription including phases and products.



# Create tax rate
Source: https://docs.hyperline.co/api-reference/endpoints/taxes/create-tax-rate

post /v1/taxes/rates
Create a custom rate or a code mapping for a default rate.



# Delete tax rate
Source: https://docs.hyperline.co/api-reference/endpoints/taxes/delete-tax-rate

delete /v1/taxes/rates/{id}
Delete an existing custom or default tax rate mapping.



# Get tax rate
Source: https://docs.hyperline.co/api-reference/endpoints/taxes/get-tax-rate

get /v1/taxes/rates/{id}
Retrieve an existing custom or default tax rate mapping.



# List tax rates
Source: https://docs.hyperline.co/api-reference/endpoints/taxes/list-tax-rates

get /v1/taxes/rates
Retrieve existing custom and default tax rate mappings.



# Update tax rate
Source: https://docs.hyperline.co/api-reference/endpoints/taxes/update-tax-rate

patch /v1/taxes/rates/{id}
Update an existing custom or default tax rate mapping.



# Create app
Source: https://docs.hyperline.co/api-reference/endpoints/third-party-apps/create-app

post /v1/apps
Create a new third-party app.



# Delete app
Source: https://docs.hyperline.co/api-reference/endpoints/third-party-apps/delete-app

delete /v1/apps/{id}
Delete an existing third-party app.



# List apps
Source: https://docs.hyperline.co/api-reference/endpoints/third-party-apps/list-apps

get /v1/apps
Retrieve existing third-party apps.



# Update app
Source: https://docs.hyperline.co/api-reference/endpoints/third-party-apps/update-app

put /v1/apps/{id}
Update an existing third-party app.



# Refund transaction
Source: https://docs.hyperline.co/api-reference/endpoints/transactions/refund-transaction

post /v1/transactions/{id}/refund
Refund a settled banking transaction for its full amount. The related invoice will switch back to to pay status. Use the create credit note endpoint if you want to cancel (and optionally refund) the initial invoice.



# Get user role
Source: https://docs.hyperline.co/api-reference/endpoints/users->-roles/get-user-role

get /v1/users/roles/{id}
Retrieve the details of an existing user role.



# List user roles
Source: https://docs.hyperline.co/api-reference/endpoints/users->-roles/list-user-roles

get /v1/users/roles
Retrieve existing user roles.



# Get user
Source: https://docs.hyperline.co/api-reference/endpoints/users/get-user

get /v1/users/{id}
Retrieve the details of an existing user.



# List users
Source: https://docs.hyperline.co/api-reference/endpoints/users/list-users

get /v1/users
Retrieve existing users.



# Create wallet
Source: https://docs.hyperline.co/api-reference/endpoints/wallets/create-wallet

post /v1/wallets
Create a new wallet.



# Get wallet
Source: https://docs.hyperline.co/api-reference/endpoints/wallets/get-wallet

get /v1/wallets/{id}
Retrieve the details of an existing wallet.



# Get wallet settings
Source: https://docs.hyperline.co/api-reference/endpoints/wallets/get-wallet-settings

get /v1/wallets/settings
Retrieve the global settings of the wallets.



# List wallet transactions
Source: https://docs.hyperline.co/api-reference/endpoints/wallets/list-wallet-transactions

get /v1/wallets/{id}/transactions
Retrieve all transactions of an existing wallet.



# List wallets
Source: https://docs.hyperline.co/api-reference/endpoints/wallets/list-wallets

get /v2/wallets
Retrieve existing wallets.



# Load wallet
Source: https://docs.hyperline.co/api-reference/endpoints/wallets/load-wallet

post /v1/wallets/{id}/load
Load paid or free credits on an existing wallet.



# Revert wallet load
Source: https://docs.hyperline.co/api-reference/endpoints/wallets/revert-wallet-load

post /v1/wallets/{id}/transactions/{transactionId}/revert
Revert a credit wallet transaction. Voids the related credit note/document and creates a debit transaction.



# Update wallet
Source: https://docs.hyperline.co/api-reference/endpoints/wallets/update-wallet

put /v1/wallets/{id}
Update the details of an existing wallet.



# Update wallet settings
Source: https://docs.hyperline.co/api-reference/endpoints/wallets/update-wallet-settings

patch /v1/wallets/settings
Update the global settings of the wallets.



# Create webhook endpoint
Source: https://docs.hyperline.co/api-reference/endpoints/webhooks/create-webhook-endpoint

post /v1/webhooks/endpoints
Create a new webhook endpoint.



# Delete webhook endpoint
Source: https://docs.hyperline.co/api-reference/endpoints/webhooks/delete-webhook-endpoint

delete /v1/webhooks/endpoints/{id}
Delete an existing webhook endpoint.



# Get webhook endpoint
Source: https://docs.hyperline.co/api-reference/endpoints/webhooks/get-webhook-endpoint

get /v1/webhooks/endpoints/{id}
Retrieve an existing webhook endpoint.



# List webhook endpoints
Source: https://docs.hyperline.co/api-reference/endpoints/webhooks/list-webhook-endpoints

get /v1/webhooks/endpoints
Retrieve all webhook endpoints.



# List webhook messages
Source: https://docs.hyperline.co/api-reference/endpoints/webhooks/list-webhook-messages

get /v1/webhooks/messages

Retrieve all webhook messages sent.

Please note that, by default, this endpoint is limited to retrieving 90 days' worth of data relative to now. Messages that date back more than 90 days are still accessible, but their payloads are expunged.
If an iterator is provided, the endpoint retrieves data spanning 90 days before/after the time indicated by the iterator ID. If you require data beyond those time ranges, you will need to explicitly set the before or after parameter as appropriate.




# Update webhook endpoint
Source: https://docs.hyperline.co/api-reference/endpoints/webhooks/update-webhook-endpoint

put /v1/webhooks/endpoints/{id}
Update an existing webhook endpoint.



# Product updates June, 2025
Source: https://docs.hyperline.co/changelog/2025-06

Hyperline June 2025 release: multi-factor authentication, update subscription phases, cancellation reasons, bundle pricing, ChorusPro auto-transmission.

## Multi-Factor Authentication (MFA)

Hyperline now supports advanced authentication via Multi-Factor Authentication (MFA or 2FA) for our enterprise clients. Supported methods include one-time passwords (OTP), one-time codes via email, and biometric authentication (e.g., Touch ID or passkeys).

<img />

Once MFA is activated, it will be enforced for all account members at their next login. If a user belongs to multiple accounts, MFA will be required for each.

## Update subscription phases

Subscription future phases can now be updated. Additionally, you can add new phases or remove existing ones. This allows you to plan contract changes in advance, such as pricing updates or multi-year configurations.

<img />

## Record cancellation reason

You can now record the reason for cancelling a subscription. This will be displayed in the subscription details page and accessible from the API.

<img />

## New bundle pricing model

The bundle pricing model is now available for seat-based products. This allows you to configure predefined bundles with specific quantity/price combinations, making only those options available when creating new quotes and subscriptions.

<img />

## Edit footer invoice

In addition to the global invoice legal/additional information settings, you can now edit these footer sections of each invoice directly in the invoice editor. This allows for advanced invoice customization to meet ad-hoc needs.

<img />

## Switch between B2C and B2B on public pages

Public pages (customer portal, checkout, and quote pages) now allow your customers to select between B2C (person) and B2B (corporate) typologies. This selection will determine the required form fields during these flows, and categorize more accurately the customers in Hyperline.

<img />

## ChorusPro auto-transmission

As part of e-invoicing regulations, Hyperline now supports the automatic transmission of invoices to ChorusPro for Business-to-Government (B2G) customers. Until now, only PDF/XML file generation was available — this new capability removes the need for any manual action on the ChorusPro side by finance teams.


# Product updates July, 2025
Source: https://docs.hyperline.co/changelog/2025-07

Hyperline July 2025 release: Apple Pay and Google Pay, expanded filters, customer files API, custom quote file names, external payment method imports.

## Apple Pay / Google Pay

Hyperline now supports Apple Pay and Google Pay, enabling frictionless payments and removing the need to manually enter card details. With these methods, customers can also save their card for future use. The payment flow works the same as with credit or debit cards.

<img />

## More filters

We've added new filters on list pages:

* Customers can now be filtered by integration.
* Invoices can now be filtered by plan and integration.
* Subscriptions can now be filtered by product and coupon.

<img />

## Manage customer files via the API

You can now list, create, delete, and download customer files through the API. This allows you to programmatically manage files and build advanced use cases for your product on top of Hyperline.

<img />

## Custom quote file names

The name of a downloaded quote file can now be customized for your account.

<img />

## Import external payment methods

Payment methods collected outside of Hyperline (for example, via an embedded PSP form in your product) can now be imported into Hyperline using the API.


# Product updates August, 2025
Source: https://docs.hyperline.co/changelog/2025-08

Hyperline August 2025 release: edit subscription phases, prefill quantities, preview invoices and quotes, ChartMogul integration, scheduled changes.

## Edit subscription phases

You can now add, edit, and delete subscription phases for active subscriptions directly from the subscription update page. This makes it easier to customize phases to better align with each customer or contract's future needs.

<img />

## Prefill quantity from plan

Plans with seat-based products can now include a preconfigured quantity. When the plan is used to create a subscription, the quantity will be automatically prefilled—no manual input required.

<img />

## Preview invoices and quotes

We improved the PDF preview of invoices and quotes by clearly highlighting the displayed language. You can now easily switch between the account language (legal) and the customer's language with a single click when both are different.

<img />

## Product order in subscriptions

The order of products in a subscription can now be adjusted during creation. Simply move products up or down to control the display order, which will be reflected in related quotes and invoices.

<img />

## ChartMogul integration

[ChartMogul](https://www.chartmogul.com?utm_source=hyperline) now natively supports Hyperline. Benefit from all ChartMogul capabilities to analyze your subscription revenue from your Hyperline data.

<img />

## Schedule subscription changes

It's now possible to schedule subscription changes for a specific date using the API. This allows you to programmatically plan updates in advance and build more advanced subscription flows.

## Support for Stripe Link

Hyperline now supports Stripe Link, a Stripe-specific payment method that can be automatically imported and used to process invoice charges in Hyperline.


# Product updates September, 2025
Source: https://docs.hyperline.co/changelog/2025-09

Hyperline September 2025 release: subscription templates, credit auto top-up, relative coupon durations, uncollectible invoices, non-recurring subs.

## Subscription templates

We are progressively rolling out a subscription templates module, introducing a new way to preconfigure subscriptions with their full set of options and capabilities. Similar to plans, they allow subscriptions to be assigned in a single click and can be used in quote templates.

The key difference from plans is that all subscription options available in the subscription assignment flow are included in these templates (phases, contracts, advanced options, etc.), removing existing limitations and moving toward a broader concept of templates. Plans will be gradually discontinued.

<img />

*Contact our support if you are interested.*

## Auto top-up on credits

Customer credit balances can now be automatically topped up, either from an existing catalog price or a custom one. These options are available both in the UI and via the API.

<img />

## Relative duration on coupons

Coupons within subscriptions can now be configured with a relative duration (e.g., 6 months). You can now set them to apply once, for a fixed duration, or for the entire phase or subscription period.

<img />

## Custom quote name

Clients can now customize the quote name on the document — for example, renaming “Quote” to “Contract” or removing the quote number displayed.

<img />

The configuration of this name is available in all supported languages.

<img />

## Uncollectible invoice

Invoices can now be marked as uncollectible, allowing you to track bad debts that may be written off for accounting purposes. An uncollectible invoice can still be paid by the customer (it remains “to pay”).

<img />

## Non-recurring subscriptions

Hyperline subscriptions can now contain one-time products only, allowing you to represent customer contracts and terms, or include only credit-based products — all without recurring usage.

<img />

## Transition options on quote update

When configuring a quote for a subscription update, you now have different options to transition from the current configuration to the new one:

* Direct: a new billing cycle starts when the quote is signed, with no transition invoice (no refund from the previous phase and no prorated charge for the new phase).
* Pro-rata: the default behavior until now — billing cycles are preserved when possible, and a transition invoice with prorations is issued at quote signature. This remains the default behavior.

## Transaction synchronization with accounting software

When using an integration with accounting software, you now have the flexibility to configure the synchronization direction between Hyperline and your accounting system.

<img />

## UI updates

We've rolled out several UI improvements:

* Added a secondary navigation bar for each product category
* Moved audit pages to the main navigation
* Added filters to the products page
* Updated status iconography for quotes, invoices, and transactions


# Product updates October, 2025
Source: https://docs.hyperline.co/changelog/2025-10

Hyperline October 2025 release: transactions page, subscription versions, accounting observability, edit current phase, e-invoicing Spain and Belgium.

## Transactions page

We added a brand-new page in Hyperline to track transactions at the account level. This page lists all transactions that occurred in your account, including payments and refunds, providing a clear overview of your cash activity. Filters and export options are also available.

<img />

## Subscription versions

We introduced subscription versions to help you track changes to your subscriptions over time. Each time a subscription is updated, a new version is created, allowing you to view the full history of changes made to that subscription.

<img />

## Accounting integrations observability

We improved the observability of our accounting integrations by adding detailed logs in case of issues. This helps you clearly monitor syncs and quickly identify and resolve any problems that may arise.

<img />

## Edit current subscription phase

Just like with future phases, you can now edit the current phase of a subscription.

<img />

## E-invoicing Spain and Belgium

Automated e-invoicing transmission is now available for Spain and Belgium. We now send your invoices directly to the tax authorities in these countries, ensuring compliance with local regulations.

<img />

## Coupons improvements

We made several improvements to the coupons feature. Coupons can now be applied with a relative duration (e.g., for 3 months), and you can choose which line items the coupon applies to when creating or editing an invoice in the visual editor.

<img />

Additionally, you can now create invoices with coupons using the API.

## Bank account error

We now send an email to the “Email for technical alerts” address (configured in the email settings) when a connected bank account cannot be refreshed. This proactive notification helps you reconnect your account promptly and ensure invoice reconciliation continues to work seamlessly.

## Update on parent invoices

From now on, in the context of organization-based billing, when a parent invoice includes products from a child customer, the child customer's name will be added as a prefix to the corresponding product (e.g., ChildCustomerA - Pro Subscription).


# Product updates November, 2025
Source: https://docs.hyperline.co/changelog/2025-11

Hyperline November 2025 release: Insights analytics, Attio integration, bank statement reconciliation, quote countersigners, exports API, custom ARR.

## Insights

Hyperline now offers a full Insights module that provides a comprehensive overview of your financial and revenue metrics.

The **Financial page** includes cash-flow visibility, MRR and debt evolution, aged balances, and complete breakdowns of your revenue and accounts receivable, as well as detailed MRR analytics including new, expansion, contraction, lost, and net changes.

<img />

The **Revenue page** provides in-depth insights into your revenue streams, including breakdowns by product, currency, and customer.

<img />

*This module is in beta. Contact our support if you are interested.*

## Attio integration

Hyperline now natively supports [Attio](https://www.attio.com?utm_source=hyperline) CRM.

<img />

The Hyperline Attio app enables you to create custom quotes or manage subscriptions directly from your Attio deals or companies using pre-built actions. Additionally, the integration can automatically sync your Hyperline quotes, subscriptions, and invoices into Attio as custom objects.

[More details in the documentation](../integrations/attio)

## Reconcile from bank statements

Automated invoice reconciliation from bank accounts has long been available in Hyperline, including the ability to validate matches from each invoice. Hyperline now also supports reconciliation from bank statements.

<img />

From a dedicated transactions page listing inbound transactions from your connected bank accounts, you can now reconcile invoices with granular manual control and have an overview of all your connected bank accounts balance.

## Quote countersigner

A quote countersigner can now be configured in the settings (first name, last name, and email). When a quote is signed by your customer, if a countersigner is configured, we automatically countersign the quote (i.e. apply an additional signature) before finalising the full quote signature.

<img />

## Exports API

You can now [trigger and download exports](../api-reference/endpoints/exports/create-export) of pre-built Hyperline reports (including aged balances, revenue per product/line item/country, line-by-line revenue, etc.) directly from the API. This enables you to automate data extraction from Hyperline for use in your own systems or for further analysis.

All report exports now support optional date range filtering via `period_start` and `period_end` parameters, allowing you to extract data for specific time periods.

In addition, [customers](../api-reference/endpoints/customers/list-customers), [invoices](../api-reference/endpoints/invoices/list-invoices), [subscriptions](../api-reference/endpoints/subscriptions/list-subscriptions), and [quotes](../api-reference/endpoints/quotes/list-quotes) can also be exported via the API using the list endpoints with advanced filtering options.

## Custom subscription ARR and contract value

Hyperline provides automatic calculation of Annual Recurring Revenue (ARR) and contract value for subscriptions out of the box, based on their pricing and billing cycles. However, there are scenarios where you may want to override these automatic calculations. Hyperline now allows you to set custom values for both ARR and contract value on a per-subscription basis, in addition to displaying them in the subscription overview.

<img />

## Update subscriptions

We've begun rolling out new flows for updating existing subscriptions, offering both simpler and more advanced options. You can now update a subscription using an existing template (or plan) or edit subscription details with enhanced versioning support.

<img />

This change is the first step in a broader revamp of our subscription update flows, aimed at making them more flexible and easier to use — including the ability to schedule changes in advance and preview their impact on upcoming invoices.

## Advanced Exact Online settings

In Exact Online, a yearly invoice spanning 13 calendar months (e.g., 2025-11-19 to 2026-11-18) is recognized over 13 months instead of 12, resulting in incorrect monthly revenue recognition. Hyperline now supports an advanced setting to adjust this behavior. When this setting is enabled, the invoice period end date for yearly invoices is adjusted (e.g., to 2026-10-31 instead of 2026-11-18) so that revenue is recognized over 12 months.


# Product updates December, 2025
Source: https://docs.hyperline.co/changelog/2025-12

Hyperline December 2025 release: scheduled subscription updates, US bank reconciliation, dark mode, wallet auto-load, Insights export, outstanding pay.

## Scheduled subscription updates

You can now schedule subscription updates for a future date, allowing you to prepare changes in advance and have them automatically applied at the right time.

<img />

When preparing the update, preview the impact on upcoming invoices before confirming the changes.

<img />

## US bank account reconciliation

Automatic reconciliation of bank transactions with invoices has been available for EU countries for a while—we've now extended this capability to US bank accounts.

Hyperline connects to over 5,000 banks in the US, automatically matching received transactions with your invoices.

<img />

We've also added the ability to hide synced transactions you don't need to see, keeping your view clean and focused.

## Dark mode

A new dark mode is now available for the Hyperline interface. Whether you prefer a darker aesthetic or want to reduce eye strain during long sessions, you can switch between light and dark themes from your profile settings.

<img />

## Credit wallet from credit note

When issuing a credit note, you can now credit the corresponding amount directly to the customer's wallet. This balance will automatically apply to their future invoices.

<img />

## Wallet auto-load

Wallets can now be automatically topped up when the projected balance falls below a defined threshold. Combined with the existing interval-based auto-load, this gives you more flexibility in managing wallet balances.

We've also added a new webhook to notify you when a wallet's projected balance drops below the threshold.

## Insights export

You can now export data from the Insights module to CSV files. Whether you need to share metrics with your team, build custom reports, or integrate with external tools, all your analytics data is just a click away.

<img />

## Process outstanding invoices on payment method update

When updating a customer's default payment method, you can now choose to immediately process any outstanding invoices with the new method.

Additionally, you can configure the default behavior at your account level to automatically pay (or not) outstanding invoices when customers update their payment method through their portal.

<img />


# Product updates January, 2026
Source: https://docs.hyperline.co/changelog/2026-01

Hyperline January 2026 release: customer portal authentication, quote approval workflows, expired quote filters, user merge, payment initiation delay.

## Customer portal authentication

You can now require customers to authenticate before accessing the customer portal. When enabled, customers must verify their email address through a secure link sent via email before they can view their billing information.

This adds an extra layer of security, ensuring only authorized users can access sensitive billing data.

<img />

Additionally, the link expiration duration is now configurable, allowing you to automatically expire access links after a specified period (in minutes). This reduces the risk of unauthorized access through outdated links.

## Quote approval workflows

The quote approval system now supports **advanced approval workflows**, giving sales and finance teams more control over quote validation before it reaches the customer.

<img />

You can now build **multi-step approval processes** with sequential steps and triggered automatically based on **custom rules** that you can combine with AND/OR logic.

*[Learn more about quote approval](../docs/quotes/approval)*

### Slack integration for approval workflows

You can now connect Slack to Hyperline and receive approval notifications directly in your channels. When a quote requires approval, the configured Slack channel receives a notification with all relevant context — quote details, customer name, requester, and a direct link to review the quote.

<img />

Learn more in the [Slack integration documentation](../integrations/slack).

## Filter for expired quotes

A new filter is now available on the quotes list to quickly find **expired quotes**. This makes it easier to identify quotes that need attention — whether to follow up with customers or update expiration dates.

## Merge users

You can now **merge duplicate users** in your Hyperline account. This is useful when the same team member has been created multiple times — for example, from different CRM integrations. Merging consolidates their activity and permissions into a single profile.

<img />

## Custom payment initiation delay per customer

The payment initiation delay (grace period between invoice creation and payment collection) can now be configured **at the customer level**, overriding the global setting. This gives you more flexibility to accommodate specific customer agreements or payment terms.

<img />


# Product updates February, 2026
Source: https://docs.hyperline.co/changelog/2026-02

Hyperline February 2026 release: MCP server, revamped quote-based subscription updates, custom invoice notes, audit log tracking, Insights improvements.

## MCP server

The Hyperline MCP server is now generally available. Connect your AI tools to Hyperline using the Model Context Protocol (MCP), with more than 100 tools to interact with your billing data — whether for reporting, analysis, or automation.

<img />

Learn more about the [MCP server](../api-reference/docs/ai/mcp).

## Subscription update with quotes revamped

As part of our subscription update flow revamp, we integrated quotes as a validation step when transitioning to a new subscription. You can now select when the subscription update will take effect, not only starting on quote signature but on any date in the future.

<img />

This new flow makes the quote for upsell, renewal or modification process simpler and more intuitive, especially when planning future changes. Read more about the way it works on the [dedicated documentation page](/docs/quotes/subscription-update).

## Custom invoice notes in subscriptions

<img />

You can now define a custom note when configuring a subscription — including from a quote — that will appear on the generated invoices and credit notes. This allows you to add additional context that is automatically carried over to every document.

## Integration tracking in audit logs

<img />

Audit logs now show which integration performed each action. For example, when a customer is created via your CRM, the log now displays the actual integration instead of a generic "System" label.

## More filters in list pages

We added a range of new filters to the customers and subscriptions list pages.

<img />

You can now filter customers by **tax ID**, **external ID presence**, and **parent or children relationships**. Both customers and subscriptions can be filtered by custom properties, and subscriptions can additionally be filtered by free trial status or draft invoice generation.

## Insights improvements

<img />

The Insights module has been enhanced with improved visualizations, including a refined aged balances heatmap with dark-mode support, clearer empty states across charts, and more intuitive navigation in revenue and MRR tables. Chart readability has also been improved with consistent sizing and better axis rendering.


# Product updates March, 2026
Source: https://docs.hyperline.co/changelog/2026-03

Hyperline March 2026 release: Slack notifications, Hyperline CLI, French localization, aggregators catalog, multi-aggregator credits, Zoho Books, idempotency.

## Slack notifications

You can now configure notification rules in the Slack integration to automatically send messages when specific events occur in Hyperline — such as an approval request, an invoice being paid, a quote being signed, or a dataloader error.

<Frame>
  <img alt="Slack Notifications" />
</Frame>

Each rule combines a trigger event, a Slack channel, and a message template, giving you full control over what gets notified and where.

[*Learn more about Slack notifications*](../integrations/slack)

## Hyperline CLI

Hyperline is now available as a [CLI tool](https://www.npmjs.com/package/@hyperline/cli), designed to work seamlessly with AI coding agents like Claude. The CLI provides a lightweight, token-efficient way for agents to interact with your billing data — listing customers, invoices, events, and more using simple terminal commands.

<Frame>
  <img alt="Cli" />
</Frame>

Compared to MCP integrations, the CLI avoids context overload and naming conflicts with other tools, resulting in faster and more reliable agent responses, especially on complex multi-step queries.

[*Learn more about the Hyperline CLI*](../api-reference/docs/ai/cli)

## Bonjour 🇫🇷

Hyperline is now fully available in French. User language can be changed from the Profile settings.

<Frame>
  <img alt="French" />
</Frame>

This completes the existing support for the 8 supported languages (English, French, German, Italian, Spanish, Polish, Portuguese and Dutch) of the customer public pages.

## Aggregators catalog

Aggregators for usage-based billing now have their own dedicated section under Usage > Aggregators, separate from the product creation form. You can create, edit, and manage aggregators independently, see which products reference each one, and reuse the same aggregator across multiple products.

<Frame>
  <img alt="Usage Aggregators" />
</Frame>

This makes metering configuration easier to maintain as your catalog grows, with a clearer separation between usage tracking and product setup.

[*Learn more about aggregators*](../docs/usage/aggregators)

## Multi-aggregator credits

Credit products can now be linked to multiple aggregators, allowing different event types to consume different credit amounts from the same balance. This is especially useful when a single credit pool covers several types of usage.

<Frame>
  <img alt="Multi Aggregators" />
</Frame>

We also introduced a new chart-based display for credit balances and an improved transactions table with invoice details and an exploration modal.

## Zoho Books integration

<Frame>
  <img alt="Hyperline Zoho Books" />
</Frame>

Zoho Books is now supported as an accounting integration, with the same scope as our existing accounting connectors — automatic invoice and credit note synchronization.

[*Learn more about the Zoho Books integration*](/integrations/zoho-books)

## Subscription linking on invoices

You can now link or unlink subscriptions directly from the invoice creation and editing form, making it easier to associate invoices with the right subscription for reporting purposes.

<Frame>
  <img alt="Linked Subscription" />
</Frame>

The invoice form has also been improved with automatic period computation, smarter defaults, and a cleaner layout for payment methods and line items.

[*Learn more about invoice management*](../docs/invoices/manage)

## Renewals report

<Frame>
  <img alt="Renewals Report" />
</Frame>

A new **Renewals** report is now available in the Insights module, helping you track upcoming and past subscription renewals at a glance.

## API idempotency keys

API requests now support idempotency keys, allowing you to safely retry requests without risk of duplicate operations. This is particularly useful for critical actions like invoice creation, and follows a common API standard for reliable integrations.

[*Learn more about idempotent requests*](/api-reference/docs/idempotent-requests)

## Quote price tier display

<Frame>
  <img alt="Quote Price Tiers" />
</Frame>

When building a quote, you can now configure which price tiers are displayed for each line item: all tiers, only the matching tiers based on quantity, or none. This gives you more control over the level of pricing detail your customers see.


# Product updates April, 2026
Source: https://docs.hyperline.co/changelog/2026-04

Hyperline April 2026 release: customer segments, Adyen integration, file summary, minimum invoice fees, multiple checkout payment methods, valuation APIs.

## Customer segments

Customer segments let you slice your customer base into dynamic, rule-based groups — for example "Enterprise customers in France paying by direct debit" or "All customers with a parent company".

Segments can then be used to filter the customers list or in the Insights module for granular analysis.

<Frame>
  <img alt="Customer Segments" />
</Frame>

[*Learn more about customer segments*](../docs/customers/segments)

## Adyen integration

Hyperline now supports Adyen as a payment provider to collect payments from your customers. Card, SEPA Direct Debit and Bacs Direct Debit are all supported.

<Frame>
  <img alt="Adyen Integration" />
</Frame>

[*Learn more about the Adyen integration*](../integrations/adyen)

## File summary

When uploading files to the customer files module, a summary is now automatically generated and displayed so you can understand the content of each file at a glance.

<Frame>
  <img alt="File Summary" />
</Frame>

## Minimum invoice fee behavior

You can now configure how the minimum invoice fee is applied on subscription invoices: either **replace** (the previous behavior) or **adjustment** (new), which keeps the original line item details and adds an extra minimum fee adjustment line.

## Multiple payment methods on checkout

Customers can now select which payment method to use on a checkout, or add a new one. Checkouts were previously limited to a single payment method.

<Frame>
  <img alt="Checkout Multi Payment Method" />
</Frame>

## Draft invoices for one-off quotes

Draft invoices can now be generated for one-off quotes, giving you full control before finalizing the invoice after quote signature.

In addition, quote value with tax can be displayed for this type of quote with a dedicated new option.

## Improvements to filters on custom properties

The filtering group for custom properties has been improved to:

* Support all custom property types (text, number, date, etc.) with smart logic for each — for example partial match on text-based properties.
* Be easily replicated across pages — now available on Customers and Products in addition to the existing pages.

<Frame>
  <img alt="Custom Property Filter" />
</Frame>

## Parent company details on quotes

When a customer has a parent company, the parent's address is now displayed on the quote alongside the customer's details.

## Valuation APIs

New endpoints have been added to the API to retrieve the valuation of a customer, quote or subscription, with pre-computed revenue metrics (contract value, recurring contract value, ARR, etc.) and period-level breakdown granularity.


# Product updates May, 2026
Source: https://docs.hyperline.co/changelog/2026-05

Hyperline May 2026 release: Sentinel monitoring, Rillet and NetSuite integrations, portal self-service, invoice custom properties, Insights GA, payouts.

## Sentinel

Sentinel is your Hyperline monitoring system. It surfaces actionable tasks when something needs attention across payments, invoicing, subscriptions, quotes, and integrations of your account.

<Frame>
  <img alt="Sentinel" />
</Frame>

Tasks are grouped by priority, so you can focus on the issues that matter most and open the relevant list directly from the Sentinel panel.

[*Learn more about Sentinel*](../docs/sentinel/overview)

## Rillet integration

Hyperline now supports Rillet as an accounting integration. You can push invoices, credit notes, customers, payments, and optionally subscription contracts to Rillet.

<Frame>
  <img alt="Rillet integration" />
</Frame>

Each Hyperline invoicing entity can be mapped to a Rillet subsidiary, so accounting configuration follows the entity issuing the invoice.

[*Learn more about the Rillet integration*](../integrations/rillet)

## NetSuite integration

Hyperline now supports NetSuite as an accounting integration. You can push invoices, credit notes, customers, and payments to NetSuite as native Invoice, Credit Memo, and Customer Payment records.

<Frame>
  <img alt="NetSuite integration" />
</Frame>

Each Hyperline invoicing entity maps to a NetSuite subsidiary, with full OneWorld support. You can map products to NetSuite items, resolve income and payment accounts through your accounting rules, and feed Hyperline customer and invoice fields into NetSuite custom fields.

[*Learn more about the NetSuite integration*](../integrations/netsuite)

## Customer portal self-service

Customers can now view their credit transaction history directly from the customer portal, including top-ups, usage consumption, and expirations.

<Frame>
  <img alt="Credit history in the customer portal" />
</Frame>

You can also let customers cancel a subscription from the portal. When enabled in **Settings > Hosted pages**, the cancellation schedules the subscription to end at the end of the current billing period, without immediate refund or proration. Customers can undo the cancellation while the current period is still active.

<Frame>
  <img alt="Subscription cancellation from the customer portal" />
</Frame>

[*Learn more about credits*](../docs/credits/overview)

## Invoice custom properties

Custom properties can now be created for invoices. Values can be set from the invoice builder or when editing an invoice.

<Frame>
  <img alt="Invoice custom properties" />
</Frame>

When the same custom property applies to both subscriptions and invoices, Hyperline automatically copies the subscription value to invoices generated from that subscription.

[*Learn more about custom properties*](../docs/properties/overview)

## Insights generally available

The **Insights** module is now generally available. It gives you interactive financial and revenue dashboards with drilldowns, detailed tables, and filters.

<Frame>
  <img alt="Insights" />
</Frame>

[*Learn more about Insights*](../docs/analytics/insights)

## Payout reconciliation

Payout reconciliation is now available directly within Hyperline, making it easier to match payment provider payouts with the related transactions in Hyperline. Only supported for Stripe for now.

<Frame>
  <img alt="Stripe payout reconciliation" />
</Frame>

[*Learn more about reconciliation*](../docs/invoices/reconciliations)

## Transaction refunds

You can now refund a transaction directly from Hyperline. Use this when money should be returned through the original payment method without creating a credit note.

After the refund settles, the invoice may move back to `to pay`, with the original payment and refund both visible as transactions.

<Frame>
  <img alt="Transaction refund" />
</Frame>

[*Learn more about refunds*](../docs/invoices/refunds)

## Automated exports

Report data can now be exported directly to a Postgres or Snowflake warehouse on a 12-hour or 24-hour schedule.

This helps finance and data teams keep reporting tables refreshed without relying on manual exports.

<Frame>
  <img alt="Automated exports" />
</Frame>

[*Learn more about reports*](../docs/analytics/reports)

## Bundle products

Bundle products let you package several catalog products into a single offering. Each bundle can allocate revenue across its components and control how the bundle appears on invoices.

You can display a bundle as one invoice line, or show each component separately when customers need a detailed breakdown.

<Frame>
  <img alt="Bundle products" />
</Frame>

[*Learn more about products and prices*](../docs/products/overview)

## Translation overrides

You can now edit product names and descriptions at the subscription level, and override invoice line item translations when editing an invoice manually.

This gives you more control over the labels shown to multilingual customers without changing the shared catalog product.

<Frame>
  <img alt="Translation overrides" />
</Frame>

[*Learn more about subscription translations*](../docs/subscriptions/translations)

## Stricter VAT validation for reverse charge

A new tax setting lets you require a valid VAT number before applying reverse charge in the EU.

When **Enforce a valid tax number for reverse charge** is enabled, Hyperline applies reverse charge only after the customer's tax number has been validated. Hyperline also stores the VIES consultation number on the customer and invoice.

<Frame>
  <img alt="Stricter VAT validation for reverse charge" />
</Frame>

[*Learn more about tax management*](../docs/invoices/tax-management#enforce-a-valid-tax-number-for-reverse-charge)


# Product updates June, 2026
Source: https://docs.hyperline.co/changelog/2026-06

Hyperline June 2026 release: customer intelligence, new customer details page, formula-based aggregators, duplicate quotes, saved views, API logs.

## Customer intelligence

Hyperline now features a complete **Customer intelligence** module to help you monitor customer health, usage, payment behavior, ownership, and follow-up needs from one place.

<Frame>
  <img alt="Customer intelligence" />
</Frame>

Customer intelligence brings together revenue data, billing activity, usage signals, and customer context so teams can identify risks and opportunities earlier. You can use it to track late payment behavior, monitor customer activity, assign owners and followers, and set up monitoring agents for important accounts.

[*Learn more about customer intelligence*](../docs/customer-intelligence/overview)

<Info>
  This new module is currently in beta and available through private access. <a href="https://cal.com/vincent-terol-doqpls/15min">Get early access</a>
</Info>

## New customer details page

The customer details page has been redesigned with a clearer layout and more structured information.

The page now gives you a better overview of each customer, including billing status, wallet balance, usage activity, subscriptions, invoices, and customer intelligence signals when enabled.

<Frame>
  <img alt="New customer details page" />
</Frame>

The customer wallet experience has also been refreshed as part of this update. You can add funds by initiating a prepayment, recording an offline payment received outside Hyperline, or adding free funds. Wallet transactions can include comments for additional context, and you can choose a custom amount when charging an invoice from the wallet.

[*Learn more about customer wallets*](../docs/wallets/balance)

## Formula-based usage aggregators

Aggregators now support SQL formulas, so you can create usage metrics beyond simple counts and sums.

For example, you can bill from an average over a period, keep the highest value reached, cap a billed amount, remove an included allowance, or combine several event values into one metric. An AI helper is also available to help build formulas.

[*Learn more about aggregators*](../docs/usage/aggregators)

## Duplicate quote

Quotes can now be duplicated in one click.

<Frame>
  <img alt="Duplicate quote" />
</Frame>

The duplicated quote is created as a draft and keeps the original quote content, including subscription configuration, invoice configuration, contract clauses, and attachments. This helps teams reuse existing deal structures without rebuilding them from scratch.

## More flexible quote approvals

Approval workflows can now use more quote conditions.

You can trigger approval when non-default payment terms are applied, when a specific contract clause is used, or when a reusable clause has been edited before the quote is validated.

<Frame>
  <img alt="More flexible quote approvals" />
</Frame>

[*Learn more about quote approvals*](../docs/quotes/approval)

## Tax controls

Customer tax handling is now more explicit.

You can set a customer as taxable or tax-exempt, require tax IDs for company customers per invoicing entity, and filter the customer list by tax ID status to identify records that need review.

[*Learn more about tax management*](../docs/invoices/tax-management)

## Saved views and list filters

Saved views are now available for customers, subscriptions, and invoices. You can save a filtered list view, reuse it later, and set it as the default view for that list.

<Frame>
  <img alt="Saved views and list filters" />
</Frame>

The quotes list also now supports filtering by customer.

[*Learn more about saved views*](../docs/getting-started/saved-views)

## API activity logs

You can now review API activity directly in Hyperline.

<Frame>
  <img alt="API activity logs" />
</Frame>

Each log gives you more visibility into requests made to your account, including the request status, source, API key used, and related Hyperline entities. This makes it easier to understand integration behavior without leaving the product.


# Product updates July, 2026
Source: https://docs.hyperline.co/changelog/2026-07

Hyperline July 2026 release notes: consolidated invoicing, Customer Intelligence integrations, feature entitlements, Slack quote approvals, and PostHog.

## Consolidated invoicing

Customers with several subscriptions can now receive one consolidated invoice per billing day instead of a separate invoice for each subscription.

<Frame>
  <img alt="Consolidated invoicing" />
</Frame>

Hyperline automatically combines eligible subscription invoices, while giving you more control over when grouped invoices are generated. When an invoice cannot be grouped, a Sentinel task identifies the affected invoices and links directly to the information you need to resolve the issue.

You can also force invoices to remain as drafts for selected customers, making it easier to review consolidated or organization-level invoices before issuing them.

[*Learn more about consolidated invoicing*](../docs/invoices/consolidated-invoicing)

## More integrations for Customer Intelligence

Customer Intelligence can now combine Hyperline revenue data with context from more CRM, support, email, and call recording platforms.

<Frame>
  <img alt="12 integrations for Customer Intelligence" />
</Frame>

The available integrations include Attio (including Attio Call Recorder), HubSpot, Salesforce, Intercom, Front, Plain, Pylon, Zendesk, Gmail, Google Meet with Gemini, Claap, and Grain.

These connections give the customer monitoring agent access to CRM activity, support conversations, emails, meeting summaries, and transcripts. Your teams can use this context to assess customer health, prepare for renewals, and identify risks or expansion opportunities from one place.

<Info>
  Customer Intelligence is currently in beta and available through private access.
</Info>

[*Learn more about Customer Intelligence*](../docs/customer-intelligence/overview)

## Feature entitlements

Hyperline now includes feature entitlement management, giving you a central place to define the features and access levels included with your products.

<Frame>
  <img alt="Feature entitlements" />
</Frame>

Feature entitlements can represent availability, limits, or configuration values. They are granted through the products a customer subscribes to, with the option to create customer-specific grants and overrides when needed.

[*Learn more about feature entitlements*](../docs/entitlements/overview)

## Quote approvals with Slack and delegations

Approvers can now receive quote approval requests directly in Slack. From the notification, they can review the related quote and either approve it or request changes.

<Frame>
  <img alt="Quote approvals with Slack and delegations" />
</Frame>

Approvers can also delegate approval responsibilities to another team member for a defined period, helping approval workflows continue when someone is unavailable.

Approval rules can now use the customer's invoicing entity or the subscription template as conditions, giving you more control over which quotes require review and who should approve them.

[*Learn more about quote approvals*](../docs/quotes/approval)

## Organization-based usage billing

Usage generated by child customers can now be included in a parent customer's metered subscription.

<Frame>
  <img alt="Organization-based usage billing" />
</Frame>

You can combine usage by adding activity across all child customers or by using the highest-consuming customer. This supports organizations that manage several accounts or business units under one commercial agreement.

[*Learn more about organization-based usage billing*](../docs/subscriptions/metering#include-child-customers-usage)

## Concurrent subscription-update quotes

You can now keep several update quotes open for the same subscription.

<Frame>
  <img alt="Concurrent subscription-update quotes" />
</Frame>

The first quote signed is applied automatically, while the remaining open quotes are voided to prevent conflicting updates. A dedicated **Quotes** tab on the subscription shows active proposals alongside the complete quote history.

## Bank account assignment

Bank accounts can now be assigned using rules based on the invoice currency, customer country, or customer segment.

<Frame>
  <img alt="Bank account assignment" />
</Frame>

You can keep one account for all invoices or route payments to different accounts based on these criteria. Hyperline then displays the appropriate bank details on each invoice.

[*Learn more about invoicing entity payment methods*](../docs/account/invoicing-entities#payment-methods)

## PostHog usage data

Hyperline can now use PostHog and HogQL as a usage data source.

<Frame>
  <img alt="PostHog usage data" />
</Frame>

This lets you turn product analytics events into billable usage and connect product activity to metered pricing without building a separate data pipeline.

[*Learn more about the PostHog integration*](../docs/usage/posthog)

## Customer balance drill-down

You can now open a customer's account balance to understand how it was calculated.

<Frame>
  <img alt="Customer balance drill-down" />
</Frame>

The detailed view breaks the balance down into outstanding invoices, available credit notes, and wallet credit. This makes it easier to understand whether a customer owes money, has available credit, or has a fully settled account.

For parent organizations, you can also review the aggregated balance across the parent and its child customers.

[*Learn more about customer balances*](../docs/customers/balance)


# Single sign-on and user provisioning
Source: https://docs.hyperline.co/docs/account/enterprise-sso

Connect Google Workspace for single sign-on, directory synchronization, automatic user provisioning, and group-based role assignment.

Connect Google Workspace to let members sign in through your identity provider and keep their access to your Hyperline account aligned with your directory.

<Info>
  Single sign-on and user provisioning are enterprise features available on
  demand. Contact Hyperline through the in-app chat to enable them for your
  account.
</Info>

Google Workspace is currently the only supported identity provider. A member with the **Manage authentication** permission configures a separate connection for each Hyperline account.

## Before you start

You need:

* A Hyperline role that includes the **Manage authentication** permission. This permission also gates enabling or disabling multi-factor authentication. See [Users & permissions](./users-permissions#manage-roles).
* A Google Workspace administrator account
* The Google Admin SDK Directory API enabled for users and groups
* Pop-ups allowed for Hyperline in your browser

## Understand the connection

Single sign-on and directory synchronization are configured separately:

| Capability                    | What it controls                                                                              |
| ----------------------------- | --------------------------------------------------------------------------------------------- |
| **Single sign-on**            | Members can authenticate to Hyperline through Google Workspace                                |
| **Directory synchronization** | Hyperline can retrieve Google Workspace users and groups for provisioning and role assignment |

<Note>
  A connection can show **Connected** for single sign-on while directory
  synchronization still requires configuration. **Provision users in
  Hyperline** only controls whether Hyperline applies synchronized directory
  data to account memberships.
</Note>

## Connect Google Workspace

<Steps>
  <Step title="Navigate to Settings > General" />

  <Step title="Click Set up in the Single sign-on section" />

  <Step title="Complete the Google Workspace setup assistant">
    Configure single sign-on and verify your Google Workspace domain.
  </Step>

  <Step title="Return to Hyperline">
    Hyperline displays the identity provider, domain, and connection status.
  </Step>

  <Step title="Configure directory synchronization">
    Click **Configure** next to **Directory synchronization from Google
    Workspace**, then authorize access with a Google Workspace administrator
    account. Grant access to both users and groups.
  </Step>

  <Step title="Wait for synchronization to complete">
    Hyperline displays **In progress** while Google Workspace data is being
    synchronized, then **Connected** when it is ready.
  </Step>
</Steps>

<Tip>
  Directory synchronization can take a few minutes after administrator
  authorization. Keep the authorization window open until it confirms
  completion.
</Tip>

## Reconfigure single sign-on

Click **Reconfigure** to reopen the setup assistant for the existing connection. Use it to update single sign-on or finish domain verification without deleting the connection.

When you close the setup assistant, Hyperline refreshes the connection details and statuses automatically.

To authorize user and group synchronization, use **Configure** in the directory synchronization line instead.

## Manage directory synchronization

Once directory synchronization is connected, Hyperline displays:

* **Last synchronization**: the date, time, and result of the latest synchronization
* **Synchronize now**: fetches the latest users and groups from Google Workspace
* **Provision users in Hyperline**: controls whether synchronized users become members of this Hyperline account

Click **Synchronize now**, then confirm the action. Synchronization continues in the background and can take a few minutes. If it fails, hover over **Failed** to view the error returned by the identity provider.

<Note>
  Google Workspace directory synchronization runs automatically. You can also
  start it manually, but a new manual synchronization cannot start if the
  connection was synchronized during the previous 30 minutes.
</Note>

## Provision users in Hyperline

After directory synchronization is connected, enable **Provision users in Hyperline** and click **Save changes**. Hyperline then imports existing directory users and continues to apply user and group changes.

Provisioning follows these rules:

* A new directory user creates a member in this Hyperline account.
* If the email address already belongs to a Hyperline user, Hyperline links that user instead of creating a duplicate.
* Profile and group changes update the provisioned member and their assigned role.
* Suspending a Google Workspace user removes their provisioned access. Unsuspending them restores the existing membership instead of creating a duplicate.
* Deleting a directory user removes every provisioned Hyperline membership linked to that identity, except account owner memberships.
* Account owners are never automatically removed or suspended by directory synchronization.

You can continue to invite and manage members manually. A user can have a manually managed membership in one Hyperline account and a provisioned membership in another. Directory changes only control memberships marked **Provisioned**; they do not remove manually managed access.

Provisioned memberships display a **Provisioned** label in **Settings > Team > Members**. Their role and removal actions are disabled because their access is controlled through Google Workspace. Update the directory or role provisioning rules instead.

## Assign roles from Google groups

Configure role provisioning from **Settings > Team > Roles**.

<Steps>
  <Step title="Open Role provisioning" />

  <Step title="Click Add mapping" />

  <Step title="Select a Google group and a Hyperline role" />

  <Step title="Save the mapping" />
</Steps>

Each Google group can be mapped once. Use the actions menu on an existing mapping to edit its Hyperline role or delete the mapping.

If a user belongs to several mapped groups, the first matching mapping determines their role. When no group matches, Hyperline assigns the **Default role** configured in **Role provisioning**. If no specific provisioning default is selected when provisioning is enabled, Hyperline uses the account's standard default role.

Adding, editing, or deleting a mapping, or changing the default role, reconciles existing provisioned memberships automatically.

<Tip>
  If a recently created Google group does not appear when you add a mapping,
  return to **Settings > General** and click **Synchronize now**. Wait for the
  synchronization to complete, then reopen the group selector.
</Tip>

## Troubleshoot configuration

### Single sign-on is connected, but directory synchronization is not

This is expected when only the authentication setup is complete. Click **Configure** in the directory synchronization line and authorize access with a Google Workspace administrator account.

### Google groups are unavailable

Confirm that the Google Admin SDK Directory API is enabled and that the administrator granted access to both users and groups. Configure directory synchronization again if authorization is still required, then start a manual synchronization.

### Synchronization failed

Hover over **Failed** next to the latest synchronization to view the provider error. Resolve the reported Google Workspace configuration or authorization issue, then click **Synchronize now**.

## Related

* [Users & permissions](./users-permissions)
* [Account settings](./settings)


# Invoicing entities
Source: https://docs.hyperline.co/docs/account/invoicing-entities

Manage multiple billing profiles under one Hyperline account with invoicing entities, each with its own tax setup, legal info, and payment methods.

Invoicing entities let you **manage multiple billing profiles under a single Hyperline account**. Each entity shares the account configuration (products, plans, events, coupons, and integrations) but has its own distinct invoicing settings (business information, invoice legal information and terms, tax setup and default payment methods).

This makes it easy to **centralize your global billing configuration** while customizing how each entity invoices its customers, whether you’re operating across countries, business units, or brands.

<Note>
  Accounting integrations can be connected to a specific invoicing entity (e.g. Pennylane for an entity based in France, QuickBooks for one based in the United States).
</Note>

You can also use the [API Reference](/api-reference/endpoints/invoicing-entities/) to create and manage invoicing entities.

## Create invoicing entity

Invoicing entities can be created from **Settings** by clicking your company name while browsing an invoicing entity subpage. An unlimited number of invoicing entities can be created.

An invoicing entity has its own invoicing settings:

* **Business information**: it can have its own trade name, logo and brand color, billing address, accounting currency, default timezone and languages. This is useful for companies operating under different business names in different countries.
* **Invoicing**: Activate e-invoicing, add different invoicing patterns and legal information, payment terms, initiation delay, grace period for invoices, credit notes and documents. The **Credit notes** section also includes the [Allow credit notes without an invoice](../invoices/refunds#allow-credit-notes-without-an-invoice) switch, which controls whether you can create standalone credit notes for the entity (allowed by default). This is helpful if your different entities have their own legal constraints or ways to operate business.
* **Taxes**: Select the tax engine (Hyperline, Anrok, manual), activate automatic tax collection, configure customer tax identifiers, and manage tax mappings.
* **Payment methods**: Select available payment methods and the default payment provider or bank account for each of them. For bank transfers, you can keep one bank account for all invoices or switch to **Advanced** mode to route invoices to different bank accounts based on invoice currency, customer country, and/or customer segment.

<Note>
  If you wish to delete an invoicing entity, please contact support.
</Note>

## Payment methods

Payment methods are configured separately for each invoicing entity. This lets you select the payment methods that the entity can offer and choose the default payment provider or bank account used for each method.

To review these settings, go to **Settings** > **Invoicing entities**, select the invoicing entity, then open **Payment methods**.

### Configure bank accounts for bank transfers

For bank transfers, the selected bank account determines which account details Hyperline adds to an invoice. In the **Bank transfer** row, you can either pick a single bank account used for every invoice, or switch to **Advanced** mode to route invoices to different accounts based on the invoice and customer.

<Note>
  Advanced mode requires at least one bank account to be configured for the invoicing entity and is not compatible with an automated bank transfer provider. Switching to Advanced mode clears any automated bank transfer provider selection.
</Note>

#### Advanced mode

In Advanced mode, you define a list of **mappings**. Each mapping combines one or more criteria with the bank account to use when the criteria match:

* **Currency**: match invoices issued in a specific currency.
* **Country**: match customers based in a specific country.
* **Segment**: match customers that belong to a specific segment.

Each mapping must specify **at least one criterion** and **a bank account**. Criteria within a mapping are combined with AND. For example, a mapping with `Currency: EUR` and `Country: France` only applies to invoices in EUR issued to customers based in France. You can save the settings only once the mappings table has at least one row.

When an invoice is generated, Hyperline picks the bank account of the mapping whose criteria match the invoice and its customer, and adds those account details to the invoice. Mappings that combine more criteria are considered more specific than mappings with fewer criteria.

To configure mappings, open the **Bank transfer** row, choose **Advanced**, then **Add mapping** for each rule you need. Click **Save changes** when you are done.

See [Payment methods](../payments/payment-methods) for details about supported methods, payment service providers, and customer-level configuration.

## Tax enforcement

Tax enforcement settings are scoped to each invoicing entity. In **Settings** > **Taxes**, you can:

* Enable **Enable local tax number** when company customers billed by this entity need a country-specific tax number in addition to, or instead of, a Tax ID.
* Enable **Require customer tax identifier** when company customers must provide a Tax ID or, if local tax numbers are enabled, a local tax number before billing details can be completed.
* Enable **Require valid tax ID for reverse charge** when reverse charge should apply only after the customer's tax ID has been externally validated.

See [Tax management](../invoices/tax-management#tax-enforcement-options) for details on validation statuses, VIES, and reverse charge behavior.

## Customer-level configuration

Invoicing entities are assigned at the customer level, and each customer is linked to a single invoicing entity. Updating a customer’s invoicing entity will not impact existing active subscriptions; only new subscriptions created after the update will reflect the change.

When customers are created via CRM integrations or other automated flows, Hyperline will automatically assign an invoicing entity based on the customer’s country. If no country-specific match is found, the default invoicing entity will be used instead.

## Reporting

You can filter your dashboard by invoicing entity, allowing you to have a global view on the entity's business metrics.
The invoicing entity can also be found in most exports, allowing you to do your own data analysis.
You can use the API to fetch elements like customers or invoices that match a specific invoicing entity.


# Account settings
Source: https://docs.hyperline.co/docs/account/settings

Configure general Hyperline account settings including account name, supported currencies, email notifications, saved views, and Markdown formatting.

Account settings control how your account is configured and how billing documents and emails behave across Hyperline.

## General settings

Use **Settings > General** for workspace-level settings such as your account name and security options.

Billing details are configured at the invoicing entity level instead of the general account level. See [Invoicing entities](./invoicing-entities) to configure each legal entity's billing profile.

## Currencies

Hyperline supports multiple currencies for products, prices, subscriptions, quotes, and invoices.

The main currency concepts are:

| Currency            | Where it applies                                                                                         |
| ------------------- | -------------------------------------------------------------------------------------------------------- |
| Customer currency   | The currency used for the customer, quotes, subscriptions, and invoices created for that customer        |
| Quote currency      | The currency selected when the quote is created. It cannot be changed afterward                          |
| Accounting currency | The currency used by an invoicing entity for accounting and converted invoice footer amounts when needed |
| Reporting currency  | The currency used for aggregated app views such as dashboards and revenue reporting                      |

Payment currency support also depends on the connected payment provider and enabled payment methods. For payment setup, see [Payment methods](../payments/payment-methods).

## Email settings

Use **Settings > Emails** to configure account-level email behavior.

The email settings area is organized around:

| Area              | What it controls                                                |
| ----------------- | --------------------------------------------------------------- |
| **Automated**     | Which customer emails Hyperline sends automatically             |
| **Recipients**    | Additional internal recipients for selected email notifications |
| **Configuration** | Sender, reply, and delivery settings available for your account |

Customer automated emails can include invoice, checkout, and payment error notifications. For invoice-specific behavior, see [Invoice emails](../invoices/emails).

## Saved views

Saved views let you save filtered list views for customers, subscriptions, and invoices.

Use saved views when your team repeatedly works with the same operational slices, such as:

* Active enterprise customers
* Past-due invoices
* Subscriptions renewing soon
* Customers owned by a specific team

Creating, updating, and deleting saved views requires the **Manage saved views** permission.

## Markdown text

Hyperline supports Markdown formatting in selected document text areas, such as invoice legal information and invoice additional information.

Common formatting includes:

| Syntax                             | Result             |
| ---------------------------------- | ------------------ |
| `**text**`                         | Bold text          |
| `*text*` or `_text_`               | Italic text        |
| `---`                              | Horizontal divider |
| `- text`                           | Bulleted list      |
| `[text](https://www.hyperline.co)` | Link               |

You can also use variables such as `{{customer_name}}` or custom property slugs when supported by the selected field.

## Related

* [Configure your account](../getting-started/configure-account)
* [Users & permissions](./users-permissions)
* [Invoicing entities](./invoicing-entities)
* [Single sign-on and user provisioning](./enterprise-sso)
* [Sandbox and test mode](../getting-started/sandbox)
* [Payment orchestration](../payments/orchestration)
* [Payment methods](../payments/payment-methods)


# Users & permissions
Source: https://docs.hyperline.co/docs/account/users-permissions

Invite or automatically provision team members, configure single sign-on, and assign roles to control access to your Hyperline account.

You can invite an unlimited number of team members to access your Hyperline account. Hyperline offers flexible roles and permissions through access control (ACL), allowing you to configure the appropriate access levels for each member of your account.

## Invite members

<Steps>
  <Step title="Navigate to Settings > Team" />

  <Step title="Click Add member" />

  <Step title="Enter one or multiple email address(es) and choose a role">
    To invite multiple members at the same time, you can specify multiple emails separated with commas in the **Email** field.
  </Step>

  <Step title="Submit invite(s)" />
</Steps>

Your new members will have to accept the invite sent to their email address to be able to access Hyperline.

<Note>
  If the member is already part of another Hyperline account, they will be able
  to [switch from one to another easily](../getting-started/sandbox#multiple-accounts) using the same
  login credentials.
</Note>

## Single sign-on and provisioned members

When single sign-on and directory provisioning are enabled, Google Workspace can automatically create, update, suspend, restore, and remove memberships for this Hyperline account. Manually invited members remain supported and are not affected by directory changes.

Provisioned memberships display a **Provisioned** label. Their role and removal actions are disabled in the member list because Google Workspace groups and Hyperline role provisioning rules control their access.

See [Single sign-on and user provisioning](./enterprise-sso) to configure the connection and map Google groups to Hyperline roles.

## Transfer account ownership

The current account owner can transfer account ownership to another member from
the team settings. The new owner must already be a member of the account.

<Steps>
  <Step title="Navigate to Settings > Team" />

  <Step title="Open the actions menu next to the target member" />

  <Step title="Click 'Transfer ownership' and confirm" />
</Steps>

After the transfer, the selected member becomes the account owner and can perform owner-only actions going forward.

## Manage profile notifications

Each user can manage their own notification preferences from **Profile > Notifications**.

The page is organized into:

| Area                       | What it controls                                                         |
| -------------------------- | ------------------------------------------------------------------------ |
| **Notification channels**  | Which personal channels Hyperline can use to notify you                  |
| **Approval notifications** | Which approval events should trigger notifications for you               |
| **Customer notifications** | Which customer events should trigger notifications for you               |
| **Followed segments**      | Which segments automatically add you as a follower on matching customers |

### Notification channels

Use **Notification channels** to decide where Hyperline can deliver enabled personal notifications.

* **Slack DM**: sends direct notifications to you in Slack when Slack is connected in your workspace settings

You can use **Send test** to check whether Hyperline can send you a Slack DM. If Slack DM is unavailable, Slack may not be connected in your workspace settings, or Hyperline may not find a Slack user for the email address configured in your profile.

### Approval notifications

Use **Approval notifications** to choose which approval events should notify you.

For **Approval requested**, Hyperline notifies you when a quote requires approval from you.

### Customer notifications

Use **Customer notifications** to choose which customer events should notify you when you are linked to the customer.

You can enable or disable:

* **Invoice settled**
* **Invoice becomes late**
* **Payment fails**
* **Payment method changes**
* **Payment method deleted**
* **Monitoring score changes**
* **Contract renews soon**

Some events only appear when the related feature is enabled. For example, **Monitoring score changes** appears when Customer Intelligence is enabled.

To receive a customer notification, you need both:

* The event enabled in **Customer notifications**
* A recipient link to the customer, either as owner, direct follower, or follower through a segment

### Followed segments

Use **Followed segments** to automatically follow every customer that matches a segment.

1. Go to **Profile > Notifications**.
2. In **Followed segments**, select a segment.
3. Click **Add**.

Following a segment affects who can receive customer notifications. It does not create a separate notification trigger. For example, if you follow a **Late payment behavior** segment and enable **Invoice becomes late**, Hyperline can notify you when a customer in that segment has a late invoice.

## Manage roles

You can create custom roles with specific permissions to provide fine-grained access for members based on your needs.

By default, two roles are created for you:

* **Admin**: full access to Hyperline, including the ability to manage products, plans, customers, subscriptions, and settings
* **Account Manager**: limited permissions and limited view on Hyperline, allowing them to manage customers, subscriptions, and invoices (ideal for account management teams)

Additionally, you can for example create roles for external accountants, finance team, product/tech teams, sales representatives, etc.

<Note>
  The accounting module has its own three permissions — viewing the section, updating its settings, and making recognition adjustments. See [Accounting permissions](/docs/accounting/getting-started#permissions) for what each one unlocks.
</Note>

### Default role

One of the roles is designated as the default. This role is automatically assigned to members created through a connected integration, such as a CRM. It is also used for provisioned members when none of their identity provider groups matches a role mapping.

Account Manager is the default role for each newly created Hyperline account. You can easily set the default role to another existing one.

### Create new role

<Steps>
  <Step title="Navigate to Settings > Team" />

  <Step title="Click Add role" />

  <Step title="Enter a name, optionally add a description, and select the granted permissions" />

  <Step title="Click Create role" />
</Steps>


# Chart of accounts
Source: https://docs.hyperline.co/docs/accounting/accounts

Manage the chart of accounts for each Hyperline ledger: pre-populate GL accounts, customize them, and reference them in accounting rules.

Each ledger has a chart of accounts — the list of GL (General Ledger) accounts that Hyperline uses when posting journal entries. Accounts are referenced in your [accounting rules](./rules) to determine which account receives each debit or credit.

Two places in the app deal with accounts, and they do different jobs:

* **Accounting** > **Settings** > **Chart of accounts** is where you *manage* accounts — add, edit, delete, or sync them from your accounting provider. It lists codes, names, and types only.
* The **Ledger** tab is where you *read* them — balances, movements, and the [financial report exports](#export-financial-reports).

## Default account sets

When you create a ledger, Hyperline can pre-populate its chart of accounts with a standard set of accounts matching your chosen accounting standard:

| Standard         | Included accounts                                                        |
| ---------------- | ------------------------------------------------------------------------ |
| IFRS             | International template (1000s assets, 4000s revenue, 6000s expenses)     |
| Local GAAP       | International template (same as IFRS)                                    |
| US GAAP          | ASC 606 revenue accounts with CECL allowance for credit losses (ASC 326) |
| UK GAAP          | FRS 102 naming (Trade Debtors, Deferred Income, VAT Output)              |
| FR GAAP          | Plan Comptable Général codes (512000, 706100, 706200, etc.)              |
| Management       | M-codes for ARR/MRR bucketing (new, expansion, churn)                    |
| Consolidation    | Minimal set for intercompany and adjustment entries                      |
| Audit adjustment | Same as consolidation                                                    |

You can modify these defaults at any time. Default account sets also come with a matching set of default [accounting rules](./rules) pre-configured for those accounts.

## Account types

Hyperline supports the following GL account types:

| Type               | Description                                                     |
| ------------------ | --------------------------------------------------------------- |
| `Asset`            | Cash, accounts receivable, and other resources owned            |
| `Contra Asset`     | Offsets an asset account (e.g. allowance for doubtful accounts) |
| `Liability`        | Deferred revenue, tax payable, customer credits                 |
| `Contra Liability` | Offsets a liability account                                     |
| `Equity`           | Retained earnings, share capital                                |
| `Revenue`          | Subscription revenue, usage revenue, one-off fees               |
| `Contra Revenue`   | Discounts, refunds, promotional adjustments                     |
| `Expense`          | Bad debt, payment processing fees                               |

## Add an account

Go to **Accounting** > **Settings** > **Chart of accounts** and click **Add account**.

<Frame>
  <img />
</Frame>

Each account requires:

* **Code** — a unique identifier within the ledger (e.g. `4000`, `706100`)
* **Name** — a descriptive label (e.g. "Subscription Revenue")
* **Type** — one of the account types listed above

## Edit an account

Click the edit icon next to any account in the accounts list. You can update the code, name, and type at any time.

## Delete an account

Click the delete icon next to the account and confirm.

<Warning>Accounts with existing journal entry lines cannot be deleted.</Warning>

## Sync accounts from your accounting provider

An existing chart of accounts can be pulled directly from the provider instead of creating accounts manually.

<Info>
  The **Sync accounts** button only appears once you have connected an accounting integration. Go to **Settings** > **Integrations** to connect your provider first.
</Info>

Go to **Accounting** > **Settings** > **Chart of accounts** and click **Sync accounts**.

Hyperline will fetch the current chart of accounts from the provider and import the accounts into your ledger. [Supported providers](/integrations/overview#accounting-software) for account sync are Xero, QuickBooks, Exact Online, Pennylane, NetSuite, and Rillet. You can then reference these accounts in your rules and map them to Hyperline's standard account roles (accounts receivable, revenue, deferred revenue, etc.).

### Use synced accounts in rules

After syncing accounts from your provider:

1. Review the imported **Code**, **Name**, and **Type** values.
2. Open **Accounting** > **Settings** > **Rules**.
3. Select the synced accounts in your rule mappings, such as **Revenue account**, **Deferred revenue**, **Accounts receivable**, **Cash / bank account**, or **Payment clearing account**.
4. Add rule filters when the account should only apply to specific products, currencies, countries, billing intervals, coupons, payment methods, or provider accounts.
5. Save the rule and retry or resync any integration issues that were waiting on account mapping.

<Tip>
  Syncing accounts from your provider ensures that account codes match exactly —
  which is required for journal entries to post correctly in your external
  accounting software.
</Tip>

<Note>
  If an account does not appear after syncing, check that the account is active, available for the relevant entity, and visible to the role or user connected to Hyperline.
</Note>

## Browse account activity

Balances and movements live on the **Ledger** tab, the default landing page of the **Accounting** section — not on the chart of accounts settings page, which shows no figures.

The tab is an expandable list with one row per account. Collapsed, a row shows the account **code**, its **name**, and its **closing balance** for the selected quarter. Expanding a row reveals:

* **Opening balance** — the balance carried into the quarter
* The **debit** and **credit** movements posted during the quarter
* **Closing balance** — opening balance plus the period's movements
* A **View journal entry lines** button, which opens the account's [journal entry lines](./entries#journal-entry-lines-drill-down) for that quarter

Above the list you can pick the **quarter**, filter by account **Type**, and search by code or name. Accounts can be ordered by **Code** or by **Name**.

## Export financial reports

From the **Ledger** tab, the **Export** dropdown produces three reports based on the currently selected quarter:

| Report               | Scope                                                                                | Format |
| -------------------- | ------------------------------------------------------------------------------------ | ------ |
| **General ledger**   | All entries posted between the start and end of the selected quarter                 | XLSX   |
| **Income statement** | Revenue and expenses for the selected quarter, in the ledger's functional currency   | XLSX   |
| **Balance sheet**    | All asset, liability, and equity balances as of the last day of the selected quarter | XLSX   |

<Info>
  Exports run asynchronously. You will be notified in-app once the file is ready, and it will be available from **Exports** in the main navigation.
</Info>


# Journal entries
Source: https://docs.hyperline.co/docs/accounting/entries

Browse every journal entry from the Journal tab, drill into a single account's lines from the Ledger, and audit accounting activity in any Hyperline ledger.

Journal entries are posted automatically from your billing activity. To understand *how* they are produced — the debits and credits behind each billing event — see [how entries are computed](./entry-mechanics). This page covers where you read them.

There are two surfaces, and they answer different questions:

| Surface                            | Where                                                                          | Answers                                                                                                                          |
| ---------------------------------- | ------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------- |
| **Journal** tab                    | **Accounting** > **Journal**                                                   | "Show me every entry in this ledger" — a flat, paginated table with its own filters and export                                   |
| **Journal entry lines** drill-down | **Accounting** > **Ledger** > expand an account > **View journal entry lines** | "Show me what hit *this* account in *this* quarter" — a side panel listing the account's lines, with the full entry next to them |

The drill-down also opens from an [invoice](/docs/invoices/overview#accounting), via **View in ledger** on any of the invoice's journal entries.

## Journal tab

The **Journal** tab lists every journal entry in the ledger, most recent first.

| Column          | Description                                                    |
| --------------- | -------------------------------------------------------------- |
| **Entry**       | Entry number (e.g. `JE-001`)                                   |
| **Date**        | Date of the journal entry                                      |
| **Rule**        | Code of the accounting rule that generated the entry           |
| **Description** | What the entry was posted for                                  |
| **Amount**      | Total amount of the entry, in the ledger's functional currency |

Click any row to open that entry in a side modal, with the [entry detail](#entry-detail) described below.

### Filters

* **Status** — `Posted` or `Draft`
* **Account** — only entries touching a given GL account
* **Entry date** — a start and end date
* **Rule** — the accounting rule that generated the entry
* **Search** — search by invoice number, customer, or amount

### Export

Click **Export** at the top of the **Journal** tab to download a **general ledger** XLSX. The export respects the filters currently applied — status, account, and the entry date range — so you can scope it to a single account, a specific posting state, or any date window.

<Info>
  Exports run asynchronously. You will be notified in-app once the file is ready, and it will be available from **Exports** in the main navigation.
</Info>

## Journal entry lines drill-down

This view answers a per-account question, so it always opens with an account and a quarter in context. Open it from the **Ledger** tab (expand an account, then click **View journal entry lines**) or from an invoice's **View in ledger** action.

<Frame>
  <img alt="Journal entry lines drill-down" />
</Frame>

It is a side panel split in two:

* **Left** — a paginated list of the journal entry **lines** posted to the selected account during the quarter
* **Right** — the full [entry detail](#entry-detail) for the line selected on the left

The header shows the context: `[Code] - [Account Name] / Journal entry lines / Q[N] YYYY`.

Each row on the left represents a single line and shows:

| Column            | Description                                                                 |
| ----------------- | --------------------------------------------------------------------------- |
| **Journal entry** | Entry number (e.g. `JE-001`)                                                |
| **Entry date**    | Date of the journal entry                                                   |
| **Status**        | `Posted` (green) or `Draft` (gray); posted entries include the posting date |
| **Rule**          | Code of the accounting rule that generated the line                         |
| **Debit**         | Amount if the line is a debit; `—` otherwise                                |
| **Credit**        | Amount if the line is a credit; `—` otherwise                               |

Filter the list by **Type** (`Debit` or `Credit`), by **Date range** within the quarter, or search by invoice number, customer, or amount.

<Note>
  This view has no export button. To download entries as a spreadsheet, use the [Journal tab export](#export) or the [financial reports](./accounts#export-financial-reports) on the **Ledger** tab.
</Note>

## Entry detail

Both surfaces show the same entry detail — as a side modal from the **Journal** tab, and in the right-hand panel of the drill-down.

**Journal entry details** covers the entry itself:

* Entry date and status (with the posting date if posted)
* Related records — customer, subscription, invoice — when applicable
* Original currency, exchange rate, and exchange rate date, shown only when the rate is not 1

**Journal entry lines** lists every debit and credit of the entry:

| Column      | Description                    |
| ----------- | ------------------------------ |
| **Rule**    | Accounting rule code           |
| **Account** | GL account code and name       |
| **Debit**   | Amount if the line is a debit  |
| **Credit**  | Amount if the line is a credit |

A bold **Total** row closes the table — debits and credits always match.

When an entry has lines across multiple products, lines are grouped by account with each product shown as a sub-row. In the drill-down, the line selected on the left is highlighted here.

<Info>
  Is something still unclear? Don't hesitate to reach out to our team via the
  in-app chat if you need additional support.
</Info>


# How entries are computed
Source: https://docs.hyperline.co/docs/accounting/entry-mechanics

Understand the debits and credits Hyperline posts for each billing event: invoice posting, revenue recognition, usage, settlement, refunds, and credit notes.

This page explains the **journal entries** Hyperline posts behind the scenes for each billing event — the actual debits and credits, and why. It complements the [accounting rules](./rules) (which decide *which* accounts are used) and the [journal entries view](./entries) (where you browse the posted result).

<Note>
  The exact account each line lands on is decided by your [accounting rules](./rules). The tables below use account **names** (Accounts receivable, Revenue, Output tax…); the **codes** depend on the [chart of accounts](./accounts) attached to your ledger.
</Note>

## Double-entry basics

Every Hyperline journal entry follows standard double-entry bookkeeping:

* **Each entry balances** — total debits always equal total credits.
* **Amounts are net of tax on revenue lines.** Tax is always posted separately to the output tax account when the invoice is issued, regardless of how the revenue itself is recognised.
* **Entries are immutable once posted.** Corrections are made with reversing entries (for example a [credit note](#credit-notes)), never by editing or deleting a posted entry.
* **One functional currency per ledger.** When an invoice is in a different currency, each line stores both the original-currency amount and the converted ledger amount — see [multi-currency](#multi-currency-and-fx).

Throughout this page, each event is shown as a small ledger table:

| Account           | Debit | Credit |
| ----------------- | ----- | ------ |
| Example account A | 100   |        |
| Example account B |       | 100    |

## Invoice posted

When an invoice is finalised and emitted, Hyperline posts one entry that recognises the receivable and the tax liability, and books the revenue either **immediately** or as **deferred revenue**, depending on the line item's [revenue recognition](./revenue-recognition) method.

### Immediate revenue

For a line with no deferral (no recognition rule, or point-in-time recognised on the invoice date), revenue is booked straight away.

<Card title="Example 💡">
  A €120 invoice line — €100 net + €20 tax — for a product recognised immediately:

  | Account             | Debit | Credit |
  | ------------------- | ----- | ------ |
  | Accounts receivable | 120   |        |
  | Revenue             |       | 100    |
  | Output tax          |       | 20     |
</Card>

### Deferred revenue

For a line recognised **over time**, by **usage** (billed in advance), or **point-in-time on a future date**, the revenue is parked in deferred revenue at issue and released later (see [revenue recognition](#revenue-recognition)).

| Account             | Debit | Credit |
| ------------------- | ----- | ------ |
| Accounts receivable | 120   |        |
| Deferred revenue    |       | 100    |
| Output tax          |       | 20     |

### Discounts

How a discount appears depends on the **discount recognition mode**, set on the **Revenue recognition** rule:

| Mode           | Effect on the entry                                                                     |
| -------------- | --------------------------------------------------------------------------------------- |
| Immediate      | A contra-revenue (or discount) account is debited for the discount amount at issue      |
| Deferred       | A deferred discount account is debited and released on the same schedule as the revenue |
| Use net amount | No separate discount line — revenue is booked net of the discount                       |

## Revenue recognition

Deferred revenue is released to revenue over the service period by a recognition schedule. Each recognition entry — called a **slice** — moves the earned portion out of the liability:

| Account          | Debit | Credit |
| ---------------- | ----- | ------ |
| Deferred revenue | 100   |        |
| Revenue          |       | 100    |

The timing of these slices is driven by the recognition method (over-time granularity, point-in-time basis, or usage). See [revenue recognition](./revenue-recognition) for how each method spreads the amount.

<Note>
  Tax is **not** touched at recognition time — it was already posted in full to output tax when the invoice was issued.
</Note>

## Usage-based revenue

Metered products and credit packs are recognised in line with actual consumption. There are two timings, depending on whether the usage is billed **in advance** or **in arrears** — and they post differently.

### Billed in advance

The customer is invoiced up front (or buys a credit pack), so the amount sits in **deferred revenue** at issue. Each day, Hyperline releases the share matching that day's consumption:

| Account          | Debit                 | Credit                |
| ---------------- | --------------------- | --------------------- |
| Deferred revenue | *(daily usage share)* |                       |
| Revenue          |                       | *(daily usage share)* |

Any amount left deferred when a credit pack expires is recognised as **breakage** in a single entry on the expiry date. See [usage-based recognition](./revenue-recognition#usage-based) for the consumption and breakage rules.

### Billed in arrears

When usage is billed **after** the period (the invoice is issued at period end for what was already consumed), the revenue is **earned before it is invoiced**. Recognising it only at invoicing would understate revenue during the period, so Hyperline accrues it daily against a **contract asset** — *unbilled revenue* — instead of deferred revenue.

**During the period**, each day's consumption is accrued:

| Account                             | Debit                 | Credit                |
| ----------------------------------- | --------------------- | --------------------- |
| Unbilled revenue *(contract asset)* | *(daily usage share)* |                       |
| Revenue                             |                       | *(daily usage share)* |

**When the invoice is issued**, the already-earned amount is reclassified from the contract asset to the receivable — it is not re-recognised as revenue:

| Account             | Debit         | Credit                  |
| ------------------- | ------------- | ----------------------- |
| Accounts receivable | *(net + tax)* |                         |
| Unbilled revenue    |               | *(net already accrued)* |
| Output tax          |               | *(tax)*                 |

If the final invoiced amount differs from what was accrued (late usage, corrections), the difference is **trued up** against revenue at issue so the contract asset nets to zero and recognised revenue equals the invoiced net. Accrual runs **per product** and **per ledger**.

<Card title="Example 💡">
  A customer consumes a metered product through May and is invoiced €300 + €60 tax on 31 May. Across May, Hyperline accrues the €300 day by day (debit Unbilled revenue / credit Revenue). On 31 May the invoice reclassifies it:

  | Account             | Debit | Credit |
  | ------------------- | ----- | ------ |
  | Accounts receivable | 360   |        |
  | Unbilled revenue    |       | 300    |
  | Output tax          |       | 60     |

  Revenue was recognised across May as it was earned — not in a lump on 31 May.
</Card>

<Note>
  See [revenue recognition → usage billed in arrears](./revenue-recognition#usage-billed-in-arrears) for the daily timing, the late-usage grace window, and per-product behaviour.
</Note>

## Invoice settled

When a payment transaction settles, Hyperline clears the receivable against cash. The debit side depends on the payment method:

* **Bank transfer / direct cash** → a **cash** account is debited.
* **Payment provider (card, etc.)** → a **payment clearing** account is debited (the funds are in transit until the provider pays out).

| Account                      | Debit | Credit |
| ---------------------------- | ----- | ------ |
| Cash *(or payment clearing)* | 120   |        |
| Accounts receivable          |       | 120    |

### Provider fees

When the provider deducts a processing fee, the cash received is net of the fee and the fee is booked as an expense:

| Account                      | Debit | Credit |
| ---------------------------- | ----- | ------ |
| Cash *(or payment clearing)* | 117   |        |
| Payment processing fees      | 3     |        |
| Accounts receivable          |       | 120    |

### Paying with customer credits

When an invoice is settled using a customer's credit balance rather than cash, the credit liability is drawn down instead of debiting cash:

| Account             | Debit | Credit |
| ------------------- | ----- | ------ |
| Customer credits    | 120   |        |
| Accounts receivable |       | 120    |

## Refunds

A refund reverses a settlement — cash goes back to the customer and the receivable (or a credit) is restored. The legs mirror the settlement entry, debit and credit swapped.

| Account                      | Debit | Credit |
| ---------------------------- | ----- | ------ |
| Accounts receivable          | 120   |        |
| Cash *(or payment clearing)* |       | 120    |

## Credit notes

A credit note reverses an invoice, posting to the **same accounts** that were used when the invoice was issued. The revenue (or remaining deferred revenue) and the output tax are reversed; the offsetting side depends on whether the invoice was paid:

* **Unpaid invoice** → the receivable is reduced (the customer simply owes less).
* **Paid invoice** → a **customer credit** liability is created (the value is owed back to the customer).
* **Partially paid** → the receivable is cleared first, any excess goes to customer credits.

<Card title="Example 💡">
  A €120 credit note (€100 net + €20 tax) against an **unpaid** invoice whose revenue was recognised immediately:

  | Account             | Debit | Credit |
  | ------------------- | ----- | ------ |
  | Revenue             | 100   |        |
  | Output tax          | 20    |        |
  | Accounts receivable |       | 120    |

  Had the invoice been **paid**, the €120 credit would land on **Customer credits** instead of Accounts receivable.
</Card>

<Note>
  If the original line still had **deferred** revenue (not yet fully recognised), the credit note reverses the remaining balance from the deferred revenue account rather than from revenue, so it only claws back what was actually recognised.
</Note>

## Multi-currency and FX

Each ledger keeps its books in a single **functional currency**. When an invoice or payment is in another currency, every journal entry line stores:

* the **original-currency** amount (as billed), and
* the **ledger-currency** amount (converted), plus the exchange rate and rate date used.

The rate is captured **at the time of the event** (invoice emission date, payment date) and frozen on the entry, so historical entries are never re-translated when rates later move. The same rate is used across an event's related entries — for example, accrued usage is accrued, reclassified, and trued up at one consistent per-ledger rate so the contract asset nets cleanly.

## Bad debt

The default chart of accounts includes an **allowance for doubtful accounts** (a contra-asset that offsets receivables) and a **bad debt expense** account. These roles can be mapped on your [accounting rules](./rules) so that, when a receivable is deemed uncollectible, the outstanding amount is written off the books instead of remaining in Accounts receivable.

<Info>
  Is something still unclear? Don't hesitate to reach out to our team via the in-app chat if you need additional support.
</Info>


# Getting started with accounting
Source: https://docs.hyperline.co/docs/accounting/getting-started

Set up accounting in Hyperline: create your first ledger and let Hyperline generate journal entries from your billing activity automatically.

Hyperline's accounting module turns your billing activity into journal entries automatically. Every invoice, payment, and credit note posts to your books following rules you control, so your books always match what you billed and deferred revenue is recognised on schedule. No spreadsheets, no manual bookkeeping.

<Info>
  The accounting module is not enabled by default. [Contact our team](mailto:support@hyperline.co) or reach out via the in-app chat to have it enabled on your workspace.
</Info>

The module is built around five building blocks:

| Building block                                   | What it does                                                                                                                                                                                                                                  |
| ------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **[Ledger](./ledgers)**                          | One set of books attached to an invoicing entity. You can keep several ledgers per entity, for example a statutory ledger (the official books you file with tax authorities and auditors) next to a management ledger for internal reporting. |
| **[Chart of accounts](./accounts)**              | The list of general ledger accounts used in journal entries: accounts receivable, revenue, deferred revenue, tax payable, and so on. Each ledger has its own.                                                                                 |
| **[Accounting rules](./rules)**                  | Define which accounts to debit and credit for each billing event, with filters to scope them to specific products, customers, currencies, or payment methods.                                                                                 |
| **[Journal entries](./entries)**                 | Generated automatically when billing events occur, based on your rules. Posted entries cannot be edited: corrections are made via reversal entries.                                                                                           |
| **[Revenue recognition](./revenue-recognition)** | When revenue has to be spread over time, tied to a future date, or matched to usage, Hyperline defers it and recognises it on schedule automatically.                                                                                         |

## Before you start

Make sure you have:

* The accounting module enabled on your workspace (see above)
* Billing activity to account for (invoices, payments, credit notes), current or upcoming
* The accounting standard your books follow (IFRS, US GAAP, UK GAAP, French GAAP, or another local GAAP)
* A decision on whether you will sync entries to an external accounting tool, such as Xero, QuickBooks, Pennylane, NetSuite, Exact Online, or Rillet

## Permissions

Access to the accounting module is controlled by three permissions, granted to a role in **Settings** > **Team**. See [Users & permissions](/docs/account/users-permissions#manage-roles) for how to create a role.

| Permission in the role form     | What it unlocks                                                                      |
| ------------------------------- | ------------------------------------------------------------------------------------ |
| **View accounting page**        | The whole **Accounting** section: ledger, revenue recognition, journal, and settings |
| **Update accounting settings**  | Creating and editing ledgers, accounts, and rules                                    |
| **Make accounting adjustments** | The **Adjust remaining recognition** action on a recognition schedule                |

<Note>
  **View accounting page** also gates accounting exports: without it, general ledger, income statement, balance sheet, and revenue recognition files are neither visible nor downloadable from **Exports**.
</Note>

## Setup flow

### 1. Create your ledger

A ledger is one self-contained set of books, with its own chart of accounts, rules, and journal entries. Most companies start with a single ledger mirroring the official books they report on.

Go to **Accounting** and click **Create ledger**.

<Frame>
  <img />
</Frame>

You will be asked to configure, in this order:

* **Name**: a label to identify the ledger (e.g. "Statutory IFRS")
* **Ledger type**: the accounting standard, which determines the starting chart of accounts and rules
* **Invoicing entity**: the entity this ledger is attached to
* **Currency**: the **functional currency**, the single currency this ledger keeps its books in. Invoices in other currencies are converted using the exchange rate at invoice time
* **Journal entry pattern**: the numbering format for journal entries (e.g. `JE-{YYYY}-{number}`). The pattern accepts `{number}` (required, the sequential counter), `{YYYY}`, `{MM}`, and `{DD}`

Start with **one statutory ledger** (the official books you file with tax authorities and auditors) and pick the type matching your jurisdiction:

| Your books follow                    | Pick                   |
| ------------------------------------ | ---------------------- |
| French GAAP (Plan Comptable Général) | `FR GAAP`              |
| US GAAP (ASC 606)                    | `US GAAP`              |
| UK GAAP (FRS 102)                    | `UK GAAP`              |
| IFRS or another standard             | `IFRS` or `Local GAAP` |

<Tip>
  If you plan to sync this ledger with an external accounting provider, select the standard that matches your provider's chart of accounts. It simplifies the account mapping later.
</Tip>

<Note>
  Leave the `Management`, `Consolidation`, and `Audit adjustment` types for later. They serve advanced setups such as tracking annual and monthly recurring revenue or group-level eliminations, and the consolidation and audit types ship without default rules. See [Ledgers](./ledgers#ledger-types) for the full list.
</Note>

### 2. Accounts and rules are created for you

Setting up a chart of accounts and mapping every billing event to the right accounts is usually the tedious part. Hyperline does it for you, based on the ledger type you picked:

* A **chart of accounts** matching the selected standard, such as ASC 606 revenue accounts for US GAAP
* A complete set of **accounting rules** mapping each billing event (invoice posted, invoice settled, credit note created) to the right accounts

Entries post correctly without any extra configuration. You can review everything in **Accounting** > **Settings**, and customise [accounts](./accounts) and [rules](./rules) at any time, for example to map a specific product to its own revenue account.

<Note>
  Syncing to an external accounting tool? Instead of using the default accounts, you can [pull the chart of accounts directly from your provider](./accounts#sync-accounts-from-your-accounting-provider) so account codes match exactly.
</Note>

### 3. Watch entries post

From here on, you never write these entries by hand. Each time an invoice is finalised, a payment settles, a credit note is issued, or usage is consumed on a usage-based product, Hyperline applies your rules and posts the matching debits and credits.

You can browse them in three places:

* **Accounting** > **Journal**: every entry in the ledger as a flat list, with filters for status, account, entry date, and rule
* **Accounting** > **Ledger**: entries seen per account, for a selected quarter
* The **Accounting** section on any invoice: the entries and recognition schedules for that specific invoice

<Warning>
  **Entries are not retroactive.** A new ledger only posts journal entries and recognition schedules for events that happen **after it is created** (new invoices, settlements, credit notes, usage) — nothing is generated for your existing billing history. The same applies to changes you make later: editing a rule or an account changes how **future** entries post, it does not recompute entries that are already posted.

  To bring past periods into the ledger, or to re-apply a corrected rule to a period already posted, [contact our team](mailto:support@hyperline.co) or reach out via the in-app chat. A replay rebuilds the automated entries for the range you ask for, and leaves any [manual recognition adjustments](./revenue-recognition#adjust-remaining-recognition) untouched.
</Warning>

### 4. Verify a first invoice

Once a first invoice has been issued, open the invoice page and scroll down to its **Accounting** section: accounts receivable should equal the total owed, revenue (or deferred revenue) the net amount, and the tax line the tax. If those match, every future invoice will post the same way.

To understand exactly which debits and credits Hyperline posts for each event, see [how entries are computed](./entry-mechanics).

## Next steps

<CardGroup>
  <Card title="Customise your rules" icon="sliders" href="./rules">
    Scope rules to specific products, customers, or currencies, and understand priorities.
  </Card>

  <Card title="Adjust revenue recognition" icon="chart-gantt" href="./revenue-recognition">
    Recognition is driven by your accounting rules. Adjust how revenue is deferred and recognised: over time, at a point in time, or based on usage.
  </Card>

  <Card title="Understand entry mechanics" icon="scale-balanced" href="./entry-mechanics">
    See the exact debits and credits posted for each billing event.
  </Card>

  <Card title="Connect your accounting tool" icon="plug" href="/integrations/overview#accounting-software">
    Push invoices to Xero, QuickBooks, Pennylane, NetSuite, and more. Once connected, you can also pull the provider's chart of accounts into your ledger.
  </Card>
</CardGroup>

You can also export financial reports as spreadsheet (XLSX) files. The **Ledger** tab exports the general ledger, income statement, and balance sheet ([details](./accounts#export-financial-reports)); the **Revenue recognition** tab exports the waterfall and the recognized summary ([details](./revenue-recognition#export)).

<Info>
  Is something still unclear? Don't hesitate to reach out to our team via the in-app chat if you need additional support.
</Info>


# Ledgers
Source: https://docs.hyperline.co/docs/accounting/ledgers

Create and manage Hyperline accounting ledgers per invoicing entity for statutory, management, or consolidation books with isolated entries.

A ledger is a set of books attached to one of your [invoicing entities](/docs/account/invoicing-entities). All [journal entries](./entries), [accounts](./accounts), and [accounting rules](./rules) are scoped to a ledger. You can create multiple ledgers per invoicing entity to maintain separate books for different purposes, such as statutory reporting, management accounts, consolidation adjustments, and so on.

## Create a ledger

To create a ledger, go to **Accounting** and click **Create ledger**.

<Frame>
  <img />
</Frame>

You will be asked to configure, in this order:

* **Name** — a label to identify the ledger (e.g. "Statutory – IFRS", "Management")
* **Ledger type** — the starting chart of accounts and configuration to apply (see ledger types below)
* **Invoicing entity** — the entity this ledger is attached to
* **Currency** — the functional currency for this ledger; amounts in other currencies are converted using the exchange rate at invoice time
* **Journal entry pattern** — the numbering format for journal entries (e.g. `JE-{YYYY}-{number}`). The pattern accepts `{number}` (required, the sequential counter), `{YYYY}`, `{MM}`, and `{DD}`

<Tip>
  If you plan to sync this ledger with an external accounting provider, select the account standard that matches your provider's chart of accounts — this simplifies the account mapping later.
</Tip>

<Note>
  A new ledger starts empty: it posts nothing for billing activity that happened before it was created. See [Getting started](./getting-started#3-watch-entries-post) for how to have past periods replayed into it.
</Note>

## Ledger types

Hyperline supports the following ledger types, each pre-configured with a matching chart of accounts:

| Type               | Purpose                                  | Default account set                                                      |
| ------------------ | ---------------------------------------- | ------------------------------------------------------------------------ |
| `IFRS`             | International statutory reporting        | International template (1000s assets, 4000s revenue, 6000s expenses)     |
| `US_GAAP`          | US statutory reporting                   | ASC 606 revenue accounts with CECL allowance for credit losses (ASC 326) |
| `UK_GAAP`          | UK statutory reporting                   | FRS 102 naming (Trade Debtors, Deferred Income, VAT Output)              |
| `FR_GAAP`          | French statutory reporting               | Plan Comptable Général codes                                             |
| `LOCAL_GAAP`       | Other local statutory reporting          | International template (same as IFRS)                                    |
| `MANAGEMENT`       | Internal reporting, ARR/MRR tracking     | M-codes for ARR/MRR bucketing (new, expansion, churn)                    |
| `CONSOLIDATION`    | Group-level eliminations and adjustments | Minimal intercompany and adjustment accounts                             |
| `AUDIT_ADJUSTMENT` | Post-close corrections                   | Same as consolidation                                                    |

Each ledger maintains its own chart of accounts, rules, and journal entry sequence independently.

## Edit a ledger

**Accounting** > **Settings** opens with a read-only **Configuration** block summarising the current ledger. Click **Edit ledger** there to update its name, type, entity, currency, or journal entry pattern.

## Delete a ledger

**Delete ledger** sits alongside **Edit ledger** in the same Configuration block. Deleting a ledger permanently removes its accounts, rules, and journal entries.

<Note>
  The primary ledger cannot be deleted.
</Note>

<Warning>
  Deleting a ledger is irreversible. Make sure you no longer need the ledger's history before proceeding.
</Warning>


# Revenue recognition
Source: https://docs.hyperline.co/docs/accounting/revenue-recognition

Automate deferred revenue and recognition schedules in Hyperline, with per-line schedules and journal entries posted as revenue is earned.

When a customer pays upfront for a service delivered over time, the revenue cannot be recognised immediately — it must be deferred and released as the service is performed. Hyperline manages this automatically by creating recognition schedules on each invoice line item and posting the corresponding journal entries as revenue is earned.

<Info>
  Revenue recognition is available on supported plans and may require activation on your account while the feature is being rolled out. If you do not see **Accounting** > **Revenue recognition**, contact support to confirm availability and access.
</Info>

<Note>
  All revenue recognition amounts are **net of tax**. Tax is always posted
  separately as a liability (output tax account) at the time the invoice is
  issued, regardless of the recognition method applied to the revenue.
</Note>

## Recognition methods

The recognition method is defined in your **Revenue recognition** accounting rule. It can be set at the rule level and overridden for specific products or customer segments using filters.

### Over time

Revenue is spread evenly across the service period using a straight-line allocation. You configure the **granularity** at which Hyperline posts recognition entries:

| Granularity | How revenue is spread                        |
| ----------- | -------------------------------------------- |
| Daily       | Recognised each day over the service period  |
| Monthly     | Recognised at the end of each calendar month |
| Quarterly   | Recognised at the end of each quarter        |
| Yearly      | Recognised at the end of each year           |

<Card title="Example 💡">
  A customer pays €12,000 upfront for a 12-month SaaS subscription starting 1
  January. With monthly granularity, Hyperline defers the full €12,000 at
  invoice time and recognises €1,000 each month from January to December.
</Card>

### Point in time

All revenue is recognised at a single date. You configure the **recognition date basis**:

| Basis              | Recognition date                    |
| ------------------ | ----------------------------------- |
| Invoice date       | The date the invoice was issued     |
| Service start date | The first day of the service period |
| Service end date   | The last day of the service period  |

<Card title="Example 💡">
  A one-off implementation fee with "service end date" basis will remain
  deferred until the end of the project, at which point the full amount is
  recognised.
</Card>

### Usage-based

Revenue is recognised in line with what your customers actually consume. Use this method for **metered products** and **credit packs** — the amount you recognise each day reflects that day's usage, not a flat allocation.

When the invoice is issued, the full amount is parked in deferred revenue. Each day, Hyperline releases the share corresponding to that day's consumption. Days with no usage recognise nothing; busy days recognise more.

<Note>
  This covers usage billed **in advance** — the customer prepays (or buys a credit pack) and the amount is deferred at issue. When usage is billed **in arrears** (invoiced at the end of the period for what was already consumed), revenue is accrued against a contract asset instead — see [usage billed in arrears](#usage-billed-in-arrears).
</Note>

#### Recognition timing

A daily job sweeps every day's slice and only releases revenue once the day's usage total has been seen unchanged on two consecutive runs — i.e. no late events landed between observations. This stability gate gives a **≥24 hour grace period** for late-arriving usage events.

In practice, day **D**'s revenue is recognised at the next-but-one daily run (typically two days after the consumption day). A day with **zero** observed usage gets an extra **7 days** before being closed at zero, so a slow-starting customer or a delayed ingestion pipeline doesn't permanently zero out an early slice.

Two carve-outs to that gate:

* **Catching up on old periods.** A day whose period closed more than 7 days ago is recognised on the first pass, without waiting for a second observation — the late-event window has already elapsed.
* **Credit-pack drawdown has no grace period.** Drawdown is recognised as soon as it is read. If a drawdown lands late, Hyperline trues the schedule up with an additional slice rather than dropping the amount.

<Note>
  Once a day's revenue has been recognised, **events landing for that day after recognition are not retroactively allocated**. If your usage pipeline regularly produces late events older than 48 hours, reach out before relying on usage-based recognition for material amounts.
</Note>

| Setting required               | Where to set it          |
| ------------------------------ | ------------------------ |
| A revenue account              | Revenue recognition rule |
| A deferred revenue account     | Revenue recognition rule |
| Metered or credit-pack product | Catalog                  |

<Card title="Example 💡">
  A customer is invoiced €600 upfront for a metered product over a 30-day
  service period and consumes 1,000 units across that period. Hyperline
  defers €600 at invoice time, then recognises each day in proportion to
  that day's consumption — a day with 50 units recognises €30, a day with
  no usage recognises nothing.
</Card>

#### Credit packs

Credit packs follow the same usage-based engine, with the schedule anchored on the **credit topup** rather than a metered aggregator:

* The service window is the topup's **validity period** (`createdAt → expiresAt`). Non-expiring topups inherit the line item's billing period.
* Each day, Hyperline reads the credits **drawn down** that day and releases the proportional share of the topup's value.
* When a customer holds **multiple active topups**, drawdown is attributed **FIFO** — the oldest topup is consumed first, so its schedule recognises ahead of newer ones.

<Card title="Example 💡">
  A customer buys a €1,000 / 500-credit pack valid for 90 days. Over that window
  they consume 400 credits. Hyperline recognises €800 across the 90 days in
  proportion to daily consumption; the remaining €200 stays deferred until
  expiry.
</Card>

##### Breakage on expiry

When a topup expires with credits unconsumed, the unrecognised remainder is recognised in a single entry on the expiry date as **breakage** (per ASC 606-10-55-46 through 55-49). Any pending future slices on the schedule are cancelled, and the schedule is closed.

<Card title="Example 💡">
  Continuing the example above: on day 90, the topup expires with 100 credits
  unused. Hyperline posts a single recognition entry for the remaining €200 on
  the expiry date and marks the schedule completed.
</Card>

<Note>
  Flat fees and seats use over-time or point-in-time recognition — usage-based
  doesn't apply to non-metered, non-credit products.
</Note>

### Usage billed in arrears

Some metered products are billed **in arrears** — the invoice is issued at the end of the period for usage that already happened, so the revenue is **earned before it is invoiced**. Deferring it (as for prepaid usage) would understate revenue during the period, so Hyperline recognises it as it is consumed and holds it as a contract asset — **unbilled revenue** — until the invoice is issued.

Each day during the period, Hyperline recognises that day's consumption against unbilled revenue (rather than releasing it from deferred revenue). When the invoice is issued at period end, the accrued amount is reclassified from unbilled revenue to accounts receivable — it is **not** recognised again. If the final invoiced amount differs from what was accrued (late usage, corrections), the difference is trued up at issue so unbilled revenue nets to zero and recognised revenue equals the invoiced net.

Accrual runs **per product** and **per ledger**, and uses the same daily stability gate as prepaid usage — a day's revenue is released once its usage total has been seen unchanged on two consecutive runs, giving a ≥24 hour grace period for late events.

| Setting required                      | Where to set it          |
| ------------------------------------- | ------------------------ |
| A revenue account                     | Revenue recognition rule |
| An unbilled (accrued) revenue account | Revenue recognition rule |
| Metered product billed in arrears     | Catalog                  |

<Card title="Example 💡">
  A customer consumes a metered product through May and is invoiced €300 (net)
  on 31 May for that usage. Across May, Hyperline recognises the €300 day by day
  as it is consumed, holding it in unbilled revenue. On 31 May the invoice moves
  the €300 from unbilled revenue to accounts receivable — no revenue is
  recognised a second time.
</Card>

<Note>
  See [how entries are computed → usage billed in arrears](./entry-mechanics#billed-in-arrears) for the exact debits and credits at accrual, invoicing, and settlement.
</Note>

## Discount recognition

When a line item includes a discount, you control how the discount amount is treated at recognition time using the discount recognition mode on the **Revenue recognition** rule:

| Mode           | Behaviour                                                                                      |
| -------------- | ---------------------------------------------------------------------------------------------- |
| Immediate      | Discount is recognised in full at invoice time (posted as contra-revenue immediately)          |
| Deferred       | Discount follows the same recognition schedule as the revenue (spread over the service period) |
| Use net amount | Revenue is recognised net of the discount — no separate discount entry is created              |

## Recognition schedule statuses

Each invoice line item gets a recognition schedule. The schedule can have the following statuses:

| Status        | Meaning                                                       |
| ------------- | ------------------------------------------------------------- |
| `pending`     | The schedule has been created but recognition has not started |
| `in_progress` | Recognition has started; some entries have been posted        |
| `completed`   | The schedule is fully processed and closed                    |
| `cancelled`   | The schedule was cancelled before recognition began           |

## Revenue waterfall

Go to **Accounting** > **Revenue recognition**. The tab is a single matrix — the **revenue waterfall** — showing, for each **booking month** (the month invoices were issued), how the booked revenue unwinds into recognised revenue across the following months, and how much is still deferred.

<Frame>
  <img />
</Frame>

Read it left to right, under three band labels:

| Band                   | What it holds                                                                                                                                               |
| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Booked revenue**     | One row per booking month; the amount invoiced (net of tax) in that month                                                                                   |
| **Recognized revenue** | One column per recognition month. A **past** month shows one `Recognized` column, a **future** month one `Remaining` column, and the **current** month both |
| **Total revenue**      | The row's **Recognized** total (everything posted so far) and **Remaining** (Booked − Recognized, the deferred balance still on the balance sheet)          |

Filter the matrix by **year**, **All customers**, **All products**, or free-text search.

<Note>
  All waterfall amounts are net of tax and expressed in the ledger's functional currency.
</Note>

### Drill into a cell

To see what makes up a figure, **double-click** any non-zero cell — or select it and click **Explore** in the floating bar that appears.

The drill-down lists the line items behind that cell:

| Column      | Description                                 |
| ----------- | ------------------------------------------- |
| **Product** | The invoiced product                        |
| **Status**  | The recognition schedule's status           |
| **Period**  | The service period covered                  |
| **Amount**  | The amount contributed to the selected cell |

Select a line item to open its full recognition schedule in a sidebar.

### Recognition schedules

The sidebar is where a single line item's schedule lives. It shows:

* The **customer**, **subscription**, **invoice**, and **product** the schedule belongs to
* An **Overview** with the recognised amount against the booked amount, and a progress bar
* The amounts **excluding** and **including** tax
* The **recognition method** in plain words (e.g. `Over time - Monthly`)
* The **service period**
* The **Slices** table — one row per recognition slice, with its `Period` and `Amount`, each tagged `Recognized`, `Pending`, `Reversed`, or `Cancelled`

## Adjust remaining recognition

Sometimes the schedule Hyperline computed no longer reflects reality: the obligation was satisfied earlier than planned, delivery was renegotiated, or the service period was set up wrong. Click **Adjust remaining recognition** on a schedule to reshape what is left, without touching what has already been recognised.

<Info>
  This action requires the **Make accounting adjustments** permission. See [Permissions](./getting-started#permissions).
</Info>

### The two moves

An adjustment combines two moves in a single operation — you can use either or both:

* **Recognize now** — release part or all of the remaining deferred balance immediately. Hyperline posts one entry in the current open period, debiting deferred revenue and crediting revenue.
* **Spread the remaining** — re-plan whatever is still deferred over a new **From** → **To** window.

If anything has already been recognised on the schedule, **From** is locked to the day after the last recognised slice. Adjustments only ever look forward.

Three things never change, whatever you do:

* The **booked total** stays the same — an adjustment moves revenue in time, it never creates or destroys any.
* **Already-recognised amounts are never touched.**
* A **quarterly or yearly** schedule keeps its periodicity when re-spread — it is not silently converted to monthly.

### Preview before applying

The editor previews the result before you commit. Each resulting slice is listed with its new amount, and where an amount changed, the old one is struck through next to it. Slices covering the already-recognised span are tagged **Settled**, and any amount you chose to recognise immediately is tagged **Now**.

### Reason

A **Reason** is mandatory — it is what makes the adjustment auditable:

| Reason                          | Use it when                                              |
| ------------------------------- | -------------------------------------------------------- |
| `Obligation satisfied early`    | Delivery completed ahead of the planned schedule         |
| `Renegotiated delivery or ramp` | The commercial terms changed                             |
| `Service-period change`         | The period itself moved                                  |
| `Correcting a setup error`      | The original schedule was wrong                          |
| `Other`                         | Anything else — a free-text description is then required |

### Audit trail

Every adjustment is recorded on the schedule under **Manual adjustments**: who made it, when, how much was recognised early, the new recognition window, the reason, and a link to the journal entry that was posted. Each slice the adjustment produced also carries a **Manual** badge in the **Slices** table, so an automated slice is never mistaken for a hand-made one. The [recognized summary export](#export) carries the same `auto` / `manual` distinction.

### When a schedule can be adjusted

The **Adjust remaining recognition** button is available when all of the following hold:

* The schedule is `pending` or `in_progress` — a `completed` or `cancelled` schedule has nothing left to move
* It still has a remaining deferred balance
* It is not a point-in-time schedule — there is no spread to reshape
* It does not use deferred discount recognition

## Export

The **Export** dropdown on the **Revenue recognition** tab produces two XLSX reports.

**Export waterfall** — the matrix as displayed, for the selected year:

| Sheet       | Contents                                                                                                     |
| ----------- | ------------------------------------------------------------------------------------------------------------ |
| `Summary`   | Totals for the selected year                                                                                 |
| `Waterfall` | The booking-month × recognition-month matrix                                                                 |
| `Lines`     | One row per invoice line item, so you can reconcile recognition entries against the underlying invoice lines |

**Export recognized summary** — recognised revenue only, cut three ways:

| Sheet                   | Contents                                               |
| ----------------------- | ------------------------------------------------------ |
| `Summary`               | Total recognised revenue for the period                |
| `By month`              | Recognised revenue per month                           |
| `By customer & product` | Recognised revenue broken down by customer and product |

Every amount in the recognized summary carries an **`Origin`** column marking it `auto` (posted by the recognition engine) or `manual` (produced by an [adjustment](#adjust-remaining-recognition)).

<Info>
  Exports run asynchronously. You will be notified in-app once the file is ready, and it will be available from **Exports** in the main navigation.
</Info>


# Accounting rules
Source: https://docs.hyperline.co/docs/accounting/rules

Configure accounting rules that determine which GL accounts Hyperline debits and credits for invoices, payments, credit notes, and refunds.

Accounting rules define which General Ledger (GL) accounts Hyperline uses when posting journal entries. Each rule belongs to a type that matches a specific billing event, and can be scoped to a subset of products, currencies, or payment methods using filters.

## Rule types

**Accounting** > **Settings** > **Rules** has four tabs, one per rule type:

| Type                    | Trigger                                                                                    | What it controls                                                          |
| ----------------------- | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------- |
| **Invoice posted**      | An invoice is finalised and emitted                                                        | Accounts receivable, revenue (or deferred revenue), output tax, discounts |
| **Invoice settled**     | A payment transaction is settled                                                           | Cash or bank account, payment clearing, any payment processing fees       |
| **Credit note created** | A credit note is issued                                                                    | Customer credit liability, contra-revenue entries                         |
| **Revenue recognition** | No independent trigger — applied at invoice posting time alongside the Invoice posted rule | Recognition method, schedule granularity, discount recognition mode       |

<Note>
  Rules of all types can coexist in the same ledger. Revenue recognition settings are resolved at invoice posting time alongside the **Invoice posted** rule — they are not triggered by a separate event.
</Note>

A fifth type, **accounting software sync**, exists but is not configured here — see [sync rules](#accounting-software-sync-rules) below.

## Account mappings

Each rule specifies which GL account to use for each role in the journal entry. The available account roles depend on the rule type:

**Invoice posted**

* Accounts receivable
* Revenue account
* Deferred revenue
* Output tax / VAT
* Discount account
* Deferred discount account
* Contra-revenue account
* Customer credits account
* Bad debt / allowance for doubtful accounts

**Invoice settled**

* Cash / bank account
* Payment clearing account
* Provider fees expense account
* Payment processing fees account
* Accounts receivable (cleared on settlement)

**Credit note created**

* Customer credits account
* Contra-revenue account
* Deferred discount account
* Revenue account (reversed)
* Output tax account (reversed)
* Accounts receivable (for unpaid invoices)

**Revenue recognition**

* Revenue account (when recognised)
* Deferred revenue (until recognised)

Beyond accounts, the **Revenue recognition** rule also carries the recognition behaviour itself:

* The **recognition method** — over time, point in time, or usage-based
* The **granularity** (for over-time) or the **recognition date basis** (for point-in-time)
* The **discount recognition mode** — immediate, deferred, or use net amount

See [Revenue recognition](./revenue-recognition#recognition-methods) for what each of these does.

### Accounting software sync rules

Accounting software sync rules map Hyperline billing records to the accounts expected by your connected accounting provider. When Hyperline sends a record to an external accounting provider, the resolved account is converted to the provider account code or internal account ID required by that provider.

<Note>
  These rules are **not** configured on the accounting **Rules** page. Set them up under **Settings** > **Integrations**, on the connected provider.
</Note>

For invoice sync rules, the main **Revenue account** is used for regular invoice and credit note lines. The optional **Bad Debt Expense** account is used by providers that create a write-off record for uncollectible invoices. For example, NetSuite uses this account on the write-off Credit Memo created and applied to the original invoice when an invoice is marked `uncollectible`.

Accounts can be created manually in Hyperline or fetched from your accounting provider by syncing the ledger's chart of accounts. See [Chart of accounts](./accounts#sync-accounts-from-your-accounting-provider).

## View the rule tree

Each tab of **Accounting** > **Settings** > **Rules** displays that type's rules as a tree, showing which rules would apply and in what order. This is useful for auditing your rule configuration before going live.

<Frame>
  <img />
</Frame>

## Filters

Rules can be scoped using one or more filters. Available filters depend on the rule type. When a billing event occurs, Hyperline evaluates all matching rules and applies them in priority order.

**Invoice posted**

| Filter                       | Description                                                                         |
| ---------------------------- | ----------------------------------------------------------------------------------- |
| Products                     | Match specific products by ID                                                       |
| Product types                | Match by product type (`flat_fee`, `dynamic`, `addon`, `seat`, `one_off`, `credit`) |
| Coupons                      | Match invoices where a specific coupon was applied                                  |
| Currencies                   | Match invoices in a given currency                                                  |
| Countries                    | Match customers billed from a given country                                         |
| Billing interval             | Match by billing period (e.g. monthly, quarterly, annual, one-off)                  |
| Accounting provider accounts | Match a connected accounting provider account                                       |

**Invoice settled**

| Filter                       | Description                                                                                                                           |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| Payment providers            | Match by payment provider (Stripe, GoCardless, etc.)                                                                                  |
| Payment methods              | Match by method type (card, SEPA direct debit, ACH, BACS, bank transfer, etc.)                                                        |
| Bank accounts                | Match by the bank account a payment was received on. Useful when you post settlements to different cash GL accounts per bank account. |
| Currencies                   | Match transactions in a given currency                                                                                                |
| Accounting provider accounts | Match a connected accounting provider account                                                                                         |

**Credit note created**

| Filter                       | Description                                                                         |
| ---------------------------- | ----------------------------------------------------------------------------------- |
| Products                     | Match specific products by ID                                                       |
| Product types                | Match by product type (`flat_fee`, `dynamic`, `addon`, `seat`, `one_off`, `credit`) |
| Coupons                      | Match credit notes where the original invoice used a specific coupon                |
| Currencies                   | Match credit notes in a given currency                                              |
| Countries                    | Match customers billed from a given country                                         |
| Accounting provider accounts | Match a connected accounting provider account                                       |

**Revenue recognition**

| Filter                       | Description                                                                         |
| ---------------------------- | ----------------------------------------------------------------------------------- |
| Products                     | Match specific products by ID                                                       |
| Product types                | Match by product type (`flat_fee`, `dynamic`, `addon`, `seat`, `one_off`, `credit`) |
| Coupons                      | Match invoices where a specific coupon was applied                                  |
| Currencies                   | Match invoices in a given currency                                                  |
| Countries                    | Match customers billed from a given country                                         |
| Billing interval             | Match by billing period (e.g. monthly, quarterly, annual, one-off)                  |
| Accounting provider accounts | Match a connected accounting provider account                                       |

An empty filter matches everything — rules with no filters act as catch-all defaults.

<Note>
  Rules can also be scoped to specific **customers**, but only through the API — customer scoping is not offered in the rule form.
</Note>

### Criteria reference

The rule form can use the following criteria, depending on the selected rule type:

| Criterion                        | Use it when                                                                                                                |
| -------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| **Products**                     | A product needs its own revenue, deferred revenue, or provider account mapping.                                            |
| **Product types**                | A whole product category should share the same mapping, such as all usage products.                                        |
| **Coupons**                      | Discounts or revenue should be mapped differently when a coupon is used.                                                   |
| **Currencies**                   | Transactions in one currency should post to a different account.                                                           |
| **Countries**                    | Billing from a country or jurisdiction needs a specific mapping.                                                           |
| **Billing interval**             | Monthly, quarterly, annual, or one-off charges need different account treatment.                                           |
| **Accounting provider accounts** | A rule should apply only to a specific connected accounting integration account.                                           |
| **Payment providers**            | Settlements need different accounts depending on the payment provider.                                                     |
| **Payment methods**              | Settlements need different accounts depending on the method, such as card, SEPA direct debit, ACH, BACS, or bank transfer. |
| **Bank accounts**                | Payments received on different bank accounts should post to different cash accounts.                                       |

## Priority and fallback

Priority is **not something you set**. Hyperline derives it from how narrowly the rule is scoped — the more filters a rule carries, the higher its priority — and displays the resulting value read-only under **Advanced** in the rule form.

When multiple rules match the same billing event, they are applied as a **priority overlay**:

1. All matching rules are collected and sorted by priority (ascending)
2. Rules are applied in order — each rule overrides only the account roles it explicitly defines
3. For any given account role, the highest-priority rule that defines it wins

In practice this means a broad catch-all rule acts as your default, and narrower rules override it for the specific cases they name — you get that behaviour by scoping the rules, not by numbering them.

<Card title="Example 💡">
  You have a default invoice posted rule with no filters, mapping all revenue to account `4000 – Revenue`. You then add a second rule scoped to a specific product, mapping its revenue to `4100 – Usage Revenue`. The second rule is narrower, so it gets the higher priority: when an invoice is issued for that product, Hyperline uses `4100` for that product's line items and `4000` for everything else.
</Card>

### Overlapping rules

Specificity is scored against the **line actually being posted**, not against the rule in the abstract. A customer-scoped rule only outranks a product-scoped one when the line's customer is one of those the rule names — if it isn't, that rule doesn't match at all.

<Warning>
  When two rules end up equally specific for the same line, which one wins is **not** guaranteed. Distinguish overlapping rules by scoping them differently rather than relying on a tie-break.
</Warning>

## Add a rule

Go to **Accounting** > **Settings** > **Rules**, open the tab for the event you want to cover, and click **Add rule**.

<Frame>
  <img />
</Frame>

1. Pick the **Rule type**. Note that **Invoice posted** appears as **Invoice issued** in this dropdown — same thing.
2. Under **Applied on**, optionally add filters to scope the rule.
3. Under **Configuration**, map an account to each role.
4. **Advanced** shows the priority Hyperline derived from your filters. It is read-only.

## Edit and delete rules

Click the edit or delete icon next to any rule in the rule list. Deleting a rule does not affect already-posted journal entries.


# AI monetization
Source: https://docs.hyperline.co/docs/ai-monetization/overview

Use Hyperline to monetize AI products with usage-based billing, prepaid credits, wallets, subscriptions, and customer-facing balance workflows.

AI products often combine predictable subscriptions with variable consumption. Customers may pay for seats, token usage, model calls, generated images, agent runs, data processing, or prepaid credit packs. Hyperline helps you turn those signals into billable products without building a separate billing system for AI usage.

Use this page as an entry point when you are designing how to price, package, and bill AI consumption.

## Common AI monetization use cases

| Use case                               | Example                                                                                       | Hyperline capabilities to use                                                                                                         |
| -------------------------------------- | --------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| Token or model usage                   | Charge based on tokens consumed by each model tier                                            | [Usage events](../usage/send-usage-data), [aggregators](../usage/aggregators), and [usage-based products](../products/overview#usage) |
| Prepaid AI credits                     | Sell 10,000 credits that customers can spend across models, agents, or generations            | [Credit products](../credits/overview) with weighted aggregators                                                                      |
| Included allowance and overages        | Include 1M tokens in a monthly plan, then bill additional usage                               | [Usage-based billing](../usage/getting-started) and [subscriptions](../subscriptions/manage)                                          |
| Enterprise budget control              | Let customers prepay a balance, consume it over time, and top up when needed                  | [Credits](../credits/overview), [wallets](../wallets/balance), and [customer portal](../customers/portal)                             |
| AI add-ons                             | Add premium models, extra automation runs, or advanced features on top of a base subscription | [Products and prices](../products/overview), subscriptions, and usage-based products                                                  |
| Customer-facing consumption visibility | Show customers how usage or credit balances evolve over time                                  | [Customer usage](../usage/customer-usage), [credits](../credits/overview), and [customer portal](../customers/portal)                 |

## Choose a billing model

### Usage-based billing

Usage-based billing works well when customers should pay for exactly what they consume during a billing period. Hyperline receives usage events, converts them into billable metrics with aggregators, and applies the price configured in your product catalog.

Use it for token volume, API calls, workflow runs, image generations, storage, compute time, or any metric that should appear on the next invoice.

Start with:

* [Getting started with usage-based billing](../usage/getting-started)
* [Send usage data](../usage/send-usage-data)
* [Aggregators](../usage/aggregators)
* [Usage-based products](../products/overview#usage)

### Prepaid credits

Credits work well when customers should buy a package upfront and spend it flexibly across multiple AI actions. One credit balance can be consumed by several aggregators, each with its own weight.

For example, one lightweight model call can consume `1` credit, a premium model call can consume `5` credits, and an image generation can consume `10` credits from the same balance. This lets customers understand a single balance while your pricing still reflects different underlying costs.

Start with:

* [Credits overview](../credits/overview)
* [Credit products](../products/overview#credit)
* [Set up credit-based billing for an AI platform](/guides/credit-based-billing-ai)

### Subscriptions with allowances and overages

Many AI products use a hybrid model: a recurring subscription gives access to the product and includes a usage allowance, while overages are billed separately. This is useful when customers want predictable pricing, but your costs still depend on consumption.

Use this model when you want to package AI usage into tiers such as **Starter**, **Scale**, and **Enterprise**, while still charging for heavy usage beyond the included allowance.

Start with:

* [Configure usage-based billing](/guides/configure-usage-based-billing)
* [Products and prices](../products/overview)
* [Manage subscriptions](../subscriptions/manage)

### Wallets and customer balances

Wallets are useful when you want to manage a monetary balance for a customer. Credits are usually better for productized AI consumption units, while wallets are useful for prepaid cash balances, manual adjustments, or commercial credits that should offset future invoices.

Start with:

* [Wallet balance](../wallets/balance)
* [Customer portal](../customers/portal)
* [Coupons and credits](../coupons/overview)

## Suggested setup path

1. Define the unit you want to monetize: tokens, requests, agent runs, documents processed, generated assets, or another AI-specific metric.
2. Send usage events to Hyperline, or use a data connector if your usage data already lives in another system.
3. Create aggregators that transform raw events into the billable metrics you want to price.
4. Choose the commercial model: usage-based billing, prepaid credits, subscription allowances, wallet balance, or a mix of those models.
5. Add the products to subscriptions, quotes, or self-serve flows so customers can buy and renew them.
6. Use customer usage, credit balances, invoices, and the customer portal to make consumption visible to your team and your customers.

<Tip>
  For most AI platforms, start with usage events and aggregators. They are the foundation for both usage-based billing and credit consumption.
</Tip>

## Related documentation

<CardGroup>
  <Card title="Usage-based billing" icon="chart-line" href="/docs/usage/getting-started">
    Connect usage data and configure billable usage metrics.
  </Card>

  <Card title="Credits" icon="coins" href="/docs/credits/overview">
    Sell prepaid credit packs and deduct usage from customer balances.
  </Card>

  <Card title="AI credit guide" icon="sparkles" href="/guides/credit-based-billing-ai">
    Follow a complete example for credit-based billing on an AI platform.
  </Card>

  <Card title="Customer portal" icon="user" href="/docs/customers/portal">
    Let customers view balances, invoices, and payment information.
  </Card>
</CardGroup>


# Automated exports
Source: https://docs.hyperline.co/docs/analytics/automated-exports

Set up automated data syncs that push Hyperline datasets — invoices, customers, subscriptions — to your PostgreSQL database on a recurring schedule.

Automated exports let you keep selected Hyperline datasets available in your own database for analysis, reporting, and finance operations.

Instead of downloading CSV files manually, you can create a **Data sync** that writes Hyperline data to a destination database on a recurring schedule. Each selected dataset is written to its own table.

<Note>
  In-app setup currently supports PostgreSQL destinations. Use a dedicated
  database, schema, or write user for Hyperline exports whenever possible.
</Note>

## Before you start

To create a data sync, make sure that:

* You have access to **Settings** in Hyperline
* Your destination PostgreSQL database can receive connections from Hyperline
* The database user can create tables and write rows
* The connection URL is available

If your database requires IP allowlisting, allow traffic from:

* `15.188.105.163`
* `15.188.215.105`
* `35.181.129.14`

You can also connect through an SSH tunnel when creating the PostgreSQL connection.

## Create a data sync

1. Go to **Settings** > **Data syncs**
2. Click **New sync**
3. Select an existing PostgreSQL connection, or choose **Create new connection**
4. Enter the connection name and database connection details
5. Select the sync status:
   * **Active**: run automatically on the configured schedule
   * **Paused**: keep the configuration without scheduled runs
6. Select the sync frequency:
   * **Every 12 hours**
   * **Every 24 hours**
7. Select the data to sync
8. Click **Save changes**

Hyperline validates the database connection before saving it. After the sync is created, it appears in the **Data syncs** list with its status, selected table count, frequency, and last sync date.

## Available data

You can sync invoice exports and Hyperline reports.

| Data                       | Destination table                             |
| -------------------------- | --------------------------------------------- |
| Invoices                   | `hyperline_invoices`                          |
| Invoice line items         | `hyperline_invoice_line_items`                |
| Aged balances              | `hyperline_report_aged_balances`              |
| All customers              | `hyperline_report_all_customers`              |
| All subscriptions          | `hyperline_report_all_subscriptions`          |
| Detailed revenue           | `hyperline_report_detailed_revenue`           |
| Draft invoices             | `hyperline_report_draft_invoices`             |
| Line by line revenue       | `hyperline_report_line_by_line_revenue`       |
| Live subscriptions         | `hyperline_report_live_subscriptions`         |
| Open invoices              | `hyperline_report_open_invoices`              |
| Outstanding invoices       | `hyperline_report_outstanding_invoices`       |
| Renewals                   | `hyperline_report_renewals`                   |
| Revenue per country        | `hyperline_report_revenue_per_country`        |
| Revenue per line item name | `hyperline_report_revenue_per_line_item_name` |
| Revenue per plan           | `hyperline_report_revenue_per_plan`           |
| Revenue per product        | `hyperline_report_revenue_per_product`        |

For more context on the report definitions, see [Reports](./reports).

## How syncs write data

Each selected dataset is refreshed as a snapshot. Hyperline creates the destination table if it does not exist, then replaces the table content during each successful sync.

If the table already exists, its schema must be compatible with the expected Hyperline columns. Extra columns can exist, but required columns must be present with compatible types.

Every exported table includes Hyperline metadata columns, such as:

| Column                           | Description                                      |
| -------------------------------- | ------------------------------------------------ |
| `_hyperline_source_id`           | Stable row identifier used by the sync           |
| `_hyperline_synced_at`           | Time when the row was written to the destination |
| `_hyperline_sync_run_id`         | Identifier of the sync run that wrote the row    |
| `_hyperline_report_generated_at` | Time when the report snapshot was generated      |
| `_hyperline_report_template`     | Source report template                           |
| `_hyperline_row_index`           | Row position in the generated report             |
| `_hyperline_row_hash`            | Hash of the source row content                   |

<Tip>
  Keep Hyperline-managed tables separate from your own transformed tables.
  Build downstream models or BI views from the `hyperline_*` tables instead of
  editing the synced tables directly.
</Tip>

## Run and monitor syncs

Scheduled syncs run only when the sync is **Active**. You can also click **Run now** from the sync list or sync detail page to start a manual run.

Open a sync to review **Run history**. Each run shows:

* Whether it was manual or scheduled
* Status: `pending`, `processing`, `done`, `partial`, or `error`
* Start time
* Number of selected tables
* Rows written
* Error message, when available

If a run fails, check that the destination database is reachable and that the user still has permission to create tables and write rows.

## Delete a data sync

Deleting a data sync stops future runs. Run history is kept for auditability, but Hyperline no longer updates the destination tables for that sync.

## Related pages

* [Reports](./reports)
* [Invoice exports](../invoices/exports)
* [Pull usage data with connectors](../usage/usage-data-with-connectors)


# Dashboard
Source: https://docs.hyperline.co/docs/analytics/dashboard

Explore the Hyperline dashboard: track collected revenue, outstanding invoices, and weekly performance with daily refreshed billing metrics.

The dashboard is the first interface you see when logging in to your Hyperline account. It gives you a quick, effective overview of your business and hints on actions you can take to recover money faster. It displays the amount collected this week along with the number of invoices involved.

<Frame>
  <img />
</Frame>

<Info>
  The data displayed on the dashboard is updated every day at midnight UTC. You need to have the proper permission to access the dashboard.
</Info>

## Business metrics

This section provides key financial insights at a glance, helping you monitor revenue performance, debt, and cash flow. This information can be filtered by currency, invoicing entity, and date range.

### Live ARR

Annual Recurring Revenue (ARR) represents the total annualized revenue a SaaS company expects to generate from active subscriptions over a year. It provides a long-term view of predictable revenue and helps track revenue growth trends.

The Dashboard chart is labelled **Live ARR** and shows the effective date next to the value. Hovering the title displays a tooltip that summarises the calculation and links to this section.

<Card title="How Live ARR is calculated 💡">
  Live ARR is a point-in-time metric derived from the **current state of active and pending subscriptions** and their consumption. Past or future phases and subscriptions are not taken into account. The value reflects a snapshot as of the effective date shown on the chart, so it fluctuates as subscriptions start, change, or cancel.

  Calculation details:

  * Coupons with a `once` application are excluded.
  * Coupons with a `forever` application are included.
  * Coupons with a duration shorter than the subscription period are excluded.
  * Taxes (e.g., VAT) are excluded.
</Card>

<Note>
  **Why Live ARR can differ from ARR at period end in [Insights](/docs/analytics/insights).** Live ARR reflects the current subscription state at the moment the Dashboard loads. ARR at period end is a monthly snapshot taken at the inclusive close of each period (the day before `periodEnd`). Between that closing date and now, subscriptions may have started, changed, or cancelled, so the two figures can legitimately show different numbers even for the same currency and entity.
</Note>

The number of customers reflects the total active subscribers contributing to ARR, while ARPA (Average Revenue Per Account) represents the average revenue per customer, calculated as ARR ÷ number of customers.

### Outstanding debt

Outstanding debt represents the total amount of unpaid invoices, helping businesses track overdue and pending revenue. It is categorized into three components:

* Pending: Invoices that are issued but still within the payment term.
* Late: Invoices that are past their due date.
* Error: Invoices where payment methods could not be charged after retries.

Monitoring outstanding debt allows businesses to stay on top of collections, reduce late payments, and address potential billing issues.

### Cash flow

This metric tracks the total revenue collected month over month, providing visibility into financial inflows. It helps assess liquidity, revenue trends, and payment patterns.

* Recurring revenue: Revenue collected from subscriptions, representing predictable, ongoing revenue.
* One-off revenue: Revenue collected from one-time payments and manual invoices.

### Additional metrics

These metrics provide insights into upcoming renewals, pending deals, tax collections, and billing issues. For each of these metrics, you can explore the detailed elements by clicking on the `eye` button.

* **Contracts renewing soon** represent the contracts attached to subscriptions automatically renewing in the next 30 days.
* **Quotes pending signature** indicate potential revenue that has yet to be confirmed.
* **Taxes collected** represent the total amount of tax collected from invoices, providing visibility into tax obligations.
* **Errored invoices** highlight invoices that failed due to payment errors, indicating potential revenue at risk that may require action.

## Billing insights

Tracking unpaid balances helps businesses prioritize revenue collection, while renewal monitoring ensures revenue continuity. Together, these insights improve cash flow stability and financial management.

### Top 5 balances due

This section highlights the five customers with the highest outstanding debt, allowing you to quickly identify and follow up on overdue payments. For each customer, it displays the total unpaid balance and the number of invoices involved.

### Contracts renewing soon

This section highlights upcoming subscription renewals, helping businesses anticipate revenue retention and manage customer relationships proactively.

For each contract, it displays the customer name, the contract value, whether it renews automatically, and the renewal date.


# Insights
Source: https://docs.hyperline.co/docs/analytics/insights

Track MRR, ARR, churn, and revenue metrics in Hyperline Insights with interactive charts, drill-down tables, and custom filters for finance teams.

The Insights module provides a comprehensive overview of your financial and revenue metrics through interactive charts, detailed tables, and customizable filters.

### Interactive features

The Insights module includes several interactive capabilities:

* **Clickable charts and tables**: Double-click on any chart bar or table cell to view the underlying data (invoices, transactions, subscriptions)
* **Drag to filter date ranges**: Click and drag across chart bars to filter data to a specific time period
* **Table cell selection**: Select multiple cells in financial tables to view aggregated statistics (sum, average, min, max)
* **Copy data**: Select cells and copy formatted data to your clipboard for use in spreadsheets or reports

<Info>
  This feature is in beta and may incur additional charges. Please contact our support team if you're interested.
</Info>

## Financial page

The Financial page gives you a clear view of your financial health. It displays your cash flow, MRR and debt evolution, aged balances, and revenue breakdown.

You can filter the data by invoicing entity, currency, and date range. Use the date range picker to select preset periods (**This month**, **Last month**, **This year**, **Last year**, **Last 3 months**, **Last 6 months**, **Last 12 months**, or **All time**), or choose a custom date range.

<Frame>
  <img />
</Frame>

### Aged balances

The **Aged balances** section shows how long invoices have been outstanding, organized by age buckets (1-30 days, 31-60 days, 61-90 days, and 90+ days). The heatmap visualization provides a day-by-day view of outstanding balances, making it easy to identify payment patterns and potential collection issues.

Click on any day in the heatmap or any age bucket in the breakdown to view the specific invoices that make up that balance.

### Accounts receivable

The **Accounts receivable** section provides a complete breakdown of your outstanding balances.

Accounts receivable figures are based on when invoices are sent and their current status, while cash figures reflect when payments are actually received.

<Frame>
  <img />
</Frame>

### Aged balances

The **Aged balances** section includes a heatmap visualization that shows overdue invoices by the number of days past due. Each cell in the heatmap represents a specific day and displays the total outstanding amount for invoices overdue by that many days.

Click on any cell to drill down into the invoice-level details for that specific day range. The heatmap supports filtering by:

* **As of date**: Calculate balances as of a historical date to see how your aged balances looked at any point in time
* **Invoicing entity**: Filter by specific invoicing entities
* **Currency**: View amounts in original currency or reporting currency
* **Invoice status**: Filter by invoice status (to pay, paid, etc.)

<Note>
  Aged balances show what's outstanding at a specific moment in time, so the only time input that affects the heatmap and its drilldown is **As of date**. The `1-30 days` bucket excludes invoices that are still within their payment terms: a recent unpaid invoice whose due date has not yet passed is not counted in that bucket.
</Note>

### MRR financials

The **MRR financials** section offers a detailed breakdown of your Monthly Recurring Revenue.

Billed MRR is derived from invoice line items based on the service period start date and billing interval, normalized to monthly amounts. Expansion and contraction reflect contract changes, while new and lost represent contracts that started or ended. Variable revenue includes usage-based charges or credits, as well as committed revenue.

<Frame>
  <img />
</Frame>

#### How MRR is computed

* **Proration and partial cycles**: charges that cover only part of a billing cycle (mid-cycle upgrades, cancellations, partial first months) contribute a prorated share of MRR based on how much of the cycle they cover. An 8-day charge on a monthly plan adds roughly 8/30 of a month's MRR, not a full month.
* **Credits and refunds**: credit notes and negative lines within an invoice (for example, a prorata refund issued alongside an upgrade) are subtracted from MRR.

#### FX rate methodology

For customers billed in a currency different from your reporting currency, MRR is normalized using the customer's **most recent invoice's conversion rate**, applied uniformly across their entire MRR history. This approach is aligned with market practices for SaaS analytics.

<Note>
  **Why a single rate per customer?** Each invoice captures the FX rate that applied when it was issued. For accounting, that is the correct rate to use — it reflects what was booked at the time. For recurring revenue analysis, using a different rate each month introduces noise: the same £10,000/month customer can appear to expand or contract as GBP/EUR moves, even though nothing about their subscription changed. Anchoring each customer's MRR history to a single conversion rate removes that noise.

  **Things to keep in mind:**

  * Historical MRR values are recomputed each time the dashboard is loaded. As conversion rates move, the same past month can show slightly different values between views. Each view is internally consistent, just anchored to a different current rate.
  * For foreign-currency customers, MRR figures in Insights will not match the amounts in your accounting export line-for-line. This is intentional: the accounting export reflects historical bookings in your accounting currency, while Insights normalizes FX to give a stable business-trend signal.
</Note>

## Revenue page

The Revenue page provides in-depth insights into your revenue streams, including revenue by geography, recurring revenue evolution, and the breakdown between committed and variable components.

You can filter the data by invoicing entity, currency, date range, customers, and products. Use the date range picker to select preset periods (**This month**, **Last month**, **This year**, **Last year**, **Last 3 months**, **Last 6 months**, **Last 12 months**, or **All time**), or choose a custom date range. Use the **Clear filters** button to reset customer and product filters.

<Frame>
  <img />
</Frame>

### ARR at period end

The **ARR at period end** chart plots the annualized recurring revenue at the close of each month in the selected date range. Each bar is a monthly snapshot, and the summary value on the chart shows the closing date of the most recent bar (one day before the period's `periodEnd`, so the close is inclusive). Hovering the title displays a tooltip with the same summary and a link to this section.

Use this chart to review how ARR evolved over time. Because each bar is a monthly close, the series is stable once a period ends and does not shift as new subscriptions or changes come in after the fact.

The chart is broken down into:

* **Committed revenue**: recurring revenue from booked subscription commitments in force at period end.
* **Variable revenue**: usage-based charges attributable to the period.

<Note>
  **Why ARR at period end can differ from Live ARR on the [Dashboard](/docs/analytics/dashboard).** ARR at period end is calculated from monthly subscription snapshots taken at the inclusive close of each period. Live ARR is the current active and pending subscription state at the moment the Dashboard loads. After the closing date, subscriptions may start, change, or cancel. Those movements only show up in Live ARR, not in the already-closed monthly snapshot. Both figures can be correct at the same time.
</Note>

### Product & customer breakdown

The **Revenue per product** section provides a detailed breakdown of your revenue by product and customer. Use this section to track the performance of each product and monitor revenue evolution over time per customer.

The revenue table supports infinite scrolling for large datasets and includes:

* **Interactive selection**: Select multiple cells to view aggregated statistics
* **Sparkline charts**: Each row displays a mini chart showing revenue trends over time
* **Invoice drilldown**: Double-click any cell to view the invoices that contributed to that revenue

<Frame>
  <img />
</Frame>


# Reports
Source: https://docs.hyperline.co/docs/analytics/reports

Browse Hyperline's pre-built finance reports — accounts receivable, MRR movements, cohorts, exports — and download them for deeper analysis.

Hyperline provides a comprehensive suite of pre-built reports that give you a clear view of your company's performance. Explore a wide range of analytics designed to empower finance teams in making informed decisions, or export the data for deeper analysis in your preferred external tools.

Reports are accessible from the dedicated **Reports** page within the Hyperline platform.

<Frame>
  <img />
</Frame>

## Available reports

Hyperline offers a curated selection of reports essential for assessing various aspects of your company's financial health. Many reports can be viewed directly in the platform with interactive filtering, and all reports are downloadable as CSV files, giving you convenient access to the data you need at any time.

These reports can also be exported using the [exports API](../../api-reference/endpoints/exports/create-export).

## Preview reports

Many reports can be viewed directly in Hyperline with interactive filtering and pagination. Click the **View** button next to a report to explore the data in a table format with infinite scroll for large datasets.

### Available viewable reports

The following reports support in-app viewing:

* **Aged Balances**: View outstanding invoices grouped by age
* **Revenue per Product**: Analyze revenue breakdown by product
* **Revenue per Country**: View revenue distribution by country
* **Outstanding Invoices**: See all unpaid invoices
* **All Customers**: Browse your complete customer list
* **All Subscriptions**: View all active and past subscriptions
* **Detailed Revenue**: Explore granular revenue data
* **Revenue per Line Item**: Analyze revenue by line item
* **Revenue per Plan**: View revenue breakdown by subscription plan
* **Line by Line Revenue**: Detailed line-level revenue analysis
* **Draft Invoices**: Review invoices in draft status
* **Open Invoices**: View all open invoices
* **Live Subscriptions**: See currently active subscriptions
* **Credit balances**: Monthly roll-forward of prepaid credit balances per customer and credit type

### Filtering reports

When viewing a report, you can apply filters to narrow down the data:

* **Date range**: Select a specific time period to analyze (with quick presets for this month, last month, last 3/6/12 months, this year, last year, or all time)
* **Invoicing entity**: Filter by specific invoicing entities (for aged balances)
* **Currency**: Filter by specific currencies
* **Age bucket**: Filter aged balances by age ranges (1-30, 31-60, 61-90, 90+ days)
* **Customers**: Filter by specific customers (for revenue reports)
* **Products**: Filter by specific products (for revenue reports)

Applied filters are automatically included when you download the report as a CSV file.

## Downloading reports

To download a report as a CSV file:

1. Navigate to the **Reports** page or open a report in view mode
2. Click the **Download** or **Download CSV** button
3. Review the export confirmation modal showing:
   * Report name
   * Date range (period)
   * Total row count
4. Click **Download** to generate the CSV file

When downloading from the report view page, any active filters (customers, products, currencies, age buckets, invoicing entities, etc.) are automatically applied to the export.

<Note>
  Reports with more than 10,000 rows cannot be exported as CSV. Please narrow your date range or apply filters to reduce the number of rows.
</Note>

## Exports history

The **Exports** tab on the **Reports** page lists every export previously generated from your account, most recent first. Use it to find and re-download a file without re-running the export.

Each row shows:

* **Name**: the report or dataset the export was generated from
* **Format**: the file format (`CSV`, `XLSX`, or `JSON`)
* **Status**: the current state of the export
* **Created**: the date and time the export was requested
* **Download**: available once the export is ready

An export moves through the following statuses:

| Status       | Meaning                                               |
| ------------ | ----------------------------------------------------- |
| `Pending`    | The export has been requested and is queued           |
| `Processing` | The file is being generated                           |
| `Done`       | The file is ready to download                         |
| `Failed`     | The export could not be generated — request a new one |

The list refreshes automatically while an export is `Pending` or `Processing`, so the **Download** button appears as soon as the file is ready. Click **Download** to retrieve the file.

<Tip>
  Large exports are processed in the background. You can leave the page and come back to the **Exports** tab later to download the file once its status is `Done`.
</Tip>


# Coupons
Source: https://docs.hyperline.co/docs/coupons/overview

Create reusable coupons in Hyperline that apply fixed-amount or percentage discounts to subscriptions, invoices, and checkout flows.

Coupons define the discount that can be applied to a customer. In Hyperline, a coupon can reduce a charge by a fixed amount or by a percentage, and can be reused across subscriptions when the same commercial offer applies to several customers.

A coupon is the discount rule. A [promotion code](./promotion-codes) is a customer-facing code that lets customers redeem that coupon on a checkout page.

## When to use coupons

Use coupons when you need to apply a recurring or one-time discount to a subscription, quote, or invoice. Common examples include onboarding discounts, partner discounts, contract-specific concessions, and limited-time commercial offers.

Coupons are managed from the catalog so they can be created once, tracked centrally, and applied consistently by your team.

<Note>
  To offer free or discounted prepaid credits instead of a subscription discount, use [credits](../credits/overview) or [wallet top-ups](../wallets/balance).
</Note>

## Coupon configuration

Each coupon contains three types of settings:

| Setting         | Description                                                                                                                                      |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Information** | Name and internal description. The name can appear on customer-facing documents, while the description is for internal context.                  |
| **Discount**    | Fixed amount or percentage discount. Fixed amount coupons use one currency. Percentage coupons apply a percentage discount to eligible products. |
| **Settings**    | Optional redemption deadline, redemption limit, and eligible products. These settings control where and how often the coupon can be used.        |

<Warning>
  The discount type and value cannot be edited after the coupon is created. Create a new coupon when the commercial discount changes.
</Warning>

## Create a coupon

1. Go to **Catalog** > **Coupons**.
2. Click **New coupon**.
3. Enter the coupon **Name** and, if needed, an **Internal description**.
4. Choose the discount type:
   * **Fixed amount**: select the currency and discount amount.
   * **Percentage**: enter the percentage discount.
5. Configure optional settings:
   * **Redemption deadline**: date after which the coupon can no longer be redeemed.
   * **Redemption limit**: maximum number of times the coupon can be redeemed.
   * **Eligible products**: products the coupon can apply to. Leave empty to allow all products.
6. Click **Create new coupon**.

The coupon appears in the **Coupons** list after creation.

## Apply coupons

Coupons can be applied when creating or updating subscriptions, preparing quotes, and editing invoices before they are finalized.

When applying a coupon, Hyperline asks how long the discount should apply and which eligible products should receive it. Choose **All products** to apply it to every product on the subscription, quote, or invoice, or **Specific products** to select individual products. Product eligibility comes from the coupon settings, so you can only select products eligible for that coupon.

### Coupon duration

When applying a coupon to a subscription, choose how long it should apply:

| Duration                  | Behavior                                                                                                           |
| ------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| **Once**                  | Applies to a single invoice. Once that invoice is finalized, the coupon expires for the subscription.              |
| **Relative duration**     | Applies for a specific period, such as 3 months or 6 months, from the subscription phase start or transition date. |
| **Phase duration**        | Applies for the full duration of the current subscription phase.                                                   |
| **Subscription duration** | Applies for the lifetime of the subscription.                                                                      |

## Promotion codes

Promotion codes are created from a coupon. They let customers enter a code on a checkout page and redeem the coupon themselves.

Use promotion codes when you want a self-serve checkout experience, public campaign code, partner code, or customer-specific code. Use coupons directly when your team should apply the discount internally during subscription, quote, or invoice setup.

<Tip>
  A single coupon can have multiple promotion codes. For example, a **20% annual discount** coupon can power `SPRING20`, `PARTNER20`, and customer-specific codes with different limits.
</Tip>

Learn how to configure customer-facing codes in [Promotion codes](./promotion-codes).

## Manage coupons

Open a coupon to review its configuration, see its promotion codes, or delete it.

Deleting a coupon archives it and prevents future use. It does not remove the coupon from active subscriptions where it has already been applied.

## Next steps

* Create customer-facing codes with [Promotion codes](./promotion-codes).
* Apply coupons while [assigning a subscription](../subscriptions/create).
* Manage coupons during a [subscription update](../subscriptions/update).


# Promotion codes
Source: https://docs.hyperline.co/docs/coupons/promotion-codes

Let customers redeem coupon discounts using promotion codes during Hyperline checkout, with code-level redemption rules and product targeting.

Promotion codes are customer-facing codes attached to a coupon. They let customers enter a code during checkout and receive the discount defined by the underlying coupon.

A coupon controls the discount itself: fixed amount or percentage, eligible products, and global redemption rules. A promotion code controls how customers can redeem that coupon from checkout: the code value, customer or product eligibility, expiration date, redemption limit, and duration.

## When to use promotion codes

Use promotion codes when customers should redeem a discount without your team applying it manually. Common examples include public acquisition campaigns, partner discounts, customer-specific offers, and first-order incentives.

Use the coupon directly when the discount should be applied by your team while creating a subscription, preparing a quote, or editing an invoice.

<Card title="Example 💡">
  Create a **20% annual discount** coupon, then add one promotion code for a public campaign (`SPRING20`) and another for a partner (`PARTNER20`). Both codes apply the same discount, but each code can have its own expiration date, redemption limit, and eligibility rules.
</Card>

## Create a promotion code

Promotion codes are managed from the coupon they redeem.

1. Go to **Catalog** > **Coupons**.
2. Open the coupon you want customers to redeem.
3. In **Promotion codes**, click **Add promotion code**.
4. Enter the **Code** customers will type at checkout.
5. Configure the eligibility and limits.
6. Click **Save changes**.

## Promotion code settings

| Setting                 | Description                                                                                                                                                                         |
| ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Code**                | The value customers enter at checkout, such as `SPRING20` or `PARTNER20`.                                                                                                           |
| **Customer**            | Optional restriction to one customer. Leave empty to make the code available to all customers.                                                                                      |
| **Product**             | Optional restriction to subscriptions containing a specific product. Leave empty to use the coupon's product eligibility only.                                                      |
| **Expiration date**     | Optional date after which the code can no longer be redeemed.                                                                                                                       |
| **Maximum redemptions** | Optional limit for this promotion code. This is tracked separately from the coupon redemption limit.                                                                                |
| **Duration**            | How long the redeemed discount applies after checkout. Leave empty to use the coupon's default duration, or choose a specific duration such as once, days, weeks, months, or years. |
| **First order only**    | Restricts the code to customers placing their first order.                                                                                                                          |

<Note>
  Promotion code limits do not replace coupon limits. A checkout redemption must satisfy both the promotion code settings and the underlying coupon settings.
</Note>

## Redeem a promotion code at checkout

When at least one promotion code exists on your account, the checkout page displays an **Add promo code** option. Customers can enter a code, apply it, and see the discount reflected in the checkout summary before completing payment.

If the code is expired, over its redemption limit, restricted to another customer or product, or otherwise not eligible for the checkout, Hyperline shows an invalid code message and does not apply the discount.

## Manage promotion codes

Open the coupon to review all related promotion codes. The list shows each code, redemption count, expiration, duration, and whether it is restricted to first orders.

You can edit a promotion code while it is active, or delete it when it should no longer be available at checkout. Deleting a promotion code prevents future redemptions but does not remove discounts already applied to subscriptions.

## Coupons and promotion codes

Coupons and promotion codes work together:

| Concept            | Purpose                                                           | Managed by                                                             |
| ------------------ | ----------------------------------------------------------------- | ---------------------------------------------------------------------- |
| **Coupon**         | Defines the discount amount, discount type, and base eligibility. | Internal teams applying discounts manually or creating codes.          |
| **Promotion code** | Defines how a customer can redeem a coupon during checkout.       | Teams running campaigns, partner offers, or self-serve checkout flows. |

Use one coupon with several promotion codes when the commercial discount is the same but each audience needs different redemption rules. Create separate coupons when the discount value, currency, or product eligibility is different.

## Next steps

* Review the underlying [Coupons](./overview) setup.
* Learn how checkout pages work in [Checkout page](../subscriptions/checkout-page).


# Credits overview
Source: https://docs.hyperline.co/docs/credits/overview

Set up customer credit balances in Hyperline: configure credit products, expiration, auto top-up, and apply them across plans and subscriptions.

This page covers the full credit product lifecycle: catalog setup, customer balances, plan and subscription integration, expiration, and auto-topup. For an introduction to credits as a product type and where they sit in the catalog, see [Products and prices](/docs/products/overview#credit).

<Note>
  **Prerequisite**

  To configure credits, you will need to have connected events first so usage data can be detected.
</Note>

## Create a credit product

To get started with credits, you should create a credit product first in your catalog, where you will specify the events that rule the consumption. Usage of credits will be deducted automatically accordingly.

<Steps>
  <Step title="Select create new, product and choose the credit product">
    <Frame>
      <img />
    </Frame>
  </Step>

  <Step title="Product configuration">
    Add one or more [aggregators](/docs/usage/aggregators) to define which events consume credits on the customer's balance. Each aggregator has a **weight** that determines how many credits are consumed per unit of usage.

    You can add aggregators directly from this form — if you need a new one, click **Create aggregator** to set it up without leaving the page.

    You can also configure display settings (public description) and set a low balance threshold to trigger warnings on the customer portal. The unit name shown to customers is inherited from the linked aggregator.

    **Credit grant mode** controls how many credits are granted on a **partial period** (e.g. mid-cycle start, upgrade, or automated top-up at the end of a period):

    | Mode               | Behavior                                                       |
    | ------------------ | -------------------------------------------------------------- |
    | **Prorated**       | Scale credits to the period, like billing (may be fractional). |
    | **Full allowance** | Always grant the full credits, even on a partial period.       |

    <Note>
      This setting only affects the **credits granted**, not the invoiced amount. The invoice is always prorated for partial periods — so with **Full allowance**, the customer pays a fractional price but receives the full credit allowance.
    </Note>

    <Frame>
      <img />
    </Frame>
  </Step>

  <Step title="Pricing configuration">
    Choose how the granted credit quantity determines the price:

    * **Volume pricing** applies progressive prices across quantity tiers.
    * **Bulk pricing** uses the tier reached by the total quantity to price all credits.
    * **Bundle pricing** offers predefined quantities at fixed prices. You can also choose which bundles customers can purchase from the customer portal.

    When you assign the credit product to a plan or subscription, enter the quantity of credits to grant and select a catalog price. Hyperline calculates the resulting amount and stores it as a fixed fee on the subscription while retaining the selected pricing configuration as context.

    <Frame>
      <img />
    </Frame>
  </Step>
</Steps>

## Multiple aggregators with weights

A credit product can be linked to multiple aggregators, each with its own weight. All aggregators consume from a **single shared balance**, but at different rates.

The weight defines how many credits are deducted per unit of usage for that aggregator. For example, a weight of `3` means each unit of usage consumes 3 credits.

<Card title="Example 💡">
  An AI platform sells credits that can be used across different models:

  | Aggregator         | Operation | Weight |
  | ------------------ | --------- | ------ |
  | `gpt4_requests`    | count     | 5      |
  | `gpt3_requests`    | count     | 1      |
  | `image_generation` | count     | 10     |

  A customer with 1,000 credits could use them for 200 GPT-4 requests, 1,000 GPT-3 requests, 100 image generations, or any combination.
</Card>

<Tip>
  If you only need a single aggregator, simply add one row with a weight of `1`. This works exactly like a standard credit product.
</Tip>

## Set up credits on a customer

Once your credit product is set up, you can enable a credit balance on your customer and link their credit usage immediately. Note that this can also be done via the API.

<Steps>
  <Step title="On the customer's details page, go to the Credits tab and click Add credit balance">
    <Frame>
      <img />
    </Frame>
  </Step>

  <Step title="Credit balance form">
    Here, you can also change the name, choose the starting balance, and set the credit warning limit. This won't override the values previously set in your product catalog, but will be specific to the customer.

    <Frame>
      <img />
    </Frame>
  </Step>

  <Step title="Monitor balance and consumption">
    Once the balance is created, a **credits chart** shows balance evolution over time. You can adjust the date range and granularity (daily, weekly, monthly) to analyze consumption patterns.

    Below the chart, the **transactions table** lists all credit movements (top-ups, usage, expirations). For products with multiple aggregators, an **Aggregator** column indicates which aggregator triggered each usage transaction. You can click a usage transaction to inspect and export the underlying consumption events.

    You can also manually top up or remove credits via the **Actions** menu.

    <Frame>
      <img />
    </Frame>
  </Step>
</Steps>

## Add credit products in plan and subscription

Credit products created in the product catalog can be added to predefined billing plans and subscriptions like any other product.

Options for this product can also be changed at the customer/subscription level, allowing full customization without altering your catalog configuration.

## Consumption order

A customer's credit balance is a single shared pool. When usage is reported (via events or via `POST /v1/customers/{id}/credits/{productId}/usage`), it is deducted from that pool.

For accounting and expiration purposes, the deducted amount is attributed to individual top-ups in **FIFO order by top-up creation date** — the oldest top-up is drained first, the most recent one last. This applies regardless of whether a top-up has an expiration date or is permanent.

<Note>
  Consumption order is based on **when each top-up was created**, not on its expiration date. A permanent top-up created before a time-limited top-up will be drained first.

  If you want a "free" allowance (e.g. a plan-included monthly allowance) to be consumed before paid top-ups, make sure the allowance top-up is credited to the balance **before** any paid top-up on the same credit product. For recurring allowances tied to a subscription, the allowance is credited at the start of each billing period, so as long as paid top-ups happen after that point, the allowance will be consumed first.
</Note>

## Real-time consumption and limits

Credit balances are updated asynchronously when usage is reported through events. In production, balances can take about 60 seconds to reflect new consumption, because Hyperline intentionally buffers and processes usage in the background.

Use the credit usage API endpoint (`POST /v1/customers/{id}/credits/{productId}/usage`) when you need to debit credits immediately from your own system. This synchronous debit flow is the right choice when you must enforce real-time limits, stop overconsumption, or block an action before confirming that the customer still has credits.

<Note>
  Test and production environments can feel different for credit timing. Always validate real-time enforcement against the same environment your application will use.
</Note>

## Credit expiration

Credits can be configured to expire automatically, ensuring that unused credits don't remain on customer balances indefinitely. There are two ways to set up credit expiration:

### Expiration after a fixed number of days

Set a specific number of days after which credits will expire. This is useful for promotional credits or time-limited offers.

When configuring a credit product on a subscription, you can specify how many days after the topup the credits will expire.

### Expiration at the end of the billing period

Credits can be configured to expire at the end of each billing period. This is useful for monthly or annual credit allowances that should not roll over.

When configuring a credit product on a subscription, you can enable this option. Credits will automatically expire when the billing period ends, and new credits will be added at the start of the next period.

<Note>
  When credits expire, an expiration transaction is automatically created in the credit ledger, and the customer's balance is reduced accordingly. The oldest credits expire first.
</Note>

## Auto-topup

Auto-topup allows you to automatically replenish a customer's credit balance when it falls below a specified threshold. This ensures uninterrupted service for your customers and reduces manual intervention.

### How auto-topup works

When a customer's credit balance drops below the configured low balance threshold, Hyperline can automatically:

1. Create an invoice for the topup amount
2. Charge the customer's payment method
3. Add the credits to their balance

### Configuration options

Auto-topup can be configured in two ways:

**Custom amount**: Specify a fixed amount to charge and the number of credits to add when the threshold is reached.

**Bundle pricing**: Use an existing bundle price from your product catalog. The system will automatically calculate the correct amount based on the bundle pricing.

<Card title="Example 💡">
  If you want to add 200 credits and your bundle is 50 credits for €400, the system will charge €1,600 for 4 bundles.
</Card>

### Setting up auto-topup

When creating or updating a credit balance for a customer, you can configure:

* The balance threshold that triggers auto-topup
* The number of credits to add when triggered
* Either a custom amount to charge, or select a bundle price from your catalog

<Warning>
  Auto-topup requires the customer to have a valid payment method on file. If the payment fails, the topup will not be processed and the balance will remain unchanged.
</Warning>

## Credit balances report

The **Credit balances** report gives you a month-by-month roll-forward of every prepaid credit balance, so finance teams can audit how credits were granted, consumed, and expired over time. You can view it on the [Reports](/docs/analytics/reports) page or export it through the [exports API](/api-reference/endpoints/exports/create-export) with `name` set to `credit_balances`.

Each row covers one customer's balance for a single credit type and month. A customer can hold several balances in different units, and amounts are never combined across units. The report is dense: quiet months still appear, carrying the previous closing balance forward. A balance appears once it has had activity on or before the end of the selected period.

Values are expressed in raw credit units (always positive), not in currency.

| Column              | Description                                        |
| ------------------- | -------------------------------------------------- |
| `Month`             | Month covered by the row, in `YYYY-MM` format      |
| `Customer ID`       | Identifier of the customer                         |
| `Customer name`     | Name of the customer                               |
| `Credit balance ID` | Identifier of the credit balance                   |
| `Credit type`       | Credit product the balance belongs to              |
| `Unit`              | Unit the credits are counted in                    |
| `Opening`           | Balance carried over from the previous month       |
| `Granted`           | Credits added manually or as a complimentary grant |
| `Purchased`         | Credits bought as a one-off paid top-up            |
| `Subscription`      | Credits granted by a subscription                  |
| `Consumed`          | Credits used through reported usage                |
| `Expired`           | Credits removed when they reached their expiration |
| `Adjustments`       | Reconciling entry that makes the row balance       |
| `Closing`           | Balance at the end of the month                    |

Every row balances out:

`Opening + Granted + Purchased + Subscription − Consumed − Expired + Adjustments = Closing`

<Note>
  Months are bucketed in the customer's timezone, while the date-range filter bounds are interpreted in UTC.
</Note>


# Custom usage tracking
Source: https://docs.hyperline.co/docs/customer-intelligence/custom-usage-tracking

Assign usage aggregators directly to customers for monitoring and threshold alerts without creating a subscription or billing them.

Custom usage tracking lets you assign usage aggregators directly to one customer, a set of customers or segments, or all customers. The metrics appear on customer pages without requiring a product or subscription and without affecting billing.

Use it for metrics your team wants to watch at the account level, such as monthly active users, API calls, storage growth, seats provisioned, data processed, feature adoption, or plan-limit consumption.

<Info>
  Directly assigning an aggregator to customers without a subscription is available with the [Customer Intelligence module](./overview). Standard usage-based billing does not include this direct assignment workflow.
</Info>

## Direct assignment compared with subscription usage

|              | Aggregator used in a subscription                                        | Aggregator assigned directly to customers                                |
| ------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------ |
| Setup        | Link the aggregator to a product, then add the product to a subscription | Select customers or segments in the aggregator's **Visibility** settings |
| Main purpose | Calculate billable usage or credit consumption                           | Monitor adoption, engagement, limits, or other customer signals          |
| Billing      | Can affect invoices or credit balances                                   | Never creates charges or invoice lines                                   |
| Period       | Subscription metering period                                             | Aggregator's default aggregation interval                                |
| Module       | Relevant billing feature                                                 | Customer Intelligence                                                    |

## How it works

1. You send usage events to Hyperline or load them through a connector.
2. An [aggregator](../usage/aggregators) turns those events into a metric.
3. The aggregator's **Visibility** setting assigns the metric to all customers or to selected customers and segments.
4. Assigned metrics appear on those customer records, on the customer overview and in the **Usage** tab.
5. Thresholds can alert your team when a customer's value crosses a configured limit.

<Note>
  Custom usage tracking uses the same aggregator system as usage-based billing. If you need to create the underlying usage events first, start with [Send usage data](../usage/send-usage-data) or [Usage data with connectors](../usage/usage-data-with-connectors).
</Note>

## Assign an aggregator to customers

1. Go to **Usage > Aggregators**.
2. Create a new aggregator or open an existing one.
3. Configure the metric:
   * **Name**
   * **Event type**
   * **Operation**: **Count**, **Sum**, or **SQL formula**
   * **Unit name**
   * Optional filters
4. In **Visibility**, choose where the metric should appear:
   * **All customers**
   * **Specific segments and customers**
   * **No customers**
5. Set the default aggregation interval used to calculate the metric when no subscription provides a metering period.
6. Choose the **Displayed value**:
   * **Total**: shows the total over the selected period.
   * **Last complete period**: shows the value from the last fully completed aggregation interval.
7. Add thresholds if you want to trigger alerts.
8. Click **Save changes**.

## Customer assignment options

| **Visibility** option               | Assignment behavior                                                                 |
| ----------------------------------- | ----------------------------------------------------------------------------------- |
| **All customers**                   | The metric applies broadly, such as API calls for every account                     |
| **Specific segments and customers** | The metric is only relevant for a cohort or handpicked accounts                     |
| **No customers**                    | The aggregator is only used for billing, internal calculations, or another workflow |

When using **Specific segments and customers**, add one or more customer or segment conditions. The metric appears on every customer record that matches at least one configured assignment.

Choosing a visibility option only controls where the metric is monitored. It does not add the aggregator to a subscription or make the usage billable.

## Where usage appears

Directly assigned aggregators appear in two places:

* **Customer overview**: top usage metric cards summarize the most relevant customer-visible metrics.
* **Usage tab**: the full list of visible usage cards includes charts, filters, thresholds, and event drill-downs.

For the full customer usage workflow, see [Customer usage](../usage/customer-usage).

In the **Usage** tab, you can change the period and grouping:

| Grouping    | Best for                          |
| ----------- | --------------------------------- |
| **Monthly** | Long-term customer trends         |
| **Daily**   | Weekly or monthly activity review |
| **Hourly**  | Intraday monitoring               |

Click **Explore** on a usage card to inspect the underlying events for that customer and metric.

## Use cases

| Use case             | Metric examples                                                      | What to watch for                                                 |
| -------------------- | -------------------------------------------------------------------- | ----------------------------------------------------------------- |
| Upsell opportunity   | Seats provisioned, API calls, storage used, projects created         | Customers approaching limits or growing steadily                  |
| Add-on adoption      | Premium feature events, advanced workflow usage, extra modules used  | Customers getting value from features that map to paid add-ons    |
| Onboarding progress  | First import, first integration sync, active users, key setup events | Customers that have not reached expected milestones               |
| Engagement risk      | Active users, weekly activity, successful syncs, feature usage       | Declining activity or no usage after purchase                     |
| Usage overage review | Events above included allowance, credits consumed, peak usage        | Customers likely to exceed contracted usage                       |
| Capacity planning    | Data processed, records stored, transactions created                 | Customers whose usage may require a plan or infrastructure review |

## Thresholds

Thresholds let you alert on customer-level usage changes. A threshold can trigger when a value is greater than or equal to a limit, or less than or equal to a limit. Hyperline evaluates the threshold separately for each assigned customer, using the aggregator's default aggregation interval when there is no subscription.

Crossing a threshold sends the configured alert; it does not create a charge, change a subscription, or update an invoice.

Thresholds are useful for:

* Usage spikes that may indicate overages
* Usage drops that may indicate churn risk
* Low adoption after onboarding
* Customers approaching contractual limits
* Customers reaching usage levels that may justify an upsell or add-on discussion

<Card title="Example 💡">
  You track monthly active users with an aggregator assigned to all customers.
  You set the displayed value to **Last complete period** and add a threshold
  for fewer than `20` active users. When a customer's active user count drops
  below that limit, your team can review the account before renewal.
</Card>

<Card title="Example 💡">
  You track storage usage in GB and set a threshold at `800`. When the
  threshold is crossed, the customer owner can review whether the account is
  ready for a higher tier or an additional storage package.
</Card>

## Related

* [Aggregators](../usage/aggregators)
* [Customer usage](../usage/customer-usage)
* [Explore usage events and consumption](../usage/explore-usage-consumption)
* [Customer monitoring agent](./customer-monitoring-agent)


# Customer monitoring agent
Source: https://docs.hyperline.co/docs/customer-intelligence/customer-monitoring-agent

Configure the Hyperline customer monitoring agent to analyze account health, surface risk signals, and notify the right teammates automatically.

The customer monitoring agent analyzes selected customers and produces a health score with supporting context. It helps you spot accounts that need attention because of payment issues, usage changes, support signals, contract risk, weak communication, or expansion potential.

The agent benefits from Hyperline's revenue management context, including contracts, subscriptions, invoices, payments, and usage. This gives the health score a revenue-aware foundation before it is enriched with connected tools such as Gmail, support platforms, meeting tools, and CRM systems, or built-in sources such as public company data.

You can use one monitoring agent for your full customer base, or focus it on a specific [customer segment](../customers/segments) such as enterprise customers, customers near renewal, or customers with late payment behavior.

## Where to find it

Go to **Customers > Monitoring** to create and manage monitoring agents.

After an agent has analyzed a customer, the customer page can show:

* A health score card on the customer overview
* The last monitoring date
* A link to the latest analysis
* The monitoring agent assigned to that customer

## What the agent analyzes

The agent combines billing and customer signals across several dimensions:

| Dimension              | What it considers                                                                                              |
| ---------------------- | -------------------------------------------------------------------------------------------------------------- |
| Payment health         | Payment consistency, failed payments, disputes, and overdue invoices                                           |
| Usage and engagement   | Product usage trends and declining activity                                                                    |
| Support signals        | Recent ticket volume, sentiment, and frustration patterns                                                      |
| Contract and valuation | Contract terms, renewal risk, and revenue at stake                                                             |
| Communication          | Meeting activity, email engagement, and relationship quality                                                   |
| Public company data    | Legal status, collective proceedings, establishment changes, and financial information for supported companies |

For **Contract and valuation**, the agent can review the terms and attachments
included with signed subscription quotes. It looks for conditions that could
increase early churn risk, such as proof-of-concept, pilot, or trial periods;
conditional exit or break clauses; termination for convenience; acceptance
conditions; and exceptions to minimum commitments.

When a signed quote or one of its attachments changes, the agent reviews the
latest contract document again during its next analysis. Relevant conditions
can appear in the health score reasoning and risk factors.

Connected tools can add more context. For example, Gmail can add recent customer email threads, support tools can add ticket history, meeting tools can add summaries and transcripts, and CRM tools can add account records, deals, contacts, and notes.

These dimensions are analysis angles, not a rigid checklist. Depending on the customer context, the agent can emphasize the most relevant angle, such as payment risk, billing issues, expansion readiness, renewal risk, weak communication, or unresolved support issues.

## How context is used in analysis

During each run, Hyperline pulls the relevant context for each monitored customer from Hyperline and connected tools. The agent uses that context to explain the health score, not just to list recent activity.

This helps the analysis connect signals that are often reviewed separately:

* A late invoice can be interpreted with payment history, recent emails, open support threads, and renewal context.
* A usage increase can be checked against CRM deal context and support sentiment to surface possible expansion readiness.
* A usage drop can be compared with recent meetings, email silence, or unresolved support issues to identify churn risk.
* A high-value customer can be prioritized differently when contract size, payment behavior, and relationship activity point in different directions.

<Card title="Example 💡">
  A customer has growing usage and an upcoming renewal, but recent Intercom conversations show unresolved implementation blockers. The agent can surface both the expansion signal and the risk, so the owner can prepare the right follow-up before starting a commercial conversation.
</Card>

## Use cases

| Use case                    | How the agent helps                                                                          |
| --------------------------- | -------------------------------------------------------------------------------------------- |
| Upsell and expansion review | Surfaces customers with strong usage, positive signals, and meaningful contract value        |
| Churn risk review           | Highlights declining usage, weak engagement, negative support signals, or payment issues     |
| Renewal preparation         | Summarizes health, risks, positive signals, and recent activity before renewal conversations |
| Collections follow-up       | Adds payment health and late invoice context to account-level monitoring                     |
| Onboarding monitoring       | Helps identify customers that have not reached expected usage or engagement milestones       |
| Executive account review    | Gives account owners a concise health summary with supporting reasoning                      |

## Choose a setup mode

When you create a monitoring agent, choose how much control you want over the analysis.

| Mode          | Best for                                                                           | How it works                                                                                  |
| ------------- | ---------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
| **Autopilot** | Quick setup or broad customer monitoring                                           | Hyperline chooses the schedule and signal weighting based on billing data and connected tools |
| **Advanced**  | Specific monitoring playbooks, such as collections, renewals, or expansion reviews | Customer scope, schedule, fine tuning, context, connectors, and notifications                 |

Use **Autopilot** when you want the agent to start monitoring with minimal setup. Use **Advanced** when you want to adapt the agent to a specific team workflow or customer segment.

## Create a monitoring agent

1. Go to **Customers > Monitoring**.
2. Click **Create agent**.
3. Open the agent and go to the **Configuration** tab.
4. Choose **Autopilot** or **Advanced**.
5. Choose which customers the agent monitors:
   * **All customers**
   * A specific customer segment
6. Click **Save changes**.

When you change the monitored customer scope, Hyperline asks you to confirm the assignment changes. This helps prevent accidental changes when a segment includes a large number of customers.

<Tip>
  Use segments to keep an agent focused. For example, monitor "Enterprise customers renewing in the next 90 days" separately from lower-touch accounts.
</Tip>

## Fine tune the agent

In **Advanced** mode, use the configuration tabs to customize how the agent works:

| Setting            | What it controls                                                               |
| ------------------ | ------------------------------------------------------------------------------ |
| **Customer scope** | Whether the agent monitors all customers or a selected customer segment        |
| **Schedule**       | Whether the agent runs automatically or on a fixed schedule                    |
| **Fine tuning**    | How strongly each signal dimension contributes to the health score             |
| **Context**        | Instructions the agent should use when interpreting customer signals           |
| **Connectors**     | Connected tools the agent can use for CRM, support, meeting, or custom context |
| **Notifications**  | Who the agent can ping and which findings should trigger a notification        |

### Configure schedule and scoring

In **Advanced** mode, use **Schedule** to decide when the agent runs:

* **Automatic**: Hyperline monitors customers when relevant events happen, such as new emails, late invoices, or usage changes.
* **Fixed schedule**: the agent runs at a regular interval that you define.

Use **Fine tuning** to adjust how strongly each dimension contributes to the health score. For example, you can give more importance to **Payment health** for collections-focused monitoring, to **Usage and engagement** for churn-risk monitoring, or to **Contract and valuation** for expansion and renewal reviews.

### Add context

Use the **Context** tab to give the agent additional instructions:

* **General context**: company or customer-base context the agent should know.
* **Scoring instructions**: guidance for interpreting signals, such as industry-specific thresholds or risk rules.
* **Include organisation hierarchy context**: include descendant customer context when the agent analyzes a parent customer. This is disabled by default.
* **Hierarchy depth**: choose whether to include descendants one, two, or three levels below the parent. This setting is available when organisation hierarchy context is enabled.

Keep context concise and operational. The best instructions explain how your team interprets customer risk, not generic business goals.

### Analyze a parent with descendant context

When **Include organisation hierarchy context** is enabled, the parent analysis can consider billing, usage, communications, risks, and value from descendant customers alongside the parent's own context. The agent keeps signals attributed to the relevant descendant and its path in the hierarchy.

This option changes the context used for customer analysis only. It does not move subscriptions or invoices, combine billing data, or change the invoicing configuration defined through [organisation-based billing](../customers/organisation-based).

<Note>
  An analysis can include up to three hierarchy levels and 50 descendants. If some descendant context is unavailable or the analysis reaches its context limit, the agent continues with the available information and does not treat missing data as a negative signal.
</Note>

## Enable connectors

Use the **Connectors** tab to choose which data sources the agent can use. The tab can include CRM, support, meeting, built-in, and custom MCP data sources.

Each available data source has a toggle. Third-party connectors appear disabled with **Connect to enable** until the underlying integration is connected. Built-in sources are available directly in Hyperline.

Gmail email context is handled separately. When **Gmail** is connected for users in your workspace, the agent can use recent customer email threads for matching customer domains. Gmail can appear in **Data sources** on an analysis result even though it is not toggled from the agent **Connectors** tab.

| Data source         | Examples                                                   | What it adds                                                                                                                            |
| ------------------- | ---------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| Email               | Gmail                                                      | Recent customer email threads, including subjects, participants, dates, and thread details when the agent needs communication context   |
| Support             | Plain, Intercom, Zendesk                                   | Support threads, statuses, priorities, labels, recent messages, and unresolved customer issues                                          |
| Call recording      | Attio Call Recorder, Claap, Google Meet with Gemini, Grain | Meeting records, participants, summaries, and transcripts when available                                                                |
| CRM                 | Attio, HubSpot, Salesforce                                 | Company records, contacts, deals, CRM meetings, and CRM notes                                                                           |
| Public company data | Pappers                                                    | French company identity, legal status, collective proceedings, establishment changes, financial information, and recent registry events |
| Custom sources      | MCP connections                                            | Additional customer context from internal tools or custom data sources connected to the agent                                           |

### Use Pappers company data

Pappers is a built-in source for French public company data. When you enable **Pappers** from the agent's **Connectors** tab, Hyperline uses the company data available through Pappers to enrich monitoring runs.

Hyperline identifies the company from the customer's **Registration number**. It accepts a SIREN or SIRET and falls back to a French **Tax ID** when the registration number is missing or invalid. If these identifiers are missing from a customer linked to an organisation, Hyperline can use the organisation's details instead.

When a company is found, Pappers can add:

* Whether the company is active or has ceased trading
* Active or past collective proceedings, such as safeguard, receivership, or liquidation
* Recently opened or closed establishments
* Recent financial information, including revenue, results, and headcount when available
* Recent public registry events

This context can help the agent detect risks such as a new collective proceeding or opportunities such as a recently opened establishment. If no valid French company identifier is available, the company is not found, or Pappers is temporarily unavailable, the monitoring run continues with the other available sources.

<Tip>
  Keep customer **Domain** and **Billing email** values up to date. They help Hyperline match Gmail messages, support threads, and meetings to the right customer.
</Tip>

<Card title="Example 💡">
  Before a renewal review, the agent can combine Hyperline billing data with Gmail threads, Intercom support conversations, Claap meeting summaries, and HubSpot deal context. The result helps the owner see payment risk, open support issues, recent engagement, and expansion signals in one customer health analysis.
</Card>

## Configure notifications

Use the **Notifications** tab to decide when and where the agent can ping your team.

You can configure:

* **Customer owner**: ping the user responsible for the monitored customer.
* **Customer followers**: ping users following the customer.
* **Specific people**: always ping selected users.
* **Noise control**: only notify for findings at or above a selected severity.
* **Slack threads**: post into a Slack channel when Slack is connected.

For more about customer ownership and followers, see [Owner and followers](./owner-followers).

<Note>
  Agent notification settings decide which recipients the agent may ping. Each recipient can also control their own channels and customer event subscriptions in **Profile > Notifications**.
</Note>

## Run the agent manually

You can trigger a manual run from the agent page, or from a customer health score card when a customer has not been monitored yet.

When triggering a run, you can:

1. Select one or more customers.
2. Adjust scoring weights for that run.
3. Add one-time context for the analysis.
4. Start the run and open the run detail page.

Manual runs are useful before a customer meeting, upsell review, renewal review, collections follow-up, or board reporting cycle.

## Read analysis results

Each completed analysis can include:

* Overall health score
* Score tier
* Short description
* Reasoning
* Dimension scores
* Positive signals
* Risk factors
* Summary
* Data sources and tools used

| Score range | Tier            |
| ----------- | --------------- |
| `0-25`      | Critical        |
| `26-50`     | At risk         |
| `51-75`     | Needs attention |
| `76-100`    | Healthy         |

<Note>
  A health score is a prioritization signal. Use the reasoning, risk factors, and source data to decide what action to take.
</Note>

## Related

* [Customer intelligence overview](./overview)
* [Owner and followers](./owner-followers)
* [Custom usage tracking](./custom-usage-tracking)
* [Late payment behavior](./late-payment-behavior)


# Late payment behavior
Source: https://docs.hyperline.co/docs/customer-intelligence/late-payment-behavior

Use Hyperline's late payment behavior smart segment and payment metrics to identify at-risk customers and prioritize collections outreach.

Late payment behavior helps you identify customers whose paid invoice history shows payment risk. It is available as a smart segment field in [customer segments](../customers/segments).

Use it to prioritize collections, review payment terms, route manual follow-up, or focus a monitoring agent on customers with payment-risk patterns.

## How Hyperline evaluates late payments

Hyperline computes payment behavior from settled invoices. For each paid invoice, Hyperline compares the settlement date with the expected payment date.

The expected payment date is based on the invoice due date and the customer's payment terms. This avoids treating an invoice as late before the customer's configured payment delay has elapsed.

The payment behavior metrics include:

| Metric                       | Meaning                                                         |
| ---------------------------- | --------------------------------------------------------------- |
| Paid invoices                | Number of paid invoices considered for the customer             |
| Invoices paid after due date | Number of paid invoices settled after the expected payment date |
| Late payment rate            | Share of paid invoices that were paid late                      |
| Average late payment delay   | Average delay across invoices that were paid late               |

<Note>
  Late payment behavior is based on invoices that have been settled. Unpaid overdue invoices are still visible through invoice status, reminders, and other collection workflows.
</Note>

## Smart segment: Late payment behavior

The **Late payment behavior** smart segment is computed and maintained by Hyperline. You do not need to set a threshold yourself.

Hyperline evaluates three signals together:

* Whether the customer has paid invoices late
* How often paid invoices are late
* How long late invoices are delayed on average

This keeps the segment focused on customers with meaningful late payment patterns instead of every customer with a single small delay.

## Create a late payment behavior segment

1. Go to **Customers > Segments**.
2. Click **New Segment**.
3. Enter a segment name, such as `Late payment behavior`.
4. Add a rule.
5. In the field picker, open **Payment behavior**.
6. Select **Late payment behavior**.
7. Preview the matching customers.
8. Click **Save**.

Because this is a smart segment, selecting the field is enough. You do not need to choose an operator or value.

## Build custom payment behavior rules

If you want more control, use the numeric payment behavior fields instead of the smart segment.

For example, you can combine:

* **Late payment rate** is greater than or equal to `50`
* **Average late payment delay** is greater than `10`
* **Invoices paid after due date** is greater than or equal to `2`

Use custom rules when you want to tune risk definitions for a specific collections process or customer cohort.

<Card title="Example 💡">
  You create a **High-risk payers** segment where **Late payment rate** is at
  least `50` and **Average late payment delay** is greater than `10` days. Your
  finance team follows the segment, and the monitoring agent watches it for new
  payment issues.
</Card>

## What to do with the segment

After saving the segment, you can:

* Filter the customer list by the segment
* Follow the segment to receive customer follower notifications
* Use it as the customer scope for a monitoring agent
* Review payment methods and invoice reminders for matching customers
* Export matching customers for collections review

## Related

* [Customer segments](../customers/segments)
* [Customer monitoring agent](./customer-monitoring-agent)
* [Owner and followers](./owner-followers)
* [Invoice reminders](../invoices/reminders)


# Customer intelligence
Source: https://docs.hyperline.co/docs/customer-intelligence/overview

Use Hyperline customer intelligence to monitor account health, usage trends, ownership, followers, and payment behavior signals in one place.

Customer intelligence brings several customer-facing signals into one workflow. It helps you understand which customers need attention, who is responsible for them, how their usage is evolving, and where there may be risk or expansion potential.

<Info>
  Customer Intelligence is a paid add-on. Contact the Hyperline team through the in-app chat to learn more or enable it for your account.
</Info>

Customer intelligence benefits from the same revenue management foundation that powers Hyperline contracts, subscriptions, invoicing, payments, and usage. This gives each analysis a revenue-aware starting point before external signals such as emails, support conversations, meetings, and CRM activity are added.

<Accordion title="Supported data sources">
  Customer Intelligence can use context from the following sources:

  * **Hyperline**: Contracts, subscriptions, invoices, payments, and usage
  * **Public company data**: Pappers
  * **CRM**: Attio, HubSpot, and Salesforce
  * **Support**: Front, Intercom, Plain, Pylon, and Zendesk
  * **Email**: Gmail
  * **Call recording**: Attio Call Recorder, Claap, Google Meet with Gemini, and Grain
</Accordion>

<Info>
  We are continually adding new data sources. If a tool your team uses is not
  supported yet, contact us through the in-app chat and tell us what you would
  like to connect.
</Info>

Use it when your customer base is large enough that manual follow-up becomes hard to prioritize. Instead of checking customer records one by one, you can combine health monitoring, usage metrics, owner and follower assignments, and smart payment behavior segments.

## Buy vs build

You can build customer intelligence internally, but the first obstacle is usually data access. Useful analysis needs the contract, subscription, invoice, payment, billing, usage, CRM, support, and communication context behind each customer. Recreating that context often means building data pipelines, matching customer records across tools, normalizing events, and maintaining the logic as your billing setup changes.

Hyperline already manages the revenue foundation behind your customers. Customer intelligence can therefore start from the account's commercial reality, then add external signals from connected tools such as email, support, meetings, and CRM activity. This makes the analysis more practical: the agent can evaluate risk, expansion potential, renewal readiness, payment behavior, and usage adoption from the same place where your revenue operations already happen.

| Common objection                               | What happens when you build                                                                                                                                       | Why use Hyperline                                                                                                                                         |
| ---------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| "The data is already in a warehouse."          | The warehouse can centralize data, but your team still needs customer matching, signal definitions, scoring, permissions, alerts, and account workflows.          | Hyperline combines revenue context, monitoring, owners, followers, and notifications directly in the customer workflow.                                   |
| "A custom model would be more flexible."       | Flexibility becomes maintenance when every new product, billing rule, segment, or renewal motion needs updates.                                                   | Monitoring agents can run on Autopilot or be fine-tuned with customer scopes, schedules, signal weights, connected data sources, and custom instructions. |
| "CRM and support tools already show activity." | Activity signals are useful, but they often miss the commercial context: contract value, payment behavior, subscription state, invoice history, and usage trends. | Hyperline analyzes external activity alongside the billing and revenue data that explains the business impact of each signal.                             |
| "Internal alerts are easy to add."             | Alerts become noisy when they are detached from ownership, followers, customer segments, and the workflow for acting on them.                                     | Hyperline routes customer intelligence to owners and followers so signals reach the people responsible for follow-up.                                     |
| "Building gives full control."                 | Full control also means owning integration drift, edge cases, permissions, auditability, and ongoing improvements.                                                | Hyperline gives you a maintained system close to the source of revenue data, while still letting you customize how the agent monitors customers.          |

<Tip>
  Build internally only when customer intelligence is a dedicated product your team wants to own end to end. For account prioritization, renewal preparation, expansion review, churn prevention, collections follow-up, and customer health monitoring, start with Hyperline.
</Tip>

## Multi-angle monitoring

The customer monitoring agent reviews each customer from multiple angles, then emphasizes the signals that matter most for that customer context. It can look across payment, billing, usage, contract and renewal, communication, and support signals in the same analysis.

This makes the health score more useful than a single rule or static checklist. For one customer, the main signal may be growing usage and expansion readiness. For another, it may be a late invoice combined with weak communication. For another, it may be an upcoming renewal with unresolved support issues.

## Setup and customization

Create monitoring agents from **Customers > Monitoring**. You can start with **Autopilot** when you want Hyperline to choose the schedule and signal weighting, or use **Advanced** mode when your team has a more specific monitoring playbook.

In **Advanced** mode, you can choose the monitored customer scope, schedule, fine-tune signal weights, add scoring instructions, enable connected data sources, and configure who should be notified.

## Capabilities

<CardGroup>
  <Card title="Customer monitoring agent" icon="robot" href="/docs/customer-intelligence/customer-monitoring-agent">
    Monitor customer health from multiple angles with Autopilot or fine-tuned agent settings.
  </Card>

  <Card title="Custom usage tracking" icon="chart-line" href="/docs/customer-intelligence/custom-usage-tracking">
    Display custom usage metrics on customer pages and alert on threshold crossings.
  </Card>

  <Card title="Owner and followers" icon="users" href="/docs/customer-intelligence/owner-followers">
    Assign a responsible owner and let teammates follow customers or customer segments.
  </Card>

  <Card title="Late payment behavior" icon="clock" href="/docs/customer-intelligence/late-payment-behavior">
    Identify customers with late payment patterns using smart customer segments.
  </Card>
</CardGroup>

## How the signals work together

| Signal                  | Where it appears                                | How you can use it                                                                                 |
| ----------------------- | ----------------------------------------------- | -------------------------------------------------------------------------------------------------- |
| Monitoring health score | Customer overview and monitoring analysis pages | Prioritize churn risk, payment anomalies, expansion signals, and accounts that need review         |
| Custom usage metrics    | Customer overview and **Usage** tab             | Track engagement, adoption, capacity growth, or product consumption outside standard billing views |
| Owner                   | Customer overview                               | Route accountability and monitoring agent pings to the responsible user                            |
| Followers               | Customer overview and segment follow actions    | Keep interested teammates subscribed to customer updates                                           |
| Late payment behavior   | Customer segments                               | Build payment-risk cohorts for collections, stricter terms, or manual outreach                     |

## Common workflows

* **Monitor strategic accounts**: create a segment for key customers, assign owners, then configure a monitoring agent to watch that segment.
* **Identify upsell opportunities**: expose usage metrics such as seats, API volume, storage, or feature adoption, then create segments for customers approaching plan limits or showing sustained growth.
* **Prepare renewals**: review customer health, payment behavior, usage trends, and recent positive signals before renewal conversations.
* **Improve onboarding**: track early usage milestones and follow customers that have not adopted key features after contract signature.
* **Detect product expansion**: monitor customers using a feature heavily, consuming multiple add-ons, or growing usage across teams.
* **Track engagement risk**: expose usage aggregators on customer pages, add thresholds, and use monitoring analysis to interpret declining usage.
* **Improve collections follow-up**: create a segment using **Late payment behavior**, follow the segment, and notify owners or followers when the monitoring agent detects new payment issues.
* **Coordinate account work**: use followers for teammates who should stay informed even when they are not the primary customer owner.

## Use case examples

| Use case                   | Signals to combine                                                          | Typical action                                                 |
| -------------------------- | --------------------------------------------------------------------------- | -------------------------------------------------------------- |
| Upsell readiness           | High or growing usage, healthy monitoring score, active communication       | Ask the owner to review plan limits, add-ons, or a higher tier |
| Churn prevention           | Declining usage, low health score, support frustration, weak communication  | Create a follow-up task or prepare an account review           |
| Renewal preparation        | Contract timing, usage history, payment behavior, positive and risk signals | Review the account before commercial discussions               |
| Onboarding follow-up       | Low usage after subscription start, missing milestone events                | Notify the owner or customer success team                      |
| Collections prioritization | Late payment behavior, overdue invoices, owner and followers                | Route follow-up to finance and the account owner               |
| Customer segmentation      | Usage, billing, payment behavior, custom properties                         | Build dynamic customer cohorts for reporting or team workflows |

<Note>
  Some customer intelligence capabilities may depend on your account configuration and user permissions. If you do not see a page or setting described here, contact the Hyperline team via the in-app chat.
</Note>

## Related

* [Customers](../customers/overview)
* [Customer segments](../customers/segments)
* [Customer usage](../usage/customer-usage)
* [Aggregators](../usage/aggregators)


# Owner and followers
Source: https://docs.hyperline.co/docs/customer-intelligence/owner-followers

Assign a customer owner, follow customers or segments, and route Hyperline monitoring notifications using owner and follower signals.

Customer owners and followers help you route accountability and notifications to the right people.

* **Owner**: the user responsible for the customer.
* **Followers**: users who want to stay informed about a customer, even if they are not the owner.

The customer monitoring agent can use both fields when deciding who to ping about a customer.

## Where owners and followers appear

Open a customer page and view the customer information panel.

When customer intelligence is enabled, you can see:

* **Owner**: an inline user selector.
* **Followers**: follower avatars and a **Follow** or **Unfollow** action.
* **Monitoring agent**: the agent currently monitoring the customer, if one is assigned.

## Set or change the customer owner

1. Open the customer page.
2. Find the **Owner** row in the customer information panel.
3. Select a user from the dropdown.
4. Hyperline saves the owner and shows a confirmation message.

You can clear the owner if no user should be responsible for that customer yet.

<Tip>
  Use one owner per customer for accountability. Use followers for teammates who need updates but should not be treated as the primary owner.
</Tip>

## Follow or unfollow a customer

1. Open the customer page.
2. Find the **Followers** row.
3. Click **Follow** to follow the customer.
4. Click **Unfollow** to stop following the customer.

The owner can also follow the customer. Ownership and following are separate signals.

## Follow a customer segment

You can follow a segment to automatically follow every customer that belongs to it.

1. Go to **Customers > Segments**.
2. Open a segment.
3. Click **Follow segment**.

When a customer matches a followed segment, Hyperline adds you as a follower through that segment. If the customer later stops matching the segment, the segment-based follow is removed automatically.

<Note>
  If you follow a customer through a segment, you cannot unfollow that customer individually while the segment still applies. To stop those follows, unfollow the segment or update the segment rules.
</Note>

## Use owners and followers for notifications

In a monitoring agent's **Notifications** tab, you can choose whether the agent may ping:

* The **Customer owner**
* **Customer followers**
* Specific selected users
* A Slack channel

Hyperline deduplicates recipients when the same user is both an owner and a follower.

## Configure your profile notifications

Each user controls their personal notification preferences from **Profile > Notifications**. These settings apply when you are selected as a customer owner or follower for a customer notification.

The profile notification page has three main areas:

| Area                       | What you can configure                                                   |
| -------------------------- | ------------------------------------------------------------------------ |
| **Notification channels**  | Which personal channels Hyperline can use to notify you                  |
| **Customer notifications** | Which customer events should trigger notifications for you               |
| **Followed segments**      | Which segments automatically add you as a follower on matching customers |

### Notification channels

Use **Notification channels** to decide where you can receive agent pings:

* **Hyperline chat**: creates an in-product conversation when an agent pings you.
* **Slack DM**: sends agent pings to you directly in Slack when Slack is connected.
* **Email**: sends agent pings by email when email delivery is available for your account.

<Note>
  Slack DM and email options may appear unavailable until the related provider is connected.
</Note>

### Customer notifications

Use **Customer notifications** to choose which customer events should notify you when you are the owner or a follower of the customer.

You can enable or disable:

* **Invoice settled**
* **Invoice becomes late**
* **Payment fails**
* **Payment method changes**
* **Payment method deleted**
* **Monitoring score changes**
* **Contract renews soon**

For **Monitoring score changes**, set the minimum score change required before Hyperline notifies you. For **Contract renews soon**, set how many days before renewal you want the notification to trigger.

### Followed segments

Use **Followed segments** to manage segment-based follows from your profile.

1. Go to **Profile > Notifications**.
2. In **Followed segments**, select a segment.
3. Click **Add**.

Customers matching that segment are followed automatically. You can also remove a segment from this list to stop following customers through that segment.

<Tip>
  Combine segment follows with customer notification settings to build personal work queues. For example, follow a **Late payment behavior** segment and enable **Invoice becomes late** to stay informed about customers that match your collections scope.
</Tip>

<Card title="Example 💡">
  Your finance lead follows a **Late payment behavior** segment, while account
  managers are assigned as owners on their customers. When the monitoring agent
  detects a payment issue, it can notify the owner for accountability and the
  finance lead for collections context.
</Card>

## Related

* [Customer monitoring agent](./customer-monitoring-agent)
* [Customer segments](../customers/segments)
* [Late payment behavior](./late-payment-behavior)


# How the customer balance is calculated
Source: https://docs.hyperline.co/docs/customers/balance

Learn how Hyperline calculates a customer account balance from outstanding invoices, credit notes, and wallet credit, and how to read it.

Every customer has an **account balance** that summarises their financial position with you at a glance. It appears on the customer overview page and answers a single question: does this customer owe you money, or are they in credit?

## Reading the balance card

The balance is shown as a card at the top of the customer overview page. Its **colour** is an at-a-glance signal of whether the customer needs attention, and the **tag** underneath spells out why.

<Frame>
  <img alt="Customer overview page with the balance card at the top left" />
</Frame>

### What the colours mean

| Card colour   | Tag                        | What it means                                                                                                       |
| ------------- | -------------------------- | ------------------------------------------------------------------------------------------------------------------- |
| 🔴 **Red**    | `{n} late`                 | At least one outstanding invoice is **overdue** (past its due date). Payment is late and likely needs chasing.      |
| 🟡 **Yellow** | `{n} outstanding invoices` | The customer has unpaid invoices, but **none are overdue yet**; they are still within their payment terms.          |
| ⚪ **Neutral** | `In credit`                | No outstanding invoices, and the balance is positive: credit notes and wallet credit exceed what the customer owes. |
| ⚪ **Neutral** | `All clear`                | No outstanding invoices and a settled, zero balance.                                                                |

The difference between **red and yellow** is purely about timing: as soon as a single open invoice passes its due date the card turns red, and it stays yellow while every open invoice is still within terms. A customer can move from yellow to red without any new invoices, simply because a due date has passed.

<Note>
  The colour and tag are driven only by the customer's open invoices, independently of the headline amount. So the card can stay yellow or red even when the amount itself shows a dash (see [the currency shown on the card](#the-currency-shown-on-the-card)).
</Note>

<Columns>
  <Frame>
    <img alt="Red balance card with a late invoices tag" />
  </Frame>

  <Frame>
    <img alt="Yellow balance card with an outstanding invoices tag" />
  </Frame>

  <Frame>
    <img alt="Neutral balance card with an in credit tag" />
  </Frame>

  <Frame>
    <img alt="Neutral balance card with an all clear tag" />
  </Frame>
</Columns>

## The formula

The balance combines three components:

```
Balance = unpaid credit notes + wallet credit − outstanding invoices
```

<Note>
  The sign tells you the direction:

  * **Negative**: the customer **owes** you money (their outstanding invoices exceed their credit).
  * **Positive**: the customer is **in credit** (their credit notes and wallet exceed what they owe).
  * **Zero**: the account is fully settled.
</Note>

## The three components

### Outstanding invoices

The total still due on the customer's **finalized** invoices that are not yet fully paid, including partially paid and failed ones. This is the only component that pushes the balance towards "owing".

Draft, voided, fully paid, and refunded invoices are not counted, and an invoice with a payment in progress is excluded until that payment settles or fails.

### Credit notes

The total of [credit notes](../invoices/refunds) issued to the customer that have not yet been refunded or applied to an invoice. Once a credit note is applied to an invoice, it reduces that invoice's amount due, so it is never counted twice.

### Wallet credit

The customer's available [prepaid wallet balance](../wallets/balance). A wallet balance only ever increases credit; it is never treated as negative.

## A worked example

| Component            | Amount     |
| -------------------- | ---------- |
| Outstanding invoices | 10,000     |
| Credit notes         | 3,000      |
| Wallet credit        | 1,500      |
| **Balance**          | **−5,500** |

`3,000 + 1,500 − 10,000 = −5,500` → the customer **owes 5,500**.

If the same customer instead had no outstanding invoices, the balance would be `3,000 + 1,500 = +4,500`, meaning they are **4,500 in credit**.

## The currency shown on the card

The balance card always shows the figure in the **customer's own currency** (the currency set on the customer record), with no conversion.

A customer can still have invoices, credit notes, or wallets in other currencies; Hyperline tracks each currency separately. The card reflects only the customer-currency balance, so activity in other currencies is not folded into the headline figure.

<Info>
  If a customer has no balance activity in their own currency (for example, all of their invoices are in a different currency), the amount shows as a dash (such as `- €`). The card colour and invoice-count tag still reflect their open invoices.
</Info>

## Organisations and child customers

For a parent customer in an [organisation](../customers/organisation-based), you can switch to the **aggregated view** to see the combined balance of the parent and all of its child customers, shown in the parent's currency.

Invoices that have already been consolidated onto the parent are counted once, so a charge is never double-counted across the parent and its children.


# Customer exports
Source: https://docs.hyperline.co/docs/customers/exports

Export Hyperline customer data to CSV — including subscriptions, estimated ARR, payment status, and contact details — for external analysis.

If you wish to export your customer data for external analysis, Hyperline provides you with built-in file export within the Customers section.

## Export flow

<Steps>
  <Step title="Navigate to the Customers page" />

  <Step title="Click on the 'Export customers' button">
    <Frame>
      <img />
    </Frame>
  </Step>

  <Step title="Download the CSV file">
    <Frame>
      <img />
    </Frame>

    After clicking the export button, your customer data will be compiled into a CSV file. Download the file to access a complete export, including customer details, their number of active subscriptions, estimated ARR, and more.
  </Step>
</Steps>

## Large exports

Customer exports are generated asynchronously. On large workspaces, the file can take longer to prepare before it is available to download.

CSV exports are limited to 10,000 rows. If your workspace has more customers than the export can include, narrow the data before exporting, use the public API for paginated extraction, or contact support for help with a bulk export.

<Tip>
  For recurring reporting needs, consider [automated exports](../analytics/automated-exports) instead of manual CSV downloads.
</Tip>


# Organisation-based billing
Source: https://docs.hyperline.co/docs/customers/organisation-based

Bill multiple Hyperline customers under a single parent account with organisation-based billing, while keeping each child's subscriptions distinct.

Sometimes you need to bill a group of customers on a single entity without sacrificing the details of each independent account and subscription.

The organisation-based billing feature is available directly from the customer page, where you can attach a customer to another.

For usage-based subscriptions owned by the parent, you can also include direct child customers' usage in a metered product. See [Include child customers' usage](../subscriptions/metering#include-child-customers-usage).

<Note>
  If you use Customer Intelligence, a monitoring agent can optionally include descendant customer context when analyzing a parent customer. This affects the health analysis only and does not change invoice routing or organisation-based billing settings. See [Analyze a parent with descendant context](../customer-intelligence/customer-monitoring-agent#analyze-a-parent-with-descendant-context).
</Note>

## Activate organisation-based billing

<Steps>
  <Step title="Navigate to the Customers page" />

  <Step title="Click on the 'Actions' button in the bottom left of the page">
    <Frame>
      <img />
    </Frame>
  </Step>

  <Step title="Available information">
    Here, you can see the parent/children relationship and the invoicing
    configuration for this customer.

    By clicking "Set parent organisation", you'll be able to choose a parent organisation for this customer.
  </Step>

  <Step title="Configure the invoicing settings for this customer">
    <Frame>
      <img />
    </Frame>

    You'll be prompted to choose a parent organisation and then to select an invoicing configuration.

    3 options are available at this stage.

    * `Individual invoices` will move every invoice for the current customer to the parent and invoice it under the parent configuration while keeping the content identical.
    * `Grouped` will set the current customer's invoices as pending and concatenate them regularly with other children from the parent. Concatenated invoices will display one line item per child invoice with the original line items listed in the description.
    * `No change` will attach the child to the parent but will not change any invoicing parameter.
  </Step>

  <Step title="(Optional) Set the parent invoicing schedule">
    <Frame>
      <img />
    </Frame>

    If you have chosen `Grouped` for the child invoicing configuration, you'll need to set the grouping schedule on the parent.

    To do this, go to the parent customer page, click the dots next to "Org. based billing" and select "Children settings".

    You'll be able to select a schedule (monthly, quarterly or yearly) and the next invoicing date. From there everything will be automated, but you can adjust the next invoicing date at any time.
  </Step>

  <Step title="(Optional) View the children settings">
    <Frame>
      <img />
    </Frame>

    When going to the parent, you will see all the children and the related settings.

    <Frame>
      <img />
    </Frame>

    A callout will appear on the invoicing section of the children to inform you that the invoices are being billed to the parent.
  </Step>
</Steps>

## Precisions on organisation-based billing

**Payment methods**

If a customer is billed through a parent, Hyperline will use the parent payment method configuration to process the payment. So for instance if the child customer is connected to Stripe and has a credit card on file, we won't use it.

**Draft invoices**

When creating parent invoices in organisation-based billing, Hyperline respects the draft invoice setting from child subscriptions:

* For `Individual invoices` configuration: if the child subscription has draft invoices enabled, the parent invoice will be created as a draft.
* For `Grouped` configuration: if any child subscription has draft invoices enabled, the merged parent invoice will be created as a draft.

This applies to all invoices, including zero-amount invoices.

**See child invoices**

When an invoice from a child is reported to a parent, Hyperline keeps a document specific to the children to make tracking and audits easier.

These documents have the status `Charged on parent` and are kept in the child "Invoices" tab.

If a child invoice is pending a parent grouped invoicing, it will have the status `Pending parent concat`.

**Track line item origins**

For `Grouped` configuration, parent invoices include an `original_line_item_id` field on each line item, allowing you to trace which child invoice each line item originated from via the API.

**Consumption exports**

When child invoices are charged to the parent, exports can include the child usage and machine-level consumption data, but they do not expose a per-line euro amount for each child consumption line. Use the parent invoice lines for the billed amounts and the consumption export for the underlying usage detail.

**Invoices that can't be grouped**

For `Grouped` configuration, a child invoice can only be rolled up onto the parent if its invoicing entity matches the parent's. When it doesn't, Hyperline blocks the regroup for that invoice and surfaces a red callout on both the parent and the child customer overview.

The callout links to a Sentinel task listing the affected invoices, so you can review them and align both the invoice's invoicing entity and the customer's invoicing entity with the parent's. Once aligned, the invoice becomes eligible for regrouping again.

**Remove a child company from its parent**

In the modal where you linked the child company to its parent, a red button has appeared. If you click this button, the child company will be removed from the parent and any future invoice will stay on the child.

Invoices with the status `Pending parent concat` will move back to the child to get processed.


# Customers
Source: https://docs.hyperline.co/docs/customers/overview

Manage the individuals and companies you bill in Hyperline: create customers manually or via API, track subscriptions, and update billing info.

Customers are the individuals or companies that purchase your products or subscribe to your services. We recommend creating a customer in Hyperline as soon as they register for your product.

<Info>
  Customer intelligence is available from customer records to monitor health, usage trends, ownership, followers, and payment behavior. See [Customer intelligence](../customer-intelligence/overview).
</Info>

## Create a customer

### Manual creation

<Steps>
  <Step title="Go to the Customers section">
    Click **New Customer**.

    <Frame>
      <img />
    </Frame>
  </Step>

  <Step title="Fill in the general information and billing details">
    Enter the customer details, then click **Save customer**.

    <Frame>
      <img />
    </Frame>

    If you do not have all the information at this time, you can still create the customer and update the details later. Only a name is required; currency and country can be inferred from your billing settings.
  </Step>

  <Step title="Your new customer is created">
    The customer will appear immediately in your customer list (under the `All` filter).

    <Frame>
      <img />
    </Frame>

    Click the customer's name to access their detailed information.

    On this page, you will see an overview of the customer's information on the left side of the screen. On the right, you can navigate through their [subscriptions](../subscriptions/manage), [wallet](../wallets/overview), [invoices](../invoices/overview), and events.

    <Frame>
      <img />
    </Frame>
  </Step>
</Steps>

### Automatic creation

Customers can be created programmatically [using the API](../../api-reference/endpoints/customers/create-customer).

Additionally, when a CRM is connected and configured to automatically sync customers to Hyperline, customers will be created automatically.

<Tip>
  If CRM records are duplicated, linked to the wrong customer, or not updated as expected, see [Understand CRM sync matching](../../guides/crm-sync-matching).
</Tip>

### Default language, country, and currency

When creating a customer, the language is determined through a cascade: if explicitly provided, that value is used; otherwise, if a country is provided, the language is inferred from that country; if neither is provided, the language defaults to the invoicing entity's language.

The country follows a simpler fallback: the provided country is used if available; otherwise, it defaults to the invoicing entity's country.

The currency also follows a fallback cascade: if explicitly provided, that currency is used; otherwise, if a customer country is provided, the currency is inferred from that country; if neither is provided, the currency defaults to the invoicing entity's currency.

This ensures that every customer has valid language, country, and currency settings, even when not explicitly specified.

## Edit a customer

Customer information can be updated at any time by clicking **Edit** in the actions dropdown.

<Frame>
  <img />
</Frame>

<Note>
  The **currency** cannot be changed in the following cases:

  * Once a customer has a wallet with funds or an active payment method (you must remove the payment method and delete the wallet first)
  * When using an external billing engine (the currency must be managed in the external tool)

  If you need to change the currency and cannot do so, please contact support.
</Note>

### Force draft invoices

The **Force draft invoices** setting on the customer forces every invoice generated for that customer to be created as a `draft`, so it can be reviewed and validated manually before being sent.

Enable it from the customer's edit page by toggling **Force draft invoices** on. It applies to all invoices generated for the customer — subscriptions, one-off invoices, and parent invoices in [organisation-based billing](/docs/customers/organisation-based) or [consolidated invoicing](/docs/invoices/consolidated-invoicing).

<Note>
  This customer-level setting overrides the subscription-level **Generate draft invoices** option. When it is enabled, invoices land in `draft` even if their subscription is not configured to draft invoices, and even after a [grace period](/docs/invoices/term) ends.
</Note>

### Taxability

Customer taxability controls whether Hyperline should apply taxes to that customer.

* **Taxable** is the default behavior. Hyperline calculates taxes from your tax settings, the customer's billing country, tax ID, and the products being billed.
* **Tax exempt** prevents tax from being charged to the customer. Use it only when the customer is exempt from tax for your billing context.

<Note>
  If **Require customer tax identifier** is enabled in the invoicing entity's tax settings, company customers must provide a Tax ID. When local tax numbers are enabled, they can provide a local tax number instead.
</Note>

### Tax identifiers

A company customer can have two tax identifiers:

* **Tax ID**: The primary tax identifier, such as an EU VAT number. Hyperline uses this value for tax calculation, validation, and reverse charge rules.
* **Local tax number**: A country-specific identifier used for local invoicing or reporting requirements. Hyperline does not validate this value through VIES or use it to determine reverse charge eligibility.

To collect local tax numbers for customers linked to an invoicing entity, go to **Settings** > **Taxes** for that entity and enable **Enable local tax number**. The field then appears when you create or edit company customers and in customer billing forms on hosted pages.

### Tax ID validation

Customer tax IDs show a validation status on the customer page. For EU VAT numbers, Hyperline validates the number through the EU VAT Information Exchange System (VIES) and stores the consultation number when available.

The main statuses are `valid`, `invalid`, `mismatch`, `unverified`, and `unsupported`. See [Tax ID validation](../invoices/tax-management#tax-id-validation) for the full status reference and the related invoicing entity enforcement settings.

### French tax IDs and registration numbers

For French customers, Hyperline can use the **Registration number** field, which may be a SIREN or SIRET, to prefill the customer's **Tax ID**. If the tax ID is empty and you enter a valid French registration number, Hyperline derives the French VAT number automatically.

If you provide both values, Hyperline keeps the tax ID and registration number as entered, even if they do not match. This lets you save the customer details first and review the values later from the tax ID validation status.

When a tax ID was previously inferred from a French registration number, updating the registration number refreshes the inferred tax ID. Tax IDs that were explicitly entered are preserved.

## Addresses

A customer has a billing address that appears on quotes, invoices, and other documents.

### Shipping address

By default, the billing address is used as the shipping address. To use a different shipping address, click the **Edit** button on the customer details page.

<Frame>
  <img />
</Frame>

<Frame>
  <img />
</Frame>

When this option is enabled, customers can edit their shipping address directly from the customer portal.

<Frame>
  <img />
</Frame>

Shipping details can also be displayed on quotes and invoices.

<Frame>
  <img />
</Frame>

<Frame>
  <img />
</Frame>

<Note>
  Shipping address is subject to activation on our side. Please contact support if you are interested.
</Note>


# Public customer portal
Source: https://docs.hyperline.co/docs/customers/portal

Give customers a hosted Hyperline portal to manage subscriptions, payment methods, invoices, and billing information across multiple languages.

## Overview

Hyperline offers a customer portal where your customers can get access to their live subscription, payment methods, billing information and invoices. Our objective is to ensure a transparent and well-organized billing summary to offer to your own customers.

<Frame>
  <img />
</Frame>

As well as displaying information correctly, this portal offers a number of action options for your customers:

#### Portal language

The language will be displayed following these rules:

* If the customer's browser language is part of our 8 supported languages (English, French, German, Italian, Spanish, Polish, Portuguese and Dutch), it will be displayed in the language.
* If it is not part of the supported languages, we will default to the customer language selected on Hyperline customer information. By default, this language is inferred based on the customer's country.

#### View subscription details

Customers can access the full details of their subscription by clicking on 'Subscription details' on the portal.

<Frame>
  <img />
</Frame>

This sub-page will display the content of the next invoice that will be billed, as well as the detailed price structure of every product.

<Frame>
  <img />
</Frame>

#### Change payment method

To do that, they just have to click the trash button next to their payment and add the new payment method they want to use.

<Frame>
  <img />
</Frame>

#### Top-up wallet

You can make your customers autonomous by letting them top up their wallet in the portal. For this, make sure you enable the option on the wallet settings first.

Clicking on Top-up wallet on this screen will trigger an immediate payment from the registered credit card and credit the wallet instantly.

<Frame>
  <img />
</Frame>

#### Edit billing information

To make changes, they simply need to click the **Edit** button. This grants them the ability to update and modify their billing details as needed, ensuring accuracy and up-to-date information for a seamless payment process.

<Note>
  This capability can be controlled in **Settings > Hosted pages**. See the [Billing details update](#billing-details-update) section below for more details.
</Note>

<Frame>
  <img />
</Frame>

#### Download invoices

All invoices are listed and can be opened to their dedicated [invoice page](../invoices/invoice-page).

<Frame>
  <img />
</Frame>

Customers can download their invoice PDF using the 'Download' button on the top-right corner.

<Frame>
  <img />
</Frame>

## How to access the customer portal

To view the portal for a specific customer: go to the customer page, select the customer you want to view then click the 'Portal' button.

<Frame>
  <img />
</Frame>

You can easily provide your customers with this unique portal link. Each customer portal link is individually generated and secured through a unique ID.

## Customize the portal

### Colors & brand identity

The portal adopts the primary brand color and icon that have been configured in the 'Settings' section under the 'General' tab of Hyperline. This uses the same codes as those displayed on the invoice sent to your customers. This feature enables you to personalize your customer portal with the distinct colors and branding of your company.

### Set a custom domain

In order to personalize further the experience for your customers, you can configure a custom domain for the hosted portal and checkout pages.

You can set it in [your settings](https://app.hyperline.co/app/settings/hosted-pages), and to enable it you need to add a `CNAME` record pointing to `cname.hyperline.co` on your DNS provider.

For example: you want to set your custom domain to `billing.alpeak.com` in Hyperline, and add the related `CNAME` record on your DNS provider, we will provide you portal and checkout URLs with the form:

```
https://billing.alpeak.com/portal/:customerId
https://billing.alpeak.com/checkout/:sessionId
```

We will automatically manage the related HTTPS SSL certificate.

### Customer actions

You can control what actions customers can perform on hosted pages through **Settings > Hosted pages** under the **Customer actions** section:

#### Billing details update

You can control whether customers can update their billing details (billing address, billing email, tax identifiers, and invoice emails) on hosted pages through **Settings > Hosted pages** under the **Customer actions** section. Toggle **Allow billing details update** to enable or disable this capability. When enabled, customers can edit their billing information through the customer portal, checkout, and quote pages. The **Local tax number** field is available for company customers when it is enabled in the invoicing entity's **Taxes** settings.

#### Customer typology selection

By default, hosted pages (customer portal, checkout, and quote pages) allow customers to select between B2C (person) and B2B (corporate) typologies when updating their billing information. You can disable this typology selection in **Settings > Hosted pages** under the **Customer actions** section. When disabled, customers will not be able to change their typology on hosted pages, and the form will use their existing typology setting.

#### Payment method deletion

You can control whether customers can delete their **default** payment method on hosted pages through **Settings > Hosted pages** under the **Customer actions** section. Toggle **Allow payment method deletion** to enable or disable this capability. Non-default payment methods can always be deleted regardless of this setting.

When deletion is disabled, customers can still delete a default payment method if it is **irreversibly errored** — meaning the card or mandate is permanently dead and cannot be recovered. This covers the following error reasons:

* `Expired` — the card or mandate has expired.
* `MandateInvalid` — the mandate is no longer valid.

Default payment methods in a **recoverable** error state (for example `InsufficientFunds`, `AuthenticationRequired`, `Declined`, `Fraud`, `Invalid`, `NotSupported`, `AuthorizationError`, or `Unknown`) remain locked, as the customer is expected to retry or re-authenticate rather than delete the payment method.

### Display options

You can control what subscription information is displayed on hosted pages through **Settings > Hosted pages** under the **Display** section.

#### Hide contract duration

By default, subscription pages show contract details such as the contract start, commitment duration, and renewal terms. Toggle **Hide contract duration** in **Settings > Hosted pages** under the **Display** section to hide these details from the customer portal. Enable it when contract terms are managed outside Hyperline or could confuse customers.

### Generate a portal link

You can generate a portal link for a specific customer in two ways:

* **API**: call `GET /v1/customers/{id}/portal` to retrieve the portal URL. See the [endpoint reference](/api-reference/endpoints/customers/get-customer-portal).
* **App**: click the **Portal** button on the customer page (see [How to access the customer portal](#how-to-access-the-customer-portal)).

The returned link embeds an authentication token. It is valid for the duration set in **Link expiration delay**, or indefinitely if the delay is empty. After expiry, behavior depends on whether **Require customer authentication** is enabled — see [Authentication vs. link expiration](#authentication-vs-link-expiration).

### Portal authentication

You can require customers to authenticate before accessing the customer portal through **Settings > Hosted pages > Security**. When enabled, customers without a valid token must verify their identity via a magic link sent to their email address before they can view their portal.

#### How it works

Portal links contain an authentication token. **Link expiration delay** controls how long that token is valid; **Require customer authentication** controls what happens when no valid token is present.

When authentication is required and a customer opens the portal without a valid token (first visit, expired token, or direct URL):

1. The portal shows a login screen.
2. The customer enters an email matching their billing email or invoice emails.
3. A magic link is sent to that email.
4. Clicking the magic link grants access — indefinitely if no link expiration is set, otherwise for the configured window.

<Note>
  Portal authentication adds an extra layer of security by ensuring only authorized users can access customer billing information. Useful for B2B customers where multiple people might share portal links.
</Note>

#### Authentication vs. link expiration

Portal authentication and **Link expiration delay** combine to control access:

* **Auth off, no expiration**: portal links work indefinitely (default).
* **Auth off, expiration set**: tokens expire after the configured delay; revisiting the URL automatically issues a new token, no login required.
* **Auth on, no expiration**: customers without a valid token are sent to the login screen. After authenticating via magic link, the issued token never expires (one-time auth, permanent access).
* **Auth on, expiration set**: links work for the configured window. After expiry, customers must re-authenticate via magic link to obtain a new token.

<Note>
  When authentication is required, every visit without a valid token redirects to the login screen. Communicate this to your customers if you change the setting.
</Note>

### Link expiration delay

By default, hosted page URLs (customer portal, checkout, and quote pages) contain authentication tokens that never expire. You can configure an expiration in **Settings > Hosted pages > Domain > Link expiration delay** (in minutes).

When set:

* Tokens are included in all hosted page URLs (both Hyperline-hosted and custom domain URLs).
* After the delay, customers need a new link or must re-authenticate to access the page.
* Applies to portal links, checkout session links, and quote links.

<Note>
  Link expiration enhances security by limiting how long a shared link remains valid. Useful when links are sent via email or other channels where they might be forwarded.
</Note>

### Set a redirect button

You can configure a back button in the hosted pages settings.

<Frame>
  <img />
</Frame>

And it will look like this in the portal.

<Frame>
  <img />
</Frame>

### Display personalization

You can add this query parameter to your portal URL to hide the sidebar `&hideSidebar=true`. It will look like this:

<Frame>
  <img />
</Frame>

It works both for custom domain and Hyperline hosted pages.

### Embed the customer portal in an iframe

You can embed the Hyperline customer portal inside your application using an `<iframe>`.

Always add the `allow="payment"` attribute to your iframe:

```html theme={null}
<iframe src="https://app.hyperline.co/portal/..." allow="payment"></iframe>
```

Browsers block payment features (Apple Pay, Google Pay) inside third-party iframes unless the embedding page explicitly delegates the `payment` permission. Without this attribute, wallet payment buttons will not appear for your customers — card payments still work.

<Note>
  This also applies if you embed Hyperline checkout, quote, or payment pages in an iframe. If you use the [React SDK](/api-reference/docs/react-components), the permission is set automatically — make sure you run a recent version of `@hyperline/react-components`.
</Note>

If your site uses a strict Content Security Policy (CSP), you must explicitly allow our domains:

```html theme={null}
<meta
  http-equiv="Content-Security-Policy"
  content="
    default-src 'self';
    frame-src 'self' https://app.hyperline.co https://api.hyperline.co https://internal.hyperline.co;
    connect-src 'self' https://api.hyperline.co;
    img-src 'self' data:;
    script-src 'self';
    style-src 'self' 'unsafe-inline';
    font-src 'self' https: data:;
    base-uri 'self';
    object-src 'none';
    upgrade-insecure-requests;
  ">
```

Add the following origins to your CSP so the iframe can load and downloads work:

Production

* [https://app.hyperline.co](https://app.hyperline.co) (Portal UI)
* [https://internal.hyperline.co](https://internal.hyperline.co) (API calls within the iframe)
* [https://api.hyperline.co](https://api.hyperline.co) (Public API calls)

Sandbox

* [https://sandbox.app.hyperline.co](https://sandbox.app.hyperline.co)
* [https://sandbox.api.hyperline.co](https://sandbox.api.hyperline.co)
* [https://sandbox.internal.hyperline.co](https://sandbox.internal.hyperline.co)

If you’re using a custom domain for hosted pages, also include that domain wherever you allow app.hyperline.co.


# Customer segments
Source: https://docs.hyperline.co/docs/customers/segments

Group Hyperline customers into dynamic segments using rule-based filters on country, currency, subscription status, custom properties, and more.

Customer segments let you slice your customer base into dynamic, rule-based groups — for example "Enterprise customers in France paying by direct debit" or "All customers with a parent company".

As your billing operations scale, treating every customer the same becomes impractical. Segments give your finance and revenue teams a way to define cohorts based on billing attributes (country, currency, payment method, invoicing entity, custom properties, etc.) and instantly see which customers fall into each group. Unlike static tags or manual lists, segments are **evaluated continuously**: when a customer's data changes, their segment membership updates automatically.

Common use cases include:

* **Regional billing analysis** — group customers by country or currency to review revenue distribution across markets.
* **Payment method monitoring** — identify customers without a payment method on file or those using a specific gateway.
* **Payment risk and collections** — surface customers who pay late often, have a high average delay, or whose payment method is errored or expired.
* **Entity-level reporting** — filter customers by invoicing entity for compliance or accounting purposes.
* **Custom cohorts** — combine custom properties with standard fields to build segments that match your business logic, such as plan tier, industry vertical, or contract type.
* **Handpicked lists** — add a condition on specific customer IDs to build a segment from an explicit list of customers, useful when no shared attribute can define the group.

## Manage segments

### Create a segment

<Steps>
  <Step title="Go to the Customers section">
    Navigate to the **Segments** tab and click **New Segment**.
  </Step>

  <Step title="Define segment details">
    Enter a **name** and an optional **description** for the segment.
  </Step>

  <Step title="Add rules and conditions">
    A segment is made of one or more **rules**, each containing one or more **conditions**.

    * Conditions within a rule are combined with **AND** logic — a customer must match all conditions in the rule.
    * Multiple rules are combined with **OR** logic — a customer belongs to the segment if they match any rule.

    Each condition is defined by a **field**, an **operator**, and one or more **values**.

    The field picker is organized into four sections to help you find the right attribute:

    * **Customer** — identity and account attributes (country, currency, language, invoicing entity, tax ID, etc.).
    * **Payment behavior** — payment method and collection metrics, including the **Late payment behavior** smart segment (see below).
    * **Billing** — subscription, product, and invoice attributes.
    * **Custom fields** — any text, number, select, or boolean custom property defined on customers.
  </Step>

  <Step title="Preview matching customers">
    As you build your rules, a **live preview** table shows matching customers in real time. The table is paginated and searchable, and its columns dynamically adapt to display the fields used in your conditions.
  </Step>

  <Step title="Save the segment">
    Click **Save** to create the segment. It will immediately appear in the segment list with its customer count.
  </Step>
</Steps>

### Edit a segment

You can edit any segment by clicking on it in the list. The same form is displayed inline — update rules, conditions, or details, and save directly without a modal.

The live preview updates as you modify the rules, so you can see the impact of your changes before saving.

### Delete a segment

To delete a segment, open the actions menu and click **Delete**. A confirmation modal will appear — deletion is permanent and cannot be undone.

## Available filter fields

| Section          | Field                        | Value type                                                   |
| ---------------- | ---------------------------- | ------------------------------------------------------------ |
| Customer         | Customer                     | Multi-select (search and pick specific customers)            |
| Customer         | Country                      | Multi-select (country list)                                  |
| Customer         | Currency                     | Multi-select (currency list)                                 |
| Customer         | Language                     | Multi-select (language list)                                 |
| Customer         | Invoicing entity             | Multi-select (your invoicing entities)                       |
| Customer         | Relationship                 | Has parent / Has child                                       |
| Customer         | Tax ID                       | Presence only                                                |
| Customer         | External ID                  | Presence only                                                |
| Payment behavior | Late payment behavior        | Smart segment (Hyperline-managed, see below)                 |
| Payment behavior | Payment method type          | Multi-select (card, direct debit, etc.)                      |
| Payment behavior | Payment method status        | Multi-select (Active, Pending, Errored, Expired)             |
| Payment behavior | Paid invoices                | Number (count of paid invoices)                              |
| Payment behavior | Invoices paid after due date | Number (count of invoices paid late)                         |
| Payment behavior | Late payment rate            | Number (share of invoices paid late, as a percentage)        |
| Payment behavior | Average late payment delay   | Number (average days past due across late payments)          |
| Billing          | Subscription status          | Multi-select                                                 |
| Billing          | Subscribed product           | Multi-select                                                 |
| Billing          | Invoice status               | Multi-select                                                 |
| Custom fields    | Custom properties            | Depends on the property type (text, number, select, boolean) |

### Smart segments

Smart segments are cohorts **computed and maintained by Hyperline** from your billing data — you don't have to define their criteria yourself. They appear in the **Payment behavior** section of the field picker, marked with a lightning icon.

* **Late payment behavior** — customers Hyperline identifies as showing late payment patterns, based on their paid and overdue invoice history. Add this field to a rule to target at-risk customers for dunning campaigns, manual outreach, or stricter payment terms, without having to tune the underlying thresholds yourself.

Smart segments don't take an operator or a value — selecting the field is enough.

### Operators

The operators available on a condition depend on the field type:

* **Text and multi-select fields** (country, currency, payment method type, payment method status, subscription status, etc.) — `is in`, `is not in`.
* **Presence-only fields** (Tax ID, External ID) — `is set`, `is not set`.
* **Date fields** (created at, contract end date, etc.) — `is after`, `is before`, `is between`.
* **Numeric payment behavior metrics** (paid invoices, invoices paid after due date, late payment rate, average late payment delay) — `equals`, `is greater than`, `is greater than or equal to`, `is less than`, `is less than or equal to`, `is between`.

For example, to build a "high-risk payers" segment you could combine `Late payment rate is greater than or equal to 50` with `Average late payment delay is greater than 10` in a single rule.

## Segment stats

The segment list displays stats for each segment:

* **Customer count** — the number of customers matching the segment's rules
* **Percentage** — the share of your total customer base that belongs to the segment

These stats are kept up to date as your customer data evolves.

## Filter the customer list by segment

Once you have created segments, they become available as filters in the main **Customers** list. Select a segment from the filter dropdown to narrow the list to only the customers that belong to that segment.

This makes it easy to quickly navigate to a specific cohort without leaving the customer list — for example, to review all customers in a given country or all customers using a particular payment method.


# Feature entitlements
Source: https://docs.hyperline.co/docs/entitlements/overview

Manage product capabilities, feature flags, and usage limits in Hyperline with catalog features, product grants, and per-customer overrides.

Features represent the product capabilities, access rights, or usage limits that customers receive outside of billing. They help your team track what each customer is entitled to use, based on the products they have and any customer-specific override.

Use features when you need to manage access such as SSO, premium integrations, included seats, API limits, or support tiers. Products still define what you sell and bill. Features define what access or limit that product grants.

## How entitlements are resolved

An entitlement is the resolved value of a feature for a customer. Hyperline calculates it from three possible sources:

| Source                | Description                                                                                                      |
| --------------------- | ---------------------------------------------------------------------------------------------------------------- |
| **Default value**     | The fallback value configured on the feature in the catalog. Optional — features can be created with no default. |
| **Product grant**     | A value granted by a product included in the customer's eligible subscription.                                   |
| **Customer override** | A value set directly on the customer. Overrides product grants and the default value.                            |

Customer overrides always take priority. If no customer override exists, Hyperline uses product grants. If no product grant changes the value, Hyperline uses the default value from the feature catalog.

Product grants contribute to entitlements when the subscription that includes the product is `active` or `paused`. Paused subscriptions keep product-granted access, while other subscription statuses do not contribute product grants.

### Features without a default value

Specifying a default is optional. A feature can be created with **no default value** for both boolean and number types. When a feature has no default:

* Customers receive no resolved entitlement unless a product grant or a customer override provides one.
* No source is displayed for the feature on the customer **Features** tab until a grant or override is set.
* Use this when access should be explicitly granted per product or per customer rather than assumed by default — for example, a beta capability that only certain plans or customers should ever see.

<Card title="Example 💡">
  A **HubSpot integration** feature has a default value of disabled. The **Growth plan** product grants the feature as enabled. Customers subscribed to Growth receive the integration automatically, while a customer override can still enable or disable it for a specific customer.
</Card>

## Feature value types

Features can use two value types:

| Type        | Use for                                  | Example                                                    |
| ----------- | ---------------------------------------- | ---------------------------------------------------------- |
| **Boolean** | Access that is enabled or disabled.      | SSO, premium support, white-labeling, HubSpot integration. |
| **Number**  | Limits, quotas, or numeric entitlements. | Included seats, API calls, projects, storage in GB.        |

Boolean features do not require a resolution strategy. If a product grant enables the feature, the customer receives access unless a customer override changes the value.

Number features use a resolution strategy to combine the default value and product grants.

| Resolution  | Behavior                                                                                    | Use when                                                                                        |
| ----------- | ------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
| **Maximum** | Uses the highest value across the default value and product grants. Customer overrides win. | Multiple products can increase a limit, but the customer should receive only the largest grant. |
| **Sum**     | Adds the default value and product grant values. Customer overrides win.                    | Multiple products should stack together, such as included seats or usage quotas.                |
| **Replace** | Uses a product grant value instead of the default value. Customer overrides win.            | A product should define the entitlement value directly.                                         |

When a number feature has **no default value**, resolution falls back to the product grants and customer overrides only. Maximum and Sum ignore the missing default and compute across product grants alone, and Replace uses the product grant value directly.

### Unlimited number entitlements

A number entitlement can be set to **Unlimited** to grant uncapped access instead of a finite limit. Turn on the **Unlimited** toggle next to the value when you set a product grant, a customer override, or a direct customer grant.

Unlimited applies to the **entitlement value** only. The feature's catalog **default value** always stays a plain number (or empty) — it cannot be set to Unlimited.

Unlimited interacts with the resolution strategy as follows:

| Resolution  | Behavior with Unlimited                                                                                                                                                                                         |
| ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Maximum** | Unlimited always wins. A finite grant can never out-rank an Unlimited grant.                                                                                                                                    |
| **Sum**     | If any contributing value is Unlimited, the resolved value is Unlimited.                                                                                                                                        |
| **Replace** | The applied product grant is used as-is, so the value is Unlimited only when that grant is Unlimited. Unlike Maximum and Sum, an Unlimited grant does not automatically win — a later finite grant replaces it. |

As with any number feature, a customer override takes priority over product grants and the default value, so an Unlimited override grants uncapped access regardless of the product grants.

<Card title="Example 💡">
  An **API calls** feature has a default limit of `10000`. The **Enterprise plan** product grants the feature as Unlimited. Customers on Enterprise receive uncapped API calls, and a customer override can still set a specific number for a single customer.
</Card>

## Create a feature

1. Go to **Catalog** > **Features**.
2. Click **New feature**.
3. Enter the feature **Name** and, if needed, an **Internal description**.
4. Enter a stable **Code**. Use an API-safe key such as `sso`, `hubspot_integration`, or `included_seats`.
5. Choose the value **Type**:
   * **Boolean** for enabled or disabled access.
   * **Number** for quotas or limits.
6. For number features, choose the **Resolution** strategy.
7. Optionally toggle **Default value** on and set the value. Leave the toggle off to create the feature with no default — customers will only receive an entitlement when a product grant or override provides one.
8. Click **Save feature**.

<Tip>
  Use codes that match how your product team refers to access internally. Stable codes make reporting and integrations easier to maintain.
</Tip>

## Archive, recover, or delete a feature

Features have a lifecycle in the catalog. Archive a feature when you no longer want it granted to new products or customers, and delete it when it is no longer needed at all.

Open a feature from **Catalog** > **Features** and use the **Actions** menu:

| Action              | When to use it                                                                                                            | Effect                                                                                                                                                                                                               |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Archive feature** | You want to stop granting the feature going forward but keep it available for products and customers that already use it. | The feature is hidden from the default features list and cannot be selected when adding a new feature to a product or granting one to a customer. Existing product entitlements and customer overrides keep working. |
| **Recover feature** | You archived a feature by mistake or want to grant it again.                                                              | The feature returns to the active list and becomes selectable again.                                                                                                                                                 |
| **Delete feature**  | The feature is no longer needed anywhere.                                                                                 | The feature is permanently removed. Only archived features that are not assigned to any product or customer can be deleted — remove those assignments first.                                                         |

The archive state can only be changed through these actions. It is not editable from the feature edit form.

### Filter features by status

The **Features** list has a **Status** filter with three values:

* **Active** — the default view. Shows features that are not archived.
* **Archived** — shows only archived features. Use this view to find and recover a feature.
* **All** — shows every feature regardless of status.

### Archived features on products and customers

Archived features remain visible where they are already in use:

* Product **Entitlements** panels continue to show archived features that are granted by the product, so you can still see and adjust their values.
* Customer **Features** tabs continue to show archived features that contribute to the customer's resolved entitlements.

You cannot add an archived feature to a new product or grant it as a new customer override — recover it first, or add a different feature.

### Manage feature lifecycle from the API

The same actions are available on the REST API. Use them from your own tooling or automation when you manage the feature catalog outside the app.

| Endpoint                            | Purpose                                                                             |
| ----------------------------------- | ----------------------------------------------------------------------------------- |
| `PUT /v1/features/{code}/archive`   | Archive an active feature.                                                          |
| `PUT /v1/features/{code}/unarchive` | Recover an archived feature.                                                        |
| `DELETE /v1/features/{code}`        | Permanently delete an archived feature that has no product or customer assignments. |

See the [Archive a feature](/api-reference/endpoints/features/archive-feature) and [Unarchive a feature](/api-reference/endpoints/features/unarchive-feature) reference for request and response details.

## Grant features from products

After a feature is created, add it to the products that include that capability or limit.

1. Go to **Catalog** > **Products**.
2. Open the product that should grant the feature.
3. In **Entitlements**, click **Add feature**.
4. Select the feature from the catalog.
5. Keep the default value or open the row to set a product-specific value. If the feature has no catalog default, you must provide an explicit value for the product grant to save. For number features, turn on **Unlimited** to grant uncapped access instead of a finite value.
6. Click **Save**.

When the product is included in a customer's eligible subscription, its feature grants contribute to that customer's resolved entitlements.

<Note>
  Entitlements do not create invoice lines or change the product price. They describe access granted by products that are already billed through subscriptions, quotes, or invoices.
</Note>

## Review customer entitlements

Open a customer page and select the **Features** tab to see the resolved entitlements for that customer. Each row shows the feature name, resolved value, and a tag indicating where the value comes from:

| Tag          | Meaning                                                                                                                         |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------- |
| **Default**  | The value comes from the feature catalog.                                                                                       |
| **Product**  | The value is granted by one or more of the customer's subscribed products. Hover the tag to see which subscriptions contribute. |
| **Override** | A customer-specific value is applied on top of product grants and the default.                                                  |

<Note>
  The **Features** tab is available to members with the `entitlements_update` permission on workspaces that have entitlements enabled.
</Note>

## Override a customer entitlement

Use customer overrides for exceptions that should apply only to one customer, such as a negotiated limit, an early access grant, or a support-approved exception.

1. Open the customer page and select the **Features** tab.
2. Find the feature in the table and open the row's action menu.
3. Click **Edit** to open the override modal.
4. Update the **Value** and, optionally, add a **Reason** to record why the override exists. For number features, turn on **Unlimited** to grant uncapped access.
5. Click **Save**.

To remove an override and let Hyperline recalculate the value from product grants and the feature default, open the row's action menu and click **Reset**.

## Grant a feature to a customer

You can also grant a feature directly to a customer, even if no subscribed product includes it.

1. Open the customer page and select the **Features** tab.
2. Click **Grant feature** and pick a feature from the picker.
3. Set the **Value** and, optionally, a **Reason**. For number features, turn on **Unlimited** to grant uncapped access.
4. Click **Grant feature**.

The granted feature appears in the table with the **Override** tag and behaves like any other customer override.

<Warning>
  Customer overrides are customer-specific exceptions. Use them when the customer should intentionally differ from the product configuration.
</Warning>

## Next steps

* Create billable catalog items in [Products and prices](../products/overview).
* Add products to customers when you [create a subscription](../subscriptions/create).
* Use [customer segments](../customers/segments) to group customers with similar access or commercial rules.


# Configure your account
Source: https://docs.hyperline.co/docs/getting-started/configure-account

Configure your Hyperline account: business information, brand identity, logo, favicon, payment providers, and billing settings during onboarding.

## Business

### Information

Fill in your company's **trade name** (the name used to conduct your business). It will be displayed on public pages and transactional emails.

### Brand identity

Personalize the billing experience for your customers by adding your brand assets.

1. Add the **logo** you want to display on public pages, emails and documents (invoices, credit notes, quotes).
2. Add the **favicon** you will be using on public pages.
3. Select your **main brand color** by adding its HEX code. It will be displayed as an accent color on documents and emails.

A real-time preview shows how your changes affect invoice design.

### Billing information

The billing information will be displayed on documents (invoices, credit notes, quotes). It contains:

1. The company's **legal name**, which can be different from the trade name
2. The company's **billing address**, including all details required by your country's laws.
3. Your company's **tax ID** (validated for EU-based companies)

<Warning>
  The company's country cannot be changed as it determines your accounting currency.
</Warning>

## Payment methods

Configure how you collect payments for each invoicing entity from **Settings > Payment**. The methods available to you depend on the entity's country and the payment providers you connect.

From this page, you can:

* Connect a payment provider for automated payment methods such as cards and direct debit.
* Enable the payment methods you want to offer.
* Select the default payment provider or bank account for each method.

You can then control which of the enabled methods are available to each customer. See [Payment methods](../payments/payment-methods) for supported methods and customer-level configuration, and [Payment orchestration](../payments/orchestration) for payment provider setup.

### Bank accounts and bank transfers

To let customers pay by manual bank transfer, enable bank transfers and configure the bank account that should receive the funds. Make sure its details are complete before issuing invoices: Hyperline uses the configured account to provide customers with the information they need to make the transfer.

Manual bank transfers are not charged automatically. After receiving a transfer, you must reconcile it with the corresponding invoice. See [Invoice reconciliation](../invoices/reconciliations) for the available reconciliation options.

## Next steps

* [Configure invoicing entities](../account/invoicing-entities)
* [Review account settings](../account/settings)
* [Set up sandbox and test mode](./sandbox)
* [Create products and prices](../products/overview)


# Quick start
Source: https://docs.hyperline.co/docs/getting-started/quick-start

Follow the shortest path to configure your Hyperline account, test safely in sandbox, create your first billing objects, and issue your first invoice.

Use this guide when you are setting up Hyperline for the first time and want a clear path from an empty account to your first billing workflow.

## Setup path

1. [Configure your account](./configure-account) with your business information, brand assets, billing details, and default account settings.
2. [Configure your invoicing entities](../account/invoicing-entities), then review [account settings](../account/settings) for currencies, email settings, saved views, and formatting options.
3. Set up payment collection in the **Payments** section:
   * [Payment orchestration](../payments/orchestration)
   * [Payment methods](../payments/payment-methods)
4. Use [Sandbox and test mode](./sandbox) to test products, subscriptions, invoices, payments, and usage data without affecting production.
5. Create your catalog:
   * [Products and prices](../products/overview)
   * [Price books](../price-books/overview)
6. Create or import customers from [Customers](../customers/overview).
7. Create your first recurring billing flow with [Subscriptions](../subscriptions/overview), or prepare a commercial proposal with [Quotes](../quotes/overview).
8. Review generated invoices from [Invoices](../invoices/overview), then configure payment collection and reconciliation from [Payments](../payments/orchestration).

## Recommended first checks

* Your business and billing details are correct.
* Your invoicing entity settings match the legal entity issuing invoices.
* Your account has at least one payment collection path, such as a connected provider, bank transfer details, or an outside-of-Hyperline process.
* Your users have the right permissions before they create customer, subscription, invoice, or settings changes.
* Your sandbox flow has been tested before production billing starts.

<Tip>
  Keep the first setup narrow. Start with one product, one customer, and one subscription or quote. Once the first flow works end to end, add more pricing, payment, and automation rules.
</Tip>

## Related

* [Configure your account](./configure-account)
* [Invoicing entities](../account/invoicing-entities)
* [Account settings](../account/settings)
* [Sandbox and test mode](./sandbox)
* [Payment methods](../payments/payment-methods)


# Sandbox and test mode
Source: https://docs.hyperline.co/docs/getting-started/sandbox

Use Hyperline's sandbox and test mode to safely experiment with subscriptions, invoices, and payment flows before switching to production.

## Hyperline test mode

Setting up billing often requires experimentation. Use **test mode**, also called **sandbox**, to test Hyperline without affecting your production account.

When you switch to test mode, Hyperline creates a separate test account. You can create test customers, subscriptions, invoices, usage events, and payments before configuring production billing.

Test mode has the same product capabilities as your production account. Use the product documentation to configure your [product catalog](../products/overview), manage [templates](../subscriptions/templates), [send invoices](../invoices/overview), [use credits and wallets](../wallets/balance), and more.

<Warning>
  Test mode does not block outbound emails. If an action normally sends an email
  in production, Hyperline also sends it from your test account to the configured
  recipient, such as a customer email, invoice email, checkout recipient, quote
  recipient, or additional email recipient. Use internal or dedicated test email
  addresses for sandbox customers and recipients unless you intentionally want a
  real recipient to receive the message.
</Warning>

## Testing payments

Test payment provider and gateway flows in sandbox before connecting production bank accounts or production payment provider accounts. Sandbox payments use sandbox payment provider accounts, so no real money is charged or debited.

If your sandbox account was populated from production data or from another billing system, existing production payment methods cannot be used in sandbox. Production cards, mandates, and bank authorizations are not compatible with sandbox payment provider accounts.

### Add a test payment method

To test automatic payments, add a test payment method to the sandbox customer from a hosted page:

1. Open a sandbox hosted page for the customer, such as a quote signature page, checkout page, invoice page, or customer portal.
2. Go to the **Add payment method** section.
3. Enter test payment details from your payment provider.

Use the provider's test credentials:

* [Stripe test cards](https://docs.stripe.com/testing#cards)
* [Stripe SEPA Direct Debit test details](https://docs.stripe.com/testing?payment-method=sepa-direct-debit#non-card-payments)
* [Adyen test cards](https://docs.adyen.com/development-resources/test-cards-and-credentials/test-card-numbers)
* [Adyen SEPA Direct Debit test details](https://docs.adyen.com/payment-methods/sepa-direct-debit/web-drop-in#test-and-go-live)
* [Adyen ACH Direct Debit test details](https://docs.adyen.com/payment-methods/ach-direct-debit/web-drop-in#test-and-go-live)
* [Adyen Bacs Direct Debit test details](https://docs.adyen.com/payment-methods/bacs/web-drop-in#test-and-go-live)
* [Mollie test cards](https://docs.mollie.com/overview/testing#testing-different-types-of-cards)

Once a test payment method has been added, future invoices can be charged automatically with that payment method. To test payment collection on an existing invoice, open the invoice and click **Actions** > **Charge invoice**.

## Simulate usage data without code

This applies if you want to **configure your first usage-based plan** and **assign a subscription to a customer** in order to test Hyperline.

In the test account, you can simulate usage data by generating fake events for a specific customer. This is done in two steps:

<Steps>
  <Step title="Go to one of your customers from the Customer section">
    Then click the **Events** tab, and click **Simulate new events**.
  </Step>

  <Step title="Fill in the Event type field with the event name used to aggregate usage in your billing plan configuration.">
    Fill in:

    * **The event type** (API calls, email sent, document retrieved or created, etc.)
    * **The date** (leave blank if you prefer)
    * **The number of events to create**
    * You can optionally add extra parameters to your event with the **JSON Payload field.**

    Click **Create new events** when you are ready.

    The events can take a few seconds to be ingested.

    They will appear in your customer's **Events page**.

    You can easily delete them in the **Events page** afterward.
  </Step>
</Steps>

You are done.

You can now create your first usage-based plan based on these events.

## Multiple accounts

If you belong to several Hyperline accounts, use the account switcher to move between them without signing out.

Each account has its own settings, members, permissions, customers, catalog, billing data, and integrations. You can therefore use separate accounts for different companies or legal entities that require fully independent configurations.

Members and roles are managed separately for each account. See [Users & permissions](../account/users-permissions) for details.


# Documentation
Source: https://docs.hyperline.co/docs/index

Hyperline documentation: manage customer intelligence, CPQ, subscriptions, AI monetization, invoicing, payments, accounting, and developer integrations.

<div>
  <div>
    <img alt="Decorative background image" />

    <img alt="Decorative background image" />
  </div>

  <div>
    <h1>
      Documentation
    </h1>

    <div>
      Hyperline helps B2B software companies manage complex revenue workflows, from customer intelligence and CPQ to subscriptions, AI monetization, invoicing, payments, accounting, and developer integrations.
    </div>

    <div>
      <CardGroup>
        <Card title="Customer management" icon="users" href="/docs/customers/overview">
          Manage customers, segments, usage, health signals, and customer intelligence workflows.
        </Card>

        <Card title="CPQ & subscriptions" icon="signature" href="/docs/quotes/overview">
          Create quotes, structure contracts, manage subscriptions, and support hybrid pricing.
        </Card>

        <Card title="Usage & prepaid credits" icon="database" href="/docs/usage/getting-started">
          Track usage, sell prepaid credits, manage balances, and apply these patterns to AI monetization.
        </Card>

        <Card title="Invoicing" icon="file-invoice" href="/docs/invoices/overview">
          Generate invoices, manage taxes, documents, reminders, e-invoicing, and exports.
        </Card>

        <Card title="Payments orchestration" icon="credit-card" href="/docs/payments/orchestration">
          Connect payment providers, collect payments, retry failures, and reconcile transactions.
        </Card>

        <Card title="Finance & accounting" icon="calculator" href="/docs/accounting/getting-started">
          Track revenue, manage ledgers, automate journal entries, and handle revenue recognition.
        </Card>
      </CardGroup>
    </div>
  </div>
</div>


# Glossary
Source: https://docs.hyperline.co/docs/introduction/glossary

Look up Hyperline billing terminology, including customers, products, subscriptions, invoices, aggregators, and ledgers, with clear definitions.

<Info>
  Is something still unclear? Don't hesitate to [reach out to our
  team](mailto:support@hyperline.co) if you need additional support.
</Info>

## Core entities

| Term               | Definition                                                                                                                                     |
| ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| **Bundle product** | A product that groups several existing products as components and sells them as a single unit. Distinct from the "bundle" pricing model.       |
| **Customer**       | An individual or company that purchases your products/services. Has billing information, payment methods, and can have multiple subscriptions. |
| **Invoice**        | A document requesting payment from a customer.                                                                                                 |
| **Product**        | A billable item in your catalog.                                                                                                               |
| **Quote**          | A sales proposal sent to customers before creating a subscription. Can be signed electronically or manually.                                   |
| **Subscription**   | A recurring billing agreement between you and a customer, defining which products are included, pricing, and billing schedule.                 |

## Subscription

| Term                      | Definition                                                                                                                 |
| ------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| **Activation strategy**   | How a subscription becomes active.                                                                                         |
| **Cancellation**          | Ending a subscription.                                                                                                     |
| **Contract terms**        | Terms governing the subscription contract including start/end dates, duration, and renewal settings.                       |
| **Proration**             | Calculating partial charges when changes occur mid-billing period.                                                         |
| **Renewal**               | When a subscription automatically continues for another term.                                                              |
| **Subscription phase**    | A distinct period within a subscription with its own products and terms (e.g., trial, standard).                           |
| **Subscription template** | A pre-configured subscription setup that can be reused for multiple customers or contexts (currency/country combinations). |
| **Subscription update**   | A pending change to a subscription (add/remove products, change prices, apply coupons).                                    |
| **Trial period**          | A free or discounted phase before regular billing begins.                                                                  |

## Pricing and billing

| Term                                   | Definition                                                                                                                                                                  |
| -------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Billing interval**                   | How often a customer is charged (e.g., monthly, yearly, weekly).                                                                                                            |
| **Commitment period**                  | Minimum contract duration for a subscription (e.g., 1-year commitment).                                                                                                     |
| **Price book**                         | A collection of custom price configurations that can be assigned to specific customers for special pricing.                                                                 |
| **Price configuration**                | Defines how a product is priced. Includes currency, billing interval, and pricing model.                                                                                    |
| **Pricing model - BPS (Basis Points)** | Percentage-based pricing typically used for payment processing fees.                                                                                                        |
| **Pricing model - Bulk**               | A single price per unit is applied based on the total usage tier (e.g., 150 units all priced at the 101-200 tier rate).                                                     |
| **Pricing model - Bundle**             | Predefined quantity/price packages on a seat or credit product (e.g., 1000 credits for $50, or 10 seats for $180). Distinct from a Bundle product, which is a product type. |
| **Pricing model - Fee**                | A fixed amount charged per billing period (e.g., \$99/month).                                                                                                               |
| **Pricing model - Packaged**           | Units are sold in packages/bundles (e.g., \$100 per 1000 API calls).                                                                                                        |
| **Pricing model - Volume**             | Price per unit decreases as usage increases through tiers (e.g., first 100 units at $0.10, next 100 units at $0.08).                                                        |

## Usage and metering

| Term                       | Definition                                                                                                                |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| **Billable event**         | A usage record sent via API that represents a customer action to be metered (e.g., API call, message sent, storage used). |
| **Committed count**        | A guaranteed minimum usage amount that will be charged regardless of actual usage.                                        |
| **Metering configuration** | Defines how billable events are counted or summed for billing.                                                            |
| **Metering filter**        | Conditions applied to narrow down which events count toward billing (e.g., only count events where `region = 'us'`).      |
| **Usage interval**         | The period over which usage is measured before billing (can differ from billing interval).                                |

## Credits and wallet

| Term                      | Definition                                                                                       |
| ------------------------- | ------------------------------------------------------------------------------------------------ |
| **Credit transaction**    | A record of credits being added, consumed, or expired.                                           |
| **Credits**               | Pre-purchased units that can be consumed against usage-based products. Can expire.               |
| **Low balance threshold** | A configurable threshold that triggers notifications when credits or wallet balance falls below. |
| **Top-up**                | Adding credits or wallet balance to a customer's account.                                        |
| **Wallet**                | A prepaid balance account for a customer that can be used to pay invoices.                       |
| **Wallet transaction**    | A record of funds being credited or debited from a customer's wallet.                            |

## Discounts and promotions

| Term                | Definition                                                                                        |
| ------------------- | ------------------------------------------------------------------------------------------------- |
| **Coupon**          | A discount that can be applied to subscriptions. Can be a fixed amount or percentage off.         |
| **Coupon duration** | How long a coupon applies.                                                                        |
| **Coupon repeat**   | Controls coupon application frequency.                                                            |
| **Promotion code**  | A shareable code that customers can use to redeem a coupon. Can have usage limits and expiration. |

## Documents

| Term                  | Definition                                                                                                    |
| --------------------- | ------------------------------------------------------------------------------------------------------------- |
| **Checkout page**     | A hosted payment page where customers can enter payment details and complete a purchase.                      |
| **Checkout session**  | A hosted page experience for customers to complete payment and subscription activation.                       |
| **Contract clause**   | Reusable text blocks that can be included in contracts.                                                       |
| **Contract template** | Legal document templates that can be attached to quotes.                                                      |
| **Credit note**       | A document issued to reverse or reduce a previously issued invoice.                                           |
| **Customer portal**   | A self-service interface where customers can view invoices, manage subscriptions, and update payment methods. |
| **Invoice line item** | An individual charge on an invoice representing a product or adjustment.                                      |
| **Purchase order**    | A customer's reference number for their internal tracking.                                                    |
| **Quote template**    | Reusable configuration for quotes including terms, display options, and attached documents.                   |

## Approvals

| Term                     | Definition                                                                                                                                 |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ |
| **Approval request**     | A request for approval created when a quote matches an approval workflow. Tracks the approval status and history.                          |
| **Approval step**        | A stage in an approval workflow where designated approvers must approve or reject before proceeding.                                       |
| **Approval workflow**    | A configurable set of rules and steps that determine when and how quotes require approval based on conditions like amount or products.     |
| **Approver requirement** | Whether any single approver or all designated approvers must approve a step (`any` or `all`).                                              |
| **Workflow condition**   | A rule that determines if a workflow applies to a quote (e.g., total amount greater than €10,000, specific products, discount percentage). |
| **Workflow priority**    | A number used to select between multiple matching workflows. Higher priority workflows are selected first.                                 |

## Payments

| Term                               | Definition                                                                                                          |
| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
| **Bank account**                   | Customer's bank account details used for manual bank transfer payments.                                             |
| **Chargeback**                     | When a customer disputes a charge with their bank, resulting in reversed payment.                                   |
| **Dunning**                        | The process of automatically retrying failed payments and communicating with customers to collect overdue invoices. |
| **Grace period**                   | A delay between invoice creation and payment collection, allowing review or manual adjustment.                      |
| **Payment method**                 | How a customer pays (card, direct debit, bank transfer, etc.).                                                      |
| **Payment method state**           | Current status of a payment method.                                                                                 |
| **Payment service provider (PSP)** | A third-party service that processes payments (e.g., Stripe, GoCardless, Mollie).                                   |
| **Transaction**                    | A payment attempt or successful charge against an invoice.                                                          |

## Organization

| Term                 | Definition                                                                                                                                                               |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Client**           | Your account/organization in Hyperline (the seller).                                                                                                                     |
| **Custom field**     | User-defined properties that can be added to customers, subscriptions, products, plans, or quotes.                                                                       |
| **Invoicing entity** | A legal entity that issues invoices (your company or subsidiaries). Has its own branding, address, tax ID, and numbering sequences.                                      |
| **Local tax number** | A country-specific customer tax identifier used for local invoicing or reporting requirements. It is separate from the primary Tax ID and is not validated through VIES. |
| **Tax ID**           | A tax identification number (e.g., VAT number) for a customer or invoicing entity, used for tax compliance and validation.                                               |
| **Tax rate**         | VAT/sales tax rates applied to invoices.                                                                                                                                 |
| **Tax scheme**       | How tax is applied to an invoice.                                                                                                                                        |

## Analytics and reporting

| Term                                   | Definition                                                                                                                                                    |
| -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **ARPA (Average Revenue Per Account)** | ARR divided by the number of active customers.                                                                                                                |
| **ARR (Annual Recurring Revenue)**     | The recurring revenue normalized to a yearly amount, based on the subscription's currently active phase. Future phases are reflected when they become active. |
| **Churn**                              | When customers cancel their subscriptions or reduce spending.                                                                                                 |
| **Contract value**                     | Total value of a subscription over its full contract term.                                                                                                    |
| **Estimated ARR**                      | Projected annual revenue from a subscription including variable/usage components.                                                                             |
| **MRR (Monthly Recurring Revenue)**    | The value of recurring revenue normalized to a monthly amount.                                                                                                |
| **TCV (Total Contract Value)**         | The total value of all committed phases across the full contract term. Unlike ARR, it includes future phases before they become active.                       |

<Card title="Example 💡">
  A subscription has an active phase at $150 per month, followed by a later
      committed phase that brings the total contract value to $3,290. While the
  first phase is active, ARR is $1,800 ($150 x 12). TCV is \$3,290 because it
  includes the full committed contract.
</Card>

## Integrations

| Term            | Definition                                                         |
| --------------- | ------------------------------------------------------------------ |
| **External ID** | Your system's identifier for a customer, used for mapping records. |


# Why building billing in-house is risky
Source: https://docs.hyperline.co/docs/introduction/why-billing-is-complex

Understand why building a billing system in-house is risky for growing software companies, and how a dedicated platform supports pricing changes.

Is your company growing? Congratulations! It is now time to charge your first customers—but how?

Let's be frank; billing may not be the most glamorous aspect of your business, but it is a pivotal factor that can define your success. From day one, successful software companies have known how crucial it is for their billing solution to match their pricing strategy perfectly. For instance, Zoom swiftly adopted usage-based billing to accommodate a 30x surge in demand during the pandemic.

If you're a founder, finance operator, or engineering leader, you're likely wondering whether it's best to build your billing system in-house or opt for a ready-made solution.

Today, we're diving into the **'Build vs. Buy' dilemma**.

Initially, as you embark on this journey, billing might seem straightforward. Your pricing structure is simple, making subscription management look easy. This also allows you to protect your profit margins by avoiding third-party billing services like Stripe Billing or Chargebee, which take a share of your earnings.

However, as your business scales, you'll discover that billing is more complex than initially anticipated.

<Card title="Book a call with our team" icon="phone" href="https://www.hyperline.co/talk-to-sales">
  Still wondering if building your own billing system is a good idea? Let's talk about it - we are here to answer all your questions.
</Card>

## Subscription and usage-based models

Launching a billing system typically begins with subscription-based billing. In this approach, each customer is assigned to a specific plan to ensure accurate charges at the right interval.

**The fact is that complex pricing models are at the core of modern business operations**. As your company grows, you will likely implement various pricing strategies to optimize revenue and cater to client needs. This growth may entail the adoption of usage-based pricing, transactions, credits, custom subscriptions, coupons, or a mix of these items.

Managing a large number of subscriptions is already challenging, and dealing with complex subscriptions adds another layer of billing complexity. For instance, adopting usage-based billing will require advanced metering and tracking systems.

## Taxation complexity

As your business expands globally, dealing with taxes becomes a major factor that increases billing complexity. Taxes can be influenced by several factors: what you're selling, your location, and where your customers are. Each location has its own tax regulations, so it's crucial to comply with them everywhere you do business.

For instance, consider a European company trying to figure out how to apply VAT (courtesy of Chargebee).

<Frame>
  <img />
</Frame>

It's a complex process with many possibilities, and ensuring the correct tax rate is applied based on where you and your customer are located is challenging if done manually.

Maintaining these tax rules over time can be especially tough if you're building your own in-house billing system.

## Payment intervals management

The challenge of billing complexity becomes particularly evident when you delve into date management.

Imagine a scenario in which a company offers:

* a platform access fee charged annually
* a metered product charged every month
* an onboarding fee charged once
* a 3-month free trial for each pricing plan, etc.

*Does it sound familiar?* This scenario demands the management of various payment intervals, alongside the coexistence of free and paid options, resulting in the need for intricate date management.

Coordinating the timing of customer transitions from free to paid services, all while managing the billing cycles, due dates, and renewals for these different models, requires meticulous attention to detail. Considering these complexities, it becomes obvious that you need a solution that can effectively handle all of these challenges for you.

## Custom pricing

Companies of all sizes often need to go beyond standard pricing. Custom pricing is vital in particular situations, allowing them to adjust their pricing plans to match the unique needs of each customer. This goes from special contracts for Enterprise deals to tailored packages for specific needs.

However, managing these custom pricing arrangements with an in-house billing system can be challenging in the long run.

This is where a flexible billing system becomes crucial. It should adapt to the diverse pricing needs of each client or situation, making it easier to manage custom pricing, maintain good customer relationships, and increase revenue over time.

## Multi-currency transactions

Operating in a global market means dealing with multiple currencies. Converting and reconciling transactions in different currencies requires meticulous attention to detail and when you're building your billing solution it's very hard to follow up manually.

For instance, consider a software company based in the U.S. that sells licenses to customers in Europe. The billing system must convert the sale amount from euros to dollars, accounting for any fluctuations in the exchange rate.

On that same subject, it's also imperative to have aggregated metrics that take into account operations in various countries and currencies and gain a comprehensive understanding of the financial health of your business. These aggregated metrics, such as ARR (Annual Recurring Revenue) on a global dashboard, provide a holistic view of the company's performance.

This not only ensures accurate financial reporting but also supports the generation of globally aggregated metrics that help in strategic decision-making. These dashboards may well be built in-house, but they're hard to keep afloat over time when your billing system is evolving and has been built from scratch.

## The challenge of dunning

Dunning is the process of dealing with payments that didn't go through from customers. It makes billing more complicated for a couple of reasons:

* **Automatic retries without manual intervention**: When a payment fails, you need to give it another shot without needing to remember to do so yourself. Having an automated system that can detect these payment issues and try again is crucial; otherwise, it can become a real headache.

* **Effective customer communication**: When a customer's payment fails, you have to let them know in the right way. It's a delicate balance between informing them about the problem and ensuring they still have a positive experience. That's why having an emailing system built into your billing process is helpful; trying to manage it manually can be quite challenging.

* **Entitlements for service access**: Additionally, there's a need for app logic that handles entitlements, which determine access to the service. Managing these entitlements to restrict access when payments fail adds another layer of complexity to the dunning process.

## Conclusion

The path to billing success often leads to the realization that building an in-house billing system might not be the most practical choice. Instead, opting for a flexible billing solution can offer the adaptability and efficiency needed to navigate these complexities. By choosing the right tools, businesses can streamline their billing processes, maintain strong customer relationships, and continue on the path to growth and success.

You want to learn more about this topic? [Read our blog article](https://www.hyperline.co/resources/blog/billing-simplified).


# Invoice configuration
Source: https://docs.hyperline.co/docs/invoices/configuration

Configure Hyperline invoices from settings: brand assets, trade and legal names, tax IDs, footers, numbering format, and default behaviors.

If you did not already configure your invoices during the initial onboarding process, you can do it anytime from Hyperline's interface, from the **Settings** pages.

## Business

In the **Business** section, you can customize your brand's logo and color that will appear on your invoices.

You are also required to fill in the trade and legal names of your company, your tax ID (if applicable), and the postal address that will appear on the invoices. These details are required to make your invoices legally compliant.

<Info>
  We provide you with a real time preview on the right of the screen so you can
  see how your changes are affecting your invoice design.
</Info>

<Frame>
  <img />
</Frame>

Click on `Save changes` once you are done.

## Invoicing

You can customize settings that will apply to all generated invoices. New configurations will be applied to invoices generated after the changes are saved.

<Frame>
  <img />
</Frame>

#### Invoicing number

You can customize how your invoices will be numbered. This is done in **Settings**, in the **Invoicing** section.

<Info>
  Each invoice must have a **unique number**. These numbers should follow a
  sequential order. This is a legal requirement that applies internationally.
  Hyperline lets you however choose the invoice number pattern you want to use.
</Info>

The `{number}` variable is mandatory. You can then add any text, the year variable `{YYYY}`, the month variable `{MM}` and/or the day variable `{DD}` to customize the invoice number format.

| Variable            | Invoice number format |
| ------------------- | --------------------- |
| number              | 1                     |
| number-YYYY         | 1-2023                |
| number-YYYY-MM      | 1-2023-10             |
| number-YYYY-MM-DD   | 1-2023-10-10          |
| YYYY-MM-DD-00number | 2023-10-10-001        |

#### Invoice legal information

As legal requirements vary from country to country, and are sometimes industry-specific, we leave a space for you to add any relevant legal information to your invoices.

Check in with your legal and accounting teams if needed to make sure you include all necessary information here. It can go from tax specificities to penalties applied if the invoice is not paid on time, to anything else.

#### Additional information

You can insert here any additional information you'd like to provide. It could be details about your invoicing policy (late payment fees, conditions, etc.) or mentions about taxes if relevant.

By clicking the globe icon on the right side of the text area, you can translate both the legal and additional information into multiple languages. The relevant language will be automatically selected when the invoice is generated.

<Frame>
  <img />
</Frame>

#### Template variables

Invoice-family text fields support template variables that are replaced with the corresponding value when the document is generated. Supported fields include:

* Invoice footer, additional information, and late fees
* Credit note footer and additional information
* Custom document footer and additional information
* Custom note on invoices and on the subscription invoicing options form

| Variable                 | Replaced with                                                                                     |
| ------------------------ | ------------------------------------------------------------------------------------------------- |
| `{{customerId}}`         | The customer's Hyperline ID                                                                       |
| `{{customerExternalId}}` | The customer's external ID                                                                        |
| `{{subscriptionId}}`     | The subscription's ID, only rendered when the invoice is tied to a subscription, otherwise hidden |
| `{{invoiceId}}`          | The invoice's ID                                                                                  |
| `{{invoiceNumber}}`      | The invoice's number                                                                              |
| `{{quoteNumber}}`        | The quote's number                                                                                |

For example, a footer set to `Please reference {{invoiceNumber}} and subscription {{subscriptionId}} in your payment.` will produce a fully populated line on subscription-generated invoices, while `{{subscriptionId}}` is omitted on standalone invoices that aren't linked to a subscription.

<Info>
  Quote footers and quote or contract templates don't support `{{subscriptionId}}`, because a quote isn't yet tied to a subscription.
</Info>


# Consolidated invoicing
Source: https://docs.hyperline.co/docs/invoices/consolidated-invoicing

Merge a customer's subscription invoices billed on the same day into one consolidated invoice, so they receive and pay a single invoice instead of many.

Consolidated invoicing groups a customer's subscription invoices that fire on the same day into a single aggregated invoice. Each source invoice is held until Hyperline merges them into one consolidated invoice, which is then finalized, numbered and charged as usual.

Use this when a customer has several subscriptions billing on the same day (for example, multiple product lines or seats renewing together) and you'd rather send them one invoice than several.

## How it works

* Consolidation is a per-customer setting (`Consolidate invoices` toggle on the customer).
* Each eligible invoice is grouped by the day it was scheduled to bill, in the customer's timezone.
* Once the day has fully elapsed, Hyperline merges every held invoice for that day into a single new invoice — the **aggregate** — and marks the source invoices as **Consolidated**.
* The aggregate is what gets finalized, numbered and charged. Source invoices never receive a number of their own.

### What's eligible

Only invoices that meet all of these are held for consolidation:

* The customer has `Consolidate invoices` enabled.
* The invoice comes from a subscription (one-off invoices, documents and credit notes are excluded).
* The invoice is not from an external source (imported invoices go through their own flow).
* The invoice is of type `invoice` (credit notes and other document types are excluded).

Ineligible invoices follow the normal lifecycle unchanged.

### Grouping by day

Invoices are grouped by their **billing date** in the customer's timezone:

* Bill-in-advance invoices group on the period start.
* Bill-in-arrears invoices group on the period end.
* Backdated subscriptions (a subscription created after its start date) group on the day they *would have* billed, not the day the catch-up invoice was actually emitted.

This means a subscription starting July 1 but created on July 10 lands in the July 1 group, not July 10.

### The merge

Hyperline waits until:

1. The consolidation day has fully elapsed in the customer's timezone, and
2. There are no pending renewals or in-flight invoices for that day still to land.

Once both conditions are met, all held invoices for the day are merged into a single aggregate invoice:

* Every line item from every source invoice is copied over, prefixed with the source subscription name so you can trace what came from where.
* Line-item amounts, tax rate, tax amount, discounts, proration and debit/credit sign are preserved verbatim. The aggregate total equals the sum of the source invoices.
* The aggregate carries no `subscriptionId` of its own (it spans several), so it is never itself held for consolidation.

If only one invoice was held for the day, no aggregate is created — the lone invoice is released and finalized directly, so it never gets stuck waiting.

## Enable consolidated invoicing for a customer

The toggle lives on the customer page, in the **Advanced** section of the customer edit form.

<Steps>
  <Step title="Open the customer">
    Go to **Customers** and select the customer.
  </Step>

  <Step title="Edit the customer">
    Open the customer edit form and scroll to the **Advanced** section.
  </Step>

  <Step title="Turn on `Consolidate invoices`">
    Enable the toggle labelled **Consolidate invoices**. From this point on, new subscription invoices for this customer will be held until the daily merge.
  </Step>
</Steps>

The current state is shown on the customer panel as a tag (**Enabled** / **Disabled**) next to the `Consolidate invoices` label, alongside the other invoicing settings.

<Note>
  You can turn consolidated invoicing off at any time — but if the customer has invoices currently held (`Pending consolidation`), you'll need to let those merge (or delete them) before the toggle takes effect on new invoices.
</Note>

## Invoice statuses

Consolidated invoicing introduces two invoice statuses in addition to the [standard ones](./overview#invoice-status):

`Pending consolidation` The invoice is held, waiting for the daily merge. It has no invoice number yet and hasn't been charged. Only action available: **delete** (see below).

`Consolidated` The invoice was merged into an aggregate. It links to the aggregate invoice via `linkedInvoiceId`. The source is kept for record-keeping but the aggregate is what's charged.

Both statuses appear in the invoice list and on the invoice detail page.

## The invoice detail page

Hyperline surfaces the consolidation relationship directly on the invoice page:

* **On a `Consolidated` source invoice**: a callout at the top of the page links to the aggregate the invoice was merged into.
* **On an aggregate invoice**: a callout at the top of the page shows the number of source invoices consolidated into it and links to the filtered list of those sources.

## Actions on held invoices

A `Pending consolidation` invoice is an internal, un-numbered state — it isn't a document to send. The available actions are limited on purpose:

* **Delete** is allowed, so you can drop an invoice out of the day's group before it merges (for example, if the underlying subscription change was wrong).

## Stuck consolidations

A group won't merge until the day is complete. Hyperline waits on:

* Any subscription renewal for that day that hasn't fired yet.
* Any peer invoice for the same day still in `grace_period`, `draft` or otherwise in-flight.

## Consolidated invoicing and organisation-based billing

Consolidated invoicing composes with [organisation-based billing](../customers/organisation-based):

* If the customer is an org **child**, the aggregate is routed to the parent following the child's org invoicing configuration (`Individual invoices` → `Charged on parent`, `Grouped` → `Pending parent concat`). The parent collects payment as usual.
* If only a single invoice ends up being held for the day, that lone invoice is routed to the parent directly rather than being finalized standalone.

### Consolidating child invoices on the parent

You can also consolidate the invoices of several children on the parent, so that a parent with multiple children each running their own subscriptions receives a single consolidated invoice per day instead of one per child subscription.

To set this up:

1. On each child, open **Actions** > **Parent settings** and set the invoicing configuration to `Individual invoices`. **Do not enable `Consolidate invoices` on the children.**
2. On the parent, enable `Consolidate invoices`.

With this configuration, each child subscription emits an un-numbered invoice in `Pending consolidation` state directly on the parent. At the end of the day, all of these invoices are merged into a single consolidated invoice on the parent, which is then finalized, numbered and charged as usual.

## Notes and limitations

* Consolidation happens at most once per customer per calendar day (in the customer's timezone). Two subscriptions billing on the same day are merged; two subscriptions billing a day apart are not.
* Held invoices don't get an invoice number — numbering is assigned to the aggregate when it's finalized. Your invoice number sequence is unaffected by consolidation (only the aggregate consumes a number).
* Credit notes are never held for consolidation and follow the normal flow.
* Tax is copied per-line from the source invoices rather than re-resolved by the tax engine, so the aggregate total is guaranteed to equal the sum of the sources.


# Custom documents
Source: https://docs.hyperline.co/docs/invoices/documents

Create custom Hyperline documents with unique names that behave like invoices — numbered, payable, and tailored to specific business needs.

In Hyperline, you can create custom documents with unique names that function like invoices—numbered, payable, and tailored to your specific business needs. These documents can serve various purposes, such as providing informational materials for customers or issuing special payment receipts required by clients outside the standard invoicing process.

<Tip>
  A document is generated when the **Generate documents instead of invoices**
  option is checked when creating a subscription. This document is then sent to
  the customer instead of an invoice. See more on the [subscription creation
  page](../subscriptions/create).
</Tip>

## Configuring your documents

You can customize your documents by going to the **Settings > Invoicing** section.
You have access to:

* The **document number pattern**.
  * The available variables are: `number`, `YYYY`, `MM`, `DD`.
  * `number` is mandatory.
* The **next document number**. This is a read-only field that shows the next
  document number that will be generated. If you want to update the value, please contact our support team.
* The **document legal information**. This field is optional.
* The **additional document footer**. This field is also optional.

This information will be displayed on all documents generated by Hyperline.

By clicking the globe icon on the right of the text area, you can translate the additional and legal information into multiple languages.
The relevant language will be automatically selected when the document is generated.

If no relevant translation is found, the default value will be used.


# Chorus Pro
Source: https://docs.hyperline.co/docs/invoices/einvoicing/chorus-pro

Send invoices automatically to French public administrations via Chorus Pro with Hyperline's e-invoicing integration for B2G and G2G sales.

## What is Chorus Pro

Chorus Pro is the official digital portal managed by the French public sector (AIFE), used to manage electronic invoicing with government entities in France.

As of today, it allows automatic transmission of invoices to public administrations (G2G/B2G sales). Since early 2020, all companies operating in France—regardless of their size—are required to submit invoices to public bodies (ministries, local authorities, hospitals, etc.) via Chorus Pro.

<Note>
  With the upcoming French e-invoicing reforms (2026-2027), Chorus Pro will become part of a broader "Portail public de facturation" (PPF), handling e-invoices between companies and public administrations.
</Note>

## Setup

Before setting up the integration, you need to configure a "Raccordement" (EDI/API).

<Steps>
  <Step title="Log into your Chorus Pro account">
    From the [Chorus Pro portal](https://portail.chorus-pro.gouv.fr), connect to your account.
  </Step>

  <Step title="Navigate to API settings">
    * Go to **Domaines** > **Raccordements** in the main menu
      <Frame>
        <img />
      </Frame>

    * Go to the **Technical Account** section (**Compte technique** in French)
      <Frame>
        <img />
      </Frame>
  </Step>

  <Step title="Set up the technical account credentials">
    * Set the type of request to **Création d'un compte technique** in French
    * Select your company in the company field
    * This creates a login and password — **copy these credentials** as you'll need them when setting up Chorus Pro in Hyperline.

    <Frame>
      <img />
    </Frame>
  </Step>

  <Step title="Enable Chorus Pro integration in Hyperline">
    * Ensure you have entered your **VAT number** and **Registration number** (SIRET in France) on your invoicing entity.
    * In **Settings > Invoicing**:
      * Enable **Chorus Pro** — this option is only available for French invoicing entities.
      * Click the **Add credentials** button and enter your technical account credentials in the Supplier portal that opens. Once logged in, you can safely close the portal.

    <Frame>
      <img />
    </Frame>
  </Step>
</Steps>

### Testing

To test in sandbox mode, create an account in the [Chorus Pro sandbox](https://qualif.chorus-pro.gouv.fr/). Download the CSV file with test accounts and use one of them to log in.

For more information, visit the [Chorus Pro documentation](https://portail.chorus-pro.gouv.fr/aife_documentation?sys_kb_id=2f95a09d3bbaae102e11034a85e45a6d\&id=kb_article_view).

## Enable Chorus Pro on customers

Chorus Pro automatic transmission is only relevant for government-affiliated customers (B2G sales). For Hyperline to send invoices via Chorus Pro, you need to enable the **Government affiliated** flag on the relevant customers.

For each customer where Chorus Pro transmission applies, go to the customer details page, click **Edit** in the **Information** section, and toggle on the **Government affiliated** option.

<Frame>
  <img />
</Frame>

## Routing

By default, invoices are routed to the customer using their registration number (SIRET), which identifies the public institution. On the customer details page, click the **Edit** button in the **Information** section and set the value in the **Registration number** field.

Invoices for customers with a missing registration number will not be automatically transmitted via Chorus Pro.

<Note>
  Both your invoicing entity and your customer must have a **14-character** SIRET for Chorus Pro to accept the invoice.
</Note>

### Service code

For some public institutions, an additional service code is required to route the invoice. This code identifies the service within the public institution. If not provided, the invoice may be rejected during transmission.

To add service-specific routing for a customer, open the customer details page, click **Edit** in the **Information** section, then complete the **Service code** field. Leave this optional field empty when the customer's SIRET is sufficient.

<Note>
  The e-invoicing code field on the customer form is labelled dynamically. For a government-affiliated customer whose invoicing entity has Chorus Pro enabled, the field appears as **Service code**, even when France PA is also enabled on the same invoicing entity.
</Note>


# French e-invoicing with a PA
Source: https://docs.hyperline.co/docs/invoices/einvoicing/france-pa

Transmit French domestic B2B e-invoices in Factur-X format through a Plateforme Agréée using Hyperline or Pennylane, with customer routing setup.

A **Plateforme Agréée (PA)** transmits electronic invoices between French companies and reports the required invoice data to the French administration. Hyperline supports PA transmission for domestic B2B invoices in Factur-X format.

<Note>
  For invoices sent to French public administrations, use [Chorus Pro](./chorus-pro) instead.
</Note>

## Reform timeline

France is introducing its e-invoicing requirements in two phases. All companies established in France must be able to receive electronic invoices from the first phase, while the obligation to issue them depends on company size.

| Phase       | Date              | Requirement                             | Companies concerned                                      |
| ----------- | ----------------- | --------------------------------------- | -------------------------------------------------------- |
| **Phase 1** | September 1, 2026 | Receive e-invoices                      | All companies established in France                      |
| **Phase 1** | September 1, 2026 | Issue e-invoices and submit e-reporting | Large companies and mid-sized companies (ETI)            |
| **Phase 2** | September 1, 2027 | Issue e-invoices and submit e-reporting | Small and medium enterprises (SMEs) and micro-businesses |

<Note>
  If your company generates less than €50M in annual revenue, the issuing and
  e-reporting requirements apply from September 2027. You must still be able to
  receive e-invoices from September 2026.
</Note>

## Choose your PA connection

You can transmit French e-invoices from Hyperline using one of two connections.

### Hyperline

Select **Hyperline** to send domestic B2B invoices through Hyperline's connection, powered by Invopop's accredited platform.

Your invoicing entity must be registered before invoices can be exchanged. You can follow the registration status from **Settings > Invoicing**.

### Pennylane

Select **Pennylane** if your company uses Pennylane as its PA. Your invoicing entity must be connected to Pennylane in Hyperline, and Pennylane must be registered as the PA for your company.

If Pennylane is disconnected or does not have the required permissions, reconnect it before selecting this option.

## Configure France PA

1. Go to **Settings > Invoicing**.
2. Select the relevant French invoicing entity.
3. In **French e-invoicing**, select **Hyperline** or **Pennylane** for business e-invoicing (B2B).
4. Complete the registration or reconnection requested for the selected provider.
5. Click **Save changes**.

Once the connection is ready, Hyperline automatically transmits eligible domestic B2B invoices through the selected PA and displays their transmission status on the invoice details page.

## Customer routing

### Default routing address

Hyperline builds the customer's default routing address with scheme `0225` and their SIREN. It resolves the SIREN in this order:

1. **Registration number**: Hyperline uses a 9-digit SIREN directly or extracts the first 9 digits from a 14-digit SIRET.
2. **Tax ID**: if the registration number is missing or invalid, Hyperline extracts the SIREN from the customer's French tax ID.

<Card title="Example 💡">
  A customer has the SIRET `12345678900015`. Hyperline uses the first nine
  digits as its SIREN and routes the invoice to `0225:123456789`.
</Card>

### Override the routing address

If the customer uses a routing address different from their SIREN, you can override the inferred value:

1. Open the customer details page.
2. Click **Edit** in the **Information** section.
3. Enter the address provided by the customer or their PA in **Routing address**.
4. Save the customer.

The value in **Routing address** replaces the SIREN that Hyperline would otherwise infer for France PA routing. France PA expects a routing address rather than a generic e-invoicing code, which is why the field is labelled accordingly when France PA is enabled on the invoicing entity.

<Note>
  If the same customer is marked **Government affiliated** and the invoicing entity also has Chorus Pro enabled, the field is instead labelled **Service code** and is used for Chorus Pro routing rather than France PA.
</Note>

## Next steps

* See the [e-invoicing overview](./overview) for supported countries and general transmission behavior.
* Configure [Chorus Pro](./chorus-pro) for French public-sector customers.


# E-invoicing overview
Source: https://docs.hyperline.co/docs/invoices/einvoicing/overview

Understand e-invoicing compliance with Hyperline: standardized digital invoice transmission across regions like the European Union and beyond.

## What is e-invoicing?

E-invoicing, or electronic invoicing, is the process of sending bills and invoices digitally between buyers and sellers. This topic typically involves a standardized format that allows invoices to be issued, received, and processed automatically by the involved parties' financial systems. This standardization is crucial for compliance, especially in regions like the European Union, where certain standards for e-invoicing are mandated.

## Support in Hyperline

Hyperline is **compliant with the e-invoicing standards** of the European Union, meaning it can generate valid invoices in both PDF and XML formats, and automatically transmit issued invoices to the appropriate tax authority in the invoicing entity's country.

Hyperline is proactively integrating this compliance into its product foundations by partnering with a third party that is compliant with local requirements to offer this service in each country as the e-invoicing mandate becomes mandatory.

| Country      | Format / platform                                 | Requirement scope                 | Hyperline status | Auto transmission |
| ------------ | ------------------------------------------------- | --------------------------------- | ---------------- | :---------------: |
| **Italy**    | **SDI (Sistema di Interscambio)** / **FatturaPA** | B2G, B2B, B2C                     | **Supported**    |         ✅         |
| **France**   | **[Chorus Pro](./chorus-pro)** / **CII**          | B2G                               | **Supported**    |         ✅         |
| **France**   | **[PA](./france-pa)** / **Factur-X**              | Domestic B2B and e-reporting      | **Supported**    |         ✅         |
| **Belgium**  | **[Peppol](./peppol)** / **BIS Billing 3.0**      | B2G and B2B                       | **Supported**    |         ✅         |
| **Germany**  | **[Peppol](./peppol)** / **BIS Billing 3.0**      | B2G and supported B2B recipients  | **Supported**    |         ✅         |
| **Germany**  | **XRechnung**                                     | B2G                               | **Supported**    |                   |
| **Germany**  | **ZUGFeRD**                                       | B2B                               | **Supported**    |                   |
| **Portugal** | **SAF-T PT** / **AT (Autoridade Tributária)**     | B2G, B2B (progressively enforced) | **Planned**      |                   |
| **Spain**    | **FacturaE**                                      | B2G                               | **Supported**    |                   |
| **Spain**    | **VERI\*FACTU**                                   | B2B                               | **Supported**    |         ✅         |

## Customer routing information

Hyperline uses the customer's country, tax ID, and registration number to determine the default routing value for each e-invoicing system. You only need to provide an override when your customer uses a different identifier or requires additional routing information.

| System                                              | Value inferred by Hyperline                                                         | Optional customer field   | When to complete it                                            |
| --------------------------------------------------- | ----------------------------------------------------------------------------------- | ------------------------- | -------------------------------------------------------------- |
| **[Peppol — Belgium](./peppol#routing-in-belgium)** | Scheme `0208` and the enterprise number derived from the Belgian tax ID             | **Peppol participant ID** | The customer uses a different registered participant ID        |
| **[Peppol — Germany](./peppol#routing-in-germany)** | Scheme `9930` and the customer's German VAT ID                                      | **Peppol participant ID** | The customer uses another participant ID, such as a Leitweg-ID |
| **[Chorus Pro](./chorus-pro#routing)**              | The customer's SIRET                                                                | **Service code**          | The public institution requires routing to a specific service  |
| **[France PA](./france-pa)**                        | Scheme `0225` and the customer's SIREN                                              | **Routing address**       | The customer uses a routing address different from their SIREN |
| **SDI — Italy**                                     | The recipient's SDI code cannot be derived from their tax ID or registration number | **SDI code**              | Enter the 7-character code provided by the customer            |

These customer fields use the same underlying e-invoicing code, but Hyperline displays a label adapted to the selected system. To set a value or override, open the customer details page, click **Edit** in the **Information** section, then complete the field shown for that system.

The label the field takes depends on which e-invoicing systems are enabled on the customer's invoicing entity, and whether the customer is marked **Government affiliated**:

* **Service code** — when the customer is government-affiliated and Chorus Pro is enabled on the invoicing entity. Chorus Pro takes precedence over France PA for B2G customers.
* **Routing address** — when France PA is enabled (and the customer is not routed to Chorus Pro).
* **Peppol participant ID** — when Peppol is enabled.
* **SDI code** — when the Italian SDI is enabled.
* **Service code** — when Chorus Pro is enabled without France PA.
* **E-invoicing code** — fallback label when none of the systems above are configured on the invoicing entity.

For SDI, the customer's tax ID identifies the company but not its electronic delivery channel. The customer must provide their **SDI code** separately.

For France PA, the field expects a **routing address** (typically the customer's SIREN, or another electronic address they have registered) rather than a generic e-invoicing code.

<Tip>
  Copy an override exactly as provided by the customer or their e-invoicing
  platform. For [Peppol](./peppol), you can verify the participant ID in the
  [Peppol Directory](https://directory.peppol.eu/public).
</Tip>

## Activation

If your country already requires this standard, you can activate this capability in your settings.

<Steps>
  <Step title="Go to Settings > Invoicing" />

  <Step title="Switch on Enable e-invoicing">
    <Note>
      Some systems require pre-registration before starting the automatic
      transmission of invoices. Click on the **Add credentials** button to
      provide the necessary information.
    </Note>

    <Frame>
      <img />
    </Frame>
  </Step>

  <Step title="Click Save changes" />
</Steps>

You can then follow the status of the transmission for each invoice in the invoice details page.

<Frame>
  <img />
</Frame>

<Note>
  If automatic transmission is disabled for an invoicing entity, invoices will show a "Not supported" transmission status instead of tracking the transmission progress.
</Note>

### Mark as transmitted

If you handled the transmission outside of Hyperline (for example, by uploading the e-invoice manually to a tax authority's portal), you can record this on the invoice so its status reflects reality and downstream behavior treats it as transmitted.

The **Mark as transmitted** action is available on the invoice detail page when the e-invoicing transmission status is **Not transmitted** or **Failed**. Use it when:

* Your invoicing entity does not have automatic transmission enabled, but you have transmitted the e-invoice through another channel.
* An automatic transmission attempt failed and you completed it manually outside of Hyperline.

Once marked, the transmission status switches to **Manually transmitted** and the transmission date is set to the moment you triggered the action. The invoice is then treated the same as an automatically transmitted invoice: it becomes **edit-locked**, so you can no longer modify its content, and the [customer notification](#customer-notification) rules described below apply.

<Note>
  Marking an e-invoice as transmitted only updates its status in Hyperline. It does not send the invoice to any tax authority or e-invoicing platform. Make sure the invoice has actually been transmitted before using this action.
</Note>

## Customer notification

When e-invoicing is enabled and the invoice is eligible for automatic transmission, the ["Invoice to pay"](../../account/settings#email-settings) email notification is not sent when the invoice is issued, but only when the invoice is actually transmitted to the e-invoicing system.

This email indicates to the customer that the invoice has been transmitted and is ready to be paid.

<Frame>
  <img />
</Frame>


# Peppol
Source: https://docs.hyperline.co/docs/invoices/einvoicing/peppol

Send compliant electronic invoices to Belgian and German customers over the Peppol network with Hyperline using the Peppol BIS Billing UBL format.

## What is Peppol

Peppol (Pan-European Public Procurement Online) is a standardized network that enables businesses to exchange electronic documents, including invoices, securely and seamlessly across borders.

By connecting to the Peppol network, you can send legally compliant e-invoices directly to your customers' accounting systems, reducing manual processing, eliminating paper, and ensuring faster payment cycles. Peppol uses a four-corner model where certified Access Points handle the secure transmission of documents between parties.

## Setup

Before sending invoices via Peppol, you need to register your invoicing entity with the Peppol network.

Navigate to **Settings > Invoicing**, select the appropriate invoicing entity if you have multiple, enable **Peppol**, and enter your Peppol credentials. After uploading the required documents, the registration process can take up to 72 hours. Once registered, eligible invoices will be automatically sent via Peppol.

<Info>
  Hyperline transmits invoices using the Peppol BIS Billing UBL Invoice/CreditNote V3 format.
</Info>

## Routing in Belgium

By default, Hyperline uses Peppol scheme `0208` and the customer's enterprise number, derived from their Belgian tax ID without the country prefix. For example, the tax ID `BE0543547220` produces the participant ID `0208:0543547220`.

If the customer uses a different registered participant ID, you can override the inferred value in **Peppol participant ID**.

You can verify a customer's participant ID in the [Peppol Directory](https://directory.peppol.eu/public).

## Routing in Germany

By default, Hyperline uses Peppol scheme `9930` and the customer's German VAT ID. For example, the VAT ID `DE987654321` produces the participant ID `9930:DE987654321`.

If the customer uses a different identifier, such as a Leitweg-ID, enter the complete participant ID in **Peppol participant ID**. You can verify that the ID is registered and able to receive invoices in the [Peppol Directory](https://directory.peppol.eu/public).

<Note>
  Peppol is a delivery network. The participant ID identifies where to send the
  invoice; it is separate from the invoice format, such as XRechnung.
</Note>

## Set a participant ID

To set the Peppol participant ID manually:

1. Open the customer details page.
2. Click **Edit** in the **Information** section.
3. Enter the complete participant ID in **Peppol participant ID**, using the `scheme:identifier` format.
4. Save the customer.

This optional value overrides the participant ID that Hyperline would otherwise infer from the customer's tax ID.

## Troubleshooting

If a Peppol invoice fails, first verify the participant ID and routing scheme in the Peppol Directory. A valid tax ID is not always the same as a valid Peppol participant ID.

For broader accounting and e-invoicing sync issues, see [Troubleshoot accounting and e-invoicing sync errors](../../../guides/troubleshooting-sync-errors).


# Invoice emails
Source: https://docs.hyperline.co/docs/invoices/emails

Send automated invoice email notifications to customers in Hyperline when an invoice is issued, paid, or overdue, with customizable recipients.

If you have [customer automated emails](../account/settings#email-settings) turned on, Hyperline will automatically send an email to your customer when an invoice 1) is ready to be paid 2) has been paid.

The recipient email corresponds to the one specified in the **Invoice emails** field on your customer page (located in the Information panel), or, if not defined, to the main **Email** of the customer.

## Invoice ready to be paid

When a new invoice is issued and the customer chose to pay manually by bank transfer (during their checkout), we will automatically send this email with the PDF attached.

<Frame>
  <img />
</Frame>

We attach automatically on the invoice the bank account details you configured in your Settings > Payment page (bank account corresponding to the currency of the invoice).

<Note>
  If you want to learn more about payment reminders and dunning process, check the [Invoice reminders article](./reminders).
</Note>

## Invoice or credit note paid

Whenever a new invoice is settled (fully paid) for all payment methods including the manual "Mark as paid" action, we will automatically send this email with the PDF attached.

This notification also applies to credit notes.

<Frame>
  <img />
</Frame>

## Resend an invoice or credit note by email

You can resend an invoice or credit note by email by clicking on the **Resend by Email** button in the invoice dropdown anywhere on the site either on the [invoices list](https://app.hyperline.co/app/invoices/list) or the invoice page. It will send the right email according to the status of the invoice.

<Frame>
  <img />
</Frame>

You'll be asked to confirm the action and reminded of the email it's going to be sent to. Note that the invoice email will take precedence over the customer's email.

<Frame>
  <img />
</Frame>

If everything looks good, click **Resend email**, and the email will be sent. An entry will also be added to the invoice's history.

## Email sending delay

Emails regarding invoicing are sent right after the invoice is generated. Depending on the method, the delay might slightly vary: after actions such as checkout completions, payment errors and manual charge, the email is sent immediately. When the invoices are generated automatically by the billing schedule, the email can take up to 5 minutes to be sent to the customer.


# Invoice exports
Source: https://docs.hyperline.co/docs/invoices/exports

Export Hyperline invoice data with built-in CSV exports — simple, accounting, or comprehensive formats — for bookkeeping and external analysis.

If you wish to export your invoice data, especially for accounting purposes, Hyperline provides you with built-in and flexible file exports.

## Export flow

<Steps>
  <Step title="Click on the Export invoices button">
    On your [invoices page](https://app.hyperline.co/app/invoices), click the **Export invoices** button in the top-left corner.

    <Frame>
      <img />
    </Frame>
  </Step>

  <Step title="Select the type of export">
    We provide you with three export types:

    * **Simple export**: Export a single file with the details of your invoices.
    * **Detailed export**: Export two files with invoices and their line items in a zip file.
    * **Complete export**: Export invoices, their line items and the PDF files in one go.
  </Step>

  <Step title="Select your export period">
    Select the start date and end date of data you want to export.
  </Step>

  <Step title="Select the format of the generated file">
    We provide you with CSV, XLSX or JSON format.
  </Step>

  <Step title="Click on Download">
    A file is automatically downloaded with the related data.
  </Step>
</Steps>

## Large exports

Invoice exports are generated asynchronously. On large workspaces or broad date ranges, the file can take longer to prepare before it is available to download.

CSV exports are limited to 10,000 rows. If your export is too large, reduce the date range, export a narrower invoice set, use the public API for paginated extraction, or contact support for help with a bulk export.

### Amounts format

The exported amounts are represented in the currency's smallest unit.

For **European currencies**, this means that amounts are represented in **cents**. If you want to convert the exported amount into its decimals format you need to divide it by `100`. For example, an exported amount of `3417` (Euro, a two-decimal currency) will correspond to `€34.17`.

The same logic applies for **zero-decimal currencies** and **three-decimal currencies**. In this case, you need to apply the right multiplier (or none). For example, an exported amount of `12065` (West African CFA franc, a zero-decimal currency) will correspond to `F CFA 12065`.


# Public invoice page
Source: https://docs.hyperline.co/docs/invoices/invoice-page

Share a hosted public invoice page where customers can view, download, and pay outstanding or paid invoices through a secure Hyperline link.

## Overview

Hyperline provides an invoice page where your customers can access both outstanding and paid invoices. This public page is also linked in the "Invoice to pay" email sent.

This page can be accessed through your Hyperline interface on the invoice details page.

<Frame>
  <img />
</Frame>

## Pay invoice

Customers can pay their invoices directly through the public invoice page which acts as a payment link, similar to the checkout process.

When the payment method allowed is credit card or direct debit, customers can enter their payment information to pay the invoice instantly.

<Frame>
  <img />
</Frame>

When the allowed payment method is bank transfer, the invoice will be displayed and can be downloaded with the bank transfer details included in the payment information section.

<Frame>
  <img />
</Frame>

## Paid invoice

Once an invoice is paid, the page will display the PDF invoice along with the date and payment method used.

<Frame>
  <img />
</Frame>

Customers can download the invoice using the button on the top right.

<Frame>
  <img />
</Frame>

## Explore consumption

For invoices containing metered products (usage and connected seats), customers can explore the details of every event billed during the period with full context.

Additionally, they can export this data:

* **Export single product**: Click the export button within a specific product's event table to download a CSV file containing only that product's events
* **Export all products**: Click **Download all events** on the top-right corner to download a ZIP file containing separate CSV files for each product on the invoice

<Frame>
  <img />
</Frame>


# Manage invoices
Source: https://docs.hyperline.co/docs/invoices/manage

Create, edit, and duplicate Hyperline invoices manually for ad-hoc billing needs that fall outside subscription or recurring payment flows.

While most invoices are automatically generated from subscriptions or one-time payments, Hyperline provides full flexibility to manually create, edit, and duplicate invoices for specific business needs.

## Create invoice

Manual invoice creation is useful for ad-hoc billing needs that fall outside your standard subscription or payment flows. From the customer details page, click **Create Invoice**.

<Frame>
  <img />
</Frame>

### Configuration

Configure the header information and details of the invoice.

<Frame>
  <img />
</Frame>

* **Issue date**, for legal compliance, the issue date is automatically set to today's date and cannot be modified.
* **Due date**, set any future date (including today) as the due date. Once reached, the invoice status will change to `late`, similar to the payment delay functionality.
* **Purchase order**, optionally add a custom purchase order reference to the invoice.
* **Custom note**, optionally include additional information for your customer in a custom note field.
* **Link subscription**, optionally attach an invoice to a subscription for reporting purposes.

### Line items

Line items represent the products and services on the invoice. Customize the name, description, billing interval, and tax rate for each of them. The total price is calculated automatically by multiplying quantity by unit price.

<Frame>
  <img />
</Frame>

You can also reference an existing product from your catalog. For usage-based products, retrieve the current usage for the invoice period by clicking the database icon in the quantity field. Note that pricing is not computed automatically when using catalog products.

<Frame>
  <img />
</Frame>

Using a catalog product enables your customer to explore consumption details for that product during the invoice period on the customer portal.

<Info>
  Line items can have negative amounts to represent credits or adjustments. Note that the total invoice amount cannot be negative.
</Info>

### Custom properties

If you have created custom properties for invoices, you can fill them when creating or editing an invoice. Use invoice custom properties to keep structured information such as a contract reference, sales owner, internal cost center, or any value that should follow the invoice through reporting and integrations.

When an invoice is generated from a subscription, Hyperline automatically copies the subscription's custom property values to the invoice when the same custom property is available on both entities. You can still edit the invoice value afterward when the invoice can be updated.

### Delete or re-order line items

Line items can be removed from the invoice, or re-ordered to match the order of your choice.

<Frame>
  <img alt="Re Order Or Delete" />
</Frame>

### Apply coupons

Coupons apply a fixed amount discount to the invoice total before taxes.

<Frame>
  <img />
</Frame>

You can add a custom name to the coupon, set the discounted amount as well as the line items it will be applied to. Coupon amount will never exceed the total amount of the line item it's applied to.

### Create draft

Click **Create draft invoice** to generate the invoice with `draft` status. Draft invoices are not sent to customers and can be edited multiple times before being finalized manually.

## Edit invoice

Edit invoices to modify information before sending them for payment. This provides full control over the final invoice content.

<Info>
  Once an invoice has been emitted, some elements like issue date, line items and coupons cannot be edited anymore due to legal requirements. Customer billing details, custom note, purchase order can be edited even after the invoice is marked as paid.
</Info>

## Duplicate invoice

Duplicate existing invoices to quickly create similar invoices or correct errors in finalized invoices. It's the right approach to:

* Quickly replicate a payment for another period
* Correct errors in a finalized invoice by creating a new version
* Reuse invoice structure with updated information

<Info>
  Duplicated invoices automatically reflect any updates to the customer's address or tax rate. If the original invoice had a bank account that has been deleted, the duplicated invoice will not include a bank account reference.
</Info>

## Common validation errors

When creating, editing, or duplicating invoices, you may encounter validation errors. Here are the most common ones and how to resolve them:

**Missing required information**

* **Missing customer ID**: Ensure a customer is selected before creating the invoice.
* **Missing currency**: Select a currency for the invoice.
* **Missing line item name**: All line items must have a name.
* **Missing line item unit amount**: All line items must have a unit amount specified.
* **Missing coupon amount**: All coupons must have a discount amount.

**Date and status issues**

* **Issue date cannot be in the past**: When creating invoices, the issue date must be today or later (except when duplicating).
* **Settlement date can only be set for paid invoices**: Only invoices with `paid` status can have a settlement date.
* **Settlement date is required for paid invoices**: Invoices marked as `paid` must include a settlement date.

**Address and tax issues**

* **The address is not complete enough for tax declaration**: Ensure the customer's billing address includes all required fields for tax compliance.
* **Customer name is required for tax calculation**: The customer must have a name for tax calculations to work properly.

**Product and invoice references**

* **Product not found**: The referenced product may have been deleted. Select a different product or remove the product reference.
* **Duplicate invoice found**: An invoice with the same details already exists for this customer.
* **Some invoices don't exist or are already linked to another invoice**: When linking invoices, ensure all referenced invoices exist and are not already linked.

**Payment provider issues**

* **Failed to retrieve provider transaction**: There was an issue connecting to the payment provider. Try again or contact support.

<Info>
  Is something still unclear? Don't hesitate to reach out to our team via the in-app chat if you need additional support.
</Info>


# Invoices overview
Source: https://docs.hyperline.co/docs/invoices/overview

Automate recurring invoicing and create one-off invoices in Hyperline, with automatic line items from subscriptions, multi-currency support, and PDFs.

## Invoices in Hyperline

Hyperline provides a simple and versatile invoicing solution to automate your invoicing, no matter the pricing model or the currency. Automate recurring billing or create one-off invoices on demand for your customers.

Hyperline automatically computes line items for invoices corresponding to products in the assigned plan.

Invoices are managed in the **Invoices** section of Hyperline. You can [configure your invoice](./configuration) in the Settings pages.

<Note>
  Invoice numbers always follow a sequential pattern (learn more in the
  [invoice configuration](./configuration#invoicing-number)).
</Note>

Invoices always feature:

* A creation date
* A due date
* The invoice status
* The invoice category
* The payment method
* The total amount for the transaction, including VAT if applicable
* Names and addresses of both parties
* Legal information (if any were added in the [Invoice settings](./configuration))

<Frame>
  <img />
</Frame>

### Invoice language

Hyperline invoices are currently available in **English, French, German, Italian, Spanish, Polish, Portuguese and Dutch** languages.

The invoice is generated in the primary language of your country for legal and accounting purposes. However, depending on your customer's language preference, you or they can download the invoice in their preferred language.

### Invoice customer address

Invoices created before changing a customer's address will keep the previous address.

Any change made to an invoice through the "edit" action will automatically update the customer's address.

<Frame>
  <img />
</Frame>

### Invoice payment method

The customer's default payment method is used when creating an invoice. While an invoice is not paid, you can update it.

<Frame>
  <img />
</Frame>

### Invoice status

`Draft`
Represents an editable invoice. We are only using this status before the invoice is finalized (ready to pay). A draft invoice is generated without a number.

`Open`
Displays when your customer is assigned a metered subscription, we create an open invoice (generated without a number) in the background that we update on a regular basis to represent the latest consumption.

`Grace period`
Displays when a metered subscription has closed. During the grace period, the invoice isn't charged, and you can make modifications manually until the end of the grace period. A grace period invoice is generated without a number.

`To pay`
The invoice is finalized (a number is assigned) and is pending payment. Invoices attached to an automated payment method will be automatically charged. Invoices paid by bank transfer will remain with this status until [you mark them as paid](./reconciliations).

`Late`
The invoice has passed its due date and has not been fully paid yet. This status helps you identify overdue invoices that require follow-up.

`Partially paid`
The invoice has been paid only partially (only for transfers). See the [Reconciliation page](./reconciliations) for more details.

`Paid`
The invoice is fully paid and now has a settled date, you can book-keep it.

`Pending consolidation`
The invoice is held, waiting to be merged into a daily consolidated invoice for a customer that has [consolidated invoicing](./consolidated-invoicing) enabled. It has no invoice number yet and hasn't been charged.

`Consolidated`
The invoice was merged into an aggregate consolidated invoice. It links to the aggregate via `linkedInvoiceId`. The source is kept for record-keeping — the aggregate is what's charged. Learn more in [consolidated invoicing](./consolidated-invoicing).

`Missing payment info`
We haven't tried to process the invoice because the related customer doesn't have a payment method.

`Error`
We have tried to charge the invoice 4 times (3 retries) and it failed. Learn more on how to handle payment errors [on this page](../payments/payment-errors).

`Uncollectible`
Represents an invoice that cannot be collected due to reasons like bankruptcy, disputes, or prolonged nonpayment, and which is typically written off as a bad debt. Can still be marked as paid in case funds are finally collected.

`Voided`
The invoice has been voided and is no longer valid. Voided invoices are kept for record-keeping purposes but have no financial impact.

`Closed`
The invoice has been closed without payment, typically because there was nothing to bill after the grace period ended (for example, when all metered items resulted in zero usage).

<Frame>
  <img />
</Frame>

### Invoice categories

**Refund** - The related payment has been refunded. A credit note has been issued.
**One-off** - Describes a one-off invoice.
**Subscription** - Describes an invoice that is part of a subscription.

You can filter invoices by category in the **Invoices** page using the **Category** filter dropdown.

### Invoice filters

**Outstanding** - Invoices that have been only partially paid and are still awaiting payment.
**Late** - Invoices with passed due date and not fully paid yet.
**Paid** - Fully paid invoices.
**Refunded** - Refunded invoices.

<Frame>
  <img />
</Frame>

### View invoices by customer

You can view all the invoices for a specific customer by going to **Customers**, selecting one customer and clicking on the **Invoices** tab.

<Frame>
  <img />
</Frame>

### Accounting

If the [accounting module](/docs/accounting/getting-started) is enabled, the invoice detail page carries an **Accounting** section showing how that invoice hit your books:

* The **journal entries** posted for it — at issue, at settlement, and on any credit note
* The **recognition schedules** created for its line items, when revenue is deferred

Where an invoice's entity has more than one ledger, a selector lets you switch between them — the same invoice can post to a statutory and a management ledger with different accounts. **View in ledger** on any entry opens it in the [journal entry lines](/docs/accounting/entries#journal-entry-lines-drill-down) view, in the context of the account it hit.

## Send recurring invoices

Recurring invoices are automatically generated with subscriptions. For this, you need to [assign a subscription](../subscriptions/create) and start a subscription to a customer to trigger recurrent invoicing.

Recurring invoices can have different amounts or the same amounts each time, depending on the pricing model (pay-per-use is more likely to vary over time than monthly fixed-price subscriptions).

<Frame>
  <img />
</Frame>

## One-time payments

One-off invoices will be generated for one-time payments, such as onboarding fees, unique license fees or any other product you create from the **Product catalog** section. Whatever its usual pricing model, the product is charged as a fixed amount (quantity × unit price).

To charge a one-time payment:

<Steps>
  <Step title="Go to the `Customers` page">
    Select the customer you want to charge.
  </Step>

  <Step title="Click on `Action` and `Charge one-time payment`">
    <Frame>
      <img />
    </Frame>
  </Step>

  <Step title="Choose the issue date for your invoice">
    <Frame>
      <img />
    </Frame>

    <Note>
      <ul>
        <li>Immediately: The date will be set to today, and result in a direct charge on your customer's payment method</li>
        <li>Checkout completion: It will create a checkout link for your customer to pay with. The issue date will match the payment date</li>
      </ul>
    </Note>
  </Step>

  <Step title="Choose the product, the name and the price for the one-time payment you want to apply for this customer">
    If none are set by default, you can still visit the **Product catalog** page to create new products.

    <Frame>
      <img />
    </Frame>

    1. If you select **Immediately**, the invoice is created instantly and will appear with a **Paid** status.

    <Frame>
      <img />
    </Frame>

    2. If you enabled the checkout session, an invoice will be created with a **Draft** status until the customer pays through their checkout page.
  </Step>
</Steps>

<Note>
  It is possible to generate one-time payment invoices for a customer who
  already has an ongoing subscription with recurring invoices. Alternatively, it
  is possible to generate one-time payment invoices for a customer without an active
  subscription.
</Note>


# Reconciliation
Source: https://docs.hyperline.co/docs/invoices/reconciliations

Reconcile invoices with banking transactions in Hyperline — automatic matching for PSP card and SEPA payments, plus bank statement import.

Hyperline natively supports reconciliation between banking transactions and invoices in multiple ways, depending on the payment method used by your customers.

## Payment service provider (PSP)

If you use a Payment Service Provider (PSP) with automated payment methods like cards or direct debit, invoices will automatically reconcile without manual intervention. As Hyperline orchestrates the payment initiation, it tracks payment status (money movement, chargebacks, etc.) in real-time and updates the invoice accordingly.

## Connected bank account

Hyperline **supports a wide range of bank connections in France, the UK, Germany, Belgium, Spain, and the US**, enabling you to link your business bank account with a single click. Once connected, your bank account details can be added to invoices, and Hyperline will **automatically suggest matching transactions for each invoice, facilitating easy reconciliation**.

<Steps>
  <Step title="Navigate to Settings > Payment page">
    Click on 'Connect bank account'.

    <Frame>
      <img />
    </Frame>
  </Step>

  <Step title="Link your bank">
    Click on the 'Link new bank' button and complete the authentication process.
  </Step>

  <Step title="Connect your bank account">
    Once linked, select the bank account you want to connect to Hyperline.

    <Frame>
      <img />
    </Frame>
  </Step>

  <Step title="Reconcile">
    Hyperline will automatically match transactions or suggest one from your bank account for each unpaid invoice based on matching details.

    <Frame>
      <img />
    </Frame>
  </Step>
</Steps>

Additionally, you can access your bank statements and account balances, and reconcile invoices directly from the Transactions page.

### Reconciliation logic

Reconciliation targets invoices with status 'to\_pay' or 'partially\_paid', and is restricted to payment methods 'transfer' or 'external' (or no payment method set).

Hyperline automatically matches incoming bank transactions to outstanding invoices using a confidence-based scoring system. Each transaction is scored against unpaid invoices, and only matches above a minimum confidence threshold are suggested, ranked from most to least likely.

Matching signals (from strongest to weakest):

* Payment reference — If the transaction description contains the invoice's payment reference, it's an automatic match.
* Alphanumeric invoice number — Invoice numbers containing both letters and digits (e.g. INV-2024-042) found in the transaction description are also treated as certain matches.
* Known payer account + exact amount — When the paying bank account is already linked to the customer and the amount/currency match, confidence is very high.
* Invoice number, customer name, amount — These signals are scored individually and combined. An invoice number appearing as a distinct word carries more weight than a partial match. Customer name and exact amount each contribute additional confidence.

Only matches exceeding the confidence threshold are surfaced, sorted by likelihood so the best match appears first.

<Info>
  Transactions are fetched daily, meaning that a transaction arriving in the bank account on one day will be suggested for reconciliation the following day.
</Info>

### Viewing invoice status in transactions

When viewing your bank transactions, Hyperline displays invoice status indicators next to reconciled or suggested invoices. These visual indicators help you quickly identify the payment status of each invoice.

This makes it easier to understand the current state of each invoice directly from the transactions view without needing to navigate to the invoice detail page.

## Automated customer bank transfer

Hyperline offers a method to **automate bank transfer reconciliation** by assigning unique bank account details per customer and a distinct reference for every invoice. The account details remain constant for each customer, while the reference changes with each invoice.

The bank account details and reference are added to the invoice **when it is ready to be paid** and sent for payment.

<Frame>
  <img />
</Frame>

When a payment is received with the matching reference, Hyperline automatically reconciles the invoice and marks it as paid, eliminating the need for manual intervention. If a customer uses an incorrect or unrecognized reference, the funds are automatically returned to the customer's bank account.

<Note>
  This feature is currently available only with Mollie. You can transfer payouts from your Mollie account to another bank account, just as you would with any other card or direct debit payments.
</Note>

## Manual customer bank transfer

If you enable manual bank transfers as a payment option (in the 'Settings > Payment' page), you will need to manually update invoice statuses to 'Paid' in Hyperline, as the platform cannot access your bank account information and transaction history.

After setting up a subscription for your customer, they can pay via their checkout page by selecting 'Bank transfer'.

<Frame>
  <img />
</Frame>

When the customer clicks on **Pay**, they will be presented with a link to download their invoice as a PDF document.

<Frame>
  <img />
</Frame>

The invoice will then appear in the **Invoices** section with the status **To pay**.

You will need to manually mark it as **Paid** or **Partially paid** in Hyperline once payment is received.

<Frame>
  <img />
</Frame>

### Manually marking invoices as paid

<Note>
  Manually changing the status of invoices only applies to bank transfers and
  other offline transactions. For all other transactions (credit cards, direct
  debit, automated transfers) through a Payment Service Provider, **invoices
  will be automatically updated in Hyperline**.
</Note>

When creating a new subscription with bank transfers, the invoice status will automatically be marked as **To pay** until the first payment is received from the customer.

<Frame>
  <img />
</Frame>

There are two ways to change an invoice status from **To pay** to **Paid** or **Partially paid**:

From the Invoices page, click the three-dots menu on the invoice row, then select **Mark as paid**.

<Frame>
  <img />
</Frame>

Alternatively, from the invoice detail page, click **Actions** and select **Mark as paid**.

<Frame>
  <img />
</Frame>

Select whether to mark the invoice as **Paid** or **Partially paid**, specify the amount paid, and click **Save**.

<Check>
  The **partially paid** status allows you to offer customers the flexibility to pay in
  multiple installments. You can update the invoice status after each payment is received until
  the total amount is paid.
</Check>

<Frame>
  <img />
</Frame>

The invoice status will update to either **Paid** or **Partially paid**, and the transaction status will be marked as **Settled**.

Below is an example of a partially paid invoice:

<Frame>
  <img />
</Frame>

And a fully paid invoice:

<Frame>
  <img />
</Frame>


# Credit notes & refunds
Source: https://docs.hyperline.co/docs/invoices/refunds

Issue credit notes and process refunds in Hyperline: cancel charges, return funds via the original payment method, or top up customer wallets.

<Tip>
  If you are looking to cancel subscriptions, please visit the [manage
  subscriptions page](../subscriptions/manage).
</Tip>

<Note>
  It's currently not possible to create a credit note for an invoice not created by Hyperline. <br />
  As an alternative, you can [provide a free top-up on your customer's wallet](/docs/wallets/balance),
  which will be used to pay for future invoices.
</Note>

## Choose the right action

Hyperline separates the accounting correction from the money movement:

* **Create a credit note** when an invoice amount must be cancelled or reduced. The credit note is the legal/accounting document. It can be created without money movement, or it can be settled by refunding the original payment method, crediting the customer wallet, or recording an external refund.
* **Refund a transaction directly** when a settled PSP payment must be sent back but the invoice should remain payable. This creates a refund transaction for the full remaining refundable amount. It does not create a credit note or cancel any invoice amount; once the refund settles, the related invoice payment status is recalculated and can go back to **to pay**.

| Situation                                                                          | Use                                                                       |
| ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------- |
| Cancel or reduce an invoice amount                                                 | Create a credit note                                                      |
| Cancel or reduce an invoice amount and send money back now                         | Create a credit note and enable **Refund transaction**                    |
| Record money already refunded outside Hyperline for a cancelled or reduced invoice | Create a credit note and select **Mark as refunded outside of Hyperline** |
| Send a captured payment back while keeping the invoice due                         | Refund the transaction directly                                           |
| Credit a customer for an invoice not created by Hyperline                          | Create an ad-hoc credit note or provide a wallet top-up                   |

## Configuring your credit notes

Credit notes are generated manually or when you create a credit note from an invoice. You can customize the credit note template in the **Settings > Invoicing** section.

You have access to:

* The **credit note number** pattern
  * The available variables are: `number`, `YYYY`, `MM`, `DD`.
  * `number` is mandatory.
* The **next credit note number**. This is a read-only field that shows the next
  credit note that will be generated. If you want to update the value, please contact our support team.
* The **credit note legal information**. This field is optional.
* The additional **credit note footer**. This field is also optional.

By clicking on the globe on the right side of the text area, you can translate both the legal and additional information into multiple languages. The relevant language will be automatically selected when the credit note is generated.

<Frame>
  <img alt="Credit note settings with translation options" />
</Frame>

## Create a credit note

You can create a credit note from any invoice with the following statuses: **paid**, **partially paid**, **to pay**, or **error**.

**Prerequisites and restrictions:**

* You cannot create a credit note for an invoice that has already been fully credited (indicated by the `refundedAt` timestamp)
* If an invoice has been partially credited, you can create additional credit notes up to the remaining amount available for credit notes
* Credit notes cannot be created for invoices imported from external billing systems (see [Ad-hoc credit notes](#ad-hoc-credit-notes) for alternatives)

<Steps>
  <Step title="Go to the Invoices section">
    Click on the invoice you want to create a credit note for.
  </Step>

  <Step title="Click on Actions and select Create credit note">
    <Frame>
      <img />
    </Frame>

    A modal will open with the credit note creation form.
  </Step>

  <Step title="Configure the credit note options">
    <Frame>
      <img />
    </Frame>
  </Step>
</Steps>

### Credit note options

The creation modal includes the following options:

#### Partial credit note

By default, the credit note is created for the full invoice amount. Enable this option to create a partial credit note by selecting specific line items.

When enabled, a table displays all line items from the original invoice with the following columns:

| Column                    | Description                                          |
| ------------------------- | ---------------------------------------------------- |
| Selected                  | Checkbox to include the line item in the credit note |
| Unit amount excluding tax | The unit price before tax                            |
| Unit count                | The quantity to credit                               |

<Frame>
  <img alt="Partial credit note line items selection table" />
</Frame>

You can adjust both the quantity and the unit amount for each selected line item. The credited amount cannot exceed the original line item amount minus any amounts already credited for that line item.

<Note>
  If the invoice contains both credit and debit line items (including negative line item amounts), line item selection is not available. In this case, you can only specify a single amount to credit.
</Note>

<Warning>
  When creating a partial credit note, you must select at least one line item before submitting. The form will display an error message if you attempt to create a partial credit note without selecting any line items.
</Warning>

**Maximum credit note amount calculation:**

The maximum credit note amount is calculated as the total invoice amount minus the sum of all non-voided credit notes already issued. Voided credit notes are excluded from this calculation, allowing you to create new credit notes if a previous one was voided.

<Warning>
  The total credit note amount cannot exceed the maximum credit note amount for the invoice. If you attempt to credit more than the available amount, the system will prevent you from creating the credit note.
</Warning>

#### Send credit note via email

When enabled, the credit note will be sent to the customer via email upon creation. This option is checked by default but only available if the customer has an email address configured for invoices.

#### Refund transaction

Enable this option to settle the credit note with a money movement. The availability of refund methods depends on the invoice status and payment method.

**Refund availability by invoice status:**

* **Paid invoices**: All refund methods are available (subject to additional restrictions below)
* **Partially paid, to pay, or error invoices**: The refund transaction option is disabled. You can only create a credit note without processing a refund

**Available refund methods:**

* **Refund on original payment method**: Initiates a refund to the payment method used for the original invoice. When you execute a refund, Hyperline sends the refund request to your payment provider. The success notification indicates the refund has been **initiated**, not that funds have been transferred. The refund is processed asynchronously by the payment provider, and funds will be returned to the customer according to the provider's timeline (typically immediately for card payments, or within 3-4 days for bank transfers). Available when:
  * The invoice status is **paid**
  * The invoice was paid using an automatic payment method (not bank transfer)
  * The invoice has not been previously refunded
  * For GoCardless transactions: At least 7 days have passed since the invoice settlement date

<Note>
  Monitor your payment provider dashboard for the final refund status and confirmation that funds have been transferred to the customer.
</Note>

<Note>
  You cannot refund a payment while it has an active chargeback. See
  [Chargebacks](/docs/payments/chargebacks) to understand how disputes affect
  payments and invoice balances.
</Note>

* **Refund on customer wallet**: Adds the credited amount to the customer's wallet balance. Available when:
  * The invoice status is **paid**
  * Wallets are enabled in your settings
  * For invoices paid via bank transfer, this is the primary refund method available

* **Mark as refunded outside of Hyperline**: Creates a record of an external refund transaction. Available for paid invoices when automatic refund methods are not available or when you prefer to handle the refund manually

<Frame>
  <img alt="Refund transaction method selection options" />
</Frame>

<Note>
  If you do not enable the refund transaction option, the credit note is created without any money movement. This is useful when you only need the accounting document or when you plan to process the refund separately.
</Note>

<Warning>
  **GoCardless refund delay**: For invoices paid via GoCardless, you must wait 7 days after the invoice settlement date before processing a refund through the original payment method. During this waiting period, you can create the credit note and either mark it as refunded externally or refund to the customer's wallet (if enabled).
</Warning>

## Invoice status changes

When you create a credit note, the status of the original invoice changes based on its current state:

* **To pay invoices**: Creating a credit note automatically voids the original invoice, unless the invoice has a pending payment transaction (`to_process`, `pending`, or `scheduled` status). If a payment transaction is pending, the invoice will not be voided to prevent conflicts with the ongoing payment process. The invoice status changes to **voided**, and it can no longer be collected. The invoice remains visible in your system for audit and compliance purposes.

<Warning>
  **Irreversible action**: Once an invoice has been voided due to a credit note creation, you cannot reverse this action. If you need to correct a credit note, you can void the credit note itself and create a new one, but the original invoice will remain voided.
</Warning>

* **Paid invoices**: The invoice status remains **paid**, but the system tracks that a credit note has been issued. The invoice displays an indicator showing that a credit note has been created.

* **Partially paid invoices**: The invoice status remains **partially paid**. The credit note reduces the amount that can be credited in the future, but does not change the invoice's payment status.

* **Error invoices**: The invoice status remains **error**. Credit notes can be created to resolve billing discrepancies.

## Credit note lifecycle

Credit notes can be voided if they were created in error or need to be corrected. When a credit note is voided:

* The credit note status changes to **voided**
* Voided credit notes are excluded from credit note amount calculations
* You can create new credit notes up to the full invoice amount (minus any other non-voided credit notes)
* The voided credit note remains visible in the system for audit trail purposes
* The original invoice status is not automatically restored when a credit note is voided

To void a credit note, navigate to the credit note detail page and use the void action from the actions menu.

**Voiding paid credit notes:**

A paid credit note means the credit note itself has been settled, for example through a PSP refund, a wallet credit, or an external settlement. You can still void it when the accounting document needs to be corrected.

<Warning>
  Voiding a paid credit note does not reverse the money movement. You need to manually handle any necessary adjustment with your payment provider, wallet balance, or customer.
</Warning>

<Note>
  You can void credit notes regardless of their status, including paid credit notes and credit notes that have been applied to other invoices.
</Note>

<Frame>
  <img alt="Void credit note action in the three-dots menu" />
</Frame>

## Visualize your credit notes

To view and manage your credit notes:

<Steps>
  <Step title="Go to Invoices" />

  <Step title="Filter the list by type" />

  <Step title="Select Credit note">
    <Frame>
      <img />
    </Frame>

    From there, you can:

    * Download credit notes as PDF files
    * View associated transactions on payment service providers (PSPs)
    * Access credit note details and history
    * Void credit notes if needed

    All actions are available through the actions menu for each credit note.

    <Frame>
      <img alt="Credit notes list with available actions menu" />
    </Frame>
  </Step>
</Steps>

<Note>
  Credit notes are linked to their original invoices. You can view this relationship from either the invoice or credit note detail pages. The invoice detail page shows all associated credit notes, while the credit note page displays the original invoice reference.
</Note>

<Frame>
  <img alt="Credit note detail page showing link to original invoice" />
</Frame>

## Ad-hoc credit notes

Ad-hoc credit notes are standalone credit notes that are not linked to an existing invoice in Hyperline. This feature is useful when you need to issue a credit note for an invoice created in a different billing system or when providing a credit that doesn't correspond to a specific invoice.

**Key characteristics:**

* Not automatically applied to any invoice (manual application required if you want to offset amounts)
* Do not affect the credit note amount calculations of existing invoices
* Can be sent to customers via email
* Follow the same template configuration as regular credit notes

To create an ad-hoc credit note, use the **Create invoice** button in the customer details page.

<Steps>
  <Step title="Go to the customer details page" />

  <Step title="Click on the Create invoice button">
    <Frame>
      <img />
    </Frame>
  </Step>

  <Step title="Select the Credit note type in the dropdown">
    <Frame>
      <img />
    </Frame>
  </Step>
</Steps>

### Allow credit notes without an invoice

You can turn off ad-hoc credit notes per invoicing entity. In **Settings** > **Invoicing entities** > *entity* > **Invoicing** > **Credit notes**, the **Allow credit notes without an invoice** switch controls whether you can create standalone credit notes for that entity. The setting is **allowed** by default.

When the setting is disabled for an invoicing entity:

* The global **Create new** menu shows **Invoice** as the entry point instead of the combined invoice/credit note label. Create credit notes from an existing invoice as described in [Create a credit note](#create-a-credit-note).
* The invoice editor hides the **Credit note** document type when you select that entity. If a draft is already set to **Credit note** and you switch to an entity where standalone creation is disabled, the type resets to **Invoice**.
* Existing credit notes for the entity remain visible. You can still void or download them regardless of the current setting.

The **Credit note** document type stays available in the invoice editor when you edit an existing credit note, so you can still finish previously created drafts.


# Invoice reminders & dunning
Source: https://docs.hyperline.co/docs/invoices/reminders

Automate payment reminders and dunning sequences for overdue Hyperline invoices, with configurable email cadence and escalation rules.

When using cards or direct debits, payment collection is fully automated with customer's payment method charged by Hyperline without any manual operation from either party. However, receiving payments on time from your customers paying manually can be more challenging, often requiring you to remind them about due invoices and missing payments.

<Note>
  Only invoices without a payment method assigned, configured to be paid via bank transfer, or with a payment method in error are concerned by payment reminders. For invoices paid with valid automated payment methods (Credit Card, Direct Debit), "payment errored" emails will be sent.
</Note>

Hyperline provides a comprehensive invoice reminders module, enabling you to **schedule automated email reminders before, on, or after the invoice due date**. You can create multiple sequences, segmented by cohorts. These sequences can have as many reminder emails as you want, with customized email subject and body. This allows you to tailor your dunning communication, automate payment follow-ups and eliminate the need for manual intervention.

<Frame>
  <img />
</Frame>

<Tip>
  All email reminders are sent at 6 AM UTC, regardless of the time the invoice was generated.
</Tip>

## Configuring a reminder sequence

To create a new reminder sequence, head to Invoicing > Reminders.

<Info>
  By default, Hyperline creates a default sequence (in English) for all new accounts.
</Info>

### Audience

When creating a sequence, you must configure an audience, which defines which customers the reminder sequence applies to. Only invoices paid by **bank transfer** or without any payment method set are eligible.

There are two ways to define the audience for a reminder sequence:

#### Using a segment

You can select an existing [customer segment](../customers/segments) as the audience for your reminder sequence. This is the recommended approach when you already have segments that match the cohorts you want to target — for example, "Enterprise customers in France" or "Customers paying by bank transfer in English".

Segments are evaluated continuously, so as customers enter or leave the segment, they are automatically included in or excluded from the reminder sequence.

#### Custom filters

Alternatively, you can define a custom audience directly on the sequence using filters:

* **Language** — filter by customer language to ensure reminders are sent in the appropriate language. If language isn't a factor, select the `All` option to include all customers regardless of their language preference.
* **[Custom properties](../properties)** — filter by custom properties configured on your customers. This allows you to tailor audiences based on specific attributes, enabling more precise control over your invoice reminder sequences.

### Customize the emails

When adding an email to your reminder sequence, you can configure the trigger based on a number of days before, on, or after the invoice due date. You can also configure the email subject and body with your own content.

<Frame>
  <img />
</Frame>

The PDF invoice will be automatically attached in all email reminders sent.

To preview the email in your inbox, you can use the 'Send test email' button.

## Opt out a customer from reminders

To exclude a specific customer from reminder sequences, you can switch off the 'Invoice email reminders' setting on your customer: go to the Customer > Click on the customer > 'Edit' on the top right of the page > Switch off the 'Invoice email reminders'.

## Track emails sent

When an email reminder is sent for a specific invoice, a corresponding history log is added to the invoice History. As for other emails, we provide delivery, open, and read status for complete traceability.

<Frame>
  <img />
</Frame>


# Tax management
Source: https://docs.hyperline.co/docs/invoices/tax-management

Apply the right VAT and sales tax rules on Hyperline invoices, with country-specific rates, reverse charge logic, and exemption handling.

When invoicing customers, businesses must apply the correct tax scheme based on their location and the applicable laws. The two main types of taxes commonly seen on invoices are **Value-Added Tax (VAT)** and **Sales Tax**.

## How does VAT work

VAT is a consumption tax applied at every stage of the supply chain where value is added, from production to the point of sale. The final consumer ultimately bears the tax. VAT is common in most countries worldwide, particularly in Europe and some parts of Asia and Africa.

VAT rates vary by country and are often categorized into standard, reduced, and zero rates for different goods and services.

### In the EU

First and foremost, ensure that you're registered with your country's tax authority and hold a valid VAT registration number, also known as an EU VAT Identification number. This number will be essential for conducting VAT-related activities.

Next, determine whether your customers are businesses or consumers. Hyperline validates EU VAT numbers and uses the result when deciding whether reverse charge can apply.

The chart below summarizes how Hyperline determines VAT for an EU-based invoicing entity. It assumes that automated tax collection is enabled.

<Accordion title="See how Hyperline determines EU VAT">
  ```mermaid theme={null}
  flowchart TD
    A{"Is the customer marked<br/>as tax exempt?"}
    A -- "Yes" --> B["VAT exempt"]
    A -- "No" --> C{"Is a manual VAT<br/>rate set?"}
    C -- "Yes" --> D["Apply the manual VAT rate"]
    C -- "No" --> E{"Is the customer in<br/>the EU VAT area?"}
    E -- "No" --> F["No EU VAT<br/>Local tax rules may apply"]
    E -- "Yes" --> G{"Are the seller and customer<br/>in the same VAT territory?"}
    G -- "Yes" --> H["Apply the seller-country VAT rate"]
    G -- "No" --> I{"Does the customer's VAT ID meet<br/>your reverse-charge rules?"}
    I -- "Yes" --> J["Apply reverse charge<br/>0% VAT"]
    I -- "No" --> K{"Is the customer typology<br/>B2C (person)?"}
    K -- "No" --> H
    K -- "Yes" --> M{"Has this invoicing entity exceeded<br/>€10,000 in eligible annual sales?"}
    M -- "No" --> H
    M -- "Yes" --> L["Apply the customer-country VAT rate"]

    classDef result fill:#FFF4D6,stroke:#E4B84B,color:#28251F;
    classDef exempt fill:#FCE8E6,stroke:#E39189,color:#28251F;
    class B,F exempt;
    class D,H,J,L result;
  ```
</Accordion>

When issuing invoices, it is mandatory to include VAT, even if it is zero-rated. VAT returns must also be submitted on a regular basis, typically monthly, quarterly, or annually, depending on the specific requirements of each country. Be diligent in fulfilling these obligations to remain compliant.

Once you are registered for VAT in another EU country, it's important to note that you should not charge VAT for both your own country and the customer's country. VAT should only be applied once, in accordance with the rules and regulations of the customer's location.

Lastly, keep in mind that obtaining VAT registration in a new country can be a time-consuming process, typically taking around 6 weeks. This timeline can vary depending on the country where you are seeking registration. Patience and adherence to the necessary procedures will be key during this period.

#### EU cross-border B2C threshold

When you use Hyperline's automated tax engine, Hyperline automatically tracks the EU-wide €10,000 threshold used for eligible cross-border business-to-consumer (B2C) sales. Below this threshold, VAT is calculated using the rate of the invoicing entity's country. Once the threshold is exceeded, subsequent eligible invoices use the VAT rate of the customer's country.

Hyperline tracks the threshold:

* Separately for each invoicing entity
* Per calendar year
* Using amounts excluding tax from issued invoices in euros
* Only when the customer's current typology is B2C (person)
* Using invoices that do not include a tax ID

Domestic sales do not change their applicable VAT rate when the threshold is exceeded. Cross-border B2B sales that qualify for reverse charge follow the [reverse charge rules](#eu-vat-and-tax-id-validation) instead.

<Card title="Example 💡">
  Your French invoicing entity sells to consumers in Spain. While its tracked
  annual amount is at or below €10,000, eligible invoices use the French VAT
  rate. After issued invoices bring the tracked amount above €10,000,
  subsequent eligible invoices use the Spanish VAT rate.
</Card>

<Note>
  The €10,000 threshold applies only to certain cross-border B2C supplies. See
  the [European Commission's cross-border VAT
  guidance](https://europa.eu/youreurope/business/taxation/vat/cross-border-vat/index_en.htm)
  and confirm your obligations with your tax adviser.
</Note>

### Outside the EU

If you're a business registered within an EU-based country, you don't charge VAT for customers that are based outside of the EU.
Please take a look [at this page](https://uscib.org/value-added-tax-rates-vat-by-country/) to learn more about the different VAT rates globally.

## How does Sales Tax work

Sales tax is a tax imposed on the sale of goods and services, collected only at the point of sale from the end consumer. It is primarily used in the United States and some parts of Canada, and rates are usually set by states or local governments and vary significantly across jurisdictions.

## Configure taxes in Hyperline

In Hyperline, tax settings are managed per invoicing entity, allowing you flexibility in defining specific tax behavior depending on the legal entity responsible for issuing customer invoices.

Hyperline automatically resolves the right tax scheme and applies the standard tax rate, the default rate of taxation applied to most goods and services. This is the general rate set by the government, which applies unless a specific good or service qualifies for a reduced rate, zero rate, or exemption.

Two options are available regarding VAT collection:

1. **Automated tax collection**: Hyperline will automatically collect taxes based on your origin country and customer information (country, VAT number, tax ID, etc.). The correct VAT amount and rate will be applied on the issued invoices.

2. **Manual tax handling**: Hyperline allows manual tax handling where you are responsible for filing taxes by country.

To use manual tax handling, go to **Settings** > **Taxes** for the relevant invoicing entity and turn off **Enable automated tax collection**, which is enabled by default.

## Tax calculation on invoices

The taxes (rates and amounts) will appear on all invoices under the billed subtotal.

<Frame>
  <img />
</Frame>

When creating, editing, or duplicating invoices, you can manually set custom rates for each individual line.

<Frame>
  <img />
</Frame>

<Frame>
  <img />
</Frame>

Tax is calculated on each invoice line item, then aggregated into the invoice totals. This means line-level rounding can affect the final tax total, especially when invoices contain several products, discounts, or mixed tax rates.

<Tip>
  If you need to review or adjust line-level taxes before the customer is charged, enable draft invoices or configure a grace period for usage-based invoices.
</Tip>

### Grace period for metered invoices

For metered and usage-based subscriptions, the `grace_period` is the number of days an invoice stays open after the billing period ends. During this period, the invoice is not finalized or charged, so you can review usage, adjust line items, or correct taxes before payment collection starts.

When the grace period ends, the invoice is finalized, assigned an invoice number, and moves to payment according to the customer's payment method and invoice settings.

## Customer tax settings

You can customize the tax rate per customer if necessary, but be careful, a manual tax rate set on a customer will not allow Hyperline to display any legal information associated with that rate in the invoice. You can add a custom invoice note for the customer to fix this.

<Frame>
  <img />
</Frame>

### Customize tax rate per customer

<Steps>
  <Step title="Click on 'Edit' in the information section of the customer page" />

  <Step title="Navigate to the 'Advanced' section and locate the 'Custom tax rate' field" />

  <Step title="Enter the desired rate and save">
    <Frame>
      <img />
    </Frame>
  </Step>
</Steps>

### Taxability per customer

Each customer can be marked as **Taxable** or **Tax exempt** from the customer edit form.

Use **Taxable** for the standard case where Hyperline should calculate taxes from your tax settings, customer location, tax ID, and product configuration.

Use **Tax exempt** when a customer should not be charged tax, for example when you have collected and validated a tax exemption certificate outside Hyperline.

<Note>
  Customer taxability is separate from a custom tax rate. Use taxability to decide whether tax applies at all, and custom tax rates to override the rate used for a taxable customer.
</Note>

## Customer tax identifiers

Company customers can have a primary **Tax ID**, such as an EU VAT number, and a **Local tax number** for country-specific invoicing or reporting requirements.

The Tax ID is used for tax calculation, validation, and reverse charge rules. The local tax number is stored separately and does not receive a VIES validation status or make a customer eligible for reverse charge.

To collect local tax numbers, navigate to **Settings** > **Taxes** for the relevant invoicing entity and enable **Enable local tax number**. The **Local tax number** field then appears when you create or edit a company customer and in customer billing forms on hosted pages.

<Card title="Example 💡">
  A German company can provide its EU VAT number as the **Tax ID** and its domestic tax number as the **Local tax number**. Hyperline uses the EU VAT number for VIES validation and reverse charge rules while retaining the domestic number for invoicing records.
</Card>

## EU VAT and tax ID validation

Hyperline automatically manages VAT in the EU. For B2B customers in another EU country, the reverse charge rate can apply when the customer has a tax ID on their profile. You can add the tax ID yourself from the customer page, or ask the customer to provide it from a portal, checkout, or quote signature flow.

### Tax ID validation

When a customer tax ID is added or updated, Hyperline checks its format and, for EU VAT numbers, validates it through the EU VAT Information Exchange System (VIES). EU VAT numbers are then revalidated with VIES regularly, at least once a month, so the status can change if the VAT number is updated in the official registry.

The validation status appears next to the customer's **Tax ID** on the customer page.

| Status        | Meaning                                                                                                                                                           |
| ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `valid`       | The tax ID has been verified and is valid.                                                                                                                        |
| `invalid`     | The tax ID has been checked and failed validation, for example because it has the wrong format, is not found in VIES, or belongs to an inactive VAT registration. |
| `mismatch`    | The tax ID is valid, but it belongs to a different country than the customer's country.                                                                           |
| `unverified`  | The tax ID has not been verified yet.                                                                                                                             |
| `unsupported` | Hyperline does not support automated verification for this tax ID type yet.                                                                                       |

<Tip>
  Use the **Customers** list to filter customers by tax ID status. This helps you find records with `invalid`, `mismatch`, `unverified`, or `unsupported` tax IDs so you can correct the tax ID, ask the customer to update their billing details, or decide the right follow-up action.
</Tip>

For EU VAT numbers, Hyperline stores the VIES consultation number on the customer and on invoices that rely on that validation. This gives your finance team a reference for later checks.

<Warning>
  Tax ID validation helps you identify risky billing details, but it does not replace review by your finance, tax, or accounting team. VAT databases are not always up to date, and an otherwise valid VAT number may still require additional checks for your billing context.
</Warning>

<Frame>
  <img />
</Frame>

## Tax enforcement options

Tax enforcement is configured per invoicing entity. This lets each legal entity decide how strictly Hyperline should require and validate tax IDs before applying tax rules.

To configure tax enforcement, navigate to **Settings** > **Taxes** for the relevant invoicing entity.

<Frame>
  <img />
</Frame>

### Enable local tax number

Enable **Enable local tax number** when company customers need to provide a country-specific tax number in addition to, or instead of, their primary Tax ID. This setting makes the **Local tax number** field available on customer records and hosted billing forms for the selected invoicing entity.

The field is optional unless **Require customer tax identifier** is also enabled. Hyperline stores the local tax number on the customer's billing details and captures it on generated invoices.

### Require customer tax identifier

Enable **Require customer tax identifier** when all company customers billed by an invoicing entity must provide a tax identifier before invoices, quotes, or hosted-page billing details can be completed.

* When **Enable local tax number** is disabled, the customer must provide a Tax ID.
* When **Enable local tax number** is enabled, the customer can provide either a Tax ID or a local tax number.

This setting checks that an identifier is present; it does not require the Tax ID to be externally validated. A local tax number does not replace a valid Tax ID for reverse charge rules.

<a />

### Enforce a valid tax ID for reverse charge

By default, Hyperline applies the reverse charge rate as soon as a tax ID is provided on the customer's profile, without waiting for external validation.

Enable **Require valid tax ID for reverse charge** when reverse charge should apply only after the customer's tax ID has the `valid` status. If the tax ID is missing, `invalid`, `mismatch`, `unverified`, or `unsupported`, Hyperline applies the standard tax rate for the customer's country instead.

This setting is useful when your tax policy requires VIES validation before applying a 0% reverse charge rate.

<Note>
  This setting is disabled by default. If VIES validation is temporarily unavailable, a tax ID may remain `unverified`; with this setting enabled, Hyperline will not apply reverse charge until validation succeeds.
</Note>

## Tax mappings

Tax mappings associate the tax rates used by Hyperline with the corresponding codes in your accounting software. They are configured separately for each invoicing entity.

The **Tax mappings** list brings together:

* Country-specific rates, including standard and reverse charge rates
* Reusable custom rates, identified by the `Custom` label
* The accounting code associated with each rate

You can search the list by mapping name, country, rate, or code. Use the action menu on a row to manage an existing mapping.

### Create a tax mapping

<Steps>
  <Step title="Open the invoicing entity's tax settings">
    Go to **Settings** > **Taxes** for the relevant invoicing entity.
  </Step>

  <Step title="Click 'Create tax mapping'" />

  <Step title="Configure the mapping">
    Enter the mapping details and the code used by your accounting software,
    then save the mapping.
  </Step>
</Steps>

When you send an invoice to connected accounting software, Hyperline associates the applicable tax mapping with its invoice lines.

Custom tax mappings can also be assigned to products in your catalog for each invoicing entity. Use them when a product requires a reusable rate that differs from the country-specific rates resolved by the tax engine.


# Invoice payment term
Source: https://docs.hyperline.co/docs/invoices/term

Set invoice payment terms in Hyperline to define how long customers have to pay and when invoices are flagged as late, with configurable defaults.

Setting a payment term will mark the invoices as **late** once the delay is passed. Choose a number of days that fits your industry's standard or your company preferences.

<Note>
  The payment term starts to run from the day the invoice is emitted to be paid.
</Note>

<Frame>
  <img />
</Frame>

A default payment delay of **30 days** has been configured in your settings (**Settings** → **Invoicing** page), which can be changed to your preferred value. This payment delay is applied to all your customers.

#### Customization per customer

In the Advanced section, you can enter the custom payment term negotiated with your customer.

<Frame>
  <img />
</Frame>

This setting can be updated afterward using the 'Edit customer' action and will impact every invoice created afterward.

## Grace period

For invoices with usage-based products, Hyperline uses a grace period - defined by a number of days - to **leave invoices open** before being sent to payment. This period allows you to review the invoices before they are finalised.

At the end of this period, invoices are automatically sent for payment.

The default duration is 3 days, but this can be configured on the **Settings** → **Invoicing** page.

#### Behavior during the period

During this period, newly ingested events for the invoice billing period are considered and invoices are regularly updated, so they have the latest accurate usage data.

Invoices in grace period don't have a unique number (not part of the sequential numbering), this number is generated when the invoice is finalized/ready to be paid.

<Frame>
  <img />
</Frame>

<Note>
  When the invoice leaves the grace period and is ready to be paid, a webhook
  `invoice.ready` message is sent. You can check more details about webhooks in
  the [webhooks page](../../api-reference/docs/webhooks).
</Note>


# Payment orchestration
Source: https://docs.hyperline.co/docs/payments/orchestration

Connect Stripe, Adyen, GoCardless, and other PSPs in one click — Hyperline orchestrates payment processing, customer sync, and reconciliation.

Hyperline natively supports major Payment Service Providers (PSPs). This means that using these services won't require any technical work from you: simply connect your account in one click and let Hyperline orchestrate it without extra work on your side.

## Orchestration

Once connected, Hyperline automatically creates or updates customers and their associated information on the relevant payment providers as needed.

Payment method collection forms—such as credit card inputs or Direct Debit mandates—are directly embedded within Hyperline flows, hosted pages, and frontend components. This requires no additional technical effort on your part.

Payments are automatically triggered using the customer's payment method when appropriate. All related flows—such as retries, refunds, and chargebacks—are natively managed by Hyperline, so you don't need to handle them manually.

When a payment provider reports a dispute, Hyperline records the chargeback as its own transaction on the invoice, linked to the original payment. Hyperline then recalculates the invoice's paid amount, its status, and the availability of the **Add payment** action. See [Chargebacks](/docs/payments/chargebacks) to understand how disputes affect payments and invoice balances.

By using Hyperline, you eliminate the technical complexity of integrating with a payment provider yourself. We abstract that layer for you. As a bonus, switching between payment providers becomes seamless, since your application is no longer tightly coupled to any specific one.

## Import

Hyperline allows you to connect your existing payment provider account and seamlessly migrate to our platform. We provide built-in mechanisms to import your customers and their associated payment methods, so you can get started without asking your customers to re-enter their payment details.

If you're interested in onboarding with an existing setup, please contact our support team—we'll guide you through the process.

## Multi-providers

Hyperline lets you connect multiple payment providers at the same time, giving you the flexibility to distribute payment method usage across providers based on cost, geography, or preferred features.

For example, you can route card payments through Stripe while using Mollie for SEPA Direct Debit, allowing you to take advantage of the best rates or capabilities each provider offers.

You can also connect multiple accounts from the same provider, enabling more granular control over your payment routing strategy.


# Handling payment errors
Source: https://docs.hyperline.co/docs/payments/payment-errors

Diagnose and resolve failed Hyperline payments: understand decline reasons, retry logic, and how to recover unpaid invoices for customers.

## Payments in Hyperline

In most cases, Hyperline manages payment collection and reconciliation for you. But sometimes, payments can fail for a variety of reasons, resulting in unpaid invoices.

When an invoice is issued and ready to be paid, Hyperline will attempt to charge the active payment method of the customer by initiating a payment. This is the basic use case for Credit Cards and Direct Debit.

<Frame>
  <img />
</Frame>

The payment method should have been previously added by the customer through checkout or portal page.

<Card title="Bank transfer payments and manual reconciliation 💡">
  Note that if the customer pays by bank transfer, we send the invoice to be paid by email and the reconciliation needs to be done manually on Hyperline (learn how to proceed on this page). If you connected a PSP, no action is required on your part.
</Card>

## Errors and retry

In certain situations, payment can fail (payment method expired, payment declined, processing issue on the bank side, etc.). For the relevant cases, we will attempt to retry the payment with the following schedule:

* 2 hours after the first attempt
* 12 hours after the second attempt
* 24 hours after the third attempt

For each attempt, a new transaction is created for the invoice. If all the attempts fail, we will mark the invoice as "error".

<Note>
  Retryable errors include:

  * **Insufficient funds**: The payment method doesn't have enough funds to complete the transaction
  * **Declined payments**: The payment was declined by the card issuer or bank for various reasons (including cards reported as lost or stolen, reaching the limit available on the method, payment method on a known block list, security violations, banking service unavailability, etc.)

  Other error types like expired or invalid payment methods will not be retried automatically and require customer action to resolve.
</Note>

<Note>
  When a customer has multiple invoices in error and adds an automated payment method (credit card, direct debit), all previous invoices will be charged immediately.
</Note>

<Card title="If you are technically integrated" icon="code">
  This state corresponds to the `error` status on the invoice API, and to the
  `invoice.errored` webhook message.
</Card>

### Custom payment retry

Retry schedule can be customized in Settings > Payments > Payment retry. You can add or remove attempts and adjust the delay between them.

You can also disable payment retries entirely if you prefer to manually retry failed payments.

## Subscription error

Additionally, if the invoice is related to a running subscription, we will switch the subscription to an "Error" state. This behavior can be disabled in Settings > Subscriptions, letting subscriptions remain active even if some invoices failed to be paid.

If the subscription invoice is flagged as errored, we will consider the related subscription as **inactive** (as the customer failed to pay you) meaning that we won't invoice the customer in the future or collect payment.

<Note>
  Invoices in `Open` state will stay in this state for as long as the subscription is paused.
</Note>

**This behaves as a paused subscription**.

In this case, we offer you the choice to **manually re-activate the subscription** (the invoice will remain unpaid) or **fully cancel it**.

<Card icon="code">
  This state corresponds to the `errored` status on the subscription API, and to
  the `subscription.errored` webhook message. This state can be used to switch
  off the access to your product or move your customer to a free product access.
</Card>

## Manual retry

If you wish to manually retry the payment of an invoice with a failed transaction, click **Charge invoice** in the invoice actions dropdown.

<Frame>
  <img />
</Frame>

If the new payment is successful, the invoice will now be paid and the subscription will automatically switch back to the live state if the customer is still in the period of the subscription.

<Card icon="code">
  This will correspond to an `active` status on the subscription API, and to a
  `subscription.activated` webhook message.
</Card>

## Customer notification

If your customer can resolve the problem themselves — for example, their card expired or was declined and needs to be replaced, or they have insufficient funds — Hyperline emails them with a link to their dedicated portal page, where they can update their payment details.

## Error types

<Card icon="code">
  You can retrieve on the invoice the related transactions with the following
  `error_type` if the status is `failed`:
</Card>

* `authentication_required`: The card was declined as the transaction requires authentication (e.g. 3-D Secure). The customer should go to their portal page and
  authenticate their card. If the error happened on an already authenticated transaction, the customer needs to contact their card issuer for more information.

* `payment_method_authorization_error`: A transaction authorization cannot be created for a variety of reasons such as the card issuer couldn't be reached, or the card requires a PIN.

* `payment_method_declined`: The payment method was declined for a variety of reasons such as a card reported as lost or stolen, insufficient funds or reaching the limit available on the method to complete the purchase, a payment method on a known block list, etc.

* `payment_method_expired`: The payment method is expired. The customer should go to their portal page and change their payment method.

* `payment_method_invalid`: The payment method is invalid in most cases because of incorrect details (card/account number, CVC, expiration date, postal code).

* `payment_method_not_supported`: The payment method doesn't support this type of purchase (e.g. currency, online payment).

* `declined`: The payment was declined for a variety of reasons such as security
  violation, banking service not available, transaction not allowed, etc.

* `fraud`: The payment provider suspected the transaction was fraudulent and has
  been blocked. Don't report more detailed information to your customer,
  and check on your provider account.

* `processing_error`: The payment couldn't be processed by the issuer for an unknown reason.

* `provider_error`: An error occurred when contacting the payment provider to initiate the transaction.

* `unknown`: A generic error happened on the payment provider side.

### Be notified of an errored invoice/subscription for a customer

If, as the merchant, you want to be notified when one of the invoices for your customer enters an error state because of a failed payment, you can implement multiple strategies.

<Card title="If you are comfortable with the technical webhook" icon="code">
  You can set up a handler on the `invoice.errored` or `subscription.errored`
  message. See more details on using the [webhooks
  page](../../api-reference/docs/webhooks).
</Card>

You can also **leverage a no-code solution** with our native [Zapier app](../../integrations/zapier) to connect the tool of your choice and trigger internal action on your side: notify a Slack channel, change state in one of your internal tools, email a specific team, etc.


# Payment methods
Source: https://docs.hyperline.co/docs/payments/payment-methods

Browse Hyperline-supported payment methods: credit cards, SEPA and ACH direct debit, bank transfers, Apple Pay, Google Pay, and more by country.

Hyperline supports out of the box a variety of payment methods, giving you the flexibility to propose different options to your customers.

The available payment methods on your account mainly depend on your country of incorporation and your connected Payment Service Provider (PSP).

* **Credit & Debit cards**: Visa, Mastercard and American Express
* **Direct Debit**:
  * **SEPA** Direct Debit for customers in the Single Euro Payments Area
  * **ACH** Direct Debit (for customers with a bank account in the US & in USD)
  * **Bacs** Direct Debit (for customers with a bank account in the UK & in Pounds)
* **Bank transfers**: direct bank transfers from your customers to your bank account
* **Apple Pay** and **Google Pay**

In **Settings** > **Payment**, you can connect the PSP you want to use and select the payment methods you want to enable on your account.

If you use invoicing entities, you can configure the bank account shown on bank transfer invoices for each entity. You can use one account for all invoices or [assign bank accounts by invoice currency, customer country, or customer segment](../account/invoicing-entities#configure-bank-accounts-for-bank-transfers).

## Payment service provider

Hyperline natively supports major Payment Service Providers (PSPs). This means that using these services won't require any technical work from you, and your PSP account will be fully orchestrated by Hyperline without extra work on your side.

| PSP        | Supported payment methods                                        |
| ---------- | ---------------------------------------------------------------- |
| Stripe     | Card, SEPA Direct Debit, ACH Direct Debit, Apple Pay, Google Pay |
| Mollie     | Card, SEPA Direct Debit, SEPA Transfer                           |
| GoCardless | SEPA Direct Debit, Bacs Direct Debit, ACH Direct Debit           |
| Airwallex  | Card, SEPA Direct Debit, Bacs Direct Debit, ACH Direct Debit     |
| Adyen      | Card, SEPA Direct Debit, Bacs Direct Debit, ACH Direct Debit     |

### Configure Apple Pay and Google Pay

To use Apple Pay and Google Pay, you must first enable them and register specific web domains in your payment service provider (PSP) account. These payment methods require domain verification in order to function properly when embedded in web pages.

To complete this step, register the domain `hyperline.co` in your PSP account. If you've configured a custom domain on Hyperline for your hosted pages, you must register that domain as well.

More details in the [Stripe documentation](https://stripe.com/docs/apple-pay/web#register-your-domain).

## Customer payment methods

Hyperline gives you **fine-grained control over which payment methods are available to each customer**. This allows you to tailor the payment experience and **restrict certain methods** based on customer-specific needs or preferences.

The enabled payment methods are displayed to the customer on their [**portal page**](../customers/portal) or when using [**embedded components**](../../api-reference/docs/react-components).

You can configure this in two ways:

* Via the **Settings** modal under the **Payment Methods** section on the customer's page.
* While assigning a subscription to a customer, by selecting the allowed payment methods for the customer.

<Frame>
  <img />
</Frame>

You can optionally configure a **default payment method** for each customer—choosing between a saved payment method, **bank transfer**, or **Outside of Hyperline**.
If no default is set, Hyperline will automatically use the **first payment method** provided by the customer.

## Manage payments outside of Hyperline

If you prefer not to use Hyperline's built-in payment capabilities, you can manage payments **entirely outside of the system**. This is particularly useful if you already operate a complex banking infrastructure or act as your own payment processor.

In this case, there's no need to connect a payment service provider (PSP). You can configure the customer's payment method as **"Outside of Hyperline"**, which:

* Disables all payment-related logic in billing flows
* Removes payment method sections from the **hosted pages** (checkout, quote, invoice) and **customer portal**

This approach gives you full control over payment collection while still benefiting from Hyperline's billing and subscription management features.


# Payout reconciliation
Source: https://docs.hyperline.co/docs/payments/payouts

Reconcile payment service provider payouts against bank account transactions in Hyperline, with grouped payment matching and finance overviews.

Payout reconciliation helps you understand how money received in your bank account maps back to the payment transactions processed through a Payment Service Provider (PSP).

When Hyperline detects a provider payout on a connected bank account transaction, it groups the matching payment transactions and displays the payout directly in the **Transactions** section. This gives finance teams a clear view of the gross amount collected, provider fees, and net amount included in the payout.

<Note>
  Payout reconciliation is currently available for automatic Stripe payouts paid
  into a connected bank account.
</Note>

## Before you start

To use payout reconciliation, make sure that:

* Your Stripe account is connected in **Settings** > **Payment**
* The bank account receiving Stripe payouts is connected to Hyperline
* Bank account transaction synchronization is active
* The related Hyperline payment transactions are settled

If you still need to connect a bank account, see [Reconciliation](../invoices/reconciliations#connected-bank-account).

## How Hyperline matches payouts

After each bank transaction refresh, Hyperline looks for incoming bank transactions that can represent a provider payout.

For Stripe payouts, Hyperline matches a bank transaction when:

* The transaction is posted and incoming
* The bank transaction label identifies Stripe
* The amount and currency match one automatic Stripe payout
* The Stripe payout arrival date is close to the bank transaction date
* The payout contains settled payment transactions already recorded in Hyperline

If several Stripe payouts could match the same bank transaction, Hyperline does not attach one automatically. This avoids linking the bank movement to the wrong provider payout.

## Review payouts

Go to **Transactions** > **Connected Bank Accounts** to review bank account activity.

Rows matched to a provider payout show a provider payout tag, such as **Stripe payout**, instead of the raw bank transaction label. Hover over the tag to see:

* The original bank transaction description
* The number of matched transactions
* The payout arrival date

Click the row to open the transaction drawer. The payout section shows:

| Field             | Description                                                         |
| ----------------- | ------------------------------------------------------------------- |
| **Provider**      | The payment provider that issued the payout                         |
| **Payout ID**     | The provider payout identifier                                      |
| **Arrival date**  | The payout arrival date reported by the provider                    |
| **Matched at**    | When Hyperline matched the bank transaction to the payout           |
| **Payout amount** | The total payout amount received from the provider                  |
| **Provider fees** | The total fees included in the matched payout lines                 |
| **Net included**  | The total net amount included in the matched payout lines           |
| **Transactions**  | The number of Hyperline payment transactions included in the payout |

The side panel lists the matched transactions. Use it to confirm which customer payments and refunds are included in the payout before exporting or reconciling the bank movement in your finance workflow.

## What to do when a payout is missing

If an expected payout does not appear as matched:

* Check that the destination bank account is connected and syncing successfully
* Confirm that the payout is an automatic Stripe payout
* Confirm that the payout amount and currency match the bank transaction
* Wait for the next bank transaction refresh if the payout has just arrived
* Check whether the bank transaction is already linked to an invoice reconciliation

<Info>
  If a payout still does not match, reach out via the in-app chat with the bank
  transaction date, amount, currency, and provider payout ID.
</Info>

## Related pages

* [Payment orchestration](./orchestration)
* [Payment methods](./payment-methods)
* [Invoice reconciliation](../invoices/reconciliations)


# Scheduled transactions
Source: https://docs.hyperline.co/docs/payments/scheduled-transactions

Schedule future Hyperline transactions on a chosen payment method and date — useful for installments or splitting an invoice across methods.

Hyperline allows you to schedule a transaction with a specific payment method at a custom future date, for a custom amount. This is particularly helpful to create payment installments for customers who wish to pay the invoice in multiple installments.

Scheduling a transaction can be done on all allowed payment methods for a customer, enabling multiple methods for the same invoice to be used.

<Frame>
  <img alt="" />
</Frame>

## Schedule a transaction

It can be accessed while creating a new invoice, editing an invoice or by clicking on "schedule transactions" in the transactions section.

<Frame>
  <img alt="" />
</Frame>

<Info>
  Transactions can only be scheduled on draft, to pay and partially paid invoices.
</Info>

## Edit a transaction

All transactions can be edited after they have been created but before they are executed, as long as they are in a `scheduled` status.

All transactions with a manual payment method (bank transfer, outside of Hyperline) can be edited afterwards without any limitations.

## Execute transactions

Transactions with automated payment methods are processed at **the beginning of each hour**, after the scheduled process date has passed.


# Price books
Source: https://docs.hyperline.co/docs/price-books/overview

Extend the Hyperline product catalog with price books, giving specific roles or customers tailored pricing on quotes and subscriptions.

## What is a price book?

A price book extends the prices in your product catalog. It can be created for specific user roles or all users within your organisation, allowing fine-grained control over product pricing.

Users with access to a price book can assign it to a customer or select it when choosing a price for a product they're adding to a quote or subscription.

## Create a price book

To create a price book, go to the [products section](https://app.hyperline.co/app/products) of the Hyperline interface.

<Steps>
  <Step title="Click on 'New price book' from the product catalog">
    From there, you will see a dropdown with "Default catalog". Click on it and
    select "New price book".

    <Frame>
      <img />
    </Frame>
  </Step>

  <Step title="Fill in the details">
    Fill in the details of the price book and the user roles who can access it.

    <Frame>
      <img />
    </Frame>
  </Step>

  <Step title="Click on 'Save changes'" />
</Steps>

## Add and manage prices in a price book

<Steps>
  <Step title="Click on 'Actions' then 'Add products'">
    <Frame>
      <img />
    </Frame>
  </Step>

  <Step title="Select the products you want to add to the price book">
    <Frame>
      <img />
    </Frame>
  </Step>

  <Step title="Click on the 'Save' button" />
</Steps>

Once your products are added, they will be prefilled with the existing prices from your main catalog.

<Frame>
  <img />
</Frame>

Note that you can only edit the prices from the price book section. The rest of the product information is for reference only.

<Frame>
  <img />
</Frame>

## Assign a price book to a customer

If a customer is assigned a specific price book, its prices will be used by default when creating a subscription or quote for them.

<Steps>
  <Step title="Click on the 'Edit' button">
    <Frame>
      <img />
    </Frame>
  </Step>

  <Step title="Select the price book you want to assign">
    <Frame>
      <img />
    </Frame>
  </Step>

  <Step title="Click on the 'Save' button" />
</Steps>

## Apply a given price book when assigning a subscription or a quote

When creating a subscription or a quote, you can choose which price book to use. If a price book is already set for the customer, it will be selected by default.

<Frame>
  <img />
</Frame>

You will see the price book used for the product in the subscription details.

<Frame>
  <img />
</Frame>


# Products and prices
Source: https://docs.hyperline.co/docs/products/overview

Manage your product catalog in Hyperline: define products, pricing models, currencies, intervals, and reusable price configurations for billing.

In Hyperline, a product represents anything you sell to your customers. This can be a software, a capability, a service, etc.
These products are managed in a **products catalog**, an interface allowing you to have a complete overview of your offering and manage in a single place the associated and reusable prices based on various parameters (currency, location, market, interval, duration, etc).

Setting up products enables the creation of pre-configured plans, subscriptions, or one-time payments for your customers.

Products can also grant [features and entitlements](../entitlements/overview), such as access to an integration, included seats, or a usage limit. Use product entitlements when a billed product should also define what the customer can access.

## Accounting mappings

Use the product **Accounting** section to map a product to the external accounting record used by your accounting integration. These mappings are used when Hyperline sends invoice lines to connected accounting providers.

Depending on the connected provider, you can configure:

| Field            | What it controls                                                                                               |
| ---------------- | -------------------------------------------------------------------------------------------------------------- |
| **Product code** | The product, item, or service identifier sent to the accounting provider for invoice lines using this product. |
| **Account code** | The GL account code used by integrations that read account codes directly from the product.                    |

### Bulk update accounting mappings

When you need to update several products at once, use the product catalog bulk action instead of opening each product individually:

1. Go to **Catalog** > **Products**.
2. Select the products you want to update.
3. Click **Bulk update**.
4. Update the accounting fields, such as **Product code** or **Account code**.
5. Click **Save**.

<Tip>
  Map products before running a first invoice sync. Missing product mappings can stop synchronization until the affected products are corrected and retried.
</Tip>

## Types of product

Hyperline enables you to represent a variety of products for sale by leveraging four product categories.

### Fee

A "flat fee product" refers to a product or service for which the cost is a **fixed**, **consistent charge**. It means that the customer or client pays a predetermined, flat fee, regardless of usage, quantity, or time duration. This contrasts with usage periods where the cost may fluctuate based on factors like usage, consumption, or time.

This product can be used for **subscription fees**, **fixed-rate services**, **addon items**, or **additional fixed costs**. This provides predictability for your customer, as they know exactly how much they will pay without unexpected variations in costs.

<Note>
  For example, this product can be used to bill a fixed platform access to a software, or an onboarding fee.
</Note>

<Frame>
  <img />
</Frame>

This type of product can be:

* included in subscriptions using the **Allow product to be added to a subscription** option
* billed separately using the **Allow this product to be charged as a one-time payment** option

**Pricing model**

This product supports [flat fee](#flat-fee) prices.

### Seat

A "seat product" refers to a type of licensing where the cost of a software application or service is based on a number of items also named "seats" (users, accesses, licenses, etc).

This kind of product allows scalability, where customers can add or remove seats as needed, making it flexible for businesses with changing requirements.

<Note>
  For example, this product can be used to bill a specific number of user licenses. Each license allowing one person to use a software or service.
</Note>

<Frame>
  <img />
</Frame>

This type of product can be included in subscriptions with the ability to link to product data for automatic adjustment of billable items or manual configuration.

Seat products also support **connected seats**, where the seat count is automatically tracked via an [aggregator](/docs/usage/aggregators) (count operation). This enables automated metering with background updates and customized payment terms, such as yearly pro-rated charges based on peak user counts.

<Note>
  Learn more about connected seats in our [Automated seat-based billing](/docs/subscriptions/connected-seats) guide.
</Note>

**Pricing models**

This product supports [volume](#volume), [bulk](#bulk), and [bundle](#bundle) prices.

### Usage

A "usage-based product" refers to a type of product where the cost is directly tied to how much your customer uses or consumes the product. In this model, customers are typically charged based on their actual usage, rather than a flat fee.

This kind of product offers flexibility, allowing customers to pay for what they actually use with a cost varying with the amount or extent of usage. It enables a "pay-as-you-go" or "pay-per-use" model where customers are billed periodically based on their usage during that period.

<Note>
  For example, this product can be used to bill data transfer in gigabytes, cloud computing in CPU hours, or the number of API calls in a SaaS product.
</Note>

<Frame>
  <img />
</Frame>

This type of product is related to usage data measured using `events` representing specific occurrences or happenings that need to be billed during a specific period. Detailed usage reports are also provided, making billing transparent and providing clarity on how charges are calculated.

**Pricing models**

This product supports [volume](#volume), [bulk](#bulk), and [basis points (BPS)](#basis-points-bps) prices.

#### Metering configuration

A usage-based product must be linked to an [aggregator](/docs/usage/aggregators) that defines how events are transformed into a billable metric. Aggregators support two operations: **count** (number of events) and **sum** (total of a numeric property). Additional filters can be configured on the aggregator to narrow down eligible events based on custom fields (strings, numbers, or booleans) from your system.

**Price metering filters**

In addition to configuring metering for the product, you can set metering filters for each price. This allows you to define pricing based on specific criteria, enabling complex pricing matrices and price points based on specific usage parameters and values.

For example, if you offer cloud computing services, you can apply different prices based on compute instance type or region. Similarly, if you process banking transactions, you can apply specific fees depending on the scheme or card configuration.

<Frame>
  <img />
</Frame>

### Credit

A "credit product" represents a granted quota that customers can pay for upfront and consume over time. Each customer has a **single shared balance** that is automatically debited as eligible usage events come in — so credits act as a prepaid layer on top of your usage data.

This kind of product is useful when you want to decouple purchase from consumption: customers buy a quantity of credits, and any combination of metered actions draws from the same balance until it is exhausted or topped up.

<Note>
  For example, this product can be used to bill AI inference time, where 1 GPT-4 request consumes 5 credits, 1 GPT-3 request consumes 1 credit, and 1 image generation consumes 10 credits — all from the same balance.
</Note>

<Frame>
  <img />
</Frame>

A credit product is linked to one or more [aggregators](/docs/usage/aggregators), each with a **weight** that defines how many credits one unit of usage consumes. All aggregators draw from the same balance.

**Pricing models**

This product supports [volume](#volume), [bulk](#bulk), and [bundle](#bundle-1) prices:

* **Volume** applies progressive prices across quantity tiers.
* **Bulk** uses the tier reached by the total quantity to price all credits.
* **Bundle** offers predefined quantity and price combinations.

When you add the product to a plan or subscription, Hyperline uses the assigned credit quantity and the selected catalog price to calculate the amount. The resulting amount is stored as a fixed fee on the subscription while retaining its catalog pricing context.

For the full setup flow, customer-level balance management, expiration rules, and auto-topup, see [Set up credits on your account](/docs/credits/overview).

### Bundle

A "bundle product" groups several existing products into a single offering, sold to your customers as one logical unit. This is useful when you want to package complementary products together — for example, a base subscription combined with a quota of API calls and a number of seats — and bill them as a single item.

<Note>
  Don't confuse a **bundle product** (a product *type*, described here) with **bundle pricing** (a *pricing model*, described [below](#bundle-1)). A bundle product wraps multiple products together; bundle pricing offers predefined quantity/price packages on a single product. The two are independent and can be used separately.
</Note>

**Components and revenue allocation**

A bundle is composed of one or more **components**, each pointing to an existing product in your catalog (any type — fee, seat, or usage). Each component carries a **percentage** that defines how the bundle's revenue is allocated to that product. The percentages of all components must sum to 100%.

This allocation drives revenue recognition (each component's share is recognised against the underlying product) and, when configured, the per-line breakdown shown to your customers on the invoice.

**Display mode**

Bundles support two display modes that control how they appear on invoices:

* **Single line** — the bundle is shown as one line item on the invoice. The component breakdown is tracked internally for reporting and accounting, but the customer only sees the bundle as a whole.
* **Ventilated** — each component is shown as its own line item on the invoice, with amounts split according to the configured percentages. Use this when your customers expect to see exactly what is included in the bundle and at which value.

**Exclusive components**

Bundles offer an option to mark their components as **exclusive to the bundle**. When enabled, the underlying products can only be sold as part of this bundle and won't appear on their own in quotes or subscriptions. Disable this option if you also want to sell the same products independently outside of the bundle.

**Pricing models**

This product supports [volume](#volume), [bulk](#bulk), [packaged](#packaged), and [bundle](#bundle-1) prices.

***

## Pricing models

Products in Hyperline support a variety of pricing models: **flat fee** pricing, **volume** pricing, **bulk** pricing, **bundle** pricing, and **basis points (BPS)** pricing.

### Parameters

Each product can also contain multiple prices (of different models) depending on different parameters: **currency**, **country**, **interval**, and **commitment** period. This enables you to represent all the cases you propose with fine granularity, depending on the specific characteristics of the markets you operate in, or how you wish to adjust pricing based on your customers' engagement with your service.

<Frame>
  <img />
</Frame>

In the example above, the product costs 200€ per month except for UK customers where it's 220£ per month, or 2200€ per year except for customers committed 2 years where the price is reduced to 2000€ per year.

<Note>
  The more specific or narrowed parameter values (such as a specific country or a specific commitment period) take precedence over the broader values (such as "all").
</Note>

### Flat fee

Predetermined, fixed and unchanging price.

<Frame>
  <img />
</Frame>

### Volume

Cost per unit or item is adjusted proportionally to the quantity of items purchased or consumed. Usually, the more a customer buys, the lower the cost per unit becomes.

Volume pricing often involves multiple price tiers, which can be used to change the price depending on certain volume thresholds.

<Frame>
  <img />
</Frame>

In the example above, the customer is billed 50€ per unit between 0 and 10 then 40€ per unit between 10 and 50, then 20€ per unit, so 2360€ for 63 units.

We offer you a preview of the price evolution depending on the quantity which can help you have an overview of the trend a price can have; and a preview of the rendering of the price for your customer (e.g. on their checkout page).

#### Pay tier in full

The "Pay tier in full" option can be activated on a per-tier basis. This option allows you to charge the full price of the tier (i.e. `price per unit` `⨉` `to` value) if the consumption is contained in this tier range.

<Frame>
  <img />
</Frame>

In the example above, the customer is billed 250€ for this product between 0 and 5 units regardless of their consumption, then a progressive price for higher levels (e.g. 370€ for 9 units).

### Packaged

As per a volume pricing, a packaged pricing is adjusted proportionally to the quantity of items purchased or consumed, usually involving multiple price tiers.

The difference is that you can define packages of units, allowing you to define a price for a quantity of items inside a specific tier.

<Frame>
  <img />
</Frame>

In the example above, the customer is billed 6€ per 20 units if less than or equal to 200, then 4€ per 20 units if more than 200 (e.g. so 100€ for 400 units).

### Bulk

The total number of units determines the tier used and therefore the cost of all units. Reaching a higher tier value will decrease the price per unit.

<Frame>
  <img />
</Frame>

In the example above, the customer is billed 50€ per unit if less than or equal to 10 or 30€ per unit if more than 10, so 1020€ for 34 units.

As with volume pricing, the "Pay tier in full" is also available, and we offer an overview of the price evolution and final rendering on the customer's checkout page.

### Bundle

Bundle pricing allows you to configure predefined bundles with specific quantity/price combinations. This model is particularly useful for seat-based products where you want to offer only specific package options to customers.

With bundle pricing, customers can only select from the predefined bundles you configure when creating quotes and subscriptions, rather than choosing any arbitrary quantity.

<Card title="Example 💡">
  A software company offers user licenses in predefined bundles: 5 seats for $100, 10 seats for $180, or 25 seats for \$400. Customers must choose one of these exact bundles rather than selecting a custom number of seats.
</Card>

This pricing model is also used for credit products, where you can define packages of credits at fixed prices (e.g., 1000 credits for $50, 5000 credits for $200).

### Basis points (BPS)

Method used to calculate prices based on a given percentage applied on the number of items considered in the computation (i.e. usage billed for the period). Tiers can be defined to vary this percentage.

As with volume pricing, the "Pay tier in full" is also available, and we offer an overview of the price evolution and final rendering on the customer's checkout page.

## Translating product names

If you have an international audience, it's important to have your products correctly translated on invoices and hosted pages.

On the product page, you can add translations for the name and the public description by clicking on the globe icon.
Once saved, we will update the portal, checkout and new invoices will use the translations when appropriate.

<Frame>
  <img />
</Frame>

### Hosted pages rules

On hosted pages, the translations being used are, by order of priority:

* Customer's browser language (if the customer has defined Italian as their primary language, that's what we will use)
* Customer's language set on Hyperline
* Customer's country (if the customer's address is in Italy, we'll use Italian translations)
* English
* Default product name


# Custom properties
Source: https://docs.hyperline.co/docs/properties/overview

Define custom properties in Hyperline to store extra data on customers, products, subscriptions, and invoices, and use them across templates.

Flexibility and customization are key aspects we aim to provide in Hyperline. To achieve this, we allow you to define custom properties so that you can represent and store all the extra data you need.

Custom properties can be defined and associated with **customer**, **product**, **subscription**, and **invoice** entities. Subscription custom properties can also be used in subscription templates. Furthermore, values are structured with a range of types including **text, number, boolean, date, and a select list** of predefined values.

### Use cases

Custom properties provide a wide range of possibilities. For example, they can be used to represent additional fields for your customers, integrate extra billing details into your subscriptions or subscription templates, assist in entitlement and feature flagging by representing features activatable on specific products or subscriptions. These are just examples, and they can be customized to meet any specific needs based on your use case.

## Create a custom property

<Steps>
  <Step title="Navigate to Settings then Custom properties" />

  <Step title="Click on New custom property" />

  <Step title="Fill the form">
    <Frame>
      <img />
    </Frame>

    You will be asked to enter a name, a slug (a unique identifier mainly used for technical integration using the API), the property type, and the entities on which the custom property will be available.

    Additionally, you can decide to activate this custom property only for technical purposes, meaning that it won't be editable in Hyperline's interface but will only be available through the API.
    When this option is untoggled, the field is both editable in the interface and the API.
  </Step>
</Steps>

## Managing custom property values

When created, the custom property can be found on the related entity in the interface.

On the **customer**, the custom properties appear at the bottom of the information panel on the customer details page.

<Frame>
  <img />
</Frame>

For **products**, they will appear in a dedicated box on the product in the 'Advanced settings' section.

<Frame>
  <img />
</Frame>

For **subscriptions**, you can set the value in the second step of the subscription assignment flow. The same subscription custom properties are available when configuring a subscription template.

<Frame>
  <img />
</Frame>

For **invoices**, you can set the values from the invoice details when creating or editing an invoice. When an invoice is generated from a subscription, Hyperline automatically copies the subscription's custom property values to the invoice when the same custom property is available on both entities. You can still edit the invoice value afterward when the invoice can be updated.

<Note>
  Automatic copying only applies to custom properties that are available on both the **subscription** and **invoice** entities.
</Note>

## Filtering by custom properties

You can filter customers, subscriptions, and invoices by their custom property values in the respective list views.

When you create custom properties for customers, subscriptions, or invoices, filter controls automatically appear in the filters dropdown on the **Customers**, **Subscriptions**, and **Invoices** pages. The filter type depends on the custom property type:

* **Boolean properties**: Display as a dropdown with **On** and **Off** options
* **Select properties**: Display as a dropdown with the predefined values you configured

To filter by custom properties:

1. Navigate to the **Customers**, **Subscriptions**, or **Invoices** page
2. Click the filters dropdown
3. Select the custom property filter you want to apply
4. Choose the value to filter by

The list will automatically update to show only records matching your selected criteria.

<Note>
  Only boolean and select-type custom properties are available as filters. Text, number, and date properties cannot be used for filtering in the interface.
</Note>

<Note>
  Custom properties marked as "API only" will not appear in the filter panel.
</Note>

## Displaying custom properties on hosted pages

For now it is only available for the **customer** portal page.

You can decide to select which custom properties to display on the customer portal by navigating to the **Settings** > **Hosted pages** section.

<Frame>
  <img />
</Frame>

## Using the API

You can [create](../../api-reference/endpoints/custom-properties/create-custom-property), [retrieve](../../api-reference/endpoints/custom-properties/list-custom-properties) and [manage](../../api-reference/endpoints/custom-properties/update-custom-property) custom properties using the API.

Additionally, you can retrieve the values using the `custom_properties` field when fetching a [customer](../../api-reference/endpoints/customers/get-customer), [product](../../api-reference/endpoints/products/get-product), [subscription](../../api-reference/endpoints/subscriptions/get-subscription), or [invoice](../../api-reference/endpoints/invoices/get-invoice). You can also set invoice custom properties when you [create](../../api-reference/endpoints/invoices/create-invoice) or [update](../../api-reference/endpoints/invoices/update-invoice) an invoice through the API.

Subscription template configurations use the same `custom_properties` field as subscriptions when you [create](../../api-reference/endpoints/subscriptions->-templates/create-subscription-template-configuration) or [update](../../api-reference/endpoints/subscriptions->-templates/update-subscription-template-configuration) a configuration through the API.

### How this differs from the `properties` field

The `properties` field was introduced in the initial step, but it lacks structure (e.g., it is not named or typed) and is not manageable through the interface for non-technical users.

While this field can still be utilized to store unstructured technical details on supported entities, we recommend using custom properties when possible to ensure safety and better manageability.


# Quote approval
Source: https://docs.hyperline.co/docs/quotes/approval

Add multi-step approval workflows to Hyperline quotes so sales managers and finance can review and approve deals before they reach the customer.

You have a large or growing sales team and want more control over the quotes being created? Hyperline allows you to add approval workflows before a quote is sent to a customer for signature.

## Approval workflows

Approval workflows let you define custom rules to automatically require approval for quotes that meet specific criteria. You can configure multi-step approval processes with individual or role-based approvers, ensuring the right people review quotes before they're sent to customers.

<Info>
  This feature is available on demand. Contact our support if you are interested.
</Info>

### Configure approval workflows

To set up approval workflows:

1. Go to **Settings** > **Approvals**
2. Open **Approval workflows**
3. Click **Create workflow** to add a new approval workflow
4. Configure the workflow rules and approval steps
5. Save the workflow

You can create multiple approval workflows. When a quote matches multiple workflows, the one with the highest priority (lowest number) is applied.

### Rules

Rules determine when a quote requires approval. You can combine multiple conditions using AND/OR logic:

* **Total amount**: Trigger approval when the quote total exceeds a specific amount
* **Discount amount or percentage**: Require approval for quotes with discounts above a threshold
* **Products**: Trigger approval when specific products are included in the quote
* **Coupons**: Require approval when certain coupons are applied
* **Subscription template**: Require approval when the quote uses one of the selected subscription templates
* **Trial period**: Trigger approval based on trial period duration
* **Contract auto-renew**: Trigger approval based on the subscription auto-renew setting
* **Contract clauses**: Require approval when specific reusable clauses are included in the quote contract terms
* **Modified contract clauses**: Require approval when a reusable clause has been edited in the quote before validation
* **Terms & conditions**: Require approval based on the quote contract terms
* **Customer invoicing entity**: Require approval based on the invoicing entity assigned to the quote's customer
* **Creator role**: Require approval based on the role of the user creating the quote
* **Quote attachment**: Trigger approval based on whether an attachment is present on the quote. Via the API, this maps to the `has_attachment` field — use `eq` with `false` to require approval when no attachment is attached, or `eq` with `true` to require approval when one is

<Card title="Example 💡">
  You can create a workflow that requires approval when:

  * The total amount exceeds \$50,000 **OR**
  * The discount percentage is greater than 20% **OR**
  * A specific premium product is included **OR**
  * A required contract clause is included **OR**
  * A reusable clause has been modified

  Within each condition, you can use AND logic. For example, require approval when the total amount exceeds \$50,000 **AND** the discount is greater than 10%.
</Card>

### Approval steps

Each workflow can include one or multiple approval steps. Steps are processed sequentially—a quote must complete all steps before it's fully approved.

For each step, you can configure:

* **Step name**: A descriptive name for the approval step (e.g., "Sales Manager Review", "Finance Approval")
* **Approvers**: Select individual team members or roles who can approve at this step
* **Approval requirement**: Choose whether **all** approvers must approve or if **any** approver can complete the step
  * **All approvers**: Every selected approver must approve before moving to the next step
  * **Any approver**: Only one approval from the selected approvers is needed

<Card title="Example 💡">
  A three-step approval workflow for large deals:

  1. **Sales Manager Review** (any sales manager can approve)
  2. **Finance Approval** (any finance team member can approve)
  3. **Executive Sign-off** (the CFO or CEO must approve)
</Card>

### Notifications

When a quote requires approval, Hyperline automatically notifies the relevant approvers:

* **Email notifications**: Approvers receive an email when their approval is needed
* **Delegated approver notifications**: If an approver has an active delegation, the delegated approver also receives the approval request email
* **Slack notifications** (optional): You can connect a Slack channel to each approval workflow. When approval is needed at any step, a notification is sent to the configured channel with details about the quote, requester, workflow step, and approvers

Configure Slack notifications in the workflow settings by selecting the channel where notifications should be sent. Learn more about [Slack integration](/integrations/slack).

Quote approval request notifications can also be delivered through each user's personal notification channels. Users can manage these from **Profile** > **Notifications**, including Slack DMs when Slack is connected. Slack DMs include the quote details, the quote PDF in a thread, and actions to **Approve**, **Reject**, or **Open in Hyperline**. Learn more about [profile notifications](/docs/account/users-permissions#manage-profile-notifications).

### Workflow priority

If you have multiple approval workflows, you can set their priority order. When a quote matches multiple workflows, only the workflow with the highest priority (lowest number) is applied.

To adjust priority, drag and drop workflows in **Settings** > **Approvals** > **Approval workflows**.

## Approval delegations

Approval delegations let an approver temporarily give another active team member the ability to approve or reject quote approval requests on their behalf. Use them when an approver is out of office or when another team member needs to cover approvals for a defined period.

A delegated decision counts as a decision from the original approver, while Hyperline also records which user actually approved or rejected the request.

<Card title="Example 💡">
  A finance manager is away for one week and delegates approvals to another
  finance team member. During that week, the delegated approver receives quote
  approval requests, can approve or reject them, and their decisions count as
  the finance manager's decisions in the workflow.
</Card>

### Create an approval delegation

To create a delegation:

1. Go to **Settings** > **Approvals**
2. Open **Delegations**
3. Select the original approver whose approvals should be delegated
4. Select the new approver who should receive the delegated approvals
5. Choose the delegation start and end dates
6. Add a reason, if needed
7. Save the delegation

Approvers can create or revoke their own delegation from the **Profile** tab on their profile page. Team members who can manage approvals can create or revoke delegations for other approvers from **Settings** > **Approvals** > **Delegations**.

<Note>
  The original approver, new approver, and user creating the delegation must be
  active team members. A user cannot delegate approvals to themselves.
</Note>

### How delegated approvals work

During the delegation period, the delegated approver can find delegated quote approval requests with the **Need your approval** filter, alongside requests assigned to them directly.

When the delegated approver approves or rejects a request:

* The workflow treats the decision as coming from the original approver
* Hyperline records who acted on behalf of the approver
* The same **All approvers** and **Any approver** step rules still apply

If a delegated approver is covering more than one approver for the same approval step, Hyperline asks them to choose which approver they are acting on behalf of before they approve or reject.

### Manage delegation periods

Delegations are time-bound. A delegation only applies between its start and end dates, and you can revoke it before the end date if it is no longer needed.

Keep these rules in mind:

* Expired and revoked delegations no longer grant approval rights
* Inactive users are excluded from delegated approval filters and notifications
* An approver cannot have overlapping active delegations for the same period
* Past delegated decisions remain in the approval history after a delegation expires or is revoked

## Approval process

### For quote creators

When you create a quote that matches an approval workflow:

1. After validating the quote, it automatically moves to **Pending approval** status
2. You'll see which approval workflow was triggered and which step is currently active
3. You receive email notifications when:
   * Your quote is approved and ready to send
   * Your quote is rejected with a reason from the approver
   * An approver requests changes (quote moves to **Change requested** status)

If your quote is rejected or changes are requested, you can:

* Edit the quote to address the approver's feedback, then resubmit for approval
* Void the quote if you decide not to proceed

### For approvers

When a quote requires your approval:

1. You receive an email notification (and a Slack notification if configured)
2. Access the quote from the email or Slack link, or find it using the **Need your approval** filter in the quotes list. This filter also includes requests delegated to you.
3. Review the quote details
4. Click **Approve** or **Reject**:
   * **Approve**: The quote moves to the next approval step (or becomes approved if it's the final step)
   * **Reject**: You can provide a reason or comment. The quote moves to **Change requested** status, and the creator is notified

If you receive a Slack approval request, you can approve or reject directly from Slack. If another approver has already acted, the Slack message updates to show the current approval state.

## Quote statuses

Quotes in the approval process can have the following statuses:

* **Pending approval**: The quote is waiting for approval at one or more steps
* **Change requested**: An approver rejected the quote and requested changes. The quote creator must edit the quote or void it
* **Approved**: All approval steps are complete. The quote can now be sent to the customer for signature

You can filter quotes by these statuses in the quotes list, and use the **Need your approval** filter to quickly find quotes waiting for your review.

***

## Simple quote approval permission

When the approval workflows feature (described above) is not enabled, Hyperline provides a dedicated **quote approval permission**. When a user without this permission creates and validates a quote (from the UI or a CRM), the quote moves into a **Pending approval** state and requires another user with the approval permission to approve it before it can be sent for signature.

In this flow, Hyperline does **not** offer automatic notifications to users with the quote approval permission when a quote requires approval.

However, you can set up dedicated notifications (email, Slack message, etc.) using external workflow tools like [Zapier](/integrations/zapier) or custom code.
Hyperline provides a dedicated webhook event — `quote.approval_requested` — triggered whenever a quote is saved and requires approval.


# Quote for one-off invoice
Source: https://docs.hyperline.co/docs/quotes/one-off-invoice

Create Hyperline quotes for one-off invoices to charge non-recurring fees, project work, or one-time setup costs that customers can sign and pay.

If you wish to charge a one-off invoice to a customer, you can create a quote for it. This is ideal for one-time fees, additional charges, or any other non-recurring billing.

## Create a quote for a one-off invoice

<Steps>
  <Step title="Access the form">
    <Frame>
      <img alt="" />
    </Frame>

    * from the [quotes page](https://app.hyperline.co/app/quoting/quotes), click `new quote` and select `Quote for one-off invoice` then select the customer
  </Step>

  <Step title="Add the invoice to the quote">
    <Frame>
      <img alt="" />
    </Frame>

    You will find the familiar form for one-off invoice creation where you'll be able to pick products from your catalog and add coupons, edit the invoice period and notes.

    <Note>
      Any product from your catalog can be added to a one-off invoice. Whatever its usual pricing model, it is charged as a fixed amount (quantity × unit price).
    </Note>

    <Frame>
      <img alt="" />
    </Frame>

    The invoice issue date is set to `quote signature` and cannot be changed. It means that the invoice will be emitted once the quote is signed.
  </Step>

  <Step title="Configure quote">
    <Frame>
      <img alt="" />
    </Frame>

    From now, the process is the same for a [new quote](./overview):

    * Configure owner, expiration date and required information to sign the quote
    * Choose to display the quote value on the document
    * Add a note for the customer and contract terms
    * Add additional documents like the updated contract

    On the Quote PDF, the invoice configuration will be displayed.
  </Step>

  <Step title="Send the quote">
    Once the quote is saved, it will turn to the `ready to send` status. Review the quote configuration and decide to send it via email or generate a public link and send it by yourself. Note that by using the latter, the email reception and openings will not be tracked.

    <Frame>
      <img alt="" />
    </Frame>
  </Step>

  <Step title="Pending signature">
    Once the quote has been sent, it will turn to the `pending signature` status. At this stage, the quote can be edited again; note that it will turn to the `draft` status and the customer will not be able to access the link anymore until it is saved and live again by clicking on `generate public link`.

    <Note>
      Until the quote is signed, no changes can be made to the invoice. To allow updates again, you can delete the quote.
    </Note>

    During this stage, the invoice can be accessed in the quote details page.
  </Step>

  <Step title="Once quote is signed">
    Once the quote is signed, the invoice will be emitted, in `to_pay` status and the payment is ready to be collected. The quote and invoice will be linked together.

    <Frame>
      <img alt="" />
    </Frame>
  </Step>
</Steps>


# Create and send quotes
Source: https://docs.hyperline.co/docs/quotes/overview

Run a full CPQ process in Hyperline: configure products, set custom prices, generate quotes for signature, and auto-activate the subscription.

Hyperline provides a **complete CPQ process**, allowing salespeople to configure products, set a pre-configured or custom price and generate a quote ready for signature, facilitating internal approval process for customers.

Once a quote is accepted and signed, the related subscription can be automatically activated, starting the billing and invoicing cycle without any manual actions required.

## Create new quote

To create a quote, head to the **Quoting** section and click **Create quote**. A quote can be created and saved as draft to be completed later. Multiple quotes can be created for the same customer.

<Frame>
  <img />
</Frame>

### Quote template

Quotes can be created from an existing template, configured in the templates page. Learn more about [quote templates](./templates) on the dedicated documentation page.

<Frame>
  <img />
</Frame>

If you want to create a quote from scratch, select **Configure manually**.

### Name

By default, the quote will be named "Quote ". You can rename it the way you want, using variables for dates and next quote number.

<Frame>
  <img />
</Frame>

### Settings

* **Expiration date** After this date, the customer will still be able to access the quote but won't be able to sign it.
  <Info>
    In Settings > Quoting, you can allow your customer to still sign the quote by toggling the option "allowed signature after expiration" in the signature section.
  </Info>
* **Quote owner** The salesperson responsible for the customer and contract. This can be changed later in the process, and may affect whether the quote requires approval based on your configured approval workflows.

<Frame>
  <img />
</Frame>

* **Require tax ID** Require company customers to provide a tax identifier before signing the quote. If local tax numbers are enabled for the invoicing entity, the customer can provide either a Tax ID or a local tax number. Validation and reverse charge enforcement are controlled from the invoicing entity's [tax settings](../invoices/tax-management#tax-enforcement-options).
* **Custom properties** (if they are configured on your account) Additionally, you can require your customer to fill specific pre-configured [custom properties](../properties/overview) during the quote signature flow. This is useful for non-standard information collection, like country-specific details.
* **Require payment method**, particularly useful when your customer pays by card or direct debit, as you can start invoicing and collect money directly once the quote is signed.
* **Require shipping details** Request the customer to add their shipping details as a required part of the quote signature flow.

### Subscription

<Frame>
  <img />
</Frame>

Quotes must include a subscription in order to be sent. By clicking on add subscription, you will open the familiar subscription assignment flow: select plan, configure contract and invoicing settings, add products, customize price configurations, add coupons. See more details in the [assign subscription](../subscriptions/create) dedicated page.

<Info>
  You can create a quote for a [one-off invoice](./one-off-invoice) or a [subscription update](./subscription-update) following a different flow.
</Info>

### Quote value

Every quote created must have a set value. This information can be hidden to the customer on the quote public page and PDF.

<Frame>
  <img alt="Quote Value" />
</Frame>

By default, the quote value is automatically calculated based on product prices, billing intervals, committed amounts, coupons, and the subscription or phase duration. You can edit this value to reflect a commercial adjustment that is not captured by the subscription configuration.

<Note>
  For usage-based products, Hyperline includes committed amounts in the quote
  value. Future usage beyond the committed amount is not estimated
  automatically.
</Note>

<Info>
  Only coupons with a duration > 12 months are taken into account in the quote value. If needed, manually edit the quote value to reflect the discount applied by the coupon.
</Info>

### Additional information

These fields are rich text fields, where text can be stylized to structure information, emphasize details and add hyperlinks. Both fields can be pre-configured in the quote template.

<Frame>
  <img alt="Quote Value" />
</Frame>

* **Note for customer** Freely add text that will be added to the quote header. It can be used to give contextual information to the customer ahead of signature.
* **Contract terms** Contract terms will be displayed after the subscription details. It can be used to give contractual information. Additionally, pre-configured clauses can be added to the quote by selecting them in the **Add from existing clause** selector. Added clauses can also be used in [approval workflows](./approval), including when their text is modified before validation.

### Documents

<Frame>
  <img alt="" />
</Frame>

When creating or editing a quote, you can attach documents in the additional information section. This allows you to include custom files such as terms of use or any other relevant document. These attachments can be directly displayed on the quote public page and PDF if the option is selected.

* **Accepted formats** `PDF`, `DOC`, and `DOCX`. Word documents are automatically converted to a signable PDF on upload, so they embed inline in the customer preview alongside PDFs.
* **Maximum file size** 5 MB per file.
* **Multiple files** You can select several files at once from the file picker, and drag documents to reorder them. The order defined here is the order shown to the customer.

### Display

Information displayed on the quote can be modified easily by clicking on the display button in the bottom floating bar. They can all be configured in the quote template.

<Frame>
  <img alt="" />
</Frame>

For general quote settings, you can show or hide the **first invoice amount**, **quote value**, and **documents preview**. For the subscription preview, you can show or hide **phase value** and **taxes**, and configure how **price tiers** are displayed.

### Custom quote layout (beta)

Update the quote layout the way you want with a "what you see is what you get approach", making the quote as easy to customize as a Notion document. Reorganize blocks, change the wording for all elements and add blocks anywhere.

<Frame>
  <img alt="Custom Layout" />
</Frame>

<Info>
  Enabling the custom layout fixes the quote in the customer language. It will no longer be dynamically translated based on the browser language.
</Info>

By default, the option is only enabled for Hyperline admins. This can be changed in Settings > Team > Roles > Edit.

## Send quote

Once finalized, the quote appears as `Ready to send`. At this stage, you can decide to:

* **Send quote** by email to your customer, with a custom message in the email body. This email will be tracked, and you will be able to see every time the customer opens it.
* **Generate public link** to share it with your customer in the way you prefer.

<Frame>
  <img alt="" />
</Frame>

After this, the quote will switch to a `Pending signature` status.

<Note>
  Once sent, you can resend the quote by email whenever you want to remind your customer to sign it. Simply use the 'Send quote' button in the 'Actions' dropdown to resend it.
</Note>

## Edit quote

A quote can be edited anytime as long as it has not been signed by the customer by clicking on "edit quote" in the actions dropdown. If edited, it will disable the public quote link and put the quote back to the `Ready to send` status.

## Update expiration date

You can update the quote expiration date at any time without editing the entire quote using the 'Update expiration date' action. This is useful if you need to adjust the date following a discussion with your customer or after the quote has expired.

<Tip>
  This action will not disable the existing quote public link.
</Tip>

## Public link

<Frame>
  <img />

  <img />
</Frame>

Hyperline offers a hosted public page to share a quote with your customer. On this page, the customer can view the entire quote details, access PDF attachments, fill in their billing details, and add their payment method (if required).

The customer can also accept and sign the quote directly from this page. See more details in the [quote signature page](./signature).


# Quote signature
Source: https://docs.hyperline.co/docs/quotes/signature

Collect customer signatures on Hyperline quotes — basic digital signature, DocuSign, Yousign, or countersigner workflows to formalize agreements.

Hyperline natively offers a module where a customer reviews and formally accepts a quote by providing their digital signature. This action confirms their agreement to the terms, conditions, and pricing outlined in the quote, allowing the service or product subscription to commence as per the specified terms.

## Basic signature

<Info>
  This is the default signature type used.
</Info>

This is the simplest form of signature offered by Hyperline. The signer simply needs to enter their name and tick a box to accept the quote (and any attachments).

<Frame>
  <img />
</Frame>

The basic signature doesn't have probative value but is useful if you need a simple and easy-to-implement quote confirmation step.

## Electronic signature

Hyperline Signature allows your customer to sign the quote with probative value.

It uses a secure electronic signature solution compliant with the requirements of Regulation 910/2014 of the European Parliament and Council on electronic identification and trust services for electronic transactions in the internal market (eIDAS).

The process is fully embedded into Hyperline and does not require additional configuration or implementation from you.

<Frame>
  <img />
</Frame>

For additional security, electronic signature requires a confirmation step with a verification code sent by email to the signer.

<Frame>
  <img />
</Frame>

Once signed, an audit trail document is available on your quote details page, providing proof of the legal signature's validity in case of any event such as a customer dispute.

<Info>
  This feature is available on demand. Contact our support if you are interested.
</Info>

### Yousign & DocuSign

You can also use your own Yousign or DocuSign account to sign quotes. This is useful if you already have a Yousign or DocuSign account and want to use it to sign quotes.

To use your own Yousign or DocuSign account, you need to connect it to your Hyperline account.

1. Go to **Settings > Integrations**
2. Click on **Yousign** or **DocuSign**
3. Follow the instructions to connect your account
4. Update the signature provider to **Yousign** or **DocuSign** on the quotes settings page

<Note>
  For Yousign, a Scale API plan is required.
</Note>

### Countersigner

When using electronic signatures, you can enable a countersigner (in Settings > Quotes settings) by specifying a name and an email address—typically someone from your organization. Once configured, future quotes will be automatically countersigned with this information after the customer completes their signature. No additional manual action is required.

This setting applies only to quotes created after the change.

### One-off countersigner

If you need a countersigner for a single quote only, use the countersigner setting temporarily before creating that quote.

1. Go to **Settings > Quotes settings**
2. Enable **Countersigner**
3. Enter the countersigner name and email address
4. Create and send the quote that needs countersignature
5. Return to **Settings > Quotes settings**
6. Disable or remove the countersigner so future quotes use your usual signature flow

Because countersigner settings apply only to quotes created after the setting is changed, this does not update quotes that already exist.

<Warning>
  Keep the setting enabled only while you create the quote that needs countersignature. Any other quote created while the setting is enabled will use the same countersigner.
</Warning>

<Info>
  The countersigner feature is not yet available for DocuSign.
</Info>

## External signature

If you prefer to manage the signature process yourself, do not want to use the Hyperline quote public page, or want your customer to sign a file manually, Hyperline offers an option to mark an existing quote as signed manually.

<Frame>
  <img />
</Frame>

In this flow, Hyperline is not responsible for the signature. However, using the 'Mark as signed' action, you can flag the quote as signed and optionally upload the corresponding PDF file.


# Use Hyperline CPQ with Stripe Billing
Source: https://docs.hyperline.co/docs/quotes/stripe-billing

Integrate Hyperline CPQ with your existing Stripe Billing setup to give sales a robust quoting workflow while keeping Stripe as the billing engine.

<img />

Hyperline CPQ can be integrated with Stripe Billing to provide your sales team with a robust CPQ solution, giving your customers a seamless contractualization experience while maintaining your existing Stripe Billing setup.

While **we recommend using Hyperline as your full billing platform** — to take advantage of its advanced capabilities and reduce the operational complexity and limitations of external billing solutions — this integration still allows you to create and manage quotes directly from Hyperline and your CRM. Hyperline will automatically orchestrate the related subscriptions in Stripe Billing and process customer payments through Stripe Payments.

With this setup, all data and billing activity monitoring can be handled in Hyperline, fully synced with your CRM, while continuing to leverage Stripe Billing as your existing billing engine and payment gateway.

## How it works

Hyperline provides powerful integrations with both Stripe and CRMs (HubSpot, Salesforce and Attio), alongside a complete CPQ solution.

Quotes for new subscriptions or subscription changes (upsell, cross-sell, etc.) can be created directly from your CRM using Hyperline's built-in widget, within Hyperline's interface, or via the Hyperline API.

Once a quote is approved and signed by your customer, Hyperline automatically creates or updates the subscription in Stripe Billing — with no manual intervention or additional technical effort required. Stripe Billing then manages the full billing lifecycle and payment processing.

All subscription details and related invoices are automatically synced from Stripe to Hyperline in real time, allowing you to monitor billing activity directly from Hyperline. This data is also pushed to your CRM, giving your operational and revenue teams full visibility.

## Prerequisites

* A Hyperline account with admin rights
* A Stripe account with admin rights
* CPQ and Stripe integrations enabled in Hyperline

## Setup

1. Go to the [Integrations](https://app.hyperline.co/app/settings/integrations) page in Hyperline
2. Click on "Connect" for Stripe
3. Optionally, click "Connect" for Salesforce or HubSpot

<Warning>
  Please contact our support team after completing the steps above. This process is not self-served and requires a manual operation on our side to enable the Stripe Billing orchestration logic in Hyperline CPQ.
</Warning>

### Import Stripe products catalog

Once connected, you can import your Stripe products and coupons catalog into Hyperline. In this setup, Stripe Billing remains the source of truth for configuring your products and coupons. All this data is automatically replicated and mapped to Hyperline concepts and settings (including product and coupon details, price types, variants, tiers, multi-currency setup, etc.).

1. Go to the [Products](https://app.hyperline.co/app/settings/products) page in Hyperline
2. Click on "Import from Stripe" on the top right corner
3. Go to the [Coupons](https://app.hyperline.co/app/settings/coupons) page in Hyperline
4. Click on "Import from Stripe" on the top right corner

Edits to products and coupons must be made in Stripe. Any changes will be automatically synced back to Hyperline.

<Note>
  After the initial import, we do not recommend manually reimporting products and coupons using the import buttons.

  All future updates (creation, modification, archival) made in Stripe will be automatically replicated to Hyperline in real time. Hyperline listens to Stripe webhooks under the hood to keep the data in sync.
</Note>

#### Tax behavior

By default, Hyperline only considers products/prices with "exclusive" tax behavior. All prices in Hyperline are considered excluding tax in the catalog, taxes being added at the quote/invoice level (depending on customer details).

This means **some Stripe products/prices might not appear in Hyperline** because they are ignored by the system during import.

Even if we strongly recommend using prices excluding taxes by default, if you are dealing with different tax behaviors in Stripe (inclusive or unspecified for example), you might need to check with our support team on the best way to handle this.

#### Archive products

While you can archive or delete products in Stripe, Hyperline also provides a way to archive products directly within the platform.

The key difference is that archiving a product in Hyperline does not archive it in Stripe. This allows you to decouple the product status between Stripe (for your internal needs) and Hyperline. A product archived in Hyperline will no longer be visible or available when creating new quotes.

1. Go to the [Products](https://app.hyperline.co/app/settings/products) page in Hyperline
2. Click on the product you want to archive
3. Click "Actions" > "Archive" button

#### Archive prices

In addition, following the same logic, you can archive a specific price of a product. The product will still be available when creating new quotes, but the archived price will no longer be suggested.

1. Go to the [Products](https://app.hyperline.co/app/settings/products) page in Hyperline
2. Click on the product you want to archive
3. On the related price configuration row, click the "Archive" button

### Import Stripe customers

After importing your products and coupons, Hyperline allows you to import your existing customers. With this action, Hyperline will automatically map Stripe customers within Hyperline, alongside their related payment methods.

New customers and changes to existing customers in Stripe — including payment methods being added or removed — will be automatically synced to Hyperline in real time.

<Info>
  This action is not available in the interface yet, but you can contact our
  support team to trigger it for you.
</Info>

### Import Stripe subscriptions and invoices

Using the same logic as for customers, subscription and invoice histories can be imported from Stripe. All subscription data will be mapped to Hyperline subscription, phase, subscription product and subscription coupon objects, and invoices to Hyperline invoice and line item objects.

Tracking and reporting in Hyperline are available for this data, and you can also query the historical data using the Hyperline API.

New subscriptions, subscription renewal details, invoice details, statuses, and PDF invoices will be automatically synced to Hyperline in real time.

## CRM widget

If you've connected your CRM to Hyperline, the related customer data (quotes, subscriptions, etc.) will automatically be displayed in the CRM widget. As a consequence, you can consult Stripe subscriptions data and invoices in your CRM. [Learn more about reconciling data](#reconcile-customers-between-tools).

This widget can be used in both the Account/Company and Opportunity/Deal objects in your CRM. The Contact object is also supported in HubSpot for B2C sales/use cases.

In addition to displaying data, the widget allows CRM users to create quotes directly from within the CRM. Hyperline's interfaces are embedded so the full Hyperline experience is available without leaving the CRM.

<Info>
  In this context, the CRM's CPQ and product catalog modules are not used.
  Hyperline delivers the complete CPQ flow and experience, surpassing the
  limitations, poor user experience, and lack of flexibility of built-in CRM
  modules, while providing more advanced capabilities and richer integrations.
</Info>

We suggest you follow these guides for more details:

* [HubSpot card](../../integrations/hubspot.mdx)
* [Salesforce component](../../integrations/salesforce.mdx)
* [Attio actions](../../integrations/attio.mdx)

### Creating Hyperline customers

When the widget is loaded on CRM pages, the related customer in Hyperline is looked up using the [reconciliation logic](#in-your-crm) to display the corresponding data.

If no match is found, Hyperline will create a new customer.

To prevent CRM users from creating a new Hyperline customer when no match is found, you can disable the "Allow creating new customer" option under your Hyperline [CRM settings](https://app.hyperline.co/app/settings/integrations).

When disabled and no match is found, the widget will display a message (e.g., "*This company has no associated Hyperline customer.*") and no data or actions will be available. This is particularly useful to avoid creating duplicates in your billing system or to ensure that the External ID field in your CRM is populated before displaying the widget — and therefore before any link is created between CRM and Hyperline customers.

## Create a quote

Following the setup (only the products import is required), you can start creating quotes directly from your CRM or Hyperline.

We suggest you follow these guides for more details:

* [Create and send quotes](./overview.mdx)
* [Quote for subscription update](./subscription-update.mdx)
* [Learn about quotes signature](./signature.mdx)
* [Configure reusable quote templates](./templates.mdx)

Once the quote is signed, Hyperline will automatically apply the related changes on the subscriptions in your Stripe account.

<Note>
  Some advanced Hyperline quote subscription configurations are not available in
  this flow, as we ultimately depend on Stripe's subscription capabilities,
  which can be more limited and less flexible than Hyperline's built-in logic.
</Note>

### Post-signature automation

By default, Hyperline automatically creates or updates the related subscription in Stripe Billing once a quote is signed. This is the recommended behavior, as it keeps both platforms in sync without any manual work.

For cases where you'd rather handle the Stripe subscription yourself — for example, when the deal requires a specific Stripe setup that can't be expressed through the quote, or when an existing subscription will be updated manually — you can disable this automation on a per-quote basis.

When configuring a quote, open the **Post-signature automation** section and switch off **Orchestrate Stripe Billing after signature**. Once disabled:

* After signature, no subscription will be created or updated in Stripe by Hyperline.
* A notice is displayed on the quote to remind your team that the subscription must be set up manually in Stripe.
* The rest of the CPQ flow remains unchanged: quote configuration, approval, signature, PDF, and CRM sync all keep working as usual.

The toggle can be changed at any time before the quote is signed. Access to this setting is restricted by permission (Manage quote activation), so it can be reserved for admins or specific roles in your team.

### Quote for subscription update

A quote for a subscription update always starts from an existing customer subscription. For subscriptions imported from Stripe into Hyperline, you can select the subscription you want to update to begin creating a quote for update.

## Manage invoices

### Payment terms

When configuring a quote or a Hyperline customer, you can set payment terms in days. This setting is then passed to Stripe when Hyperline creates the related subscription, populating the "days until due" parameter when the collection method is set to "send invoice" (i.e., bank transfer payments).

### Purchase order number

When configuring a subscription in a quote, you can enter a purchase order (PO) number. This number will be synced to the Stripe customer invoice settings as a custom field, so it is automatically displayed on the invoice PDF header (PO number) when the subscription is created in Stripe.

### Mark as paid

Imported unpaid Stripe invoices can be marked as paid in Hyperline. On the invoice details page, click "Actions" > "Mark as paid". The invoice will then appear as paid in Hyperline and be marked as paid (paid out of band) in Stripe.

## Customer payment methods

As previously mentioned, customer payment methods are imported from Stripe and displayed in Hyperline.

You can configure available payment method options in the [Payment](https://app.hyperline.co/app/settings/payment) settings page in Hyperline, for both automated payment methods (card, direct debit, etc.) and bank accounts used for manual bank transfers.

Customer payment methods can also be collected during the quote signature process. When creating a quote, you can select which payment method types you want your customer to use, and require method collection to sign the quote.

Then on the public quote page, your customer can enter their payment method details (card details, direct debit mandate, etc.). These details are automatically stored in the related Stripe customer, and Stripe Billing will then use them to charge future invoices.

### Bank transfers

You can choose for your customer to pay by bank transfer. To make this option available on quotes, first configure a bank account in Hyperline's **Payment** settings and enable it as a payment method.

When creating a quote, allow only bank transfers by selecting that bank account in the customer's payment method settings (all other payment method types can be disabled).

The bank account details will then be displayed directly on the quote:

* If Stripe supports bank transfers for the customer (based on currency, country, etc.), the Stripe virtual bank account number assigned to the customer will be shown.
* Otherwise, the bank account you configured in Hyperline will be displayed.

In this scenario, Stripe's customer balance mode will be used.

<Note>
  The bank account configured in Hyperline acts as the bank transfer payment
  method and fallback display. When Stripe can generate virtual bank account
  details for the customer, those Stripe details are displayed on the quote
  instead. You do not need to enable a separate Stripe virtual IBAN payment
  method in Hyperline.
</Note>

## Switch subscriptions to Hyperline

At some point, you may want to switch a subscription from Stripe Billing to Hyperline to take advantage of Hyperline's additional capabilities and features for managing the subscription lifecycle.

This can be done in a single click by selecting "Actions" > "Switch to Hyperline" on the subscription details page. Hyperline also offers the option to cancel the subscription in Stripe at the same time, helping you avoid future double invoicing and duplicate subscriptions between the two platforms.

### Impact on customers

With this flow, there will be no impact on your end customers: their payment methods will be imported from Stripe Payments, so they won't need to re-enter their card details or create a new direct debit mandate. Subscriptions will run in Hyperline with the exact same configuration as in Stripe Billing without service interruption. New invoices will be created and managed by Hyperline, so the only difference for end customers will be the invoice PDF layout, as it will be issued by Hyperline.

<Note>
  We recommend proceeding with this action carefully, and only after fully configuring your Hyperline account—especially the invoicing settings. Once switched, all upcoming subscription renewals and invoices will be managed and issued by Hyperline, while Stripe will continue to serve as the payment gateway to charge the customer.

  Don't hesitate to [contact our support team](mailto:support@hyperline.co) for any advice or assistance.
</Note>

## Reconcile customers between tools

Hyperline provides a way to reconcile customers between your CRM, Hyperline, and Stripe. This is useful for ensuring that data is consistent across all tools and for avoiding duplicates.

To achieve this, Hyperline customers have a dedicated External ID field, which serves as the unique identifier shared between HubSpot and Stripe. In most cases, this ID corresponds to your internal customer ID.

### In your CRM

In your CRM, create a custom field named `hyperline_external_id` for HubSpot or `HyperlineExternalId__c` for Salesforce on the Company/Account object.

Make sure this field is populated in your CRM records:

* You can leverage workflows to automatically fill this field with data from another field or source in your CRM, or have your team input it as part of your internal processes.
* If you don't have a dedicated ID, you can use the Stripe customer ID.
* You can also use the Hyperline customer ID.

This field value will be used to link the CRM entity to the corresponding Hyperline customer. This linkage is created the first time you interact with the Hyperline widget in the CRM.

<Note>
  Once a CRM entity is linked to a Hyperline customer, this link will be used for future uses of the widget for that entity, regardless of the value in the External ID field.

  If you need to unlink or change a CRM entity attached to a Hyperline customer: in the Hyperline customer details page, click the "Edit" under the "Integrations" section, and change the CRM entity ID.
</Note>

### In Stripe

With the same logic, a Hyperline external ID (`hyperlineExternalId`) key in the Stripe customer metadata can be used.

* If not configured: Hyperline will try to find the related Stripe customer by comparing the customer's external ID in Hyperline with the Stripe customer ID.
* If configured: Hyperline will look up the related Stripe customer using the `hyperlineExternalId` metadata on the Stripe customer.

This reconciliation logic is triggered only when attempting to look up a Stripe customer from a Hyperline customer for the first time Hyperline needs to create a new subscription or interact with Stripe and the customer is not yet linked to a Hyperline customer.

If no match is found, Hyperline will create a new Stripe customer and store the related Hyperline external ID in the metadata.

<Note>
  If the Stripe customer has already been imported into Hyperline (e.g., during
  the initial setup or after a customer was created in Stripe), the Hyperline
  and Stripe customers are already linked, and no reconciliation logic will be
  applied.
</Note>

### In Hyperline

The actual external ID value can be found on the Hyperline customer details page, under the Integrations section.

## Sync custom properties

### Customer custom properties

Syncing customer custom properties from CRM to Stripe, or simply from Hyperline to Stripe is also supported.

In Hyperline, you can create custom properties for your customers:

1. Go to the [Custom properties](https://app.hyperline.co/app/settings/custom-fields) page in Hyperline
2. Click on "Add custom property"
3. Enter a name, a slug, select a type, and select "Customers" as Enabled entities

If the Company/Account object in the CRM has a custom field with the same slug, the value will be synced from the CRM to the Hyperline customer custom property each time Hyperline syncs a customer from the CRM (i.e., when the widget is used in the CRM).

Hyperline customer custom properties are synced to Stripe as metadata on the Stripe customer. The custom property slug is used as the metadata key.

### Subscription custom properties

If you create a custom property enabled for the “Subscriptions” entities (using the same process as for customers above), you will be able to set its value when creating a subscription or when configuring a subscription as part of a quote, including from the CRM (via the embedded Hyperline UI).

When the Hyperline subscription is created in Stripe, the related custom properties are synced to Stripe as metadata on the Stripe subscription. The custom property slug is used as the metadata key.

## Dates and timezones

Hyperline supports timezone-specific settings per customer, while Stripe operates exclusively in UTC. This difference can cause dates to appear shifted by one day in Stripe.

For example, if a customer's timezone is set to `Europe/Paris` and a subscription is configured to start on **April 1**, Hyperline will represent this as **March 31 at 22:00 UTC** (during summer time, UTC+2). Since Stripe only works with UTC dates without timezone information, the subscription start date in Stripe will appear as **March 31** instead of April 1.

This is expected behavior and does not affect billing accuracy — the subscription will still start at the correct local time for the customer. The same logic applies to all date-based fields synced to Stripe (subscription start dates, phase transitions, etc.).

<Note>
  If date alignment in Stripe is important for your reporting or internal processes, we recommend setting all your customers' timezone to UTC in Hyperline. This ensures that dates in Hyperline and Stripe always match. Otherwise, customers with timezones ahead of UTC (e.g., Europe, Asia) may see dates shifted one day earlier in Stripe.
</Note>

## Connect multiple Stripe accounts

Hyperline allows you to connect multiple Stripe Billing accounts to a single Hyperline account. This is useful for organizations operating in multiple regions or managing different business units with separate Stripe accounts.

In this setup, you can import products and coupons from multiple Stripe accounts into your Hyperline product catalog.

Each Hyperline customer can be linked to a specific Stripe account (i.e., a single Hyperline customer may be associated with multiple Stripe accounts).

When creating a quote, Hyperline filters the list of available products and coupons based on the first product selected by the user creating the quote. This first selected product determines which Stripe account will be used for the quote and for creating the subscription.

## Technical details

### Stripe subscription orchestration

When a quote is signed, Hyperline automatically orchestrates the creation of subscriptions in Stripe Billing. Depending on the context, Hyperline creates either a Stripe **subscription** or a **subscription schedule** (e.g., when the subscription includes future phases or scheduled changes).

All Stripe subscriptions are created in flexible mode to ensure compatibility with Stripe's newest capabilities and features.

This orchestration is fully automated — no manual intervention is required. Hyperline handles the mapping of products, prices, coupons, and phases to their Stripe equivalents.

### Look up Hyperline IDs from Stripe

When a subscription is created in Stripe, Hyperline automatically adds custom metadata fields to the corresponding Stripe subscription object:

* `hyperlineSubscriptionId` — The Hyperline subscription ID, stored on the Stripe subscription.
* `hyperlinePhaseId` — The Hyperline phase ID, stored on the Stripe subscription.
* `hyperlineProductId` — The Hyperline product ID, stored on the Stripe subscription product.

These metadata values can be used to look up the related Hyperline entities from a Stripe subscription using the Hyperline API.


# Quote for subscription update
Source: https://docs.hyperline.co/docs/quotes/subscription-update

Generate a Hyperline quote to update an active subscription with customer approval — ideal for contract upsells, add-ons, and price changes.

If a subscription is already active in Hyperline, you can update it with customer approval by requiring a signed quote before applying changes. This is ideal for contract upsells, adding products, or adjusting prices and quantities.

## Create a quote for subscription update

To create a quote to update a subscription, the subscription must be in `active` state. You can have several open quotes for subscription update on the same subscription at once — for example, to negotiate multiple upsell scenarios in parallel or prepare a follow-up change while a first quote is still awaiting signature.

There are two ways to create a quote for subscription update:

* from the **quotes** page, click `new quote` and select `quote for subscription update`, then select the customer and the subscription that needs to be updated.
* from the **subscription details** page, click `actions` and select `create update quote`

<Note>
  All open quotes for subscription update on a subscription are listed on the **quotes** tab of the subscription details page, so you can review, edit or void any of them at a glance.
</Note>

### Select update effective date

Upon starting the update process, you will be presented with two options to select when the update will take effect.

<Frame>
  <img alt="Quote Update First Step" />
</Frame>

**On quote signature**

The subscription start date will be set to `quote signature` meaning that the new version of this subscription will only be applied once the quote is signed.

**On selected date**

The subscription start date can be selected freely on a future date. Once the quote is signed, the new subscription will be in a pending state, and will automatically replace the previous one on the selected date.

<Info>
  If the selected date has passed once the quote is signed, the subscription will automatically be activated on quote signature.
</Info>

#### Expiration date for scheduled updates

When the update is scheduled on a selected date, the quote expiration date is capped so it cannot extend past the planned transition. The latest allowed expiration is:

* the **end of the current billing period** when the transition date falls within it
* the **transition date** itself when it falls after the current billing period

If a scheduled subscription-update quote reaches its expiration date before being signed, Hyperline automatically voids it and cancels the pending transition. The voided quote remains visible in the quotes list for auditability, and the source subscription continues unchanged — invoicing continues normally on its existing schedule.

### Keep current configuration or start from an existing template

You can decide to update the current subscription configuration, which is ideal for adding products, coupons, phases and editing transition dates, or start from an existing template, which is ideal for pre-configured upsells and downsells.

<Frame>
  <img alt="Keep Configuration Select Template" />
</Frame>

### Configure your subscription

Just like when creating a subscription, you can now freely edit its new configuration.

* Contract
* Subscription configuration
* Invoicing settings
* Custom properties

### Select the transition settings

Decide how the transition will be handled between the two subscriptions, like when [updating a subscription](/api-reference/endpoints/subscriptions/update-subscription). This configuration can be re-configured on the quote configuration page by clicking on `revise transition`.

<Frame>
  <img alt="Subscription Update Configure Transition" />
</Frame>

Select whether you'd like to keep the current billing cycle or start a new one, and generate a transition invoice or not.

### Configure your quote

To ensure accuracy, Hyperline highlights all subscription changes, including added or removed products, price and quantity updates, and any phase modifications.

<Frame>
  <img alt="Quote Update Details" />
</Frame>

Then, the process is the same for a [new quote](./overview).

On the display settings, you can choose whether to show the subscription details or not, allowing you to choose between just showing the subscription diff, or the newly configured subscription.

### Send quote

Once the quote is finalised, it will turn to the `ready to send` status. Review the quote configuration and decide to send it via email or generate a public link and send it by yourself. Note that by using the latter, the email reception and openings will not be tracked.

### Pending signature

Once the quote has been sent, it will turn to the `pending signature` status. At this stage, the quote can be edited again; note that it will turn to the `draft` status and the customer will not be able to access the link anymore until it is saved and live again by clicking on `generate public link`.

<Frame>
  <img alt="Quote Pending Update" />
</Frame>

While a quote for subscription update is pending signature, the source subscription cannot be edited directly, but you can still create additional update quotes on it. All open update quotes are visible on the **quotes** tab of the subscription details page.

### Quote signed

Once the quote is signed, the subscription is executed or pending the selected date. The previous version of the subscription will be overridden by the new one and changes made will be automatically applied.


# Quote templates
Source: https://docs.hyperline.co/docs/quotes/templates

Speed up the Hyperline quoting process with reusable quote templates that pre-fill products, pricing, terms, and clauses for sales teams.

To simplify the quote creation process, Hyperline offers a feature to create templates, allowing you to pre-configure a quote for it to be sent in a few clicks. As with any other concept in Hyperline, values entered in the quote template can be overridden after selecting the template in the quote creation process.

<Note>
  Editing a quote template will not impact the draft quotes created using this template.
</Note>

<Frame>
  <img />
</Frame>

## Creating a template

Quote templates are nested under the `quoting` folder, on the `templates` page.

<Steps>
  <Step title="Name the template">
    Add a name and optionally an internal description to make it easily identifiable for your sales team.
  </Step>

  <Step title="Configure quote details">
    Pre-configure the expiration delay and information required from customers to sign the quote.
  </Step>

  <Step title="Optionally, select a template">
    Quote templates can contain a pre-configured subscription template. This will generate a subscription filled with the contract, products and price configurations, coupons and invoicing settings based on the customers' country and currency. This pre-filled information can be overridden while creating the quote.

    More details in the [subscription templates page](../subscriptions/templates).
  </Step>

  <Step title="Optionally, configure additional information">
    You can add a note for the customer and contract terms, that can be pre-filled with clauses configured in settings > quoting.
  </Step>

  <Step title="Optionally, add attachments">
    When sending a quote to a customer, you might want to attach a contract or your terms and conditions so they can sign both the quote and the contract simultaneously.

    Attachments can be:

    * **Added manually** on the template
    * **Added dynamically** based on the customers' country and language through localized attachments configured in settings > quoting.
  </Step>

  <Step title="Save the template" />
</Steps>

## Using a template

<Frame>
  <img />
</Frame>

When creating a quote, you can select a pre-configured template or start with an empty quote by selecting `configure manually`.

## Localized attachments

If your team frequently sends quotes with the same contract details, manually attaching files can become time-consuming, especially for sales teams that may struggle to select the right templates.

With localized attachments, you can configure attachments to be automatically added based on the invoicing entity, country and language of the customer.

<Frame>
  <img />
</Frame>

<Steps>
  <Step title="Create a localized attachment">
    Give it a descriptive name and select the invoicing entities eligible (attachments will only be available for customers linked to selected entities).
  </Step>

  <Step title="Add documents">
    <Frame>
      <img />
    </Frame>

    Click on `new file` and choose the language and country. You can add up to **10 documents** per entry, select multiple files at once from the picker, and drag them to reorder. The documents will be automatically attached to quotes for customers matching these criteria when using a quote template with this localized attachment, in the order defined here.
  </Step>

  <Step title="Accepted formats">
    Each document must be in one of the following formats: `PDF`, `DOC`, `DOCX`, `PPT`, `PPTX`, or `TXT`, with a maximum size of 5 MB per file.
  </Step>
</Steps>

With your localized attachment now configured, you can add it to your quote templates. Attachments will then be automatically added to quotes created using the template.

## Clauses

Clauses are a lighter version of localized attachments that allows you to add dynamic text based on the invoicing entity and customer's language in the `contract terms` text field.

<Note>
  You need the **Contracts read** permission to view and use contract clauses in the quote editor. Without this permission, the clause insertion options will not be available. Learn more about [user roles and permissions](../account/users-permissions#manage-roles).
</Note>

<Frame>
  <img />
</Frame>

<Steps>
  <Step title="Create a clause">
    Give it a descriptive name and select the invoicing entities eligible (clauses will only be available for customers linked to selected entities).
  </Step>

  <Step title="Add content">
    Enter content in the text area. You can add alternative versions for different languages by clicking on the **blue globe icon**. If translations are not set, the default version will be added.
  </Step>
</Steps>

After configuring the clause, you can add it to your quote templates. When creating a quote using the template, the clause content will be automatically pre-filled in the contract terms field in the customer's language.

You can also add a clause while creating or editing a quote from **Contract terms** by selecting **Add from existing clause**. Selecting an added clause again removes the clause text when the original text is still present.

If you edit the inserted text, Hyperline keeps the quote linked to the selected clause and can identify it as a modified clause for [approval workflows](./approval). This lets you route quotes for review when standard legal language changes.

## Links and legal terms

Quote notes and contract terms support Markdown formatting. To add a clickable legal link, write the label in brackets and the URL in parentheses:

```mdx theme={null}
[General terms and conditions](https://www.example.com/legal/terms)
```

This displays a readable link label on the quote instead of the full URL. For more formatting options, see [Markdown text](../account/settings#markdown-text).

Legal terms can be configured in two places:

* **Settings** > **Quoting**, where you manage reusable clauses and default quote terms.
* Quote templates, where you pre-fill the terms used by quotes created from that template.

Hosted checkout legal terms are configured separately from quote templates. Keep both settings aligned if customers can sign through either flow.


# Sentinel monitoring
Source: https://docs.hyperline.co/docs/sentinel/overview

Monitor Hyperline billing operations with Sentinel — actionable tasks for failed payments, disconnected integrations, and other revenue issues.

Sentinel is Hyperline's built-in monitoring system. It continuously watches your billing operations and surfaces actionable alerts — called **tasks** — whenever something needs your attention, from failed payments to disconnected integrations.

<Note>
  The Sentinel panel is available only to users with the **View tasks** role. Within the panel, each user only sees the tasks and entities they have permission to access, based on their role.
</Note>

## How it works

Sentinel runs in the background and creates a task whenever it detects an issue in one of the monitored areas (payments, invoicing, subscriptions, quotes, or integrations). Tasks are deduplicated so you see a single rolled-up alert per issue category, with a count of affected entities.

Each task includes a short description, the number of affected entities (invoices, customers, subscriptions, etc.), and a link to the relevant list page so you can drill down and resolve the issue.

You can filter the list using the **All**, **Critical**, **High**, and **Moderate** tabs to focus on the most pressing issues first.

### Refreshing tasks

When you take an action that resolves part of a task, the task count and list of affected entities refresh automatically a few seconds later. If the count still looks out of date, you can trigger a manual refresh directly on the task.

## Monitored alerts

Sentinel monitors the following alerts, grouped by category:

### Payments

| Alert                                            | Description                                                                                             |
| ------------------------------------------------ | ------------------------------------------------------------------------------------------------------- |
| Invoice in error                                 | A payment attempt on an invoice has failed.                                                             |
| Customer with expired payment method             | The saved payment method has expired.                                                                   |
| Customer with payment method expiring soon       | The saved payment method is about to expire.                                                            |
| Payment method from a different invoicing entity | The customer's payment method belongs to a different invoicing entity than the one issuing the invoice. |
| Payment provider disconnected                    | A payment provider connection is no longer authorized.                                                  |
| Bank account failed to sync                      | Hyperline could not refresh transactions from a connected bank account.                                 |

### Invoicing

| Alert                                      | Description                                                                                                                                                |
| ------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Invoice is late                            | An invoice has passed its due date without being paid.                                                                                                     |
| Invoice draft                              | A draft invoice is waiting to be finalized.                                                                                                                |
| Electronic invoice failed to sync          | An electronic invoice could not be delivered to the tax authority.                                                                                         |
| Customer has invalid tax ID                | The tax ID on the customer record failed validation, for example because it is `invalid` or does not match the customer's country.                         |
| Child invoice can't be grouped onto parent | A child invoice in a `Grouped` organisation-based billing setup can't be rolled up onto its parent because its invoicing entity differs from the parent's. |

### Quotes

| Alert                   | Description                                                       |
| ----------------------- | ----------------------------------------------------------------- |
| Quote activation failed | A quote was accepted but could not be turned into a subscription. |

### Subscriptions

| Alert                       | Description                                                           |
| --------------------------- | --------------------------------------------------------------------- |
| Subscription is errored     | The subscription is in an error state and is not billing as expected. |
| Subscription renewal failed | Automatic renewal of a subscription did not complete.                 |

### Integrations

| Alert                             | Description                                                       |
| --------------------------------- | ----------------------------------------------------------------- |
| Integration disconnected          | A third-party integration lost its authorization.                 |
| Integration setup error           | A newly added integration could not finish setup.                 |
| Integration needs reconfiguration | An existing integration requires updated credentials or settings. |
| Issue with integration            | The integration sync produced an error.                           |
| Data loader failed to sync        | A usage data loader could not refresh data.                       |

## Settings

Open the Sentinel settings to control which alerts are surfaced. Each alert can be individually enabled or disabled, which is useful for issues that don't apply to your setup — for example, hiding electronic invoice alerts if you don't issue them. Disabled alerts won't be created or shown in your task list.


# Checkout page
Source: https://docs.hyperline.co/docs/subscriptions/checkout-page

Create hosted Hyperline checkout sessions where customers review pricing, enter billing details, and pay securely across multiple payment methods.

When assigning a subscription or processing a one-time payment, Hyperline allows you to create a **checkout session**. This generates a shareable public page where customers can review payment details, enter billing information, select a payment method, and complete their purchase. Hyperline’s checkout pages are optimized for seamless payments and support multiple methods, including credit cards, direct debits, and bank transfers.

<Frame>
  <img />
</Frame>

## Create checkout

Checkout completion can serve as a **subscription** or **one-time payment** trigger, automatically generating the first invoice once completed. You can also set subscriptions to begin on a future date or require manual activation. In either case, the customer still needs to fill in their information via the checkout. When assigning the subscription, you can decide whether to generate a checkout session in the payment settings (step 2).

<Frame>
  <img />
</Frame>

You can **send the checkout link by email** to share it directly with your customer. By default, the email field is pre-filled with the customer’s email address, but you can customize it as needed.

<Frame>
  <img />
</Frame>

Once assigned, the subscription will be pending checkout completion. A customer can have multiple checkout links at the same time, for several subscriptions and one-time payments. You can find all of them at the top right of the customer page.

<Frame>
  <img />
</Frame>

## Checkout lifecycle

A checkout session remains available until it is completed, cancelled, or errored. Checkout sessions do not expire automatically after a fixed duration.

| Status      | Meaning                                                                               |
| ----------- | ------------------------------------------------------------------------------------- |
| `opened`    | The checkout link has been created and the customer can still complete it.            |
| `completed` | The customer completed checkout and the related subscription or payment can continue. |
| `cancelled` | The checkout session was cancelled and the link should no longer be used.             |
| `errored`   | Checkout could not be completed because an error occurred.                            |

<Note>
  Because checkout sessions do not auto-expire, there is no `checkout.expired` webhook event. Use `checkout.completed` to detect successful completion, and cancel the checkout from Hyperline if the link should no longer be usable.
</Note>

## Complete checkout

Once on the checkout page, the customer can review their subscription details and enter their billing information. They will then be required to enter their payment details, based on the **allowed payment methods** configured on their Hyperline page. You can enable credit card, direct debit, bank transfer, or any combination of these options.

<Frame>
  <img />
</Frame>

## Require a tax identifier at checkout

If your billing process requires a tax identifier, go to **Settings** > **Taxes** for the relevant invoicing entity and enable **Require customer tax identifier** before sending the checkout link. When enabled, company customers must enter a Tax ID before they can complete checkout.

To accept a country-specific tax number instead, also enable **Enable local tax number**. Company customers can then complete checkout with either a Tax ID or a local tax number.

Use these settings when a customer tax identifier is required for compliant invoicing, reverse charge handling, or internal approval. Tax ID validation and reverse charge enforcement remain based on the Tax ID. See [Tax enforcement options](../invoices/tax-management#tax-enforcement-options) for details.

Once the customer completes the checkout, they will receive a confirmation email verifying that their payment has been successfully processed.

<Note>
  The emails sent for **checkout created** and **checkout completed** can be disabled in settings > emails > automated emails.
</Note>


# Automated seat-based billing
Source: https://docs.hyperline.co/docs/subscriptions/connected-seats

Automate seat-based billing in Hyperline by syncing seat counts directly from your database in real time as users, licenses, or units change.

## Concept

Connected seats are an improvement over the existing [seat](/docs/products/overview#seat) product. Instead of manually entering the number of units when initiating a subscription, this data is fetched directly from your database. This is especially useful if:

* You want your billing system to reflect any changes made to your product (e.g. a user adds a new license)
* You want to keep track of which seat was added or removed, and when
* You want to bill prorated amounts (e.g. a customer starts with 5 licenses but adds another one mid-year)

## Practical application

### How to create an automated seat-based product?

<Steps>
  <Step title="Create a seat-based product">
    Navigate to the Products Section for this.

    <Frame>
      <img />
    </Frame>
  </Step>

  <Step title="Link an aggregator">
    Select an existing **count** [aggregator](/docs/usage/aggregators) to track your seats. The aggregator determines which events are counted and how incoming data is factored into billing calculations.

    If you haven't created one yet, head to **Usage > Aggregators** to set one up first.

    <Frame>
      <img />
    </Frame>
  </Step>

  <Step title="Click on Create Product">
    That's it! Your seat-based product should now be marked as "**Connected seat**".

    <Frame>
      <img />
    </Frame>
  </Step>
</Steps>

### How to configure a connected seats product in subscriptions?

There are four configuration parameters: **Refresh schedule**, **Charging method**, **Invoicing schedule**, and **Seat change policy.**

#### Refresh schedule

* **Realtime**: The `count` updates immediately when a change is detected, instantly if you're using the API, or based on the dataloader interval if you're using loaders.
* **Periodic**: The `count` refreshes based on the interval entered by the user in the Refresh interval field. It's independent of the subscription billing interval but can be matched to it.
* **Manual**: Users must trigger the refresh using the endpoint for a more customized experience.

#### Charging method

Determines how seat changes are billed when detected during the period.

* **Do not charge**: Track seat counts without generating charges.
* **Prorata**: Charge proportionally based on when the change occurred in the period.
* **Full amount**: Charge the full period price regardless of when the change occurred.

#### Invoicing schedule

Controls when invoices are generated after seat changes are detected.

<Note>
  This setting is only available when the charging method is not set to “Do not charge”.
</Note>

* **Immediately**: Hyperline charges (or refunds) the update as soon as it detects it, even in the middle of the period. If selected alongside the “periodic” option, it will simply invoice the customer at every “end” of period.
* **With next invoice**: Hyperline adds the update amounts to the next invoice as additional lines (so if the update is realtime but invoicing is at the end of the month, we'll update the subscription count in realtime but will then add the charge to the next invoice).
* **Custom**: Allows the user to set an invoicing period, for instance, if they have an annual subscription they want to update in realtime but want to charge the update every month.

#### Seat change policy

Determines how increases or decreases in seat count affect billing during the period.

<Note>
  This setting is only available when the charging method is not set to “Do not charge”.
</Note>

* **Standard**: No special handling for seat changes during the period.
* **Charge highest**: Always bill based on the highest seat count detected during the period. Useful to always commit the maximum number of seats.
* **Refund decrease**: Issue a refund when the seat count decreases. Instructs Hyperline to count negative updates as refunds if they've already been paid.

### Managing seat decreases

When a seat is removed (e.g., a user is deleted or a license is revoked), you need to signal this change to Hyperline. Since the API is append-only, you don't delete events directly—instead, you update them with a flag and configure the aggregator to filter them out.

**Using an `active` or `archived` (or what you want) boolean:**

Use a boolean flag to mark the seat as inactive:

```json theme={null}
{
  "customer_id": "<customer_id>",
  "timestamp": "2024-03-15T10:00:00.000Z",
  "event_type": "users",
  "record": {
    "id": 258,
    "email": "user@company.com",
    "created_at": "2024-01-01T00:00:00.000Z",
    "archived": true
  }
}
```

Then, configure the product's [aggregator](/docs/usage/aggregators) to filter out archived seats:

* For a boolean field: add a filter where `archived` **equals** `false`

## Billing calculation examples

Understanding how Hyperline calculates billing adjustments when seat counts change is essential for predicting your invoices. This section walks through concrete examples using a base price of **10€ per seat** with a monthly subscription running from the 1st to the 30th. Those examples do not take into account the settings: `Refund when a decrease in unit count is detected` and `Charge the highest detected value for the period`.

### End of period billing

When your subscription is configured to bill at the end of the period, Hyperline calculates the final seat count and applies adjustments for any mid-period changes.

<AccordionGroup>
  <Accordion title="Pro-rata calculation">
    With pro-rata billing, adjustments are calculated proportionally based on when the change occurred during the billing period.

    **Adding seats (60 → 100 seats)**

    You start the month with 60 seats and add 40 seats on the 15th.

    | Item                         | Calculation         | Amount   |
    | ---------------------------- | ------------------- | -------- |
    | Base charge                  | 10€ × 100 seats     | 1,000€   |
    | Update adjustment (Jan 1–15) | -40 × 10€ × 15d/30d | -200€    |
    | **Total**                    |                     | **800€** |

    <Note>
      The adjustment credits back the 40 seats for the first half of the month when they weren't in use.
    </Note>

    **Removing seats (100 → 60 seats)**

    You start the month with 100 seats and remove 40 seats on the 15th.

    | Item                         | Calculation        | Amount   |
    | ---------------------------- | ------------------ | -------- |
    | Base charge                  | 10€ × 60 seats     | 600€     |
    | Update adjustment (Jan 1–15) | 40 × 10€ × 15d/30d | +200€    |
    | **Total**                    |                    | **800€** |

    <Note>
      The adjustment charges for the 40 seats that were used during the first half of the month.
    </Note>
  </Accordion>

  <Accordion title="Pay in full calculation">
    With pay in full billing, seat additions are charged at full price regardless of when they were added, while removals still account for usage during the period.

    **Adding seats (60 → 100 seats)**

    You start the month with 60 seats and add 40 seats on the 15th.

    | Item              | Calculation     | Amount     |
    | ----------------- | --------------- | ---------- |
    | Base charge       | 10€ × 100 seats | 1,000€     |
    | Update adjustment | —               | 0€         |
    | **Total**         |                 | **1,000€** |

    <Note>
      New seats are charged at full price for the entire period, regardless of when they were added.
    </Note>

    **Removing seats (100 → 60 seats)**

    You start the month with 100 seats and remove 40 seats on the 15th.

    | Item              | Calculation    | Amount     |
    | ----------------- | -------------- | ---------- |
    | Base charge       | 10€ × 60 seats | 600€       |
    | Update adjustment | 40 × 10€       | +400€      |
    | **Total**         |                | **1,000€** |

    <Note>
      Removed seats are still charged at full price for the period they were active.
    </Note>
  </Accordion>

  <Accordion title="Do not charge">
    When configured to not charge for updates, no adjustment line items are generated.

    * **Adding seats:** No additional charge (0€)
    * **Removing seats:** No refund or adjustment (0€)
  </Accordion>
</AccordionGroup>

### Start of period billing

When your subscription is configured to bill at the start of the period, you pay upfront based on your current seat count. Adjustments for mid-period changes are applied on the following invoice.

<AccordionGroup>
  <Accordion title="Pro-rata calculation">
    With pro-rata billing, adjustments are calculated proportionally and applied to the next invoice.

    **Adding seats (60 → 100 seats)**

    You start January with 60 seats and add 40 seats on the 15th.

    *Invoice on 1st January (for January period):*

    | Item        | Calculation    | Amount   |
    | ----------- | -------------- | -------- |
    | Base charge | 10€ × 60 seats | 600€     |
    | **Total**   |                | **600€** |

    *Invoice on 1st February (for February period):*

    | Item                          | Calculation        | Amount     |
    | ----------------------------- | ------------------ | ---------- |
    | Base charge                   | 10€ × 100 seats    | 1,000€     |
    | Update adjustment (Jan 15–30) | 40 × 10€ × 15d/30d | +200€      |
    | **Total**                     |                    | **1,200€** |

    <Note>
      **Total for January + February: 1,800€**\
      The February invoice includes the pro-rated charge for the 40 seats added mid-January.
    </Note>

    **Removing seats (100 → 60 seats)**

    You start January with 100 seats and remove 40 seats on the 15th.

    *Invoice on 1st January (for January period):*

    | Item        | Calculation     | Amount     |
    | ----------- | --------------- | ---------- |
    | Base charge | 10€ × 100 seats | 1,000€     |
    | **Total**   |                 | **1,000€** |

    *Invoice on 1st February (for February period):*

    | Item                          | Calculation         | Amount   |
    | ----------------------------- | ------------------- | -------- |
    | Base charge                   | 10€ × 60 seats      | 600€     |
    | Update adjustment (Jan 15–30) | -40 × 10€ × 15d/30d | -200€    |
    | **Total**                     |                     | **400€** |

    <Note>
      **Total for January + February: 1,400€**
      The February invoice includes a credit for the 40 seats removed mid-January.
    </Note>
  </Accordion>

  <Accordion title="Pay in full calculation">
    With pay in full billing, seat changes trigger full-price adjustments on the next invoice.

    **Adding seats (60 → 100 seats)**

    You start January with 60 seats and add 40 seats on the 15th.

    *Invoice on 1st January (for January period):*

    | Item        | Calculation    | Amount   |
    | ----------- | -------------- | -------- |
    | Base charge | 10€ × 60 seats | 600€     |
    | **Total**   |                | **600€** |

    *Invoice on 1st February (for February period):*

    | Item                         | Calculation     | Amount     |
    | ---------------------------- | --------------- | ---------- |
    | Base charge                  | 10€ × 100 seats | 1,000€     |
    | Update adjustment (full Jan) | 40 × 10€        | +400€      |
    | **Total**                    |                 | **1,400€** |

    <Note>
      **Total for January + February: 2,000€**
      The added seats are charged at full price for the previous period.
    </Note>

    **Removing seats (100 → 60 seats)**

    You start January with 100 seats and remove 40 seats on the 15th.

    *Invoice on 1st January (for January period):*

    | Item        | Calculation     | Amount     |
    | ----------- | --------------- | ---------- |
    | Base charge | 10€ × 100 seats | 1,000€     |
    | **Total**   |                 | **1,000€** |

    *Invoice on 1st February (for February period):*

    | Item        | Calculation    | Amount   |
    | ----------- | -------------- | -------- |
    | Base charge | 10€ × 60 seats | 600€     |
    | **Total**   |                | **600€** |

    <Note>
      **Total for January + February: 1,600€**
      A refund is applied for the removed seats from the previous period.
    </Note>
  </Accordion>

  <Accordion title="Do not charge">
    When configured to not charge for updates, no adjustment line items are generated.

    * **Adding seats:** No additional charge (0€)
    * **Removing seats:** No refund or adjustment (0€)
  </Accordion>
</AccordionGroup>

## Explore consumption

In the context of connected seats, consumption refers to the usage of the seat-based product.

You can review this consumption in the dedicated section within the Hyperline platform.

This view provides a comprehensive look at the usage of each seat-based product, allowing for better understanding and management of your billing process.

You can as well review the consumption of a subscription in the subscription timeline.

<Frame>
  <img />
</Frame>

More detailed information can be found in the [Explore usage consumption section](/docs/usage/explore-usage-consumption).


# Contract duration
Source: https://docs.hyperline.co/docs/subscriptions/contracts

Add a contract duration to Hyperline subscriptions to reflect contractual commitments with start and end dates, replacing the legacy commitment model.

<Note>
  Contract duration replaces the notion of **commitment** that has been deprecated. All commitment periods have been migrated to contract duration with the settings previously set. They are working the same way, but contract duration offers more granularity by adding a contract start date.
</Note>

Contract duration reflects the contractual agreement that links you and your customer. As of now, contract duration is simply set for informational purposes and does not have any impact on billing (except when the subscription has `same as contract start` as start strategy, where the contract start date will dictate the subscription start date).

<Frame>
  <img />
</Frame>

## Set a contract duration during subscription assignment

By default, a subscription does not have a set contract duration. It can be added by toggling the option in the contract section.

<Info>
  A default contract duration can be set in a [template](./templates) and be added by default when the template is selected when creating the subscription.
</Info>

<Frame>
  <img />
</Frame>

Contract duration is not linked to the subscription duration. The contract duration has a start and an end date, that can be defined with relative events and absolute dates:

* **Immediately** on the date the subscription will be assigned
* **Checkout completion** on the date the checkout will be completed by the customer
* **Quote signature** only in the context of a quote creation, on the date the quote will be signed
* **Manual start** will allow the contract to be started manually at any time after subscription assignment
* **Custom date** will set the start date in the past or in the future

<Info>
  `Contract start date` can be selected as a subscription start date strategy. Once this is the case, the contract start date will affect the subscription start date and potentially the initial billing date if it is set to `same as subscription start`.
</Info>

<Frame>
  <img />
</Frame>

Contract end date can be set in the following ways:

* **After a relative duration** like 6 months, 1 year, 2 years.
* **Forever** contract will end manually later, or when the subscription ends
* **Custom date** a fixed date in the future

When the contract end is different from forever, the contract can be `automatically renewed after the end of duration` for a relative custom amount.

Once the subscription ends, the associated contract will be marked as finished.

### Contract status

<Frame>
  <img />
</Frame>

Depending on its start and end date, a contract can fall under the following statuses:

* **Inactive** the contract has not already started
* **Active** the contract has started and not ended yet
* **Finished** the contract end date has passed

The contract status is for informational purposes only as of now.

### Contract duration after subscription is assigned

A contract duration can be associated or edited once the subscription has already been assigned by clicking on **update subscription** in the contract section.

There are no restrictions in the possibilities for contract duration edition, except when the contract is active:

* The contract start date cannot be less than today's date at 00:00
* The contract end date cannot be less than today's date at 00:00


# Create a subscription
Source: https://docs.hyperline.co/docs/subscriptions/create

Assign subscriptions to customers in Hyperline manually or via templates, with options for trials, contracts, billing cycles, and activation strategies.

Creating subscriptions is a central capability in Hyperline. In this article, we will explore the various options available to assign them to your customers, from simple to more complex needs.

Before starting a subscription, you must [configure the products](../products/overview) you wish to bill and, optionally, create [templates](../subscriptions/templates) to streamline the subscription assignment process, using reusable package configurations.

<Note>
  Though products are configured at the account level, you can customize every option at the customer level, allowing you to adjust them according to specific needs on a per-case basis without impacting your overall configuration.
</Note>

## Configure a subscription

Configuring a subscription in Hyperline only takes a few clicks. However, we also provide the flexibility to customize subscriptions on a per-customer basis, offering you greater versatility and agility.

<Steps>
  <Step title="From a customer page, click Actions then Assign new subscription">
    <Frame>
      <img alt="" />
    </Frame>

    You can also create new subscriptions from the subscription list page. In this case, you will have to select the customer.
  </Step>

  <Step title="Optionally, select a pre-configured template">
    You can start a subscription either from a [pre-configured template](./templates) or configure your subscription manually from scratch.

    <Frame>
      <img alt="" />
    </Frame>
  </Step>

  <Step title="Select subscription duration">
    <Frame>
      <img alt="" />
    </Frame>

    **Subscription start**

    * **In the past**, if you want to backport a subscription that has already started but not in Hyperline, or you want to bill a customer in arrears—any past period that's due will be billed.
    * **Immediately**, the default value
    * **In the future**, if you want to schedule a subscription for the future
    * **On checkout completion**, once the checkout is completed by your customer

    **Subscription alignment**

    Subscriptions follow a predictable renewal pattern based on their start date:

    * If a subscription begins at the standard start of a billing period (e.g., the 1st of the month for monthly plans or the 1st of the year for annual plans), it aligns automatically, and each new period starts on the same fixed date.
    * If a subscription starts on any other day, it renews on the same calendar day in the next period (e.g., a subscription starting on March 15th renews on April 15th for a monthly plan).
  </Step>

  <Step title="Manage contract configuration">
    <Frame>
      <img alt="" />
    </Frame>

    In the contract configuration, we allow you to configure a **contract duration** by activating the toggle.

    <Info>
      Contract duration replaces the notion of **commitment** that has been deprecated. More information [here](../subscriptions/contracts)
    </Info>
  </Step>

  <Step title="Add products to the subscription">
    When adding products outside of a template, after selecting the product, you will be presented with the list of prices that are set in your product catalog. It's divided into a few sections:

    <Frame>
      <img alt="" />
    </Frame>

    * **Suggested:** will list the best pricing according to various parameters of the subscription: The customer's country, their currency, the commitment duration.
    * **Others:** will list the rest of the prices available for the product.
    * **Manual configuration:** If no matches are found or you don't find the right price, you can select "Manual configuration" and you can get to the next step where you will be able to enter the price and frequency by yourself.

    <Frame>
      <img alt="" />
    </Frame>

    Once the pricing configuration is selected, you can edit the product details. When editing a product configuration, it **will not impact your catalog** and only have effect on the subscription you're currently creating. This gives you the flexibility to set customer-specific pricing.

    <Frame>
      <img alt="" />
    </Frame>

    You can adjust the quantity directly from the main subscription view, making it easy to customize a subscription especially when starting from a pre-configured template.
  </Step>

  <Step title="Optionally, add coupons">
    You also have the ability to assign [coupons](../coupons/overview) to your subscription. These coupons can be a fixed amount in the customers' currency, or a percentage of the product price. They can apply to specific or all products.

    <Frame>
      <img alt="" />
    </Frame>

    Once you selected a coupon, you will be able to select:

    * The **application date**: choose whether the coupon will be applied once, forever or for a custom period (referring to the period during which invoices will be generated)
    * The **eligible products**: choose **All products** to apply the coupon to every product, or **Specific products** to select individual products

    <Frame>
      <img alt="" />
    </Frame>
  </Step>

  <Step title="Optionally, add a free trial">
    <Frame>
      <img alt="" />
    </Frame>

    Adding a free trial allows you to start a subscription without charging the customer until a specified period has passed. In Hyperline, a free trial **creates a new phase** that duplicates the first phase, but with all products set to free.

    <Note>
      To add a free trial, the first phase must include at least one product.
    </Note>

    <Frame>
      <img alt="" />
    </Frame>

    The free trial is set to 14 days by default. It can be ended after a **custom duration** like 14 days or 1 month, at a **fixed date** or with a **manual end**. The free trial can be terminated earlier on with `mark phase as finished`.

    <Frame>
      <img alt="" />
    </Frame>

    The free trial details will appear on the checkout page if the subscription is configured to start after checkout completion.
  </Step>

  <Step title="Advanced settings">
    <Frame>
      <img alt="" />
    </Frame>

    * **Initial billing date**

    The initial billing date is when the billing period will start. It defaults to the subscription's start date, as set in the `subscription duration` selector. If the subscription starts on a specific date, the billing date can be set to a custom day (which is always after the subscription start date).

    * **Align billing period to the first day of the next cycle**

    Toggling the option `on` will make sure that the next billing period is aligned on the first day of the next billing cycle. You can configure this option to be toggled on by default under Settings > Subscriptions.

    For example, the subscription will charge the first billing period from the start date (e.g., January 14, 2025) until the end of the current cycle (e.g., January 31, 2025, when the product is billed every month). From the next cycle onward, billing will follow the regular interval (e.g., monthly, from February 1, 2025, to February 28, 2025), ensuring alignment with the standard billing schedule.
  </Step>

  <Step title="Manage invoicing settings">
    <Frame>
      <img alt="" />
    </Frame>

    **Purchase order**

    Add a text element that will be present on the header of every invoice emitted by this subscription.

    **Generate draft invoices**

    The draft invoices feature allows you to review an invoice before it's sent. It's handy if you have to double-check what's sent to your customer, or when you're first trying out the platform. When an invoice is generated, it will be set as a draft that you can edit, finalize and then send to your customer.

    <Note>
      The customer-level [**Force draft invoices**](/docs/customers/overview#force-draft-invoices) setting overrides this option. When it is enabled on the customer, every invoice is created as a draft regardless of what is configured here.
    </Note>

    **Generate documents instead of invoices**

    When Hyperline generates documents instead of invoices, the documents have no legal value compared to invoices and can be used for reporting. You can choose to add VAT to the document or not and set a custom name for the document.

    **Do not charge subscription**

    The invoices will be created and the invoice will be marked as paid, however, the platform won't charge for the invoices. It's handy for adding subscriptions to your reporting when payment is handled elsewhere.
  </Step>
</Steps>

## Subscription payment

After clicking on the next button **Payment settings**, you'll need to configure how you want the subscription to start and your customer to pay it. You can also configure invoicing options as an optional step.

<Frame>
  <img alt="" />
</Frame>

#### Payment methods

In this section, you are shown the default payment method (the one that will be used for charging the invoices), and the allowed payment methods (the ones the customer can add during checkout and on their portal).

You can edit the customer's default payment method and toggle on or off the allowed ones. These changes will be applied on the customer level.

<Frame>
  <img alt="" />
</Frame>

##### Require payment method for activation

Under **Settings > Subscriptions**, the **Require payment method** toggle (off by default) enforces that a customer has a usable payment method before a new subscription can start billing. Turn it on when you want to prevent activating subscriptions that cannot be collected on.

When the setting is enabled:

* **Manual assignment** — creating a new subscription assignment for a customer without an acceptable payment method is blocked. A callout appears at the top of the assignment form linking directly to the customer's payment method settings so you can add one before assigning.
* **Quote signature** — if a customer signs a quote but does not have an acceptable payment method, the quote is marked as signed but subscription activation is paused. The quote surfaces a **Quote activation paused** callout, and activation resumes automatically once the customer provides an acceptable payment method. In the API, this state is exposed as `error_type: activation_missing_payment_method` on the quote.

A customer is considered to have an acceptable payment method when any of the following is true:

* Their default payment method type is **bank transfer**, **automated bank transfer**, or **external collection** — these are always considered satisfactory because they do not depend on a stored instrument.
* Their default payment method is any other type (card, direct debit, and so on) and its state is **active**.

<Note>
  This check only applies to **new subscription assignments**. Updates to existing subscriptions, quote creation and editing, and subscription templates are not affected.
</Note>

#### Checkout session

Hyperline provides a hosted checkout page for your customers, allowing them to **enter their billing details** (contact information, address) and **add the payment method** they wish to use for recurring subscription payments.

This page is for **single use** and is provided at the beginning of the subscription process to allow your customer to **complete the act of subscribing** to your service.

<Info>
  The use of this page is optional, and can be disabled by toggling off **Generate checkout session** in the global settings under the Subscriptions section.
</Info>

<Frame>
  <img alt="" />
</Frame>

Additionally, we provide you a way to add an email address so Hyperline can **automatically send the related checkout page link** to your customer, without any action from your side.

#### Activation

The subscription activation is now managed within the previous step, now being aligned with the subscription start strategy (quote signature, checkout completion, manually or at a set date).

#### Assign the subscription

When everything is set and ready to go, you can click **Assign subscription**. If the customer is going to be charged immediately, you will be reminded with a message that will prevent you from charging unintentionally.

***

# Using the API

If you want a deeper technical integration to start subscriptions with no manual action in the product you can use the [create subscription endpoint](../../api-reference/endpoints/subscriptions/create-subscription).

```
POST /v2/subscriptions
```

Additionally, you can retrieve the subscription's details using the [get subscription endpoint](../../api-reference/endpoints/subscriptions/get-subscription), or list all of them using the [list subscriptions endpoint](../../api-reference/endpoints/subscriptions/list-subscriptions).

### Create a subscription from a template

In this example, we create a new subscription from the template `subt_7gdusOkqr5L0B8` for the customer `cus_3PYD5R2q5NFK5E`.

```sh theme={null}
curl --request POST \
  --url https://api.hyperline.co/v2/subscriptions \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "customer_id": "cus_3PYD5R2q5NFK5E",
    "template_id": "subt_7gdusOkqr5L0B8"
  }'
```

### Create a subscription from a list of products

In this example, we create a new subscription with two products paid every month for the customer `cus_3PYD5R2q5NFK5E`, with a starting date on December 12, 2025 and activated automatically at the start date. The product prices will be automatically determined based on the prices configured in the product catalog for the corresponding currency, interval, etc.

```sh theme={null}
curl --request POST \
  --url https://api.hyperline.co/v2/subscriptions \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "customer_id": "cus_3PYD5R2q5NFK5E",
    "starts_at": "2025-12-20T00:00:00Z",
    "activation_strategy": "start_date",
    "payment_method_strategy": "current",
    "products": [
      {
        "id": "itm_4vea8Gj0a5HZr9",
        "payment_interval": { "period": "months" },
      },
      {
        "id": "itm_vBBCZSTR6NzzuL",
        "payment_interval": { "period": "months" },
        "count": 2,
      },
    ]
  }'
```

Here, product `itm_4vea8Gj0a5HZr9` is a **fee** product and `itm_vBBCZSTR6NzzuL` a **seat** one with 2 items applied.

### Override prices

When creating a subscription, you can override the price for a specific product with a custom amount. Note that this operation is only allowed for `flat_fee` products.

If we take back our previous example and adjust it:

```sh theme={null}
curl --request POST \
  --url https://api.hyperline.co/v2/subscriptions \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "customer_id": "cus_3PYD5R2q5NFK5E",
    "starts_at": "2023-12-20T00:00:00Z",
    "activation_strategy": "start_date",
    "payment_method_strategy": "current",
    "products": [
      {
        "id": "itm_4vea8Gj0a5HZr9", # flat_fee product
        "payment_interval": { "period": "months" },
        "price": { type: "fee", amount: 1234 }, # override
      },
      {
        "id": "itm_vBBCZSTR6NzzuL",
        "payment_interval": { "period": "months" },
        "count": 2,
      },
    ]
  }'
```


# Subscription exports
Source: https://docs.hyperline.co/docs/subscriptions/exports

Export Hyperline subscription data to CSV — including products, prices, ARR, billing cycle, and customer info — for accounting and analysis.

If you wish to export your subscription data for external analysis, Hyperline provides you with built-in file export within the Subscriptions section.

## Export flow

<Steps>
  <Step title="Navigate to the Subscriptions page" />

  <Step title="Click on the 'Export subscriptions' button">
    <Frame>
      <img />
    </Frame>
  </Step>

  <Step title="Download the CSV file">
    <Frame>
      <img />
    </Frame>

    After clicking the export button, your subscription data will be compiled into a CSV file. Download the file to access a complete export, including subscription details, associated customer, estimated ARR, next payment, and more.
  </Step>
</Steps>


# Manage a subscription
Source: https://docs.hyperline.co/docs/subscriptions/manage

Manage the Hyperline subscription lifecycle: activate pending subscriptions, pause invoice issuance, cancel, reactivate, and generate future invoices.

## Activate a pending subscription

If you want to activate a subscription from a `pending` status (e.g., if **manually**, **after checkout**, or **after quote signature** activation strategies were used during assignment), you can:

<Steps>
  <Step title="On the Subscriptions tab, click Actions then Activate subscription">
    <Frame>
      <img />
    </Frame>
  </Step>

  <Step title="Click on Activate subscription to confirm">
    If the subscription's **start date is today or is already exceeded**, the subscription will switch to an active state (with a `Live` tag), and products that need to be billed at the start of the period will be charged immediately.

    If the **start date is in the future**, the subscription will switch to a `Starts on ...` state, signifying that the subscription is now active but hasn't started yet. The products will begin to be charged on the starting date.
  </Step>

  <Step title="The subscription status changed and now indicates `Live` or `Starts on ...`">
    <Frame>
      <img />
    </Frame>
  </Step>
</Steps>

## Pause invoice issuance

You can pause a subscription if you want to stop issuing new invoices without cancelling the subscription:

<Steps>
  <Step title="On the Subscriptions tab, click Actions then Pause invoice issuance">
    <Frame>
      <img />
    </Frame>

    New invoices are not issued while the subscription is paused. The subscription still renews so billing periods stay up to date. You can reactivate it anytime, instantly or later.
  </Step>

  <Step title="Click on Pause invoice issuance to confirm">
    <Frame>
      <img />
    </Frame>

    When pausing invoice issuance, you can optionally select a date when the subscription will automatically resume.
  </Step>

  <Step title="The subscription status changed and now indicates invoicing is paused">
    <Frame>
      <img />
    </Frame>
  </Step>
</Steps>

## Reactivate a paused subscription

Click on **Actions** then **Resume invoice issuance**. Upon reactivation, missed invoices from the paused period will not be issued retroactively. Invoice issuance resumes on the next billing date.

### Update the reactivation date

While a subscription is paused, you can **update the scheduled reactivation date** at any time to postpone or bring forward the automatic restart. You can also **clear the reactivation date** entirely to leave the subscription paused indefinitely — it will then only resume once you manually resume invoice issuance.

## Cancel subscription

If a customer wishes to stop their subscription or if you need to make changes to their subscription that can't be done through the update subscription option, you can cancel the subscription.

<Steps>
  <Step title="On the subscription, click Actions then Cancel subscription">
    <Frame>
      <img />
    </Frame>
  </Step>

  <Step title="Choose when you want to cancel your subscription">
    <Frame>
      <img />
    </Frame>
  </Step>

  <Step title="Choose between the different methods">
    <Frame>
      <img />
    </Frame>

    * **Refund last invoice:** Refunds the total of the last settled invoice to your customer, if available.
    * **Refund custom amount:** Displays a field for entering a custom refund amount to your customer.
    * **Refund pro rata:** Refunds a pro-rata amount based on customer usage so far, with a breakdown showing the products and respective balances.
    * **Do not refund:** Cancels the subscription without issuing a refund to your customer.

    <Note>
      When canceling a subscription before billing, for instance, the products within the subscription are billed at month-end ("end of period") and the cancellation is initiated mid-month, you'll have the option to charge the customer instead. The selection choices will stay consistent, with the exception of the 'last invoice' option, which will be adjusted to reflect the estimated amount for the upcoming invoice.
    </Note>
  </Step>

  <Step title="Check that everything looks good before canceling">
    <Frame>
      <img />
    </Frame>
  </Step>
</Steps>

<Note>
  A credit note will be issued and visible in the Invoices page of this
  customer. Its category will be `Refund` with an item "Refund for invoice X".

  <Frame>
    <img />
  </Frame>
</Note>

## Generate future invoices

Hyperline allows you to generate subscription invoices in advance. To do so, go to Subscription > Generate future invoices, then select the date up to which you want invoices to be issued. The subscription will be advanced to that date, and all corresponding invoices will be generated and sent immediately.

Depending on the payment method:

* Invoices will be **charged automatically** (credit card, direct debit)
* Invoices will be marked as **to pay** (bank transfers, outside of Hyperline)

  <Frame>
    <img />
  </Frame>

## Viewing past subscription history

In order to provide enhanced transparency regarding subscription activities, you now have access to your past subscription history. This feature is particularly useful for tracking changes and cancellations of subscriptions that are no longer active.

Upon navigating to a customer's subscriptions page, you will find a section titled 'Past subscriptions'.

<Frame>
  <img />
</Frame>

Additionally, you can choose to archive a subscription by using the 'Delete subscription' action. The subscription will then no longer be displayed in the history list.

***

## Using the API

You can also decide to manage subscriptions using the Hyperline API. Visit our API reference documentation for more details.

* [Create subscription update endpoint](../../api-reference/endpoints/subscriptions/create-subscription-update)
* [Cancel subscription endpoint](../../api-reference/endpoints/subscriptions/cancel-subscription)


# Usage-based product metering
Source: https://docs.hyperline.co/docs/subscriptions/metering

Configure usage-based products in Hyperline by linking them to aggregators that turn raw events into billable metrics at the end of each period.

Usage-based products are a bit more complex than standard products.

A usage-based product is a product for which price is calculated at the end of a billing period based on the data provided through our events system. Each usage-based product must be linked to an [aggregator](../usage/aggregators) that defines how events are computed into a billable metric. To know more about ingesting and managing events, you can read our [dedicated article](../usage/send-usage-data).

Metering is especially useful when your pricing depends on an unpredictable and variable usage, if everything is committed upfront or not depending on usage data, you should check out our seat-based options instead.

## Pricing configuration

To understand how our different pricing models work, you can refer to our [pricing models glossary](../products/overview#pricing-models).

As with any other products, metered prices can be overridden on a per-customer basis directly in the product dropdown.

<Frame>
  <img />
</Frame>

When you override a price, it's only applied to your current subscription and will be later noted on the customer page.

### Min, max and committed amounts

You can add safety thresholds to your subscription to ensure your customer won't pay below or above a certain price.

Minimum and maximum amounts are applied on prices and we'll show the correct usage as well as the capped/floored price on both the invoice and the interface.

Committed units are another way to set up a minimum committed amount. If the actual usage is under the threshold value, we'll show the minimum committed usage instead.

## Metering periods

You can configure metering options when assigning a subscription manually or in a plan if you need to reuse the product.

Metering is only available for dynamic products and the configuration will appear below the price preview within the product dropdown.

<Frame>
  <img />
</Frame>

Hyperline offers several metering periodicities that should cover most use cases. Don't hesitate to reach out to us if you feel like you need something different.

#### Option 1: Same as payment interval

This option will select all billable events for which the `timestamp` value is within the current subscription period of the product. This is the most common and straightforward option for most use cases, like billing overheads for a given subscription period or standard usage-based pricing.

For example, on a product billed every month with a metering period set to `Same as payment interval`, if the current subscription period is Sept 1st - Oct 1st, we'll take into account all events with a timestamp between these dates.

#### Option 2: Current contract period

This option will select all billable events for which the `timestamp` value is within the current subscription committed period. This is useful when billing usage-based past a certain annual threshold (for instance your customer is allowed 10M€ of spend every year with additional usage billed monthly).

For example, on a subscription committed yearly from Jan 2023 to Jan 2024, we'll take into account all events within that timeframe.

#### Option 3: Current phase

This option will select all billable events for which the `timestamp` value is within the subscription's current [phase](../subscriptions/phases). A phase is a bounded section of a subscription with its own start and end date, so the metering window automatically follows the phase you're on and resets when the next one starts.

Use it when a product's pricing is scoped to a specific phase of a deal — for example, a ramp-up phase that meters usage for its full duration independently of the payment interval or the overall contract period. On the subscription overview, the metered period is shown as the phase's date range.

#### Option 4: Whole database

This option will configure Hyperline to not take into account the timestamps of your events and include all of them in each invoice. It's useful to automate a seat-based billing based on realtime data for instance.

### Only bill the difference with the last invoice

This option tells Hyperline to only bill the difference between usage for your current period and your previous period. It's only available for the last 3 options.

It's particularly helpful when you're billing overages. For instance, coming back to our 10M€ example, if you want to bill the additional revenue every month you don't want to re-bill previously billed revenue. When this option is selected, Hyperline will take into account the total usage billed the last month and subtract it from the current period usage.

## Include child customers' usage

When a customer has child customers through [organisation-based billing](../customers/organisation-based), a usage-based product can bill the parent subscription on usage from the parent and its direct children.

Use this when the parent owns the contract, but usage events are sent by several child customers. Each child keeps its own customer record and usage history, while the subscription on the parent calculates one metered charge.

<Frame>
  <img />
</Frame>

To enable it, open the usage-based product configuration while creating or updating the subscription, then turn on **Include child customers' usage**.

<Frame>
  <img />
</Frame>

You can then choose how Hyperline combines usage:

* **Sum across child customers** adds the parent usage and each direct child's usage together.
* **Max across child customers** bills only the highest-consuming customer among the parent and its direct children.

<Note>
  Child usage roll-up applies to direct child customers only. It is configured per usage-based product on the subscription, so you can roll up usage for one metered product while keeping another product billed only on the parent's own usage.
</Note>


# Subscriptions overview
Source: https://docs.hyperline.co/docs/subscriptions/overview

Understand the Hyperline subscription model: a contract between you and a customer, with products, pricing, terms, and scheduled future changes.

In Hyperline, the subscription model represents a contract—a sold configuration of products and their prices, with a set of terms and optionally pre-configured future changes—between you and a customer.

Subscriptions can be created via the customer page in the UI by a Hyperline user, the CRM, or orchestrated via the API.

## Subscriptions lifecycle

A customer can have one or multiple subscriptions running at the same time. These subscriptions can be active, scheduled to start in the future, or started and scheduled to be cancelled. Our flexible subscription model makes it easy to configure multiple products with different options and renewal logic, as well as multiple phases (scheduled changes), all combined inside a unique contract.

Hyperline provides the ability to set a commitment period, which may differ from the billing interval of the products it encompasses. Furthermore, the billing intervals can also vary between different products.

<Card title="Example 💡">
  Depict intricate scenarios, such as a situation where a customer subscribes annually (annual commitment) but pays for a product based on monthly usage, along with an add-on with a fixed price paid on a quarterly basis.
</Card>

When a subscription is created, its default status is `pending` and it can be activated:

* automatically at the scheduled start date
* when a customer signs its associated [quote](../quotes/overview)
* when a new customer completes its associated [checkout](../subscriptions/checkout-page)
* manually in the interface
* using the API

Once a subscription is active, it will be shown with a `live` green tag.

<Frame>
  <img />
</Frame>

A subscription **will automatically be invoiced** following the schedule described below once it's active.

If you need to pause invoicing, you can pause the subscription directly in the interface using the pause subscription option.

For more details on how to manage your subscriptions please see [this page](../subscriptions/manage).

## Subscription status

Here is a description of each subscription status:

* `pending` The subscription has been created and won't be charged until it is activated using one of the options described above.
* `active` The subscription is running and will be invoiced at the next payment date.
* `cancelled` The subscription has been cancelled from an active state.
* `voided` The subscription has been voided directly from the pending state without ever being activated.
* `paused` The subscription's invoicing is paused.
* `errored` We attempted 4 times (3 retries) and failed to charge a subscription's invoice, see [Handling payment errors](../payments/payment-errors). Here, we consider the subscription as inactive (as the customer failed to pay you) meaning that we won't invoice the customer in the future nor collect payment. You can choose to reactivate it manually.

## When is a subscription billed?

Hyperline lets you decide if each product is billed at the start or at the end of the billing period independently. Usage-based products will always be billed at the end of the period, depending on the final consumption.

<Card title="Example 💡">
  Create a yearly subscription with a flat fee billed at the start of the period, and add-ons billed at the end of each quarter.
</Card>

#### Products charged only once

You can assign products billed only once. This is useful for charging implementation or onboarding fees. You can also choose to bill these products at the start or end of the period. When billed, they will be detached from future invoicing.

#### Subscriptions with start and end of period products

You can assign products that are charged at the beginning of the period for one, and at the end of the period for the other with the same billing period (i.e. monthly). These products will be grouped within the same invoice.

<Card title="Example 💡">
  My subscription has a product "Platform Access" billed at the start of period, and a product "API Calls" billed at the end of period. Both products are billed monthly, and grouped within the same invoice. Example for an invoice generated on September 1st:

  * Platform Access's billing period will be September 1st > September 30th (in advance)
  * API Calls's billing period will be August 1st > August 31st (in arrears)
  * The global billing period of the invoice will span over two months (August 1st > September 30th).
</Card>


# Subscription phases
Source: https://docs.hyperline.co/docs/subscriptions/phases

Split Hyperline subscriptions into phases with different products and coupons to build ramp-up deals, free trials, and evolving contracts.

Phases are a concept that splits subscriptions into multiple sections, allowing granular-level deal customization. Just like subscriptions, phases have a start and end date, and contain products and coupons. Invoice upfront fees, create ramp-up deals, and evolutionary contracts within the same subscription, automatically or manually changing from one phase to another.

<Frame>
  <img />
</Frame>

Let's take the example above. With phases, you can now charge your customer a **setup fee** of 1000.00 € automatically once they sign their quote, and manually start their **recurring fee** of 20 licenses at 20.00 €/license/month that will increase automatically to 40 licenses at 25.00 €/license/month after one year.

### Add phase

To add phases to your subscription you can:

* **Create empty phase** to add a new phase and start from scratch.
* **Duplicate phase** to duplicate the content (products, coupons).

<Frame>
  <img />
</Frame>

For every phase other than the first one, its start strategy is necessarily `previous phase end`. When adding a new phase, if the previous phase end strategy is set to `forever`, it will automatically be changed to `manual end` and the last phase end strategy will be set to `forever`.

<Note>
  By setting the end of the subscription on a fixed date, the new phase will start the next day.
</Note>

You can also add phases to live subscriptions through [update subscription](./manage#generate-future-invoices).

### Phase transition

Phases will transition automatically once the phase end strategy is reached (date, duration, manually). There are two types of transitions:

* **Direct**, where the new phase will be charged according to its configuration, without taking into account the previous phase balance. New billing intervals for every product will start on the day the phase transitions.

<Card title="Direct transition example 💡">
  My current phase contains 10 licenses costing 100€ monthly, current cycle from September 1st to September 30th. If I decide to transition to a new phase on September 15th, containing 20 licenses costing 200€ monthly, on September 15th, a new invoice of 200€ will be issued. New billing interval will be September 15th to October 15th.
</Card>

* **Pro-rata**, where an adjustment invoice will be generated, containing the balance owed or due from the previous phase, and what is owed for the next phase based on the invoicing schedule of the products. If the new phase contains the same products with the same billing interval (i.e. monthly, yearly) the billing interval will be preserved and all products with the same billing interval will be aligned to it as well.

<Card title="Pro-rata transition example 💡">
  My current phase contains 10 licenses costing 100€ monthly, current cycle from September 1st to September 30th. If I decide to transition to a new phase on September 15th, containing 20 licenses costing 200€ monthly, on September 15th, a new invoice of 50€ (new phase due amount = 200\*(15/30) = 100€) - (previous phase surplus = 100\*(15/30) = 50€) will be emitted. Billing interval will remain September 1st to September 30th, and be kept for October 1st to October 31st, and so on.
</Card>

### Update products and coupons

Products and coupons can be added, removed and updated during the current phase following the same pattern as subscriptions without phases.

For future phases, products and coupons are added, removed and updated immediately.

### Update phase start and end strategy

For current phases, the phase end strategy can be updated for any date or duration later than the current time.

For future phases, the phase end date cannot be set before the end date of the previous phase.

### Transition to next phase

When there is a next phase, the current phase can be transitioned manually with immediate effect.

<Frame>
  <img />
</Frame>


# Subscription templates
Source: https://docs.hyperline.co/docs/subscriptions/templates

Pre-configure reusable subscription templates in Hyperline that auto-fill products, pricing, billing cycles, and contract terms during assignment.

When assigning new subscriptions to your customers, Hyperline offers a powerful way to create pre-configured and reusable templates. Subscription templates support all configuration options and parameters available when creating subscriptions.

By selecting a template during the subscription assignment flow, the form will automatically be filled with all configurations from the selected template. All details inherited from the template can still be customized in the final customer subscription without affecting the original template, typically configured by an admin.

<Note>
  Subscription templates are the evolution of plans. They are more powerful, flexible, and future-proof.

  **Plans are deprecated and will be removed in summer 2026.**

  We recommend using subscription templates instead of plans to benefit from the latest features and improvements.

  Hyperline does not provide automatic migration from plans to templates, since templates offer significantly more flexibility and capabilities. However, we can assist in assigning template IDs to existing subscriptions to ensure continuity in tracking.
</Note>

## Configuration

Templates have a name (which becomes the subscription name when assigned, though it can be overridden during creation) and an optional internal description.

They can include multiple subscription configurations — each with a currency and, optionally, a country for which it is eligible. If no specific country is defined, the configuration applies to all countries.
Each subscription configuration supports all the same options as a standard subscription form, including contract settings, invoicing preferences, products/coupons, multi-phase setups, ...

By adding multiple configurations to the same template, you can pre-configure variations by currency or market while keeping them under a single template. Hyperline also provides a one-click action to duplicate configurations, saving time when creating similar setups for another currency.

You cannot create duplicate configurations within a single template for the same currency/country pair. If needed, we recommend creating separate templates.

### Price inheritance

When configuring a template, product prices from the catalog are suggested and instantiated within that template.

If product catalog prices are later updated, template prices will **not** automatically change. This prevents unintended modifications and ensures stability for legacy offers. You can still update template prices manually if desired.

## Subscription assignment

When assigning a new subscription to a customer, only templates matching the customer’s currency and country will be suggested.

If multiple configurations match, the most specific one will be selected automatically.

For example, a template has three configurations:

1. EUR — eligible for all countries
2. EUR — eligible for France
3. GBP — eligible for the UK

If this template is selected for a French customer using EUR, configuration **2 (EUR/France)** will be applied, even though configuration 1 also matches.

## Quote templates

Subscription templates can also be used in quote templates. This enables quotes with fully pre-filled subscription configurations, reducing manual work, minimizing errors, and promoting internal standardization.

## Updating templates

When updating a subscription template (currency, country, or configuration), existing subscriptions linked to it will **not** be automatically updated.

This allows you to evolve offers without affecting active subscriptions. Existing subscriptions can still be updated manually using the [subscription update flows](./update), independently of the template.


# Subscription translation overrides
Source: https://docs.hyperline.co/docs/subscriptions/translations

Store custom product names and descriptions per Hyperline subscription so invoices stay translated for multilingual customers despite catalog edits.

Translation overrides let you save custom product names and descriptions directly on a subscription. Once enabled, future catalog edits won't affect that customer's invoices.

Without overrides, Hyperline uses catalog translations when available, or falls back to the main product field.

## Set a default for all subscriptions

<Frame>
  <img />
</Frame>

Go to **Settings → Subscriptions** and enable **Override product translations on subscriptions**. New products added to any subscription will have the override on by default. Existing subscriptions are unaffected.

## Enable per product

<Frame>
  <img />
</Frame>

When creating or editing a subscription, scroll to the bottom of any product and toggle on **Override product translations**. A globe icon appears on the name and description fields.

<Note>
  The toggle only appears when the customer has a language set that differs from the invoicing entity's language. When both are the same, the main field already covers the only relevant locale.
</Note>

## Edit translations

<Frame>
  <img />
</Frame>

Click the globe icon to open the translation panel. It shows one tab per language, limited to the customer's and invoicing entity's languages. The **Current** tab (customer's language) stays in sync with the main field automatically.

## Templates

<Frame>
  <img />
</Frame>

Templates show all available languages in the translation panel since no customer is attached. When assigned to a customer, the stored values carry over and the customer's language is marked **Current**.

## Precedence

From lowest to highest: **default** (`false`) → **subscription settings** → **template** → **subscription product**. A higher-level value always wins.

## FAQ

<AccordionGroup>
  <Accordion title="I turned off the override, what happens to my custom translations?">
    Hyperline reverts to catalog translations (or the main field if none exist). Your custom values are preserved on the subscription and restored if you re-enable the override.
  </Accordion>

  <Accordion title="Why is the toggle missing on a product?">
    Either the customer has no language set, or the customer and invoicing entity share the same language, in which case no separate translation tab is needed.
  </Accordion>

  <Accordion title="Can I override translations on invoice line items?">
    Yes. The same globe icon appears on name and description fields when editing an invoice manually.
  </Accordion>
</AccordionGroup>


# Update subscription
Source: https://docs.hyperline.co/docs/subscriptions/update

Update active Hyperline subscriptions globally or locally — change products, prices, quantities, contract terms — with previews and version history.

Subscriptions can be edited from the subscription details page.

<Frame>
  <img alt="" />
</Frame>

There are two types of updates:

* **Global update** where you can update the whole subscription directly
* **Local update** where you can update a single part of the subscription (product price, contract configuration...)

<Note>
  Updating a subscription is not available for subscriptions that are in a future state after [generating future invoices](./manage#generate-future-invoices) or that have a [quote for subscription update](../quotes/subscription-update) pending signature. You can still create additional update quotes in that state — all open update quotes are listed on the **quotes** tab of the subscription details page. For cancelled, voided, or archived subscriptions, only simple fields (contract value, estimated ARR, CRM opportunity ID, and shipping details display) can be updated.
</Note>

## Global update

A subscription can be updated by clicking on `update subscription` in the subscription action dropdown. You will be presented with the following options:

### Simple update

When selecting this option, the subscription will be updated immediately, the billing intervals will be conserved and no pro-rated invoice will be generated.

<Info>
  This is recommended when updating product information or adding, removing or updating a product or coupon without impacting the current billing period.
</Info>

### Advanced update

When selecting this option, you will enter a multi-step process to configure exactly when and how the update should be applied, as well as manage the transition invoice precisely:

<Steps>
  <Step title="Choose when to apply the update">
    Select when the subscription update should take effect:

    * **Next renewal** — The update is applied when the current billing cycle ends
    * **At last renewal** — The update is applied retroactively as of the start of the current billing cycle
    * **Immediately** — The update is applied right away
    * **Scheduled date** — The update is applied at a specific date in the future

    <Frame>
      <img alt="" />
    </Frame>
  </Step>

  <Step title="Choose the update source">
    Decide how you want to configure the updated subscription:

    * **Update current subscription** — Modify the existing subscription configuration directly
    * **Update to a template or a plan** — Reset the subscription configuration using a pre-defined template or plan as a starting point, that can be further customized if needed

    <Frame>
      <img alt="" />
    </Frame>
  </Step>

  <Step title="Configure transition options">
    Define how the billing cycle and invoicing should be handled during the transition:

    **Billing cycle alignment**

    * **Keep current period** — The subscription continues with its existing billing dates
    * **Start new period** — The subscription billing dates are reset to start a fresh cycle from the update date

    **Transition invoice**

    * **Waive transition invoice** — No transition invoice will be issued
    * **Issue transition invoice** — A single transition invoice is issued to settle the current billing period before the update takes effect (netting the credit for the outgoing configuration and the charge for the new one)
    * **Issue separate credit note and invoice** — The current billing period's invoice is refunded via a credit note, and a separate invoice is issued to reflect the updated subscription configuration. Available for updates **At last renewal**, and for Spanish invoicing entities on every schedule (see the note below)

    <Note>
      The **Issue transition invoice** option is not available when the subscription has products billing in a future period (for example, after using [generate future invoices](./manage#generate-future-invoices)). You can still proceed with the update by waiving the transition invoice.
    </Note>

    <Note>
      **Spanish invoicing entities**: when the invoicing entity is registered in Spain (`ES`), Spanish invoicing rules do not allow a single netted transition invoice. **Issue transition invoice** is hidden and **Issue separate credit note and invoice** is the only way to issue a transition invoice, regardless of the effective date (**At last renewal**, **Immediately**, or **Scheduled date**). The current period's invoice is cancelled with a credit note, and a new invoice is issued for the updated configuration.
    </Note>

    <Frame>
      <img alt="" />
    </Frame>

    <Tip>
      At this step, you can preview both the **transition invoice** (settling the period before the update) and the **following invoice** (the first invoice after the update) to understand the financial impact before confirming.
    </Tip>
  </Step>
</Steps>

### Scheduled updates

A subscription with a scheduled update cannot be updated until the scheduled update is applied or cancelled. However, you can manage the scheduled update through the subscription dropdown:

* **Revise update** — Edit the scheduled update configuration
* **Cancel** — Cancel the scheduled update entirely, allowing the subscription to be updated again

<Frame>
  <img alt="" />
</Frame>

### Subscription versions

Previous subscription versions, as well as scheduled updates, can be accessed through the versions tab.

<Frame>
  <img alt="" />
</Frame>

***

## Local update

If you do not wish to update the entire subscription at once, but rather just a single part, you can proceed with a local update.

### Duration

The subscription or phase end date can be edited to end at a later or closer date with the following options:

* Forever
* After a custom relative duration
* At a specific date

<Frame>
  <img alt="" />
</Frame>

<Note>
  The end of the phase or subscription cannot be set before the end of the current billing period of its products. In order to do that, you need to [cancel the subscription](./manage#cancel-subscription).
</Note>

If the subscription has not started yet, the start date can be edited too.

### Products

Products that currently belong to a subscription can have their price and quantity edited, and they can be added or removed freely.

#### Update product price

Prices can be edited immediately by clicking on the product `...` then `update price`. Their price will be updated immediately, with an impact on the next invoice.

<Frame>
  <img alt="" />
</Frame>

#### Update product quantity

Quantity can be edited (except for usage-based and connected seats) by clicking on the product `...` then `update quantity`.

<Frame>
  <img alt="" />
</Frame>

The quantity change **always applies immediately**. Two settings control only how it is billed:

* **Payment schedule** sets *when billing happens* (not when the change applies):
  * **Immediately**: a separate invoice (or credit note) is issued and charged right away.
  * **Next invoice**: the adjustment is added as a line on the next invoice.
* **Update method** sets how the adjustment is computed:
  * **Pro-rata**: only the remaining or elapsed portion of the period.
  * **Full price**: the full period amount.
  * **Do not charge / refund**: apply the new quantity without any billing.

Whether the adjustment is a **charge** (positive line) or a **credit** (negative line), and whether a line appears at all, depends on whether the product is billed at the **start** of the period (in advance) or at the **end** of the period (in arrears). It also depends on the direction of the change (increase or decrease). See [Subscriptions with start and end of period products](/docs/subscriptions/overview#subscriptions-with-start-and-end-of-period-products).

| Billing timing               | Update method | Quantity increase       | Quantity decrease      |
| ---------------------------- | ------------- | ----------------------- | ---------------------- |
| Start of period (in advance) | Pro-rata      | Charge (prorated)       | Credit (prorated)      |
| Start of period (in advance) | Full price    | Charge (full)           | No line (already paid) |
| End of period (in arrears)   | Pro-rata      | Credit (prorated)       | Charge (prorated)      |
| End of period (in arrears)   | Full price    | No line (billed at end) | Charge (full)          |

<Note>
  With **Full price**, no adjustment line is produced for an end-of-period increase (the added quantity is billed at full price on the regular end-of-period invoice) or a start-of-period decrease (the removed quantity was already paid for the current period).
</Note>

**Do not charge / refund** never bills the customer, but whether a line is recorded depends on the payment schedule:

* **Immediately**: nothing is billed and no invoice is generated.
* **Next invoice**: a **zero-amount line** is added to the next invoice to record the change (labelled as not invoiced for the period).

For worked billing examples of each case, see [Connected seats billing calculation examples](/docs/subscriptions/connected-seats#billing-calculation-examples), which uses the same start and end of period, pro-rata, full, and no-charge logic.

<Tip>
  This dialog always applies the change immediately. To apply a quantity change on a **future date**, use an [Advanced update](#advanced-update) instead.
</Tip>

#### Add product

Products can be added directly to a live subscription by clicking on `add product`. Products can be added with an existing price configuration or manually configured. They will be added immediately to the subscription, and can be charged full price, pro-rata or not charged, immediately or on the next invoice.

<Frame>
  <img alt="" />
</Frame>

#### Remove product

Products can be removed from the subscription immediately by clicking on the product `...` then `remove product`. Depending on the product balance, they can be charged or refunded, at a pro-rata or full price or without payment, immediately or with the next invoice.

<Frame>
  <img alt="" />
</Frame>

### Coupons

Coupons can be added or removed freely from the subscription, with immediate effect.

#### Add coupon

Coupons can be added directly to a live subscription by clicking on `add coupon`. You will then be able to configure the coupon name, application, discount type and products to which it is applied.

<Frame>
  <img alt="" />
</Frame>

<Note>
  When adding a coupon with a duration (e.g., 6 months) during a subscription update or transition, the coupon's expiration date is automatically calculated from the transition date. This ensures the coupon applies for the correct duration starting from when the update takes effect.
</Note>

#### Remove coupon

Coupons can be removed from the subscription immediately by clicking on the coupon `...` then `remove coupon`.

<Frame>
  <img alt="" />
</Frame>

### Contract

Contract can be attached, edited or removed from the subscription at any time.

<Frame>
  <img alt="" />
</Frame>

### Invoicing

Invoicing configuration such as the purchase order displayed on every invoice, draft invoices generation and document type can be edited at any time, with an impact on the invoices emitted after the update.

<Frame>
  <img alt="" />
</Frame>


# Upfront metered products
Source: https://docs.hyperline.co/docs/subscriptions/upfront-metering

Bill usage-based products upfront at the start of each period based on projected consumption, then true-up against actual usage on the next invoice.

By default, a usage-based product is invoiced **in arrears** — at the end of the billing period, once all usage for that period has been consumed. Hyperline also supports the opposite pattern: **upfront metered products**, where usage is invoiced at the *start* of each period and reconciled against real consumption on the next invoice.

This is useful when:

* Your customer has a **minimum committed volume** and you want to charge for it upfront each period.
* You want cash to come in at the start of the period rather than the end.
* Your customer's usage is fairly predictable period-over-period.

<Note>
  Upfront billing is a property of a **usage-based (dynamic) product** on a subscription. You configure it by setting the product's payment schedule to **start of period** when adding it to the subscription or plan.
</Note>

## How it's billed

At the start of each period, real usage for that period hasn't happened yet, so Hyperline has to bill on a projection. The projection is:

```
billed units = max(committed units, usage billed for the previous period)
```

* **Committed units** is the minimum volume you configure on the product (`min_committed_count` on the API). It acts as a **floor**, not a cap.
* **Previous period's billed usage** is what actually got consumed in the period that just closed.

Two consequences follow from this rule:

* **On the very first period** there is no prior usage, so the customer is billed on the committed amount. If you didn't set a commitment, the upfront charge for the first period is **zero** and the whole charge lands on the correction line the following period.
* **On subsequent periods** the upfront charge floats up if the last period ran hot. If a customer consumed 500 units when they committed to 250, the next period's upfront charge is priced on 500 — the commitment is only a floor.

## The correction line item

Because you charged the customer upfront on a projection, real usage will drift from what was billed. To reconcile, **every renewal invoice includes a correction line item for the period that just closed**:

```
correction = actual usage for that period (priced) − amount already invoiced upfront
```

* If the customer **used more** than what was billed upfront, the correction is a **debit** (extra charge).
* If the customer **used less**, the correction is a **credit** (refund).

A typical renewal invoice for an upfront metered product therefore contains **two lines** for that product:

1. **Upfront charge** for the new period, sized on `max(committed, last period's usage)`.
2. **Correction** for the previous period, settling the difference between actual and projected usage.

Corrections are pre-populated on the next period's draft invoice as soon as the current invoice is finalized, and are kept in sync as new usage events arrive — so both you and your customer can see the running true-up before the invoice is issued.

## Worked example

Setup:

* Metered product priced at **€50 per unit**, billed monthly, upfront.
* Committed units: **250 per month**.

**January (first period)**

* No prior usage yet → billed on the committed 250 units.
* Upfront charge: `250 × €50 = €12,500`.
* Actual January usage turns out to be **500 units**.

**February renewal invoice**

* Upfront charge for February: `max(250, 500) × €50 = 500 × €50 = €25,000`.
* Correction for January: `500 × €50 − 250 × €50 = €12,500` **debit** (customer used more than was billed upfront).
* Total on the February invoice for this product: `€25,000 + €12,500 = €37,500`.

**March renewal invoice** — assume February usage came in at **300 units**

* Upfront charge for March: `max(250, 300) × €50 = 300 × €50 = €15,000`.
* Correction for February: `300 × €50 − 500 × €50 = −€10,000`, applied as a **€10,000 credit** (customer used less than was billed upfront in February).
* Net on the March invoice for this product: `€15,000 − €10,000 = €5,000`.

**April renewal invoice** — assume March usage came in at **200 units** (below commitment)

* Upfront charge for April: `max(250, 200) × €50 = 250 × €50 = €12,500` — the commitment kicks in as the floor.
* Correction for March: `200 × €50 − 300 × €50 = −€5,000` credit.
* Net on the April invoice for this product: `€12,500 − €5,000 = €7,500`.

## Interaction with other settings

### Metering period

The projection and the correction always look at usage **within the product's own billing period** (the period being billed upfront and the one being trued up). If you configure a different metering period (`Current contract period`, `Current phase`, `Whole database`, `Custom`), the same upfront + correction mechanic applies, but the "actual usage" figure used in the correction reflects that broader window rather than a single billing period.

### Only bill the usage difference

The **Only bill the difference with the last invoice** option combines with upfront billing: the customer is charged upfront for the projected units, and the correction on the next invoice reflects only the incremental usage vs. what was previously billed, rather than the full period's usage. Use this when the priced quantity is a running total (e.g. cumulative revenue against an annual threshold) rather than a per-period consumption count.

### Min and max amounts

Minimum and maximum **amounts** on the product are applied to each invoiced amount independently — both the upfront line and the correction line are subject to the caps in force at the time they are computed.

## When not to use upfront metering

Upfront metering is a poor fit if:

* Usage is highly volatile and you don't want large corrections swinging invoice totals up and down.
* The customer has no meaningful commitment — you'll end up billing zero upfront and everything on the correction, which is just arrears with extra steps.
* You need revenue tied precisely to consumption events with no timing gap. In that case, use standard (in-arrears) metering.


# Aggregators
Source: https://docs.hyperline.co/docs/usage/aggregators

Configure aggregators to transform raw usage events into billable metrics for subscription products or assign them to customers for usage monitoring.

Aggregators turn raw usage events into a single metric, such as API calls, active users, or storage consumed. You can use that metric for subscription billing or, with the Customer Intelligence module, assign it directly to customers for monitoring without billing them.

Aggregators are managed independently in **Usage > Aggregators** and can be linked to multiple products.

## Subscription billing or direct customer assignment

An aggregator can reach a customer in two ways:

| Configuration                  | How the aggregator applies                                                                                 | Billing impact                                                          | Availability                               |
| ------------------------------ | ---------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- | ------------------------------------------ |
| Through a subscription         | Link the aggregator to a usage, credit, or connected seat product, then add that product to a subscription | The aggregated value drives the product's billing or credit consumption | Included with the relevant billing feature |
| Directly assigned to customers | In the aggregator's **Visibility** settings, select all customers or specific customers and segments       | Monitoring only; no product, subscription, or invoice line is created   | Requires the Customer Intelligence module  |

The same aggregator can be used in both configurations. If it is both part of a subscription and assigned directly to the same customer, Hyperline avoids showing a duplicate usage card. The subscription's metering period takes precedence for the subscription-linked card.

<Note>
  Direct assignment is not an alternative way to bill usage. It only exposes the metric on the selected customer records for monitoring, analysis, and threshold alerts.
</Note>

## Operations

An aggregator uses one of three operations to compute a usage metric from your events:

### Count

Counts the number of matching events. Use this when you bill based on the number of occurrences (e.g., API calls, logins, transactions).

### Sum

Sums the value of a specific numeric property across matching events. Use this when you bill based on a cumulative measure (e.g., data transferred in GB, compute hours consumed).

When using **Sum**, you must specify which event property to aggregate.

### SQL formulas

Use **SQL formula** when Count or Sum is not enough, and you need to combine, compare, or adjust values before billing them.

A formula runs on the events selected by the aggregator's **Event type** and **Filters**. SQL formulas use a restricted calculation syntax: they do not accept arbitrary SQL operators, functions, or queries.

#### Supported syntax

| Category              | Supported syntax                                                                 |
| --------------------- | -------------------------------------------------------------------------------- |
| Arithmetic            | `+`, `-`, `*`, `/`, and parentheses                                              |
| Aggregate functions   | `sum()`, `avg()`, `min()`, `max()`, `last()`, and `count()`                      |
| Calculation functions | `greatest()`, `least()`, `coalesce()`, and `nullif()`                            |
| Conditional function  | `if(property = value, resultIfTrue, resultIfFalse)` inside an aggregate function |
| Comparisons in `if()` | `=`, `!=`, and `<>`                                                              |

Every formula must contain at least one aggregate function. Write numeric event properties directly by name and place every property reference inside an aggregate function:

| What you need                            | Formula pattern      |
| ---------------------------------------- | -------------------- |
| Sum a numeric event property             | `sum(totalAmount)`   |
| Count matching events                    | `count(*)`           |
| Count events where a property is present | `count(totalAmount)` |
| Average a numeric event property         | `avg(unitPrice)`     |
| Keep the highest matching value          | `max(seats)`         |
| Keep the lowest matching value           | `min(seats)`         |
| Keep the most recent matching value      | `last(seats)`        |

`last(property)` uses the value from the most recent matching event that contains the property. Events are ordered by their event timestamp; if timestamps match, the most recently received event is used.

You can then combine those results:

| Billing rule                              | Formula                                                |
| ----------------------------------------- | ------------------------------------------------------ |
| Bill at least 500, even if usage is lower | `greatest(sum(totalAmount), 500)`                      |
| Remove an included allowance              | `greatest(sum(totalMinutes) - 50000, 0)`               |
| Cap the billed value                      | `least(max(seats), 1000)`                              |
| Apply a per-event adjustment              | `sum(totalAmount) - sum(if(type = 'one_off', 500, 0))` |

#### Unsupported syntax

Anything outside the supported syntax above is rejected. This includes:

* SQL queries and clauses such as `SELECT`, `FROM`, `WHERE`, and `CASE`
* Other SQL operators, including `ANY`, `AND`, `OR`, `>`, `>=`, `<`, and `<=`
* Arbitrary SQL functions, casts, aliases, comments, and semicolons
* Nested aggregate functions such as `sum(max(seats))`

Use **Test formula** before saving to preview the result on matching events.

<Tip>
  Use property names exactly as they appear in your events. Wrap names containing spaces or special characters in double quotes, for example `sum("total amount")`. Text values in conditions use single quotes, for example `type = 'one_off'`.
</Tip>

## Configuration

When creating an aggregator, you configure the following:

* **Name**: A descriptive label for the aggregator
* **Event type**: The type of event to aggregate (e.g., `api_calls`, `storage`, `users`)
* **Operation**: Count, Sum, or SQL formula (and the target property for Sum)
* **Unit name**: The label displayed alongside aggregated values (e.g. `API calls`, `GB`, `seats`). Surfaces on usage charts, prices, invoices, and the customer portal.
* **Filters**: Optional conditions to narrow which events are included. Filters support AND/OR logic with operators like `equals`, `in`, `gte`, `lt`, etc.
* **Exposed event keys**: Event fields to surface in the UI for transparency and debugging
* **Allow negative values**: Whether the aggregated result can go below zero

<Note>
  The unit name is configured on the aggregator itself. It used to live on each product; products linked to an aggregator now inherit its unit name automatically.
</Note>

### Default aggregation interval

You can set a **default aggregation interval** on an aggregator by specifying a count and a period (days, weeks, months, or years). It is used to display and evaluate the metric when the aggregator is assigned directly to customers without a subscription.

For an aggregator used through a subscription, the subscription's metering period determines the current value instead. The aggregator's default interval does not change how that subscription is billed.

<Frame>
  <img />
</Frame>

## Aggregator filters

Aggregator filters let you define **named filter sets** on an aggregator. Each filter combines conditions using AND/OR logic on event properties (e.g., `region equals "eu"`, `plan in ["pro", "enterprise"]`).

Filters serve two purposes:

* **Billing**: different prices can apply based on which filter an event matches (see [price metering filters](#price-metering-filters))
* **Usage visualization**: on the [customer Usage tab](./customer-usage), each filter is displayed as a separate line on the usage chart with its own color and legend entry

<Frame>
  <img />
</Frame>

A filter can only be deleted if it is not referenced by any product price.

## Thresholds

Thresholds let you define **alert conditions** on an aggregator. Each threshold specifies:

* **Name** (optional): A descriptive label for the threshold
* **Operator**: Greater than or equal to (`>=`) or less than or equal to (`<=`)
* **Value**: The numeric threshold value

Thresholds are evaluated separately for each customer to whom the aggregator applies:

* For a subscription-linked aggregator, Hyperline uses the subscription's metering period.
* For an aggregator assigned directly to customers, Hyperline uses its default aggregation interval. This direct monitoring workflow requires the Customer Intelligence module.

When a customer's aggregated usage crosses a threshold, Hyperline can notify you via [webhooks](../../api-reference/docs/webhooks) (`aggregator.threshold_crossed` event) or [Slack notifications](../../integrations/slack). A threshold alert does not create a charge or change an invoice.

On the [customer Usage tab](./customer-usage), thresholds are displayed as dashed horizontal reference lines on the usage chart, with the operator and value shown as labels.

<Frame>
  <img />
</Frame>

## Which products use aggregators?

Not all product types require an aggregator. Here's when you need one:

| Product type       | Aggregator required? | Allowed operations      |
| ------------------ | -------------------- | ----------------------- |
| **Fee**            | No                   | —                       |
| **Seat**           | No                   | —                       |
| **Connected seat** | Yes                  | Count only              |
| **Usage**          | Yes                  | Count, Sum, SQL formula |
| **Credit**         | Yes                  | Count, Sum, SQL formula |

<Note>
  A seat product becomes a [connected seat](/docs/subscriptions/connected-seats) product when an aggregator is selected.
</Note>

## Managing aggregators

Navigate to **Usage > Aggregators** to create, edit, and delete aggregators.

### Create an aggregator

Click **New aggregator**, configure the operation, event type, and optional filters, then save.

### Edit an aggregator

Click on an existing aggregator to update its configuration. The detail page also shows which products are currently linked to this aggregator.

### Delete an aggregator

An aggregator can only be deleted if no products are linked to it.

## Linking an aggregator to a product

When creating or editing a usage-based, credit, or connected seat product, you select an existing aggregator from a dropdown instead of configuring metering inline.

* **Usage products**: select any aggregator (count or sum)
* **Credit products**: select any aggregator (count or sum)
* **Seat products**: select a count aggregator (only when connected seats are enabled)

For more details on product configuration, see [Products and prices](/docs/products/overview).

## Price metering filters

For usage-based products, you can further refine billing by adding **metering filters at the price level**. This allows different prices for the same product based on specific event properties (e.g., region, instance type).

Learn more in the [usage-based product documentation](/docs/products/overview#metering-configuration).


# Connect with BigQuery
Source: https://docs.hyperline.co/docs/usage/bigquery

Connect a Google BigQuery dataset to Hyperline as a data loader to pull usage events automatically, with service account permissions and queries.

This guide is specific to setting up a dataloader with [Google BigQuery](https://cloud.google.com/bigquery), to learn more about data loaders in general, you can read our [general article](./usage-data-with-connectors).

## Authorizations

<Frame>
  <img />
</Frame>

To set up our BigQuery connector, you'll need to configure a Service Account with the right permissions. To do so, you can follow these steps:

1. Go to the Google Cloud Console for the project containing your database and navigate to the [IAM & Admin](https://console.cloud.google.com/iam-admin) tab.
2. Click "Create Service Account", enter a name and description for the service account, then click "Create".
3. Assign the following roles to the service account: **BigQuery Data Viewer** and **BigQuery Job User**, then click "Continue" and "Done".
4. Find the newly created service account in the list, click the service account, go to the "Keys" tab, then click "Add Key" and choose "Create new key", select JSON, and click "Create".

## Load your data

To get started, just go to the [data loaders page](https://app.hyperline.co/app/events/loaders) in Hyperline, create a new Connection and select "Google BigQuery" in the dropdown list.

<Frame>
  <img />
</Frame>

Copy and paste the content of the JSON key file in the correct box, choose a name and then save the connection.

When creating or updating a connection, Hyperline always performs a ping test to check the database is accessible, so if it's safe, it's all good.


# Customer usage
Source: https://docs.hyperline.co/docs/usage/customer-usage

Monitor per-customer consumption from subscription-linked and directly assigned usage aggregators with real-time charts, thresholds, and event details.

The **Usage** tab on a customer page gives you a real-time overview of aggregator-based consumption for that customer. It can show aggregators from running subscriptions and aggregators assigned directly to the customer through the Customer Intelligence module.

| Source               | Why the aggregator appears                                                        | Period used                                   |
| -------------------- | --------------------------------------------------------------------------------- | --------------------------------------------- |
| Running subscription | A product in the subscription is linked to the aggregator                         | The subscription's metering period            |
| Direct assignment    | The aggregator is assigned to all customers or to matching customers and segments | The aggregator's default aggregation interval |

<Note>
  Assigning an aggregator directly to a customer without a product or subscription is a Customer Intelligence feature. It provides usage monitoring and threshold alerts, but does not bill the customer.
</Note>

<Frame>
  <img />
</Frame>

## Aggregator cards

Each aggregator is displayed as a card showing:

* **Aggregator name** and linked subscription (if any)
* **Current aggregated value** for the active metering period
* **Area chart** of the aggregated value evolution over time (last 6 months by default)
* **Threshold lines** displayed as dashed horizontal references on the chart, with the operator and value as labels (see [thresholds](./aggregators#thresholds))

### Filters on charts

When an aggregator has [aggregator filters](./aggregators#aggregator-filters) defined, the chart displays **one line per filter** with a distinct color. A legend below the chart identifies each filter by name.

### Card display logic

The Usage tab handles different scenarios to avoid duplicated cards:

| Scenario                                              | Display                                                       |
| ----------------------------------------------------- | ------------------------------------------------------------- |
| Aggregator from a subscription                        | Current value + subscription's metering period                |
| Directly assigned aggregator + 1 subscription         | Current value + that subscription's metering period           |
| Directly assigned aggregator + multiple subscriptions | One card per subscription, each with its own metering period  |
| Directly assigned aggregator + no subscription        | Current value + the aggregator's default aggregation interval |

## Period range and grouping

Use the date range picker at the top of the Usage tab to select a custom period. You can also choose how data is grouped:

| Group by    | Best for                                                                 |
| ----------- | ------------------------------------------------------------------------ |
| **Monthly** | Long-term trends (presets: last 3/6/12 months, current/past year)        |
| **Daily**   | Weekly or monthly analysis (presets: this/last week, current/past month) |
| **Hourly**  | Intraday monitoring (presets: today, yesterday, this/last week)          |

Each aggregator card updates to show the aggregated value for the selected period, and charts are filtered accordingly.

Numbers in cards and tooltips use a compact format (e.g. `1.2K` instead of `1,200`).

## Sorting

You can sort aggregator cards by:

* **Name** (ascending or descending)
* **Current value** (ascending or descending)

## Explore consumption

Click **Explore** on any aggregator card to open a side panel with the underlying events. The selected date range and grouping are forwarded to the panel.

The exploration panel provides:

* **Event list** filtered on the aggregator's event key, with timestamps and values
* **Search** to find specific events
* **Date range filter** to narrow the time window
* **Filter selector** to view events matching a specific aggregator filter
* **Pagination** for browsing through large event sets

From the card's dropdown menu, you can also navigate directly to the aggregator detail page or the linked subscription.

## Related

* [Global usage](./global-usage) — same charts aggregated across all customers, with a per-customer ranking drill-down
* [Aggregators](./aggregators) — define how raw events become a usage metric
* [Custom usage tracking](../customer-intelligence/custom-usage-tracking) — assign aggregators to customers without a subscription


# Explore usage events and consumption
Source: https://docs.hyperline.co/docs/usage/explore-usage-consumption

Explore raw usage events in Hyperline at global, customer, subscription, and invoice levels, or pull events programmatically through the API.

In the Hyperline platform, an event is a specific action or occurrence that can be tracked and measured.
You can explore it in the **Events** section or retrieve events programmatically via the [API](../../api-reference/endpoints/billable-events/get-events).
This view is global and will show all the events that are being tracked.

<Frame>
  <img />
</Frame>

<Frame>
  <img />
</Frame>

However, for each subscription and invoice, you can explore a more detailed view of the events.

## Explore usage data

You will be able to view the product's consumption along with the amount billed for each event.

<Frame>
  <img />
</Frame>

In order to do so, an action **Explore consumption** is available on different levels:

### Open data consumption on subscription

<Frame>
  <img />
</Frame>

### Explore invoice consumption

<Frame>
  <img />
</Frame>

<Frame>
  <img />
</Frame>

### Explore consumption on customer portal

In the customer portal, you can delve into the consumption details of each subscription.

This can be found in the 'Subscription Details' section.

<Frame>
  <img />
</Frame>

Here, you can view and analyze the usage data associated with each subscription.

<Frame>
  <img />
</Frame>

## Download usage data

You can export usage data in CSV format for analysis and processing.

### Export single product events

To download events for a specific product, click the **Export CSV** button in the consumption view.

<Frame>
  <img />
</Frame>

The CSV file includes the following columns:

<Frame>
  <img />
</Frame>

### Export all invoice events

When viewing an invoice with multiple usage-based products, you can download all events at once as a ZIP file containing separate CSV files for each product.

Click the **Export all events** button on the invoice page. The ZIP file will be named `events-{invoiceNumber}.zip` and contain one CSV file per product, with filenames based on the product names.

This is particularly useful when you need to analyze usage data across multiple products for a single billing period.

## Customize displayed event name

The event name can be customized when you create or edit the product.
It will be used to identify the event in the consumption.

In order to have a dynamic name for each event, it can depend on a specific key of the event.

<Frame>
  <img />
</Frame>

## Customize exposed columns

In the product editing section, you have the option to customize the columns that appear in the consumption CSV export.

<Frame>
  <img />
</Frame>

<Frame>
  <img />
</Frame>


# Getting started with usage-based billing
Source: https://docs.hyperline.co/docs/usage/getting-started

Build your first usage-based billing workflow in Hyperline: send events, create an aggregator, configure a metered product, and bill a subscription.

Usage-based billing lets you charge customers based on what they consume: API calls, transactions, storage, compute hours, seats, AI usage, or another measurable activity.

<Info>
  Monetizing AI products? See [AI monetization](/docs/ai-monetization/overview) for guidance on usage-based billing, prepaid credits, wallets, and hybrid pricing patterns for AI products.
</Info>

In Hyperline, the setup has four building blocks:

| Building block    | What it does                                                                                              |
| ----------------- | --------------------------------------------------------------------------------------------------------- |
| **Usage events**  | Raw customer activity sent to Hyperline through a CSV import, API, data loader, or test simulation.       |
| **Aggregator**    | Turns usage events into one billable metric, such as a count of API calls or the sum of stored gigabytes. |
| **Usage product** | Defines what you sell and how that metric is priced.                                                      |
| **Subscription**  | Assigns the product to a customer, with billing, payment, and metering settings.                          |

<Tip>
  Start with one simple usage metric before adding tiered pricing, filters, commitments, or spending caps. It is easier to validate the full billing flow when the first setup is intentionally small.
</Tip>

## Before you start

Make sure you have:

* A customer to test with, or permission to create one in **Customers**
* A usage metric you want to bill, such as API calls, processed transactions, or storage volume
* Usage data available through one of the supported ingestion methods
* A [test mode](/docs/getting-started/sandbox) workspace if you want to experiment before billing real customers

<Card title="Example 💡">
  You sell an API product with a monthly platform fee and a usage-based add-on. The add-on bills each customer for the number of API calls they make during the month. To set this up, you send API call events to Hyperline, create an aggregator that counts those events, link the aggregator to a usage product, then add that product to the customer's subscription.
</Card>

## Setup flow

### 1. Connect usage data

Hyperline needs usage events before it can calculate a usage-based charge. Choose the ingestion method that matches where your usage data already lives:

<CardGroup>
  <Card title="CSV import" icon="file-csv" href="./import-events-csv">
    Upload usage events from a spreadsheet or exported report.
  </Card>

  <Card title="API" icon="code" href="./send-usage-data">
    Send events from your application or backend systems.
  </Card>

  <Card title="Data loaders" icon="database" href="./usage-data-with-connectors">
    Pull usage data from a connected database or warehouse.
  </Card>

  <Card title="Simulated events" icon="sparkles" href="./simulate-usage-data">
    Create test usage directly from a customer page in test mode.
  </Card>
</CardGroup>

For each event, Hyperline needs enough information to identify the customer, event type, timestamp, and usage properties you want to bill or filter on.

<Note>
  If you are still exploring the model, use [simulated events](./simulate-usage-data) in test mode. You can validate the subscription and invoice behavior before connecting a production data source.
</Note>

### 2. Create an aggregator

Go to **Usage** > **Aggregators**, then click **New aggregator**.

An aggregator defines how Hyperline turns raw events into a billable number. Configure:

* **Event type**: the event category to measure, such as `api_call`, `transaction`, or `storage_snapshot`
* **Operation**: how the metric is calculated
* **Unit name**: the label shown in usage charts, prices, invoices, and the customer portal
* **Filters**: optional rules that include only matching events

| Operation       | Use it when                                                                                      |
| --------------- | ------------------------------------------------------------------------------------------------ |
| **Count**       | Each matching event should count as one unit, such as one API call or one transaction.           |
| **Sum**         | A numeric field on the event should be added up, such as gigabytes stored or compute minutes.    |
| **SQL formula** | You need a custom calculation, such as applying an allowance, cap, or adjustment before billing. |

Learn more in [Aggregators](./aggregators).

### 3. Create a usage product

Go to **Products**, click **New product**, then choose **Usage**.

When configuring the product:

1. Add the product name and description.
2. Select the aggregator you created.
3. Configure at least one recurring price.
4. Choose the pricing model and tiers that match your commercial offer.
5. Save the product.

For a simple first setup, use one recurring price with a straightforward rate. You can add advanced pricing later, such as volume tiers, basis points, or price-level metering filters.

<Info>
  Usage products are configured in the product catalog, then reused in quotes, subscriptions, and customer-specific agreements. See [Products and prices](/docs/products/overview#usage) for the full product setup reference.
</Info>

### 4. Add the product to a subscription

Once the usage product has a recurring price, assign it to a customer subscription.

1. Open the customer page.
2. Click **Actions** > **Assign new subscription**, or go to **Subscriptions** and click **New subscription**.
3. Select the customer and subscription start date.
4. Click **Add product** and select the usage product.
5. Review the product price, billing interval, and metering settings.
6. Open **Payment settings**.
7. For testing, choose **Manually later** so the subscription can be created without collecting payment immediately.
8. Click **Assign subscription**.

After the subscription is assigned, Hyperline starts tracking usage for the product based on the subscription's metering period.

<Tip>
  If the customer has both fixed and usage-based charges, add both products to the same subscription. This keeps the recurring fee and usage charges together in the customer's invoice flow.
</Tip>

### 5. Check usage and invoices

After events are connected and the subscription is active, validate the setup from the customer page:

* Open the customer's **Usage** tab to see current aggregator consumption.
* Open the customer's **Subscriptions** tab to review usage on the active subscription.
* Click **Explore** or the usage detail icon to inspect the events behind the total.
* Open the customer's **Invoices** tab to check the `open` invoice preview for the current period.

An `open` invoice is a live preview. For usage-based subscriptions, it updates as new events are recorded. At the end of the billing period, the invoice enters the configured grace period before it is finalized and sent for payment.

## Common first checks

If the subscription does not show the usage you expect, check these items first:

* The event timestamps fall inside the subscription's current metering period.
* The event type matches the aggregator's **Event type**.
* The event belongs to the same customer as the subscription.
* The aggregator filters do not exclude the events.
* The usage product is included in an active subscription.

For more invoice behavior details, see [Invoice terms](/docs/invoices/term).

## Next steps

<CardGroup>
  <Card title="Follow the full setup guide" icon="arrows-rotate" href="/guides/configure-usage-based-billing">
    Walk through an end-to-end usage-based subscription setup.
  </Card>

  <Card title="Configure aggregators" icon="calculator" href="./aggregators">
    Learn how count, sum, formulas, filters, and thresholds work.
  </Card>

  <Card title="Explore customer usage" icon="chart-line" href="./customer-usage">
    Monitor consumption and inspect the events behind each metric.
  </Card>

  <Card title="Review metering settings" icon="sliders" href="/docs/subscriptions/metering">
    Understand subscription-level metering periods and usage windows.
  </Card>
</CardGroup>

<Info>
  Is something still unclear? Don't hesitate to reach out to our team via the in-app chat if you need additional support.
</Info>


# Global usage
Source: https://docs.hyperline.co/docs/usage/global-usage

View aggregator usage across all Hyperline customers from one place, drill into top consumers, and analyze billable metric trends in real time.

The **Usage** section gives you a client-wide view of every [aggregator](./aggregators), with a chart per aggregator covering all customers and all subscriptions. From there, you can drill into any aggregator to see which customers are driving its consumption.

Access it from the sidebar under **Usages > Usage**.

## Aggregator cards

Each aggregator is displayed as a card showing:

* **Aggregator name** and unit (e.g. `API calls`, `GB`)
* **Total aggregated value** for the selected period across all customers
* **Area chart** of the value evolution over time, with one line per [aggregator filter](./aggregators#aggregator-filters) when filters are defined
* **Threshold lines** as dashed horizontal references when [thresholds](./aggregators#thresholds) are set on the aggregator

Numbers are rendered with a compact format (e.g. `1.2M` instead of `1,200,000`) so cards stay readable at a glance.

## Period and grouping

Use the date range picker at the top of the page to select a custom period. You can also choose how data is grouped:

| Group by    | Best for                                                                 |
| ----------- | ------------------------------------------------------------------------ |
| **Monthly** | Long-term trends (presets: last 3/6/12 months, current/past year)        |
| **Daily**   | Weekly or monthly analysis (presets: this/last week, current/past month) |
| **Hourly**  | Intraday monitoring (presets: today, yesterday, this/last week)          |

Presets adapt to the selected grouping. Filter values are persisted in the URL, so a view can be shared by copying the link.

## Sorting and search

Sort cards alphabetically by name, ascending or descending. Use the search box to narrow the list when you have many aggregators.

## Group by customer

Click **Explore consumption** on any usage card to open a side panel. It ranks customers by their contribution to the aggregator over the selected period.

The panel shows:

* **Customer** — name and link to the customer's profile
* **Value** — that customer's aggregated total for the period (compact format)

Rows are ordered by total descending (top consumers first) and paginated 20 at a time. The date range and grouping are inherited from the parent page; you can refine the breakdown to a single [aggregator filter](./aggregators#aggregator-filters) using the filter selector.

<Note>
  The explore panel allows you to compare contributions across multiple filters, switch the selected filter or open the panel from a different aggregator card.
</Note>

## Aggregator details

From the card's dropdown menu, you can open the aggregator's detail page to review its configuration (operation, event type, filters, thresholds) or edit it. See [Aggregators](./aggregators) for the full configuration reference.

## Permissions

Access to the **Usage** section is gated by the `usages_read` permission. Manage permissions per role from **Settings > Roles**, under the **Usage** group.

Existing roles that already had the `events_read` permission were granted `usages_read` automatically. New roles must opt in.

## Related

* [Aggregators](./aggregators) — define how raw events become a billable metric
* [Customer usage](./customer-usage) — same charts scoped to a single customer
* [Explore your data usage](./explore-usage-consumption) — drill into raw events from a subscription or invoice


# Import events with a CSV file
Source: https://docs.hyperline.co/docs/usage/import-events-csv

Import usage events into Hyperline in bulk by uploading a CSV file from Google Sheets, Excel, or any spreadsheet editor with required fields.

You can import events in bulk by uploading a CSV file. You can create your CSV using tools like **Google Sheets**, **Excel**, or any spreadsheet editor.\
Writing the CSV manually is possible but **not recommended** due to the risk of formatting mistakes.

## Required fields

Each event row must include:

* **`timestamp`** — When the event occurred, in **ISO 8601** format.
* **`event_type`** — The name of the event. This value is flexible and later used when configuring your products.
* **`customer_id`**
* **`record/id`** — A unique identifier for the event.\
  Uploading another event with the same `record/id` will overwrite the previous one.

<Tabs>
  <Tab title="Example with Google Sheets">
    <Frame>
      <img />
    </Frame>
  </Tab>

  <Tab title="Exporting the file as csv">
    <Frame>
      <img />
    </Frame>
  </Tab>
</Tabs>

## Custom fields

You can add as many custom fields as needed.

All custom fields must start with the prefix **`record/`**.\
For example, to create a field named `count`, name the column **`record/count`**.

## Upload your file

To begin, open the **[Events Explorer](https://app.hyperline.co/app/events/explore)** in Hyperline.

<Frame>
  <img />
</Frame>

Click **Import events from CSV** in the top-right corner to open the upload modal.

You can also download a **CSV template** from the same modal.\
The template includes the correct header row and a sample event to help you get started.

<Frame>
  <img />
</Frame>

After selecting your file, click **Import CSV file** to start the upload.\
If the file contains no errors, your events will be imported and ready for analysis.

<Frame>
  <img />
</Frame>

## Manually writing the CSV file

When preparing your CSV file, make sure it follows these rules:

* Use **commas** as field separators.
* Wrap fields in **double quotes** if they contain commas or line breaks.
* Always include a **header row** to describe each column.
* Use the **ISO 8601** format for the `timestamp` field.
* Use a consistent format for nested fields, such as `record/id` or `record/amount`.
* All standard fields are required. `record/` fields are optional and as many as needed can be declared.

### Example

Below is an example of a valid CSV file.\
(`record/type` and `record/is_live` are only examples—you can define your own fields.)

```csv theme={null}
timestamp,event_type,record/id,record/type,record/is_live,customer_id
"2023-11-07T13:59:40.536Z",api_call,1245,"paid",true,"cus_foXtwuyW7NsCH-"
"2023-11-07T13:59:40.536Z",api_call,1152,"to_pay",true,"cus_foXtwuyW7NsCH-"
"2023-11-07T13:59:40.536Z",api_call,8625,"pending",false,"cus_foXtwuyW7NsCH-"
"2023-10-18T15:53:24.772Z",api_call,9752,"closed",true,"cus_foXtwuyW7NsCH-"
"2023-10-18T15:53:24.772Z",api_call,7052,"open",true,"cus_foXtwuyW7NsCH-"
```

Notes:

* `record/id` is numeric and does not require quotes.
* String fields (such as `record/type`) must be enclosed in quotes.
* Boolean fields (such as `record/is_live`) do not require quotes.


# Connect with MongoDB
Source: https://docs.hyperline.co/docs/usage/mongodb

Connect a MongoDB database to Hyperline as a data loader to pull usage events automatically, without writing custom integrations or API code.

This guide is specific to setting up a dataloader with [MongoDB](https://www.mongodb.com), to learn more about data loaders in general, you can read our [general article](./usage-data-with-connectors).

## Connect to your database

To get started, just go to the [data loaders page](https://app.hyperline.co/app/events/loaders) in Hyperline, create a new Connection and select "MongoDB" in the dropdown list.

<Frame>
  <img />
</Frame>

To set up our MongoDB connector, you'll just need a valid database URL - you can also pass additional parameters within the URL if you need custom options.

## Load your data

Create a new dataloader directly below the new connection, you'll be asked to provide a JSON query.

Your query needs to include a `collection` attribute pointing to your base collection, because, as opposed to traditional SQL providers, MongoDB doesn't allow direct aggregation queries without a default collection.

A simple query to load 3 fields from a collection would typically look like this, with everything outside of "collection" being valid MongoDB query fields (you can use aggregate, lookups, filters...).

Hyperline will parse the JSON from your input and transform it into a valid MongoDB query to run on the connected server.

<Frame>
  <img />
</Frame>

Make sure to include an `id`, `customerId` and `timestamp` field with the correct casing.


# Connect with PostHog
Source: https://docs.hyperline.co/docs/usage/posthog

Connect a PostHog Cloud project to Hyperline and import product events into usage-based billing using a scheduled HogQL query data loader.

You can connect a PostHog Cloud project to Hyperline and use its product events as usage data. Hyperline runs a [HogQL query](https://posthog.com/docs/sql) on a schedule and imports the results as events.

<Note>
  Hyperline supports PostHog Cloud projects hosted in the EU or US. The connection uses read-only query access.
</Note>

## Connect your PostHog project

1. Go to **Settings** > **Integrations** in Hyperline.
2. Find **PostHog** and select **Connect**.
3. Sign in to PostHog if prompted.
4. Select one PostHog project and authorize Hyperline.

After authorization, Hyperline automatically creates a PostHog connection on the [data loaders page](https://app.hyperline.co/app/events/loaders). You do not need to copy an API key or project ID.

## Create a data loader

1. Go to the [data loaders page](https://app.hyperline.co/app/events/loaders).
2. Select **New data loader**.
3. Choose the PostHog connection created for your project.
4. Enter the event type that Hyperline should use for the imported records.
5. Choose how often Hyperline should refresh the data.
6. Enter a HogQL query and preview the results.

Your query must return these fields with the exact casing:

* `id` — a stable, unique identifier for the record
* `customerId` — the Hyperline customer ID or external ID associated with the record
* `timestamp` — when the event occurred

For example, the following query imports PostHog events named `api_call`:

```sql theme={null}
SELECT
  uuid AS id,
  distinct_id AS "customerId",
  timestamp,
  properties.endpoint AS endpoint
FROM events
WHERE event = 'api_call'
```

In this example, each PostHog `distinct_id` must match a Hyperline customer ID or external ID. You can select additional event properties when you need them for aggregation or pricing.

<Tip>
  Filter the query to include only billable events and properties. This keeps each refresh focused on the data Hyperline needs for billing.
</Tip>

7. Check that the preview contains the expected customers and records.
8. Save the data loader.

Hyperline imports the query results on the selected schedule. For more information about customer matching, record updates, and required fields, see [Pull usage data with connectors](./usage-data-with-connectors).

## Next steps

* [Configure aggregators](./aggregators)
* [Explore usage consumption](./explore-usage-consumption)
* [View customer usage](./customer-usage)


# Send usage data
Source: https://docs.hyperline.co/docs/usage/send-usage-data

Send usage events to Hyperline through the API to drive usage-based billing, with guidance on event design, payload structure, and best practices.

Sending usage data is the first thing to do to unlock Hyperline's potential when you have a usage-based model, but there are a few tips to make the most out of our system.

First, **we're not an analytics API**, sending us page views, user logins or other non-critical events doesn't really make sense as you probably won't use them for your pricing and packaging anyway.

This being said, you shouldn't refrain from sending data that you're not using yet. Hyperline is designed for you to iterate on your pricing & packaging and will allow you to run experiments and simulations from the data we have ingested.

The best way to think about events to send us is to ask yourself if you'll use the data either

* To price your product (ex: price per user or per API call)
* Limit usage (ex: free up to 5GB of storage)
* Orchestrate pricing-related workflows (ex: when a customer reaches X, show a paywall).

When in doubt, just send it, once it's in the system, you'll be able to play with it and may discover some new opportunities.

## Ingestion basics

Event payloads always follow the same structure and can be sent to the [POST `/events` endpoint](../../api-reference/endpoints/billable-events/ingest-billable-event). The `record` object can contain any additional properties of type `string`, `number`, `boolean`, and array of these types but arrays of objects will be rejected.

Events are processed instantly, you can go to your [events page](https://app.hyperline.co/app/events/explore) and refresh it to see it.

The events ingestion API is rate-limited to 1,000 requests per 10 seconds. When sending events in batch, each request can contain up to 5,000 events. See [rate limiting](/api-reference/docs/rate-limiting) for more details.

Here's an example payload:

```json Event theme={null}
{
  "customer_id": "cus_fh4585Jjrekkk",
  "timestamp": "2022-01-05 21:56:52",
  "event_type": "new_transaction",
  "record": {
    "id": 485,
    "amount": 2500
  }
}
```

## Security and privacy

Even though we make some basic security checks, we can't filter every piece of personal or confidential data from our systems automatically.

Most of the time you don't need personal information in Hyperline so we recommend you remove or obfuscate (for instance, John becomes J\*\*\*).

* People names
* People's personal email addresses
* Phone numbers
* Payment information like card numbers or IBANs
* Physical addresses
* Anything that could help identify someone or their location

In our systems, we're responsible for keeping your data safe, but you're in charge of the content itself, so be careful, your customer's safety is an important matter.

## Events or entities?

Hyperline is designed to rely fully on events for data ingestion. We can then apply a variety of operators to configure how you want to aggregate data (count, sum), and filters (equals, "is null" check, greater/lower than comparators, etc.).

<Frame>
  <img />
</Frame>

In the first case, Hyperline will treat your events as *entities* or *models*, meaning that one event will represent one item in our database, independently of its timestamp.

For instance, let's say you want your customer to pay 5€ per user, you'll send us the following *event* when a new user is registered.

```json Event theme={null}
{
  "customer_id": "<customer_id>", // Hyperline ID or external ID of the existing customer
  "timestamp": "2023-11-12T00:00:00.000Z", // used to aggregate depending on the billing period
  "event_type": "users", // use the name you want
  "record": {
    "id": 258,
    "work_email": "l***.c***@yourcompany.com",
    "created_at": "2023-11-12T00:00:00.000Z",
    "deleted_at": null // we'll use this field later
  }
}
```

Then you'll create a dynamic product that counts your users, and apply a volume pricing to it by defining an interval and the related pricing tiers.

<Frame>
  <img />
</Frame>

We offer you a preview of the evolution of this pricing to make it more visible regarding how it evolves with the increase of items.

## Update and delete events

Now you may be thinking, what happens if I send an event that shouldn't be billed? Or if you need to make a change to an entity?

Hyperline's API is an append-only system, meaning that except through our interface, we don't allow update or delete operations. But don't worry, we got you covered.

### Updating an event

Each event is identified by a unique key composed of 2 parameters:

* `event_type`
* `record.id`

When Hyperline detects a new event with the exact same 2 keys, it will consider that this new event overrides the previous one and therefore will replace it in the database.

In other words, updating an event is just like creating one — resend the event with the same `event_type` and `record.id`, and the matching event will be replaced.

To find out which event is the latest, we're using the `timestamp` value.

<Info>
  Only the `record` (payload) and `timestamp` fields are updated when resending an event.
  The `customer_id` and `event_type` fields are **immutable** — they remain as set by the original event and are ignored on update.

  If you need to change the customer associated with an event, delete the original event and create a new one.
</Info>

Using our users again, here's an example where we add a "status" property:

```json theme={null}
{
  "customer_id": "<customer_id>",
  "timestamp": "ACTIVE_DATE",
  "event_type": "users",
  "record": {
    "id": 258,
    "status": "premium",
    "work_email": "l***.c***@yourcompany.com",
    "created_at": "2022-01-01 10:00:00",
    "deleted_at": null
  }
}
```

The event in the database will now have a `premium` status and the previous version will not exist anymore. If you need to keep both versions, you'll need to provide a different `record.id`.

### Deleting an event

If you sent an event by mistake, you can delete it in the **Events** tab on the app. But this is not the way to manage *standard* deletions, for instance when a user is removed from an account.

There are many ways to manage this, the first one is to use the `deleted_at` key we added earlier and set it to something different than `null`. Then update the usage product we created earlier to filter out records where `deleted_at` is not null like so.

<Frame>
  <img />
</Frame>

Another option is to use a state or a flag in the model, for instance, an `active` boolean field in the user entity that you can toggle to off. The principle stays the same, just set a property to the right value and filter out the elements you don't want.

## Retrieve events via API

You can retrieve billable events programmatically using the [GET `/v1/events` endpoint](../../api-reference/endpoints/billable-events/get-events). This allows you to:

* Query events by event type
* Filter by customer, record IDs, or timestamp range
* Sort results in ascending or descending order
* Paginate through large result sets

This is useful for building custom analytics, auditing usage data, or integrating event data into your own systems.

```bash Example request theme={null}
curl -H "Authorization: Bearer <API key>" \
  "https://ingest.hyperline.co/v1/events?event_type=api_call&customer_id=cus_xyz789&timestamp_gte=2024-01-01T00:00:00Z"
```

## Limitations

In order to process massive numbers of events, Hyperline had to adopt a *rigid* structure for events. While quite permissive, there are 2 main limitations:

* Record properties can't be nested (only one level of properties is allowed)
* Records can't have more than 25 properties


# Simulate usage data
Source: https://docs.hyperline.co/docs/usage/simulate-usage-data

Simulate usage events in Hyperline's sandbox without code to test usage-based subscriptions and explore billing behavior before going to production.

Want to test Hyperline by creating your first usage-based subscription for a customer, but don’t have technical skills or simply want to move fast? This guide is for you.

In the [sandbox (Test mode) environment](https://sandbox.app.hyperline.co), you can simulate usage data with fake events for any customer in just a few steps.

1. Go to one of your customers → ***Events*** tab
2. Click ***Simulate new events***
3. Fill in the ***Event type*** field with the event name used to aggregate usage in your product configuration, along with the date and number of events to create. Optionally, you can add extra parameters using the JSON ***Payload*** field
4. Click ***Create new events***

<Frame>
  <img />
</Frame>

Events may take a few seconds to be ingested. You’ll see them appear in your customer’s ***Events*** page — and you can easily delete them afterward if needed.

You can also view the customer’s subscription usage details and updated next payment amount in the ***Subscription*** tab, and check the ***open*** invoice (the next invoice to be charged at the end of the billing period) in the ***Invoices*** tab.

Note: it may take a few minutes for the invoice to appear.


# Connect with Snowflake
Source: https://docs.hyperline.co/docs/usage/snowflake

Connect a Snowflake warehouse to Hyperline as a data loader to pull usage events automatically, with credentials and query configuration steps.

This guide is specific to setting up a dataloader with [Snowflake](https://www.snowflake.com), to learn more about data loaders in general, you can read our [general article](./usage-data-with-connectors).

## Connect to your database

To get started, just go to the [data loaders page](https://app.hyperline.co/app/events/loaders) in Hyperline, create a new Connection and select "Snowflake" in the dropdown list.

<Frame>
  <img />
</Frame>

Fill in the form with your connection details (account ID, username, warehouse, database, schema, role). Hyperline will only need read access to the tables you need to synchronise.

### Authentication

Hyperline supports two authentication modes for Snowflake, selectable from the **Authentication** dropdown in the connection form:

* **Password** — authenticate with the Snowflake user's password.
* **Key pair (RSA)** — authenticate with an RSA private key that is registered on the Snowflake user.

<Warning>
  Snowflake is [deprecating single-factor password authentication on August 31, 2026](https://www.snowflake.com/en/blog/blocking-single-factor-password-authentification/). If your connection uses a password today, plan to migrate to key-pair authentication (or another supported method) before that date to avoid disruption.
</Warning>

#### Password authentication

Select **Password** and enter the user's password in the **Password** field.

#### Key pair (RSA) authentication

Select **Key pair (RSA)** and provide:

* **Private key** — the RSA private key registered on the Snowflake user, in PEM format. Paste the full key including the `-----BEGIN PRIVATE KEY-----` and `-----END PRIVATE KEY-----` lines (or the encrypted equivalent).
* **Private key passphrase** *(optional)* — the passphrase protecting the private key, if it is encrypted. Leave empty for unencrypted keys.

Refer to Snowflake's [key-pair authentication guide](https://docs.snowflake.com/en/user-guide/key-pair-auth) for instructions on generating a key pair and assigning the public key to a Snowflake user.

## Load your data

Snowflake is a standard SQL loader and you just need to write a Snowflake compatible SQL query. Hyperline will run it as the role/user that was used to connect to the database.

As always, make sure to include `id`, `customerId` and `timestamp` fields with the correct casing.


# Pull usage data with connectors
Source: https://docs.hyperline.co/docs/usage/usage-data-with-connectors

Pull usage data from your own database into Hyperline using connectors for PostgreSQL, BigQuery, Snowflake, and MongoDB without writing API code.

If you don't fancy integrating our API, we have released a connector system allowing you to import data directly from your own database.

## Prerequisites

* You need a Postgres database that can receive incoming traffic from our IPs `15.188.105.163`, `15.188.215.105` and `35.181.129.14`
* The associated database URL (should look something like `postgres://username:password@host.com/database`)

The best practice here is to use a read replica and create a limited user specifically for us that will only be able to access the needed subset in the database.

## Load your data

To get started, just go to the [data loaders page](https://app.hyperline.co/app/events/loaders) in Hyperline. You should see an empty state.

<Frame>
  <img />
</Frame>

Let's add your first connection by clicking on "New connection". In the modal,

* Select a provider
* Give a name you'll remember to your connection
* Enter the URL you got from the prerequisites

When you click submit, we do a quick check to make sure your database is accessible by running a blank query. You should now see your connection live.

Time to create your first loader by clicking on "New data loader" on the right side of the screen. This opens up a slightly longer modal but don't worry, it's really easy.

* Select the connection you just created
* Set an Event type for this query, it's the identifier we'll use later in the product to refer to the data from this query. It could be `api_calls` or `active_users` for instance
* Select the refresh rate depending on your use case, to get started every hour is largely sufficient

<Frame>
  <img />
</Frame>

## Getting the SQL right

Now it's time to start typing your query. Hyperline will need a few things from you and expect a specific format as the query output.

We'll need 3 fields to validate the query:

* `timestamp` — The date used to determine whether a record falls within a billing period. For example, if you bill monthly API calls, only events with a timestamp within the current billing cycle are included. This field is less critical if your pricing does not rely on periodic metering.
* `customerId` — The Hyperline ID or external ID of the customer. This field is used to associate each record with the corresponding customer.
* `id` — A unique identifier for the record (can be an ID from your system). Hyperline uses this field to de-duplicate and update records, so ensure it uniquely represents each record.

When importing records, Hyperline will try to match an existing customer or create a new one with a status `automatically_created` that won't be displayed by default in your customers list to avoid spam (but you can access them using the `pending customers` table).

Optionally, you can also return a `customerName` property so we add a name to the customer when creating it, which will make it easier for you to find them later.

To summarise, the minimum acceptable request looks like this

```sql theme={null}
-- Make sure to use quotes in postgres to make the query case sensitive
SELECT id, company_id as "customerId", created_at as timestamp from api_calls
```

Or to import the customer name

```sql theme={null}
-- Adding customer name
SELECT id, company_id as "customerId", companies.name as "customerName", created_at as timestamp FROM api_calls LEFT JOIN companies on companies.id=api_calls.company_id
```

That's the minimum for a query to be accepted and loaded into Hyperline. You can then add any other fields to your query, but please make sure you only include what's necessary to keep data sharing to the bare minimum.

Then click preview query, we'll validate the presence of the required fields and display a preview of 5 records so you can make sure everything is in order.

<Frame>
  <img />
</Frame>

Save the data loader and go to your events page, after a few seconds, you should see a table with your newly ingested events. We're limiting exploration capabilities for now but will add more features later. See it as a debugger.

### Updating records

Hyperline automatically updates existing records, we're using a combination of the supplied `id` and `customerId` and always keep the latest version. We don't update customer names in Hyperline even if the name has changed, you'll need to change it in the interface.

### Deleting records

Hyperline doesn't delete records automatically to avoid any issue, we recommend that you add a `deletedAt` field in the query that you set to something when the record is deleted. You'll then be able to filter these records out in our pricing engine.

### Loading big tables

Hyperline processes queries in batches, so you should be covered as long as your query is reasonable (we can process up to 120k rows per minute). If your table is bigger than this, consider importing only records that have been updated after the last refresh, or importing them less often. It's actually quite easy.

```sql theme={null}
-- Adapt this to your refresh time
SELECT xxx FROM table WHERE (updated_at + interval '60 minutes') > NOW()
```


# Manage wallet balance
Source: https://docs.hyperline.co/docs/wallets/balance

Top up Hyperline customer wallets via prepayment, offline payments, free funds, the customer portal, or the API, and track every wallet movement.

## Top up a wallet

There are several ways funds can be added to a customer's wallet:

1. Initiate a prepayment from the customer's default automatic payment method
2. Record an offline payment received outside Hyperline
3. Add free funds
4. Let customers top up independently from the customer portal
5. Top up through the API

**Paid top-ups** are funds your customer pays for, acting as a prepayment. **Free top-ups** are an offer you are making to the customer.

### Initiate a prepayment

Use **Initiate prepayment** when the customer has a default automatic payment method, such as card or direct debit. Hyperline charges that payment method, adds the funds to the wallet, and generates a confirmation receipt.

The receipt has no accounting impact. It confirms that Hyperline received a prepayment and credited the wallet.

### Record an offline payment

Use **Record offline payment** when the customer has already paid outside Hyperline, for example by bank transfer. Hyperline adds the funds to the wallet and creates a payment advance document with no accounting value.

When recording an offline payment, you can optionally attach:

* A bank account
* A bank transaction from an Open Banking-connected bank account
* A payment reference
* An internal comment

Only bank accounts using the same currency as the wallet can be selected.

### Free top-ups

Use **Add free funds** when you want to credit a wallet without collecting payment. Hyperline adds the funds to the wallet and creates a credit note for accounting purposes.

You can create the credit note immediately or keep it as a draft first.

<Note>
  Free wallet loads must be enabled in wallet settings before free funds can be added.
</Note>

### API top-ups

Wallets can also be topped up through the API. Use the API when wallet loads should be triggered by your own product, backend workflows, or internal tooling.

### From the customer portal

You can let your customers top up independently through their portal.

<Steps>
  <Step title="Make sure you enabled the option">
    For this, you have to go to the [wallet settings](./overview) first.

    <Info>
      **Top-up limitations**

      It is currently not possible to add more than \$100 in one payment to a wallet, and the total balance of a wallet can't be more than \$500 for payments made through a customer portal.

      Paid top-ups added through Hyperline have no limitations.
    </Info>
  </Step>

  <Step title="Your customers are now able to top-up from their portal">
    They will be required to add a credit card as a payment method to do so.

    <Frame>
      <img />
    </Frame>
  </Step>

  <Step title="Your customers choose how much they want to add to their wallet">
    Clicking on **Top-up** on this screen will trigger an immediate payment from the registered credit card and credit the wallets instantly.
  </Step>

  <Step title="The corresponding invoice is now created and visible on the portal">
    Invoices can be downloaded as PDF by the customer.
  </Step>
</Steps>

## Wallet debit

Customer wallets are automatically debited when the feature is enabled in the wallet settings and the wallet has a positive balance. Wallet funds are used to pay subscriptions, related invoices, and one-time payments.

A wallet cannot have a negative balance.

Hyperline automatically deducts the maximum possible amount from the wallet when paying invoices. Any remaining amount is charged to the customer's default payment method.

You can also charge a specific invoice from the customer's wallet manually. In that case, choose the amount to charge, up to the lower of the invoice amount due and the current wallet balance.

An invoice can combine multiple payment sources (e.g. wallet + credit card), and this breakdown is displayed on the generated PDF invoice.

## Revert a wallet transaction

You can revert wallet top-up transactions to remove funds that were previously added to a customer's wallet.

<Note>
  Only top-up transactions (credit transactions) can be reverted. Debit transactions (consumption) cannot be reverted.
</Note>

### How it works

When you revert a wallet transaction:

* The credited amount is deducted from the current wallet balance
* If the transaction was a **free top-up**, the related credit note is voided
* If the transaction was a **paid top-up**, the amount is deducted from the wallet balance. If you need to refund the initial banking transaction, this must be done outside of Hyperline

### Requirements

A transaction can only be reverted if:

* It is a top-up transaction (not a debit/consumption transaction)
* It has not already been reverted
* The wallet has sufficient balance to cover the reversal amount

<Warning>
  Make sure the wallet balance is sufficient before reverting a transaction. If the balance is too low, the revert action will fail.
</Warning>

## Wallet balance & projection

Wallet balances are computed in real time in Hyperline.

In addition to the wallet balance, we also compute and return a projected balance. This balance takes into account a projection of the future remaining money on the wallet after paying what will be due in the current period (subscription, usage). This is particularly useful for a pay-as-you-go use case when you want to restrict access to your product if the customer doesn't have enough funds in their wallet.


# Wallets overview
Source: https://docs.hyperline.co/docs/wallets/overview

Manage customer prepaid balances in Hyperline wallets — top up funds, auto-apply to invoices, and support upfront billing or pay-as-you-go flows.

Hyperline wallets let you manage customer balance: prepaid funds that you or your customers can add and automatically apply when invoices are paid. This feature is particularly useful for setting up upfront payments in pay-as-you-go flows or offering free funds to your customers.

Each customer can have their own wallet in their preferred currency.

<Info>
  A wallet cannot have a negative balance.
</Info>

## Wallet settings

Configured at the account level (in the **Settings** > **Wallets** page), these settings apply to all customer wallets.

By default, the wallet feature is disabled. To activate it, navigate to your settings.

<Frame>
  <img />
</Frame>

### Free top-up

This option allows you to add funds directly to your customers' wallets at no additional cost. When adding free funds to the wallet, a corresponding credit note is generated for accounting purposes.

### Top-up from customer portal

This option allows your customers to add funds using their current payment method directly through their portal. An active and valid payment method is required for the top-up to be successful.

<Frame>
  <img />
</Frame>

### Eligible products

You can select the products to which you want the wallets to apply when paying invoices. By default, the wallets apply to all products (i.e., the full invoice amount).

## Create a wallet for a customer

Now that you have enabled wallets on the settings page, you can create wallets for your customers in Hyperline.

To do this, go to the **Customers** page in Hyperline's main menu.

Navigate to the **Wallet** tab and click **Create wallet**.

## Manage wallet

You can decide to edit the configuration of a customer wallet. Go to a customer page > **Wallet** tab > **Actions** > **Edit wallet**.

<Frame>
  <img />
</Frame>

### Update name

Wallet name can be updated. This name is used to easily identify the wallet depending on your use case. This name will appear on the final invoice when the wallet is used as a payment method to pay the invoice.

### Auto top-up

You can choose to set up an automatic top-up for a customer's wallet at a specified interval. Simply configure the amount, the interval, and the next top-up date for this automated fund addition.

Funds are added to the existing wallet balance.

<Frame>
  <img />
</Frame>

### Pause wallet

You can choose to pause the use of a wallet for a specific customer. When paused, the wallet will no longer be used to pay future invoices. You can reactivate the wallet at any time.

## Pay-per-use

If your customers are paying depending on their use of your services, you can provide them with a wallet so they have an upfront payment solution.

<Card>
  **Example**

  One API call costs your customer 1 cent. If you activate the wallet, your customer will be able to top up their wallet in advance. They can then pay upfront for as much as they want and use your services until their wallet balance runs out.
</Card>

## Managing zero balances

If you allow your customers to top up their wallets, we recommend you think about a flow to warn them before their wallet balance reaches 0. This is especially relevant if reaching a zero balance interrupts their services.

You can use [our webhooks](/api-reference/docs/webhooks) to monitor wallet activity.


# Getting started
Source: https://docs.hyperline.co/guides/ai

Connect Claude, ChatGPT, Cursor, and other AI assistants to Hyperline using MCP, the CLI, and reusable skills for common billing workflows.

AI assistants can help you explore Hyperline, build integrations, and automate billing workflows. Hyperline supports several AI-friendly entry points depending on where your assistant runs and what it needs to do.

## Choose how your AI assistant works with Hyperline

<CardGroup>
  <Card title="Hyperline MCP" icon="robot" href="/api-reference/docs/ai/mcp">
    Connect assistants such as Claude, ChatGPT, Cursor, and VS Code to your Hyperline account through MCP.
  </Card>

  <Card title="Hyperline CLI" icon="terminal" href="/api-reference/docs/ai/cli">
    Use the agent-first CLI for terminal-based assistants and scripts.
  </Card>
</CardGroup>

## Reusable skills

Skills are reusable instructions that help an AI assistant perform a specific Hyperline workflow reliably. They combine the exact API shape, required inputs, and caveats the assistant should respect.

This section collects practical skills you can copy into your own AI assistant or agent workspace.

| Skill                                                                                 | Use it for                                                                                                                |
| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| [Create a subscription from a template](/guides/ai/create-subscription-from-template) | Create a subscription from a template while preserving template configuration.                                            |
| [Create an invoice](/guides/ai/create-invoice)                                        | Create draft or payable invoices with explicit line items and status.                                                     |
| [Create a quote from a template](/guides/ai/create-quote-from-template)               | Create a quote from a quote template and optionally set custom properties on the subscription created from that template. |
| [Build an insights report](/guides/ai/build-insights-report)                          | Answer revenue, invoice, subscription, and usage reporting questions.                                                     |
| [Investigate a customer balance](/guides/ai/investigate-customer-balance)             | Reconcile customer balances, invoices, wallets, credits, and payments.                                                    |
| [Answer a billing question](/guides/ai/answer-billing-question)                       | Answer Hyperline billing questions with docs and read-only account checks.                                                |
| [Bulk update subscriptions](/guides/ai/bulk-update-subscriptions)                     | Plan, confirm, apply, and verify bulk subscription changes safely.                                                        |

## Next steps

* Use [Hyperline MCP](/api-reference/docs/ai/mcp) when your assistant supports MCP and needs to read or write Hyperline data.
* Use [Hyperline CLI](/api-reference/docs/ai/cli) when your assistant can run shell commands.
* Copy a skill into your agent instructions when you want repeatable behavior for a known workflow.


# Answer a billing question with AI
Source: https://docs.hyperline.co/guides/ai/answer-billing-question

AI skill that answers Hyperline billing questions by combining product documentation with read-only checks against your live account data.

Use this skill when an AI assistant needs to answer a question about a billing workflow, a customer account state, or how to use Hyperline.

## Skill

```md theme={null}
---
name: answer-billing-question
description: Answer a Hyperline billing question using documentation and read-only data checks. Use when an agent needs to explain subscriptions, invoices, payments, quotes, usage, credits, wallets, analytics, custom properties, or API behavior.
---

# Answer Billing Question

Start with documentation. Use account data only when the answer depends on the customer's current state.

## Inputs

Collect:

- The user's question.
- Environment: production or sandbox if account data is needed.
- Relevant entity IDs, names, or URLs if the question is about a specific customer, subscription, invoice, quote, or product.

## Workflow

1. Classify the domain: subscriptions, invoices, payments, quotes, usage, credits, wallets, analytics, custom properties, integrations, or API.
2. Read the most relevant Hyperline documentation or API reference.
3. If the question depends on live data, run read-only MCP, CLI, or API calls to inspect the relevant records.
4. Answer directly.
5. Include links to the most relevant docs when they help the user act.
6. Separate confirmed facts from assumptions.

## Output

Return:

- Short answer first.
- Then the explanation or steps.
- Then docs links or checked records.
- Then any caveats.

## Safety

- Do not change account data while answering a question unless the user explicitly asks and confirms the exact action.
- Do not expose internal implementation details.
- Do not invent IDs, statuses, or product names.
- If data is ambiguous, say what is ambiguous and ask for the missing identifier.
```

## Related documentation

<CardGroup>
  <Card title="Hyperline docs MCP" icon="robot" href="/api-reference/docs/ai/overview">
    Use Hyperline's AI-friendly documentation entry points.
  </Card>

  <Card title="API getting started" icon="code" href="/api-reference/docs/getting-started">
    Learn the API basics.
  </Card>
</CardGroup>


# Build an insights report with AI
Source: https://docs.hyperline.co/guides/ai/build-insights-report

AI skill for building revenue, invoice, subscription, and usage insights reports by querying Hyperline analytics and billing data.

Use this skill when an AI assistant needs to answer a reporting question such as MRR, ARR, revenue movement, invoice health, overdue invoices, or subscription trends.

## Skill

```md theme={null}
---
name: build-insights-report
description: Build a Hyperline billing or revenue insights report. Use when an agent needs to answer reporting questions with read-only API, MCP, or CLI calls across analytics, subscriptions, invoices, customers, and usage data.
---

# Build Insights Report

Default to read-only operations.

## Inputs

Collect these values before querying data:

- Report question: what the user wants to know.
- Timeframe: e.g. current month, previous quarter, last 12 months.
- Environment: production or sandbox.
- Optional filters: customer, plan, product, currency, subscription status, invoice status, or segment.
- Output format: short answer, table, CSV-ready data, or executive summary.

If the timeframe is ambiguous, ask a short clarification before querying.

## Data sources

Start with the narrowest source:

- `GET /v1/analytics` for revenue metrics and high-level KPIs.
- `GET /v2/subscriptions` for subscription lists, statuses, plans, renewal dates, and quote links.
- `GET /v1/invoices` for invoice status, due dates, amounts, and payment health.
- `GET /v2/customers/{id}` or `GET /v2/customers` for customer context.
- Usage endpoints when the question is about usage-based billing or consumption.

Use MCP or CLI equivalents when the user's agent environment already has them configured.

## Workflow

1. Restate the metric definition in one sentence.
2. Query only the data needed for that definition.
3. Use pagination for list endpoints.
4. Keep raw IDs in working notes, but present names and links when available.
5. Separate facts from interpretation.
6. Call out gaps, filters, or assumptions.

## Output

Return:

- Answer first.
- Then a small table when it helps.
- Then methodology: endpoints, filters, and timeframe.
- Then caveats or recommended follow-up.

## Safety

- Do not mutate data.
- Do not infer cash collection from invoice issuance; check payment or transaction status when the question is about cash.
- Do not mix sandbox and production data.
- Do not compare periods with different currencies unless the user asked for a multi-currency view.
```

## Related documentation

<CardGroup>
  <Card title="Analytics API" icon="chart-line" href="/api-reference/endpoints/analytics/get-analytics">
    Use analytics metrics for high-level reporting.
  </Card>

  <Card title="Analytics dashboard" icon="chart-line" href="/docs/analytics/dashboard">
    Learn how Hyperline analytics are organized.
  </Card>
</CardGroup>


# Bulk update subscriptions with AI
Source: https://docs.hyperline.co/guides/ai/bulk-update-subscriptions

AI skill for planning, confirming, applying, and verifying bulk subscription updates in Hyperline without breaking customer billing.

Use this skill when an AI assistant needs to update many subscriptions with the same change, such as adding a product, changing pricing, or transitioning subscriptions to a new configuration.

## Skill

```md theme={null}
---
name: bulk-update-subscriptions
description: Plan and execute safe bulk subscription updates in Hyperline. Use when an agent needs to identify subscriptions, preview or apply transitions, update subscriptions, and verify results across many records.
---

# Bulk Update Subscriptions

Bulk updates can affect billing and invoices. Plan first, execute only after explicit confirmation.

## Inputs

Collect these values before making changes:

- Target cohort: filters, customer list, subscription IDs, plan, product, status, or segment.
- Desired change: product, price, phase, template, billing behavior, or contract change.
- Effective date: immediately or scheduled date.
- Billing behavior: no charge, pro-rata charge, custom charge, or keep current billing cycle.
- Dry-run requirement: default to preview or sample first.

## Workflow

1. List candidate subscriptions using read-only filters.
2. Show the count and a small sample.
3. Ask the user to confirm the exact cohort before mutation.
4. Choose the safest update method:
   - Use `PUT /v2/subscriptions/{id}` for simple full-subscription updates with no transition invoice.
   - Use `POST /v2/subscriptions/transitions` when billing behavior, schedule, or pro-rata handling matters.
   - Use template-based transition only when subscriptions still match the source template and the template has already been updated.
5. Preview where possible.
6. Apply in bounded batches.
7. Verify updated subscriptions and summarize successes and failures.

## Safety

- Never run an unbounded update.
- Never mutate before showing the matched cohort and receiving confirmation.
- Do not use deprecated incremental update endpoints.
- Do not assume no invoice will be generated; choose and document the billing behavior.
- Stop on repeated failures and summarize the partial result.

## Output

Return:

- Cohort definition.
- Update method.
- Billing behavior.
- Batch result summary.
- Failed subscription IDs with errors.
- Verification checks performed.
```

## Related documentation

<CardGroup>
  <Card title="Bulk update subscriptions guide" icon="arrows-rotate" href="/guides/bulk-update-subscriptions">
    Learn the supported bulk update patterns.
  </Card>

  <Card title="Create subscription transition API" icon="code" href="/api-reference/endpoints/subscriptions->-transitions/create-subscription-transition">
    Use transitions for controlled subscription changes.
  </Card>
</CardGroup>


# Create an invoice with AI
Source: https://docs.hyperline.co/guides/ai/create-invoice

AI skill for creating draft or payable Hyperline invoices through the public API with explicit line items, customer, currency, and status.

Use this skill when an AI assistant needs to create an invoice with one or more line items through the public API.

## Skill

````md theme={null}
---
name: create-invoice
description: Create a Hyperline invoice through the public API. Use when an agent needs to draft or execute a POST /v1/invoices payload with customer_id, explicit status, line_items, payment settings, and optional custom properties.
---

# Create Invoice

Use the public API endpoint `POST /v1/invoices`.

## Inputs

Collect these values before calling the API:

- `customer_id`: Hyperline customer ID.
- `status`: usually `draft` or `to_pay`.
- `line_items`: at least one line item.
- Optional `currency`, `subscription_id`, `due_at`, `emitted_at`, `payment_method_strategy`, `custom_properties`, `purchase_order`, and invoice notes.

If the user gives product names instead of IDs, resolve product IDs first. Do not guess.

## Payload

Draft invoice with a catalog product:

```json
{
  "customer_id": "cus_xxx",
  "status": "draft",
  "line_items": [
    {
      "product_id": "prod_xxx",
      "units_count": 1,
      "unit_amount": 10000,
      "tax_rate": 20
    }
  ]
}
```

Draft invoice with an ad hoc line item:

```json
{
  "customer_id": "cus_xxx",
  "status": "draft",
  "currency": "EUR",
  "line_items": [
    {
      "name": "Implementation fee",
      "unit_amount": 50000,
      "units_count": 1,
      "tax_rate": 20
    }
  ]
}
```

Call shape:

```bash
curl -X POST "https://api.hyperline.co/v1/invoices" \
  -H "Authorization: Bearer <API key>" \
  -H "Content-Type: application/json" \
  -d '<payload>'
```

## Safety

- Always set `status` explicitly. Use `draft` unless the user clearly wants the invoice issued.
- Do not set `paid` unless the user explicitly says the invoice is already paid.
- Use `payment_method_strategy: "external"` only when payment is handled outside Hyperline.
- Include `subscription_id` only when the invoice should be linked to an existing subscription.

## Verify

After creation:

1. Read `id`, `status`, `customer_id`, `amount_excluding_tax`, and `amount_including_tax` from the response.
2. Fetch `GET /v1/invoices/{id}` if you need to confirm line items.
3. If the invoice should be sent or charged, ask for explicit confirmation before taking the next action.
````

## Related documentation

<CardGroup>
  <Card title="Create invoice API" icon="code" href="/api-reference/endpoints/invoices/create-invoice">
    See the public API endpoint for creating invoices.
  </Card>

  <Card title="Invoices overview" icon="file-invoice" href="/docs/invoices/overview">
    Learn how invoices work in Hyperline.
  </Card>
</CardGroup>


# Create a quote from a template with AI
Source: https://docs.hyperline.co/guides/ai/create-quote-from-template

AI skill for creating a Hyperline quote from a template while preserving terms, attachments, contract documents, and optional draft subscription updates.

Use this skill when an AI assistant needs to create a quote from an existing quote template through the public API.

The quote template provides the quote defaults, terms, attachments, contract documents, and subscription configuration. You can optionally update the draft subscription created from the template after the quote has been created.

## Skill

````md theme={null}
---
name: create-quote-from-template
description: Create a Hyperline quote from a quote template through the public API while preserving template terms, attachments, and contract documents. Use when an agent needs to draft or execute a quote from template workflow, optionally updating subscription custom properties, dates, products, phases, coupons, discounts, prices, or seats on the draft subscription after creation.
---

# Create Quote From Template

Use the public API endpoint `POST /v1/quotes`.

## Inputs

Collect these values before calling the API:

- `customer_id`: Hyperline customer ID.
- `template_id`: quote template ID.
- Optional `custom_properties`: key/value map using custom property slugs as keys.
- Optional subscription overrides such as contract dates, products, phases, coupons, discounts, prices, or seats.
- Optional quote-level overrides such as `owner_email`, `expires_at`, `status`, display fields, or collection requirements.

If the user gives custom property names instead of slugs, resolve or ask for the slug first. Do not guess.

## Payload

Use one call only when the quote should stay exactly on the template subscription configuration, with at most subscription custom properties or trial values.

Minimal quote from template:

```json
{
  "customer_id": "cus_xxx",
  "template_id": "quot_xxx"
}
```

Quote from template with subscription custom properties:

```json
{
  "customer_id": "cus_xxx",
  "template_id": "quot_xxx",
  "subscription": {
    "custom_properties": {
      "sales_segment": "enterprise",
      "requires_procurement": true,
      "renewal_owner": "finance",
      "tags": ["strategic"],
      "legacy_ref": null
    }
  }
}
```

Call shape:

```bash
curl -X POST "https://api.hyperline.co/v1/quotes" \
  -H "Authorization: Bearer <API key>" \
  -H "Content-Type: application/json" \
  -d '<payload>'
```

## Subscription overrides

If the user needs subscription overrides such as contract dates, products, phases, coupons, discounts, prices, or seats, use two calls:

1. Create the quote from the template with `POST /v1/quotes`.

```json
{
  "customer_id": "cus_xxx",
  "template_id": "quot_xxx"
}
```

2. Read `id` and `subscription_id` from the quote response, then update the draft quote subscription with `PATCH /v1/quotes/{id}`.

```json
{
  "subscription": {
    "custom_properties": {
      "sales_segment": "enterprise"
    },
    "contract_start": "2026-07-08T00:00:00Z",
    "phases": [
      {
        "activation_strategy": "start_date",
        "starts_at": "2026-07-08T00:00:00Z",
        "end_strategy": "duration",
        "duration": {
          "period": "months",
          "count": 6
        },
        "billing_date_setting": "phase_start",
        "products": [],
        "coupons": []
      }
    ]
  }
}
```

Do not send `terms`, `comments`, or `contract_clause_ids` in the update unless the user explicitly wants to override template content.

## Behavior

- `template_id` makes Hyperline create the quote from the quote template.
- The quote template supplies the subscription configuration from its linked subscription template or plan.
- `subscription.custom_properties` applies values to the draft subscription created from the template.
- Provided custom property slugs are updated. Omitted custom properties are left as-is. `null` clears that specific custom property.
- Custom property values belong to the subscription, not the quote.
- Updating the draft quote with a subscription payload replaces the draft subscription configuration while keeping the quote-level template content created in the first call.

## Do not accidentally replace the template subscription

Keep `subscription` limited to `custom_properties` and, if needed, `trial`.

Never send `subscription.products` or `subscription.phases` together with `template_id` in the initial `POST /v1/quotes` call. Those fields switch the request into custom subscription mode instead of taking the subscription configuration from the template, which can skip template terms, contract clauses, or contract documents.

Other subscription fields are not reliable overrides in pure template mode. If the user needs purchase order, contract dates, products, phases, coupons, discounts, prices, or seats changed, create from the template first, then update the draft quote subscription with `PATCH /v1/quotes/{id}`.

## Quote custom property collection

Do not confuse these fields:

- `subscription.custom_properties`: values to set on the created subscription.
- `collect_custom_property_ids`: quote signature flow asks the customer to fill customer custom properties by ID.

Use `collect_custom_property_ids` only when the user wants the signer to provide customer custom properties during signature.

## Verify

After creation:

1. Read `id`, `subscription_id`, `terms`, and `attachments` from the quote response.
2. If subscription values were provided or changed, fetch `GET /v2/subscriptions/{subscription_id}`.
3. Confirm `custom_properties` contains the provided slug/value pairs when provided.
4. Confirm the quote still has the expected template terms and attachments before finalizing or sending.
````

## Related documentation

<CardGroup>
  <Card title="Create quote API" icon="code" href="/api-reference/endpoints/quotes/create-quote">
    See the public API endpoint for creating quotes.
  </Card>

  <Card title="Quote templates" icon="signature" href="/docs/quotes/templates">
    Learn how quote templates work in Hyperline.
  </Card>
</CardGroup>


# Create a subscription from a template with AI
Source: https://docs.hyperline.co/guides/ai/create-subscription-from-template

AI skill for creating a Hyperline subscription from a subscription template while preserving the template's billing configuration.

Use this skill when an AI assistant needs to create a subscription from an existing subscription template through the public API.

## Skill

````md theme={null}
---
name: create-subscription-from-template
description: Create a Hyperline subscription from a subscription template through the public API. Use when an agent needs to draft or execute a POST /v2/subscriptions payload with customer_id and template_id while preserving the template configuration.
---

# Create Subscription From Template

Use the public API endpoint `POST /v2/subscriptions`.

## Inputs

Collect these values before calling the API:

- `customer_id`: Hyperline customer ID.
- `template_id`: subscription template ID.
- Optional `template_configuration_id`: use only when the user knows the exact template configuration to apply.
- Optional `checkout_session`: use only when the user wants to send a checkout session.

If the user gives customer or template names instead of IDs, resolve them first. Do not guess.

## Payload

Minimal subscription from template:

```json
{
  "customer_id": "cus_xxx",
  "template_id": "subt_xxx"
}
```

With an explicit template configuration:

```json
{
  "customer_id": "cus_xxx",
  "template_id": "subt_xxx",
  "template_configuration_id": "stc_xxx"
}
```

Call shape:

```bash
curl -X POST "https://api.hyperline.co/v2/subscriptions" \
  -H "Authorization: Bearer <API key>" \
  -H "Content-Type: application/json" \
  -d '<payload>'
```

## Behavior

- `template_id` without `products` or `phases` creates the subscription from the template.
- If `template_configuration_id` is omitted, Hyperline resolves the applicable configuration from the customer details.
- The created subscription inherits the template's products, phases, billing rules, and pricing.

## Do not accidentally create a custom subscription

Do not send `products` or `phases` unless the user explicitly wants a custom subscription configuration. Those fields create a custom subscription and only reference the template for reporting.

If the user wants to change prices, products, phases, coupons, or billing cadence, confirm whether they want to update the template first or create a custom subscription payload.

## Verify

After creation:

1. Read `id`, `status`, `customer_id`, and `template_id` from the response.
2. Fetch `GET /v2/subscriptions/{id}` if you need to confirm products or phases.
3. Confirm the subscription belongs to the intended customer.
````

## Related documentation

<CardGroup>
  <Card title="Create subscription API" icon="code" href="/api-reference/endpoints/subscriptions/create-subscription">
    See the public API endpoint for creating subscriptions.
  </Card>

  <Card title="Subscription templates" icon="arrows-rotate" href="/docs/subscriptions/templates">
    Learn how subscription templates work in Hyperline.
  </Card>
</CardGroup>


# Investigate a customer balance with AI
Source: https://docs.hyperline.co/guides/ai/investigate-customer-balance

AI skill for reconciling a Hyperline customer's balance across their invoices, wallet, credits, payments, and outstanding transactions.

Use this skill when an AI assistant needs to explain why a customer balance looks wrong or reconcile what a customer owes.

## Skill

```md theme={null}
---
name: investigate-customer-balance
description: Investigate a Hyperline customer balance with read-only checks. Use when an agent needs to reconcile customer balance, open invoices, wallet or credit balances, invoice payments, refunds, and recent transactions.
---

# Investigate Customer Balance

Default to read-only operations.

## Inputs

Collect these values before querying data:

- Customer ID, external ID, or customer name.
- The balance question: outstanding amount, credit balance, wallet balance, payment mismatch, refund, or invoice status.
- Timeframe if relevant.
- Environment: production or sandbox.

If the user gives a name, resolve the customer and confirm when multiple customers match.

## Workflow

1. Get the customer record.
2. List recent invoices for the customer.
3. Check invoice statuses, due dates, totals, outstanding amounts, and related transactions.
4. Check wallet balances and wallet transactions when the question mentions prepaid balance, wallet, top-up, or credit.
5. Check credit balances and credit transactions when the question mentions credits or usage credits.
6. Compare the expected balance against the sum of open invoices, payments, refunds, wallet movements, and credit movements.

## Useful endpoints

- `GET /v2/customers/{id}` for customer context.
- `GET /v1/invoices` filtered by customer for invoices and status.
- `GET /v1/invoices/{id}` for invoice details.
- Wallet endpoints for wallet balance and transactions.
- Customer credit endpoints for credit products and credit transactions.

Use MCP or CLI equivalents when available.

## Output

Return:

- Direct answer first.
- Then a short reconciliation table.
- Then the records checked.
- Then unresolved gaps or next checks.

## Safety

- Do not mark invoices paid, void invoices, issue refunds, or load wallets without explicit confirmation.
- Do not assume an invoice is paid because a payment exists; verify final invoice and transaction status.
- Do not assume usage credits and wallet balance are the same thing.
```

## Related documentation

<CardGroup>
  <Card title="Get customer API" icon="user" href="/api-reference/endpoints/customers/get-customer">
    Retrieve customer details.
  </Card>

  <Card title="Customer balance" icon="wallet" href="/docs/customers/balance">
    Learn how customer balances are represented in Hyperline.
  </Card>
</CardGroup>


# Run Hyperline on autopilot
Source: https://docs.hyperline.co/guides/autopilot

Use Sentinel, customer intelligence, usage tracking, notifications, exports, and AI assistants to reduce manual checks across revenue operations.

Use this guide when you want Hyperline to surface the work that needs attention instead of relying on manual checks across customers, invoices, payments, subscriptions, integrations, and usage.

Hyperline has several automation layers. They work best together: Sentinel monitors operational issues, customer intelligence monitors customer signals, notifications route findings to the right teammates, and AI assistants help investigate or execute repeatable workflows when you need more context.

## Choose the right automation layer

| Need                                                 | Use                                  | Start here                                                                           |
| ---------------------------------------------------- | ------------------------------------ | ------------------------------------------------------------------------------------ |
| Detect billing or integration issues                 | Sentinel                             | [Sentinel monitoring](../docs/sentinel/overview)                                     |
| Monitor customer health, risk, and expansion signals | Customer intelligence                | [Customer intelligence](../docs/customer-intelligence/overview)                      |
| Review a specific set of customers automatically     | Customer monitoring agents           | [Customer monitoring agent](../docs/customer-intelligence/customer-monitoring-agent) |
| Route customer updates to the right people           | Owners, followers, and notifications | [Owner and followers](../docs/customer-intelligence/owner-followers)                 |
| Track adoption, consumption, and product milestones  | Custom usage tracking                | [Custom usage tracking](../docs/customer-intelligence/custom-usage-tracking)         |
| Prioritize collections follow-up                     | Late payment behavior                | [Late payment behavior](../docs/customer-intelligence/late-payment-behavior)         |
| Answer questions or run assisted workflows           | Hyperline AI tools                   | [AI assistant setup](./ai)                                                           |

## What each layer does

<CardGroup>
  <Card title="Sentinel" icon="radar" href="/docs/sentinel/overview">
    Watches billing operations and creates tasks for issues such as failed payments, late invoices, disconnected integrations, and subscription errors.
  </Card>

  <Card title="Customer intelligence" icon="sparkles" href="/docs/customer-intelligence/overview">
    Reviews customer context across usage, billing, payments, ownership, support, and communication signals.
  </Card>

  <Card title="Usage tracking" icon="chart-line" href="/docs/customer-intelligence/custom-usage-tracking">
    Shows custom usage metrics on customer records so teams can monitor adoption, consumption, and plan limits.
  </Card>

  <Card title="AI assistant workflows" icon="robot" href="/guides/ai">
    Connects Hyperline to AI assistants through MCP, the CLI, and reusable workflow skills.
  </Card>
</CardGroup>

## Recommended setup

### 1. Start with Sentinel

Use [Sentinel monitoring](../docs/sentinel/overview) for operational issues that should not depend on someone checking lists manually.

Sentinel is useful for:

* Failed or late payments
* Draft or overdue invoices
* Disconnected payment providers or integrations
* Subscription renewal issues
* Electronic invoicing failures

<Tip>
  Give the right teammates access to Sentinel tasks so operational issues reach the people who can resolve them.
</Tip>

### 2. Add customer intelligence

Use [customer intelligence](../docs/customer-intelligence/overview) when you want to prioritize accounts based on customer context, not only billing exceptions.

Customer intelligence can help you monitor:

* Customers with payment risk or late payment patterns
* Accounts with declining or growing usage
* Strategic customers approaching renewal
* Expansion opportunities based on adoption or consumption
* Customers with weak communication or unresolved support signals

Create a [customer monitoring agent](../docs/customer-intelligence/customer-monitoring-agent) from **Customers > Monitoring**. Start with **Autopilot** when you want Hyperline to choose the schedule and signal weighting, or use **Advanced** mode when you want to focus the agent on a specific segment or workflow.

### 3. Route findings to owners and followers

Assign [owners and followers](../docs/customer-intelligence/owner-followers) so customer findings have a clear audience.

Use this when:

* Account owners should receive customer health findings
* Finance teammates should follow payment-risk segments
* Customer success managers should follow strategic accounts
* Managers need visibility without becoming the customer owner

Each user can also manage notification channels from **Profile > Notifications**.

### 4. Expose usage signals

Use [custom usage tracking](../docs/customer-intelligence/custom-usage-tracking) to display product-specific metrics on customer records.

Good usage metrics include:

* Seats used
* API calls
* Storage consumed
* AI credits spent
* Active workspaces
* Feature adoption milestones

These signals help teams spot adoption risk, upsell readiness, and customers approaching plan limits.

### 5. Connect AI assistants for deeper workflows

Use [Hyperline AI tools](./ai) when an assistant needs to investigate, explain, or prepare repeatable revenue workflows.

For example, an assistant can help:

* Investigate a customer balance
* Build an insights report
* Answer a billing question
* Draft a quote or invoice workflow
* Plan a bulk subscription update

Use [Hyperline MCP](../api-reference/docs/ai/mcp) when your assistant supports MCP, or [Hyperline CLI](../api-reference/docs/ai/cli) for terminal-based assistants and scripts.

## Example workflows

| Workflow                                                | Hyperline setup                                                                                                                 |
| ------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| A payment provider disconnects                          | Sentinel creates a task and links to the affected integration.                                                                  |
| A strategic customer has declining usage before renewal | A monitoring agent reviews the customer, combines usage and account context, and can notify the owner.                          |
| A finance team wants to prioritize collections          | Create a late payment behavior segment, follow the segment, and use Sentinel for invoice-level payment issues.                  |
| A customer is approaching an AI credit limit            | Display the credit or usage metric on the customer record and use customer intelligence to surface expansion context.           |
| A manager wants a weekly revenue review                 | Use analytics, exports, and AI assistant workflows to summarize subscriptions, invoices, payments, usage, and customer signals. |

## Next steps

* Configure [Sentinel monitoring](../docs/sentinel/overview) for operational issue detection.
* Create a [customer monitoring agent](../docs/customer-intelligence/customer-monitoring-agent) for strategic customer segments.
* Set up [owners and followers](../docs/customer-intelligence/owner-followers) so findings reach the right teammates.
* Connect [AI assistants](./ai) for assisted investigation and repeatable workflows.


# Bulk update subscriptions
Source: https://docs.hyperline.co/guides/bulk-update-subscriptions

Bulk update Hyperline subscriptions through the API: add products, change prices, or adjust contracts on many subscriptions in a single workflow.

When you need to apply the same change to multiple subscriptions—such as adding a new product to all customers—you have several options depending on your use case and requirements.

## Overview of methods

| Method                                                                | Best for                                         | Pros                                                   | Cons                            |
| --------------------------------------------------------------------- | ------------------------------------------------ | ------------------------------------------------------ | ------------------------------- |
| [Update full subscription](#update-full-subscription)                 | Simple bulk updates with no pro-rata invoicing   | Versioning, no transition invoice, keeps billing cycle | —                               |
| [Create a subscription transition](#create-a-subscription-transition) | Full control with versioning and billing options | Version history, flexible configuration                | Advanced setup                  |
| [Incremental update (deprecated)](#incremental-update-deprecated)     | Legacy use cases                                 | Simple                                                 | No versioning, not future-proof |

## Update full subscription

**Recommended for most bulk update scenarios.**

The `PUT /v2/subscriptions/:id` endpoint performs an immediate transition while keeping the billing cycle and waiving the transition invoice. This means no pro-rata invoice is generated.

<Card title="Example 💡">
  You want to add a new "Support" product to all active subscriptions. Using this method, the product is added immediately without generating pro-rata charges, and customers continue on their existing billing cycle.
</Card>

### How it works

1. Fetch the subscription using `GET /v2/subscriptions/:id` to get its current configuration
2. Add the new product to the subscription phases
3. Call `PUT /v2/subscriptions/:id` with the full updated subscription payload

The payload structure matches the response from `GET /v2/subscriptions/:id`, allowing you to retrieve a subscription, modify it, and update it using the same structure.

```sh theme={null}
curl -X PUT "https://api.hyperline.co/v2/subscriptions/{subscription_id}" \
  -H "Authorization: Bearer <API key>" \
  -H "Content-Type: application/json" \
  -d '{
    "phases": [
      {
        "id": "phase_xxx",
        "products": [
          ...
          {
            "product_id": "prod_new_product_id",
            "price": {
              "type": "flat_fee",
              "amount": 1000,
              "interval": "month"
            }
          }
        ],
        ...
      }
    ],
    ... // Existing subscription payload
  }'
```

### When to use

* Adding a product to multiple subscriptions without pro-rata billing
* Making simple configuration changes across subscriptions
* When you want version history with minimal configuration

## Create a subscription transition

Use the transition endpoint when you need full control over the update process, including billing options.

### Option A: Pass the full subscription configuration

Call `POST /v2/subscriptions/transitions` with the source subscription and target subscription configuration including the new product.

```sh theme={null}
curl -X POST "https://api.hyperline.co/v2/subscriptions/transitions" \
  -H "Authorization: Bearer <API key>" \
  -H "Content-Type: application/json" \
  -d '{
    "source_subscription_id": "sub_xxx",
    "application_schedule": "immediately",
    "billing_cycle_transition_method": "keep_current_billing_cycle",
    "calculation_method": "do_not_charge",
    "target_subscription": {
      "phases": [
        {
          "products": [
            ...
          ],
          ...
        }
      ],
      ... // Existing subscription payload
    }
  }'
```

### Option B: Transition to an updated template/plan

If the subscription was created from a template or plan and **has not been customized since**, and you've already updated that template/plan with the new product, you can transition the subscription to use the updated template.

<Card title="Example 💡">
  You have 100 customers on the "Pro Plan" template. You add a new "Analytics" product to the Pro Plan template. Instead of specifying the full subscription configuration for each customer, you transition each subscription to the updated Pro Plan template.
</Card>

```sh theme={null}
curl -X POST "https://api.hyperline.co/v2/subscriptions/transitions" \
  -H "Authorization: Bearer <API key>" \
  -H "Content-Type: application/json" \
  -d '{
    "source_subscription_id": "sub_xxx",
    "application_schedule": "immediately",
    "billing_cycle_transition_method": "keep_current_billing_cycle",
    "calculation_method": "do_not_charge",
    "target_subscription": {
      "subscription_template_id": "template_xxx"
    }
  }'
```

<Tip>
  This approach is efficient when many subscriptions share the same template, as you only need to pass the template ID rather than the full subscription configuration.
</Tip>

### Transition options

| Parameter                         | Description                                                                                       |
| --------------------------------- | ------------------------------------------------------------------------------------------------- |
| `application_schedule`            | When to apply: `immediately` or `scheduled` (with `transition_date`)                              |
| `billing_cycle_transition_method` | `keep_current_billing_cycle` to keep current billing dates, `align_to_new_billing_cycle` to reset |
| `calculation_method`              | `do_not_charge` to skip transition invoice, `pro_rata` to generate pro-rata invoice               |

## Incremental update (deprecated)

<Warning>
  The `POST /v1/subscriptions/:id/update-many` endpoint is deprecated. It lacks versioning and is not future-proof. Use one of the methods above instead.
</Warning>

This endpoint allows updating multiple aspects of a subscription in a single call but does not maintain version history.

## Scripting bulk updates

To update multiple subscriptions, write a script that:

1. Lists all target subscriptions using `GET /v2/subscriptions` with appropriate filters
2. For each subscription, applies the update using your chosen method
3. Handles errors and retries as needed

<Tip>
  Use pagination and rate limiting in your script. See the [rate limiting documentation](/api-reference/docs/rate-limiting) for details.
</Tip>

<Info>
  Is something still unclear? Don't hesitate to reach out to our team via the in-app chat if you need additional support.
</Info>


# Configure usage-based billing
Source: https://docs.hyperline.co/guides/configure-usage-based-billing

Step-by-step guide to set up your first usage-based subscription in Hyperline — events, aggregators, products, pricing tiers, and customer assignment.

This guide walks you through setting up a complete usage-based billing workflow in Hyperline, from connecting your data to monitoring customer consumption. By the end, you'll have a working usage-based subscription with real-time usage tracking.

## Context

You want to bill customers based on their actual consumption of your product or service—such as API calls, compute hours, storage, or any other measurable metric. This guide shows you how to configure this end-to-end using Hyperline's interface.

## Prerequisites

Before you begin, make sure you have:

* Access to your Hyperline account (we recommend using [test mode](../docs/getting-started/sandbox) for this setup)
* Usage data ready to import, or the ability to generate simulated data for testing
* A clear understanding of what metric you want to bill (e.g., API calls, GB stored, hours used)

<Info>
  When signed up and landed on Hyperline, you can use the [test mode](../docs/getting-started/sandbox) to experiment before going live.
</Info>

## Steps

### 1. Connect your usage data

Hyperline needs usage data to calculate charges for usage-based products. You have three options to connect your data:

<CardGroup>
  <Card title="CSV import" icon="file-csv" href="../docs/usage/import-events-csv">
    Upload historical data from a CSV file
  </Card>

  <Card title="API integration" icon="code" href="../docs/usage/send-usage-data">
    Send events programmatically via API
  </Card>

  <Card title="Data loaders" icon="database" href="../docs/usage/usage-data-with-connectors">
    Connect directly to your database
  </Card>
</CardGroup>

<Tip>
  For testing purposes, you can skip this step initially and use [simulated events](../docs/usage/simulate-usage-data) directly in test mode.
</Tip>

#### Using data loaders (recommended)

Data loaders allow you to pull usage data directly from your database without writing code. This is ideal for connecting to existing data sources like PostgreSQL, BigQuery, MongoDB, or Snowflake.

<Steps>
  <Step title="Navigate to data loaders">
    Go to the [data loaders page](https://app.hyperline.co/app/events/loaders) in Hyperline.
  </Step>

  <Step title="Create a new connection">
    Click **New connection** and select your database provider from the list.
  </Step>

  <Step title="Enter connection details">
    Fill in your database connection information:

    * Host and port
    * Database name
    * Authentication credentials
    * SSL settings (if required)
  </Step>

  <Step title="Create a data loader">
    After connecting, create a new data loader with a SQL query that returns:

    * `timestamp` - The date and time of the event
    * `customerId` - Your customer's unique identifier
    * `id` - The event's unique identifier
    * Any additional fields you want to track (e.g., `quantity`, `region`, `product_type`)
  </Step>

  <Step title="Test and activate">
    Test your query to ensure data is flowing correctly, then activate the data loader.
  </Step>
</Steps>

<Note>
  Learn more about configuring data loaders in our detailed guides:

  * [BigQuery](../docs/usage/bigquery)
  * [MongoDB](../docs/usage/mongodb)
  * [Snowflake](../docs/usage/snowflake)
  * [General data loaders](../docs/usage/usage-data-with-connectors)
</Note>

### 2. Create a usage-based product

Once your events are flowing into Hyperline, you can create a product that bills based on this usage.

<Steps>
  <Step title="Navigate to the product catalog">
    Go to [**Products**](https://app.hyperline.co/app/products) and click **New product**.
  </Step>

  <Step title="Select usage-based product type">
    Choose **Usage** as the product type.

    Fill in the basic product information:

    * **Name**: A descriptive name for your product (e.g., "API Calls", "Storage GB")
    * **Description**: Optional details about what this product represents
  </Step>

  <Step title="Link an aggregator">
    Connect your product to the usage data you want to bill by selecting an [aggregator](../docs/usage/aggregators). If you haven't created one yet, head to **Usage > Aggregators** first.

    <Note>
      For billing, you link the aggregator to the product and then add that product to a subscription. You do not need to assign the aggregator directly to the customer in its **Visibility** settings. Direct assignment without a subscription is a separate monitoring workflow available with the Customer Intelligence module, and it does not generate charges.
    </Note>

    The aggregator defines:

    * **Event type**: Which events to aggregate
    * **Operation**: How to calculate usage:
      * **Count**: Count the number of events
      * **Sum**: Add up a specific numeric property
    * **Filters**: Optional conditions to narrow eligible events
  </Step>

  <Step title="Define pricing tiers">
    Set up your pricing model:

    * **Pricing model**: Choose between:
      * **Volume pricing**: Price per unit changes based on total usage
      * **Bulk pricing**: All units charged at the rate of the tier reached
      * **Basis points**: Percentage-based pricing
    * **Price tiers**: Define your pricing tiers and amounts
      * Example: $0.10 per unit for 0-1,000 units, $0.08 per unit for 1,001-10,000 units
    * **Billing interval**: Set when this product should be billed (monthly, quarterly, yearly)

    Make sure to configure at least one recurring price before moving to the next step.
  </Step>

  <Step title="Save the product">
    Click **Save** to add the product to your catalog.
  </Step>
</Steps>

<Card title="Example 💡">
  You want to charge for API calls with volume pricing:

  * 0-10,000 calls: \$0.01 per call
  * 10,001-100,000 calls: \$0.008 per call
  * 100,001+ calls: \$0.005 per call

  Create a "Count" aggregator on your API event type, link it to your usage product, then set up three pricing tiers with these rates.
</Card>

<Info>
  For detailed information on metering configuration options, see our [usage-based products guide](../docs/subscriptions/metering).
</Info>

### 3. Create a customer

Before assigning a subscription, you need a customer in Hyperline.

<Steps>
  <Step title="Go to the Customers section">
    Navigate to [**Customers**](https://app.hyperline.co/app/customers) and click **New Customer**.
  </Step>

  <Step title="Fill in customer details">
    Enter the required information:

    * **Name**: Customer or company name
    * **Currency**: The currency for billing this customer
    * **Country**: Customer's country (used for tax calculations)

    You can add additional details like email, address, and tax information, or update them later.
  </Step>

  <Step title="Save the customer">
    Click **Save customer** to create the customer record.
  </Step>
</Steps>

<Note>
  Learn more about customer management in our [customer creation guide](../docs/customers/overview).
</Note>

### 4. Configure a subscription with the usage product

Now you'll create a subscription that includes your usage-based product.

<Steps>
  <Step title="Start creating a subscription">
    From your customer's page, click **Actions** → **Assign new subscription**.

    Alternatively, go to [**Subscriptions**](https://app.hyperline.co/app/subscriptions/create) and select your customer.
  </Step>

  <Step title="Set subscription duration">
    Configure when the subscription starts:

    * **Immediately**: Start billing right away
    * **In the future**: Schedule for a specific date
    * **On checkout completion**: Wait for customer to complete checkout
  </Step>

  <Step title="Add your usage-based product">
    Click **Add product** and select the usage-based product you created earlier.

    Configure the product settings:

    * **Pricing**: Select or customize the pricing tier
    * **Metering period**: Choose when usage is measured:
      * **Same as payment interval**: Usage resets each billing cycle
      * **Current contract period**: Usage measured over the entire contract
      * **Custom**: Define a specific metering window
    * **Min/max amounts**: Optionally set spending limits per billing period
    * **Committed units**: Set minimum usage commitments if needed (customer pays for at least X units)
  </Step>

  <Step title="Configure payment settings">
    Click **Next** to access payment settings.

    For testing purposes, select **Manually later** to create the subscription without immediate payment.

    For production, choose:

    * **Checkout page**: Customer completes payment via Hyperline checkout
    * **Immediately**: Charge the customer's default payment method
  </Step>

  <Step title="Assign the subscription">
    Click **Assign subscription** to activate it.

    You'll be redirected to the customer page where you can see the subscription and current usage.
  </Step>
</Steps>

<Card title="Example 💡">
  A customer subscribes to your API product with monthly billing. They have a committed minimum of 5,000 API calls per month (they'll be charged for at least 5,000 calls even if they use fewer), and a maximum spending cap of \$500 per month to prevent unexpected bills.
</Card>

<Info>
  For more details on subscription configuration options, see our [subscription setup guide](../docs/subscriptions/create).
</Info>

### 5. Simulate usage (optional, for testing)

If you're in [test mode](../docs/getting-started/sandbox), you can simulate usage events to see how billing works without real data.

<Steps>
  <Step title="Go to the customer's Events tab">
    From your customer's page, click the **Events** tab.
  </Step>

  <Step title="Click Simulate new events">
    Look for the **Simulate new events** button at the top of the events list.
  </Step>

  <Step title="Configure the simulated events">
    Fill in the details:

    * **Event type**: Use the same event type configured in your product
    * **Date**: Choose when the events occurred (must be within the current billing period)
    * **Number of events**: How many events to create
    * **Payload** (optional): Add custom event properties in JSON format
      ```json theme={null}
      {
        "quantity": 100,
        "region": "us-east-1"
      }
      ```
  </Step>

  <Step title="Create the events">
    Click **Create new events**. The events will appear in the customer's event list after a few seconds.
  </Step>
</Steps>

<Tip>
  You can delete simulated events at any time if you need to reset your test data. This is only available in test mode.
</Tip>

<Note>
  Learn more about simulating usage in our [simulate usage data guide](../docs/usage/simulate-usage-data).
</Note>

### 6. Monitor usage and understand open invoices

After creating usage events, you can track consumption and preview upcoming charges.

#### View current usage

From the customer's **Subscriptions** tab, you'll see the current usage displayed next to each usage-based product.

Click the eye icon next to the unit count to open the consumption details modal, which shows:

* Total usage for the current billing period
* Individual events contributing to the usage
* Calculated amount based on your pricing tiers
* Breakdown by time period or event properties

<Info>
  For detailed usage analysis and exports, see our [explore usage consumption guide](../docs/usage/explore-usage-consumption).
</Info>

#### Understanding open invoices

An **open invoice** is a live preview of the invoice that will be charged at the end of the billing period. For usage-based subscriptions, this invoice updates automatically in real-time as new usage events are recorded.

**Key characteristics of open invoices:**

* **No invoice number yet**: Open invoices don't have a final invoice number because they're still being calculated
* **Cannot be paid**: Customers cannot pay an open invoice—it's for preview purposes only
* **Updates in real-time**: As usage accumulates, the invoice amount increases automatically
* **Visible to customers**: Customers can see their open invoice in the [customer portal](../docs/customers/portal) to track their current charges

**To view an open invoice:**

1. Go to the customer's **Invoices** tab
2. Look for the invoice with status `open`
3. Click on the invoice to see the current charges and line items

<Card title="Example 💡">
  A customer subscribes on January 1st with monthly billing. An open invoice is immediately created for the January 1-31 period. As they make API calls throughout the month, the invoice updates:

  * January 5: 2,500 calls → Invoice shows \$25
  * January 15: 8,000 calls → Invoice shows \$80
  * January 31: 15,000 calls → Invoice shows \$138 (with tiered pricing)

  On February 1st, the invoice enters the grace period for final review.
</Card>

#### Invoice lifecycle for usage-based billing

Usage-based invoices follow this lifecycle:

1. **Open**: Invoice is created at the start of the billing period and updates as usage accumulates
2. **Grace period**: At the end of the billing period, the invoice enters a grace period (default: 3 days) where you can review and make manual adjustments if needed
3. **To pay**: After the grace period, the invoice is finalized with an invoice number and sent for payment
4. **Paid**: Payment is collected and the invoice is settled

<Warning>
  During the grace period, you can still make adjustments to the invoice (add credits, apply discounts, etc.). Once the grace period ends, the invoice is locked and cannot be modified.
</Warning>

<Info>
  You can configure the grace period duration in **Settings** → **Invoicing**. Learn more about [invoice terms and grace periods](../docs/invoices/term).
</Info>

## Next steps

You've successfully set up a usage-based subscription! Here are some ways to expand your implementation:

<CardGroup>
  <Card title="Explore consumption data" icon="chart-line" href="../docs/usage/explore-usage-consumption">
    View detailed usage reports and export data
  </Card>

  <Card title="Configure metering options" icon="sliders" href="../docs/subscriptions/metering">
    Learn about advanced metering configurations
  </Card>

  <Card title="Manage subscriptions" icon="arrows-rotate" href="../docs/subscriptions/manage">
    Update, pause, or cancel subscriptions
  </Card>

  <Card title="Set up invoicing" icon="file-invoice" href="../docs/invoices/configuration">
    Customize invoice templates and settings
  </Card>
</CardGroup>

<Info>
  Is something still unclear? Don't hesitate to reach out to our team via the in-app chat if you need additional support.
</Info>


# Set up credit-based billing for an AI platform
Source: https://docs.hyperline.co/guides/credit-based-billing-ai

Implement credit-based billing for an AI platform: configure credit products, weighted consumption across multiple models, and customer top-ups.

This guide walks you through setting up a complete credit-based billing system in Hyperline, where customers purchase credits and consume them at different rates depending on which AI model they use.

## Context

You run an AI platform that offers access to multiple LLM models with different capabilities and costs. Rather than billing per token for each model separately, you want to sell credit packs that customers can spend across all models — with more powerful models consuming more credits per usage.

Your platform offers three model tiers:

| Model        | Use case                 | Credits per 1,000 tokens |
| ------------ | ------------------------ | ------------------------ |
| `nova-fast`  | Quick tasks, high volume | 1                        |
| `nova-pro`   | Balanced performance     | 4                        |
| `nova-ultra` | Complex reasoning        | 15                       |

A customer with 10,000 credits could use them flexibly: heavy usage of the budget model, occasional use of the premium model, or any combination.

## Prerequisites

Before you begin, make sure you have:

* Access to your Hyperline account (we recommend using [test mode](../docs/getting-started/sandbox) for this setup)
* An [API key](../api-reference/docs/authentication) to send usage events
* A clear understanding of the models you want to bill and their relative cost ratios

<Info>
  When signed up and landed on Hyperline, you can use the [test mode](../docs/getting-started/sandbox) to experiment before going live.
</Info>

## Steps

### 1. Send usage events via the API

Every time a customer uses one of your models, your backend should send a billable event to Hyperline with the model name and the number of tokens consumed.

```sh theme={null}
curl -X POST https://ingest.hyperline.co/v1/events \
  -H "Authorization: Bearer <API key>" \
  -H "Content-Type: application/json" \
  -d '{
    "events": [
      {
        "customer_id": "cus_xxxxxxxxxxxxx",
        "event_type": "llm_token_usage",
        "timestamp": "2026-03-25T14:30:00Z",
        "properties": {
          "model": "nova-pro",
          "tokens": 1500
        }
      }
    ]
  }'
```

Each event should include:

* `customer_id`: the Hyperline customer ID (or `external_id` if you've mapped your internal IDs)
* `event_type`: a consistent name for your token usage events (e.g., `llm_token_usage`)
* `properties.model`: the model identifier used for the request
* `properties.tokens`: the total number of tokens consumed (input + output)

<Tip>
  For testing, you can skip this step and use [simulated events](../docs/usage/simulate-usage-data) directly in test mode to generate fake usage data.
</Tip>

<Note>
  Learn more about event ingestion in our [send usage data guide](../docs/usage/send-usage-data).
</Note>

### 2. Create one aggregator per model

Each model tier needs its own [aggregator](../docs/usage/aggregators) so that Hyperline can track consumption separately and apply a different credit weight to each.

Go to [**Usage > Aggregators**](https://app.hyperline.co/app/events/aggregators) and create three aggregators:

| Aggregator name     | Event type        | Operation | Property | Filter                 |
| ------------------- | ----------------- | --------- | -------- | ---------------------- |
| `nova-fast tokens`  | `llm_token_usage` | Sum       | `tokens` | `model` = `nova-fast`  |
| `nova-pro tokens`   | `llm_token_usage` | Sum       | `tokens` | `model` = `nova-pro`   |
| `nova-ultra tokens` | `llm_token_usage` | Sum       | `tokens` | `model` = `nova-ultra` |

All three aggregators listen to the same `llm_token_usage` event type but use a filter on the `model` property to isolate each model's consumption. The **Sum** operation on `tokens` gives you the total number of tokens consumed per model.

<Card title="Example 💡">
  When a customer sends 3 requests to `nova-pro` consuming 1,200, 800, and 2,000 tokens respectively, the `nova-pro tokens` aggregator reports a total of 4,000 tokens for that period.
</Card>

### 3. Create a credit product with weighted aggregators

Now create a credit product that ties all three aggregators together with their respective weights.

<Steps>
  <Step title="Create a new credit product">
    Go to [**Products**](https://app.hyperline.co/app/products), click **New product**, and select **Credit**.
  </Step>

  <Step title="Configure the aggregators and weights">
    In the **Aggregators** section, add the three aggregators you just created and set the weight for each:

    | Aggregator          | Weight |
    | ------------------- | ------ |
    | `nova-fast tokens`  | 1      |
    | `nova-pro tokens`   | 4      |
    | `nova-ultra tokens` | 15     |

    The weight determines how many credits are consumed per unit of usage. With these weights, 1,000 tokens on `nova-ultra` consumes 15 credits, while the same 1,000 tokens on `nova-fast` consumes only 1 credit.

    <Frame>
      <img />
    </Frame>
  </Step>

  <Step title="Set up bundle pricing">
    In the **Prices** section, configure your credit packs. For example:

    | Bundle size     | Price   |
    | --------------- | ------- |
    | 10,000 credits  | \$100   |
    | 50,000 credits  | \$400   |
    | 200,000 credits | \$1,200 |

    These bundles will be available for purchase via the customer portal and auto-topup.
  </Step>

  <Step title="Save the product">
    Click **Save** to add the credit product to your catalog.
  </Step>
</Steps>

<Note>
  For more details on multi-aggregator credit products, see the [credits overview](../docs/credits/overview#multiple-aggregators-with-weights).
</Note>

### 4. Set up a credit balance on a customer

With your credit product ready, enable a credit balance on a customer.

<Steps>
  <Step title="Navigate to the customer's Credits tab">
    Go to [**Customers**](https://app.hyperline.co/app/customers), select a customer, and click the **Credits** tab.
  </Step>

  <Step title="Add a credit balance">
    Click **Add credit balance** and select the credit product you created.

    Configure the initial settings:

    * **Starting balance**: the number of credits to grant immediately (e.g., 10,000)
    * **Warning limit**: the threshold at which a low-balance warning appears on the customer portal (e.g., 1,000 credits)
  </Step>
</Steps>

### 5. Add the credit product to a subscription

To automate credit replenishment and invoicing, add the credit product to a subscription.

<Steps>
  <Step title="Create or update a subscription">
    From the customer's page, click **Actions** > **Assign new subscription**, or open an existing subscription.
  </Step>

  <Step title="Add the credit product">
    Click **Add product**, select your credit product, and choose a bundle pricing tier.
  </Step>

  <Step title="Configure auto-topup (optional)">
    To ensure your customer never runs out of credits, configure auto-topup on their credit balance:

    * **Threshold**: when the balance drops below this number, auto-topup triggers (e.g., 500 credits)
    * **Amount**: how many credits to add (e.g., 10,000)
    * **Pricing**: select a bundle price or set a custom amount

    Auto-topup automatically creates an invoice, charges the customer's payment method, and adds credits to their balance.
  </Step>
</Steps>

<Warning>
  Auto-topup requires the customer to have a valid payment method on file. If the payment fails, the topup will not be processed.
</Warning>

### 6. Monitor consumption

Once the customer starts using your models, you can track credit consumption from the customer's **Credits** tab.

The **credits chart** shows balance evolution over time. Use the date range and granularity controls (day, week, month) to analyze consumption patterns.

<Frame>
  <img />
</Frame>

Click **All transactions** to view the full **transactions table**, which lists every credit movement — top-ups, usage deductions, and expirations. For multi-aggregator products, an **Aggregator** column shows which model triggered each usage transaction. Click **Explore** on any usage transaction to inspect and export the underlying consumption events.

<Frame>
  <img />
</Frame>

<Card title="Example 💡">
  A customer starts the month with 10,000 credits. They make:

  * 2,000 `nova-fast` calls averaging 1,000 tokens each → 2,000 x 1 = **2,000 credits**
  * 300 `nova-pro` calls averaging 1,500 tokens each → 450 x 4 = **1,800 credits**
  * 50 `nova-ultra` calls averaging 2,000 tokens each → 100 x 15 = **1,500 credits**

  Total consumption: **5,300 credits**. Remaining balance: **4,700 credits**.

  The transactions table shows each deduction tagged with the corresponding aggregator, so you can see exactly which model is driving consumption.
</Card>

## Next steps

<CardGroup>
  <Card title="Credits overview" icon="layer-group" href="../docs/credits/overview">
    Learn more about credit products and configuration options
  </Card>

  <Card title="Credit expiration" icon="clock" href="../docs/credits/overview#credit-expiration">
    Configure credits to expire after a set period or at the end of each billing cycle
  </Card>

  <Card title="Customer portal" icon="user" href="../docs/customers/portal">
    Let customers view their balance and purchase credits from the portal
  </Card>

  <Card title="Credits API" icon="code" href="../api-reference/endpoints/customers->-credits/list-credit-products">
    Manage credits programmatically via the API
  </Card>
</CardGroup>

<Info>
  Is something still unclear? Don't hesitate to reach out to our team via the in-app chat if you need additional support.
</Info>


# Implement Hyperline for a self-serve product
Source: https://docs.hyperline.co/guides/implement-self-serve

Implement Hyperline for a self-serve SaaS product: signups, checkout, subscription lifecycle, and customer portal integration with your application.

In this guide, we will see how to implement Hyperline subscriptions in the context of a self-serve product.

## Context

You have a pricing page on your marketing website and want your customer to subscribe when clicking on an offer.

## Prerequisites

1. [Create a Hyperline account](https://app.hyperline.co/auth/signup)
2. Follow the steps to [configure your account](../docs/getting-started/configure-account)
3. A clear idea of the plans you want to sell and their associated prices
4. An [API key](../api-reference/docs/authentication) to use the Hyperline API

<Info>
  When signed up and landed on Hyperline, you can use the [Test
  mode](../docs/getting-started/sandbox) to experiment before going live.
</Info>

## Steps

### 1. Model your products and templates in Hyperline

The first thing you need to do is to create your [products](../docs/products/overview) and (optionally) [subscription templates](../docs/subscriptions/templates) in Hyperline.

You'll need to do this operation once, but you can easily iterate on your pricing to experiment and adjust later.

If you need any assistance in finding the best way to represent your offer or need advice, you can contact support using the 'Help' chat.

### 2. Implement a subscription flow

Below is a suggested example of the flow to initiate a prospect's subscription to your product. Of course, this may vary based on your specific use case and product and can be adjusted to suit your requirements.

<Steps>
  <Step title="The prospect creates an account">
    For this example, the prospect initially signs up for your product by creating an account on your side.
  </Step>

  <Step title="Create a Hyperline customer">
    When the prospect signs up, your backend [creates a customer](../api-reference/endpoints/customers/create-customer) on Hyperline related to the newly signed up customer on your system.

    ```sh theme={null}
    curl --request POST \
      --url https://api.hyperline.co/v1/customers \
      --header 'Authorization: <authorization>' \
      --header 'Content-Type: application/json' \
      --data '{
        "name": "My customer",
        "currency": "EUR",
        "external_id": <(optional) ID of the customer in your system>,
        "available_payment_methods": <(optional) list of authorized payment methods>
      }'
    ```
  </Step>

  <Step title="Assign a subscription">
    Then you can [assign a subscription](../api-reference/endpoints/subscriptions/create-subscription) from the template (representing your plans/offers) selected by the customer.

    You need to use the ID corresponding to the template previously created, which can be found in Hyperline [templates](https://app.hyperline.co/app/subscriptions/templates) (next to the template name).

    This example creates a **dedicated checkout page** for your customer to fill in their billing details, add their payment method and subscribe. The subscription starts from the current date, and the customer is redirected to a specific URL on your side (`https://myservice.com/api/callback`) after completing the checkout.

    Use `checkout_session.redirect_url` to set the URL where the customer should be redirected after checkout completion.

    ```sh theme={null}
    curl --request POST \
      --url https://api.hyperline.co/v2/subscriptions \
      --header 'Authorization: Bearer <token>' \
      --header 'Content-Type: application/json' \
      --data '{
        "customer_id": <ID from the previous call>,
        "template_id": "subt_ji3uPodOneXk6R",
        "starts_at": "2025-12-20T00:00:00Z",
        "activation_strategy": "checkout",
        "checkout_session": {
          "redirect_url": "https://myservice.com/api/callback"
        }
      }'
    ```

    <Note>
      If you want to customize the quantity of products, you can use an additional parameter in the request body.

      ```json theme={null}
      {
        "products": [
          {
            "id": "itm_4vea8Gj0a5HZr9",
            "count": 23
          }
        ]
      }
      ```
    </Note>
  </Step>

  <Step title="Redirect to the subscription checkout">
    After creating the subscription, you'll receive the hosted checkout page URL in `checkout_session.url` in the response payload.

    ```json theme={null}
    "checkout_session": {
      "status": "opened",
      "url": "https://billing.hyperline.co/checkout/che_hEUPdVG7IgjpW1"
    }
    ```

    Redirect your customer to `checkout_session.url` for them to subscribe.
  </Step>

  <Step title="Handling subscription">
    When completed, the customer will be redirected to the final URL on your side (previously configured when creating the subscription). The customer is now successfully **subscribed to your service**.

    You have the option to store this information on your end or entirely rely on Hyperline and retrieve the subscription status for the customer at any time.

    ```sh theme={null}
    curl --request GET \
      --url https://api.hyperline.co/v1/customers/<customer ID> \
      --header 'Authorization: Bearer <token>'
    ```

    ```json theme={null}
    {
      "id": "cus_Typ0px2W0aiEtl",
      "name": "My customer",
      "currency": "EUR",
      "subscriptions": [
        {
          "id": "sub_0kIc7jrF7gV00V",
          "status": "active"
        }
      ]
    }
    ```

    <Note>
      If you want to retrieve the quantity of the subscription products or the full details, you can use the subscriptions API.

      ```sh theme={null}
      curl --request GET \
        --url https://api.hyperline.co/v2/subscriptions/<subscription ID> \
        --header 'Authorization: Bearer <token>'
      ```

      ```json theme={null}
      {
        "status": "active",
        "products": [
          {
            "id": "itm_4vea8Gj0a5HZr9",
            "type": "seat",
            "count": 23
          }
        ]
        // ...
      }
      ```
    </Note>
  </Step>
</Steps>

**That's it!** You can then proceed with your desired product flow.

Your customer will be automatically invoiced and their payment method charged according to the configuration of the created subscription.

### 3. Follow the subscription

You're able to retrieve at any time a unique portal link for your customer to follow their subscription, edit their payment method, or download their invoices.

We recommend adding a button in your product redirecting to this page for your customer to "manage billing".

```sh theme={null}
curl --request GET \
  --url https://api.hyperline.co/v1/customers/<customer ID>/portal \
  --header 'Authorization: Bearer <token>'
```

```json theme={null}
{
  "url": "https://..."
}
```

You can also [follow and manage](https://app.hyperline.co/app/customers) your customers' subscriptions on Hyperline.


# Importing historical data
Source: https://docs.hyperline.co/guides/importing-historical-data

Import customers, subscriptions, and invoices from another billing system into Hyperline, with API endpoints and best practices for migrations.

When migrating to Hyperline from another billing system, you can import your historical data using batch API endpoints. This allows you to maintain continuity in your billing records, reporting, and customer history.

<Info>
  **Dedicated import service available**

  This guide explains how to import historical data autonomously using our API. However, we also provide a dedicated service to help you migrate data from your existing billing system. If you'd prefer assistance with your migration, please contact us via the in-app chat or discuss this option with your sales contact.
</Info>

## What can be imported

You can import the following data types:

* **Customers**: Customer profiles with all associated metadata
* **Subscriptions**: Active and historical subscriptions with their configuration
* **Invoices**: Invoice records including PDF documents

## Prerequisites

Before importing subscriptions and invoices, you must configure your product catalog in Hyperline. Products referenced in subscription and invoice imports must already exist in your Hyperline account.

<Info>
  **Configure products first**

  Subscriptions and invoices might require valid Hyperline product identifiers in their import payloads. Create all necessary products in Hyperline before starting your data import, or the API will reject requests with unknown product references.
</Info>

You can create products through:

* The Hyperline web application under **Catalog > Products**
* The [Products API endpoints](/api-reference/endpoints/products/create-product)

## Import process overview

The recommended import sequence is:

1. Configure your product catalog (required for subscriptions and invoices)
2. Import customers (required for subscriptions and invoices)
3. Import subscriptions with historical start dates
4. Import invoices with their PDF documents

<Tip>
  **Test in sandbox first**

  Always test your import process in the sandbox environment before importing production data. This allows you to validate your data mapping and identify any issues without affecting live operations. Note that sandbox is not a clone of production — you'll need to seed it with a representative slice of customers and products to make the dry run meaningful.
</Tip>

## Importing customers

Use the batch customer creation endpoint to import multiple customers at once (up to 50 per request).

```sh theme={null}
curl -X POST https://api.hyperline.co/v1/customers/batch \
  -H "Authorization: Bearer <API key>" \
  -H "Content-Type: application/json" \
  -d '{
    "customers": [
      {
        "batch_customer_id": "batch_001",
        "name": "Acme Corporation",
        "billing_email": "billing@acme.com",
        "external_id": "cust_123_from_old_system"
      }
    ]
  }'
```

<Note>
  The `batch_customer_id` is required for batch operations to track each customer in the batch.
</Note>

<Tip>
  **Look up customers by your old IDs**

  Set the `external_id` field to your previous system's customer ID, and you can resolve customers later via the API without maintaining a separate mapping table:

  ```sh theme={null}
  GET /v1/customers?external_id=cust_123_from_old_system
  ```
</Tip>

For detailed parameters and response format, see the [Create customers batch](/api-reference/endpoints/customers/create-customers-batch) endpoint documentation.

## Importing subscriptions

Subscriptions can be created with start dates in the past, allowing you to preserve historical subscription data.

### Key considerations for subscription imports

* **Start date**: Set `starts_at` to the original subscription start date from your previous system
* **Initial billing date**: Set `initial_billing_at` to the first or next date when Hyperline should start billing. This should typically be the next renewal date or the date when you want Hyperline to take over billing operations
* **Activation strategy**: Use `start_date` to activate the subscription based on the `starts_at` date
* **Contract terms**: Define contract duration and renewal settings
* **Inactive subscriptions**: Import already-ended subscriptions only if you need them for historical reporting; otherwise skip them since they won't bill

```sh theme={null}
curl -X POST https://api.hyperline.co/v2/subscriptions \
  -H "Authorization: Bearer <API key>" \
  -H "Content-Type: application/json" \
  -d '{
    "customer_id": "cust_hyperline_id",
    "activation_strategy": "start_date",
    "starts_at": "2023-01-15T00:00:00Z",
    "initial_billing_at": "2026-02-15T00:00:00Z",
    "contract_terms": {
      "activation_strategy": "start_date",
      "end_strategy": "duration",
      "duration": {
        "period": "years",
        "count": 1
      },
      "renew_automatically": true
    },
    "products": [
      {
        "id": "prod_hyperline_id",
        "payment_interval": {
          "period": "years",
          "count": 1
        },
        "payment_schedule": "start"
      }
    ]
  }'
```

<Note>
  The product `id` must reference a product that already exists in your Hyperline product catalog. Map your old system's products to Hyperline product IDs before importing subscriptions.
</Note>

<Card title="Example 💡">
  A customer subscribed to your service on January 15, 2023, with annual billing. You're migrating to Hyperline in January 2026. Set `starts_at` to `2023-01-15` (preserving the original subscription start) and `initial_billing_at` to `2026-02-15` (the next renewal date when Hyperline should generate the invoice).
</Card>

For detailed parameters, see the [Create subscription](/api-reference/endpoints/subscriptions/create-subscription) endpoint documentation.

## Importing invoices

Import historical invoices to maintain complete billing records and enable accurate reporting.

### Batch invoice creation

Create multiple invoices at once (up to 50 per request):

```sh theme={null}
curl -X POST https://api.hyperline.co/v2/invoices/batch \
  -H "Authorization: Bearer <API key>" \
  -H "Content-Type: application/json" \
  -d '{
    "batch_id": "import_batch_2025_01",
    "invoices": [
      {
        "batch_invoice_id": "inv_123_from_old_system",
        "customer_id": "cust_hyperline_id",
        "status": "paid",
        "emitted_at": "2025-01-15T00:00:00Z",
        "due_at": "2025-02-15T00:00:00Z",
        "settled_at": "2025-01-20T00:00:00Z",
        "line_items": [
          {
            "product_id": "prod_hyperline_id",
            "name": "Annual subscription",
            "unit_amount": 12000,
            "units_count": 1
          }
        ]
      }
    ]
  }'
```

The endpoint returns a `202 Accepted` response with a `batch_id` that you can use to track the batch processing:

```json theme={null}
{
  "batch_id": "import_batch_2025_01"
}
```

<Note>
  The batch invoice creation endpoint processes invoices asynchronously — see [Tracking batch invoice creation](#tracking-batch-invoice-creation) below for the webhook events you can listen to. The `batch_invoice_id` is required to track each invoice in the batch. Each line item should reference a `product_id` from your product catalog. For paid invoices, include the `settled_at` date to record when payment was received.
</Note>

For detailed parameters, see the [Create invoices](/api-reference/endpoints/invoices/create-invoices) endpoint documentation.

<Note>
  Imported historical invoices do **not** generate [journal entries](/docs/accounting/entries) or [recognition schedules](/docs/accounting/revenue-recognition) on their own — the accounting module only posts for activity that happens after a ledger is created. If you need these invoices in your books, [contact our team](mailto:support@hyperline.co) once the import is complete and we can replay them into the ledger.
</Note>

### Tracking batch invoice creation

Since batch invoice creation is asynchronous, you should set up webhook listeners to track the success or failure of each invoice:

* **`invoice.batch.creation_succeeded`**: Triggered when an invoice in the batch is successfully created
* **`invoice.batch.creation_failed`**: Triggered when an invoice in the batch fails to be created

Each webhook event includes the `batch_id` and `batch_invoice_id` to help you track which invoices were processed successfully. See the [Webhooks documentation](/api-reference/docs/webhooks) for more details on setting up webhook endpoints.

### Importing invoice PDFs

After creating an invoice record, you can upload the original PDF document from your previous system:

```sh theme={null}
curl -X POST https://api.hyperline.co/v1/invoices/{invoice_id}/upload \
  -H "Authorization: Bearer <API key>" \
  -H "Content-Type: multipart/form-data" \
  -F "file=@/path/to/invoice.pdf"
```

This preserves the original invoice formatting and branding from your previous system, which can be important for customer records and compliance.

For detailed parameters, see the [Upload PDF to invoice](/api-reference/endpoints/invoices/upload-pdf-to-invoice) endpoint documentation.

## Best practices

### Data validation

* Validate all data before importing to ensure it meets Hyperline's requirements
* Check for required fields and data format compliance
* Test with a small batch first to identify any mapping issues

### Batch size management

* Process imports in batches of 50 items or fewer (API limit)
* Implement retry logic for failed batches
* Monitor API rate limits to avoid throttling

### Data mapping

* Create a mapping document between your old system's data structure and Hyperline's
* **Map products first**: Create a mapping between your old system's product IDs and Hyperline `product_id` values before importing subscriptions or invoices
* Use `external_id` and `metadata` fields to maintain references to original system IDs
* Document any data transformations or business logic applied during import

### Timing considerations

* Schedule imports during low-traffic periods to minimize impact
* Import customers before subscriptions and invoices (dependency order)
* Allow time for data validation and reconciliation after import

### Date and timezone handling

* All timestamps are interpreted as UTC — pass dates in ISO 8601 with an explicit offset (e.g. `2026-02-15T00:00:00Z`)
* A bare date or local-time string can shift the billing day by ±1 in customer-facing invoices when your timezone differs from UTC
* This matters most for `starts_at`, `initial_billing_at`, and the invoice `emitted_at` / `due_at` / `settled_at` fields — pick the same calendar day your old system used and append `T00:00:00Z`

### Reconciliation

After importing:

* Verify customer counts match between systems
* Reconcile subscription statuses and billing dates
* Confirm invoice totals and payment statuses
* Review reporting data to ensure accuracy

<Warning>
  **Irreversible operation**

  Data imports cannot be automatically reversed. Always test thoroughly in the sandbox environment before importing production data. Consider keeping backups of your original data until you've fully validated the import.
</Warning>


# Keyboard shortcuts
Source: https://docs.hyperline.co/guides/keyboard-shortcuts

Move around Hyperline with keyboard shortcuts — search, create records, pull data from tables, and run operations without touching the mouse.

Hyperline ships with keyboard shortcuts across navigation, search, record creation, and data tables. Most are wired in globally and work from anywhere in the app — except while typing inside an input or editor, where the focused field captures the keys.

On Mac, the modifier is `⌘`. On Windows and Linux, it's `Ctrl`. Sequence shortcuts (e.g. `G` then `H`) are typed in quick succession with no modifier.

## Command palette

The fastest way to do almost anything.

| Shortcut         | Action                     |
| ---------------- | -------------------------- |
| `⌘ K` / `Ctrl K` | Open the command palette   |
| `Esc`            | Close                      |
| `↑` `↓`          | Move between items         |
| `Enter`          | Run the selected item      |
| `→`              | Open a sub-menu            |
| `←`              | Leave the current sub-menu |

<Card title="Tip 💡">
  Paste any Hyperline entity ID (customer, subscription, invoice, product) into the palette to jump straight to its page. Useful when an ID lands in your inbox or in a Slack thread.
</Card>

## Navigate — `G` then a letter

Type `G`, then the destination letter(s), in quick succession.

| Shortcut    | Page         |
| ----------- | ------------ |
| `G` `H`     | Home         |
| `G` `C` `U` | Customers    |
| `G` `I`     | Invoicing    |
| `G` `Q`     | Quoting      |
| `G` `T`     | Transactions |
| `G` `R`     | Reports      |
| `G` `E`     | Events       |
| `G` `A`     | Audit log    |
| `G` `C` `A` | Catalog      |
| `G` `S`     | Settings     |

## Create — `N` then a letter

| Shortcut | Action           |
| -------- | ---------------- |
| `N` `C`  | New customer     |
| `N` `S`  | New subscription |
| `N` `Q`  | New quote        |

Each shortcut opens the matching creation form as a modal — no page reload, no lost context.

## Tables

The new generation of Hyperline tables — currently Insights and Revenue recognition — supports spreadsheet-style selection. Select a few cells, copy, and paste straight into Excel, Google Sheets, or Notion.

| Shortcut                 | Action                                                   |
| ------------------------ | -------------------------------------------------------- |
| Click                    | Select a cell                                            |
| `Shift` Click            | Extend selection to clicked cell                         |
| `⌘` Click / `Ctrl` Click | Toggle a single cell in or out of the selection          |
| Click + drag             | Drag-select a range                                      |
| `⌘ C` / `Ctrl C`         | Copy selection as TSV                                    |
| `⌘ A` / `Ctrl A`         | Select every cell in the table (after a first selection) |
| `Esc`                    | Clear selection                                          |

The footer shows live stats — sum, average, count — for the current selection when amounts or numbers are selected.

## Discoverability

Most shortcuts also appear:

* as a tag next to the action inside the command palette
* as a hint in the tooltip when hovering sidebar items

If a shortcut is documented here but doesn't seem to fire, check that the focus isn't trapped inside a text input — click outside the field first, then trigger the shortcut.


# Retroactive subscription update
Source: https://docs.hyperline.co/guides/retroactive-subscription-update

Apply a Hyperline subscription change retroactively after the current period is already invoiced, using the advanced update flow with transition invoice.

Sometimes you need to update a subscription after the current billing period has already been invoiced — for example, you forgot to apply a price increase at renewal, a contract amendment was signed late, or an extra product should have been added at the start of the period.

This guide walks you through how to apply a subscription change retroactively using the [advanced update](/docs/subscriptions/update#advanced-update) flow, with either **At last renewal** or **At selected date**, and explains how each transition invoice mode (**Issue transition invoice** vs **Issue separate credit note and invoice**) impacts the customer's invoices.

## When to use a retroactive update

Use a retroactive update when:

* The change should have taken effect earlier in the current billing period (or in a past period)
* The invoice for the current period has already been issued and you want to correct it
* You need a clean audit trail and version history of the change

If the change can simply apply going forward, use **Next renewal** or **Immediately** instead — there's no need for a retroactive update.

## Choose when to apply the update

In the advanced update flow, the **When to apply the update** step controls the effective date of the change:

* **At last renewal** — Applies the update retroactively as of the start of the current billing period. This is the most common option when you want the change to look as if it had been configured from the beginning of the period.
* **At selected date** — Applies the update at a specific date you pick. Choose a **date in the past** to make the change retroactive to that exact day (for example, mid-period when a contract amendment was signed).

<Card title="Example 💡">
  A subscription renewed on **March 1st** with a monthly plan at €100. On **March 20th** you realize a new add-on should have been included since March 1st.

  * Select **At last renewal** to apply the add-on as of March 1st — the full period is recalculated as if the add-on had always been there.
  * Select **At selected date** and pick **March 10th** if the add-on should only apply from that day onward — the period is split, and only the portion after March 10th includes the add-on.
</Card>

## Choose the transition invoice mode

Once you've picked the retroactive effective date and the new subscription configuration, the **Configure transition options** step lets you decide how the already-issued invoice should be corrected. Two modes are available for retroactive updates:

### Issue transition invoice

A single **transition invoice** is issued on top of the existing invoice to settle the difference between what was originally billed and what should have been billed for the period.

* The original invoice for the current period is **kept as-is** (not refunded)
* A new invoice is generated for the **delta** — either a charge (if the customer owes more) or a credit note (if the customer was overcharged)
* Best when you want a lightweight correction and to preserve the original invoice for accounting continuity

<Card title="Example 💡">
  Original invoice for March: **€100** (already paid).

  You apply a retroactive update **At last renewal** to add a €30/month add-on.

  With **Issue transition invoice**, Hyperline issues an additional invoice of **€30** for March. The customer keeps their original €100 invoice and receives a second €30 invoice covering the add-on for the same period.
</Card>

### Issue separate credit note and invoice

The original invoice for the current period is **fully refunded** (via a credit note), and a brand new invoice is issued reflecting the updated subscription configuration.

* The customer ends up with one credit note cancelling the original invoice, plus a new invoice for the corrected amount
* Best when the original invoice is materially wrong and you want the final billing to look as if the new configuration had been in place from the start of the period
* Only available for updates **At last renewal**

<Card title="Example 💡">
  Original invoice for March: **€100** (already paid).

  You apply a retroactive update **At last renewal** to swap the plan from €100/month to €150/month.

  With **Issue separate credit note and invoice**, Hyperline issues a **credit note of €100** cancelling the original invoice, and a new **€150 invoice** for March reflecting the new plan. The customer's net balance for the period is now €150 instead of €100.
</Card>

<Note>
  **Issue separate credit note and invoice** is only available when applying the update **At last renewal**. For updates **At selected date** in the past, use **Issue transition invoice** to settle the delta.
</Note>

<Note>
  **Spanish invoicing entities**: when the invoicing entity is registered in Spain (`ES`), Spanish invoicing rules do not allow a single netted transition invoice. **Issue transition invoice** is hidden and **Issue separate credit note and invoice** is the only mode available, on every effective date (**At last renewal**, **At selected date**, **Immediately**, and **Scheduled date**). The current period's invoice is always cancelled with a credit note, and a new invoice is issued for the updated configuration.
</Note>

## Step-by-step instructions

<Steps>
  <Step title="Open the subscription and start an update">
    Navigate to the customer's subscription details page, click the **Actions** dropdown, then select **Update subscription**.

    Choose **Advanced update** to access the full transition configuration.
  </Step>

  <Step title="Choose when to apply the update">
    Select either:

    * **At last renewal** to apply the change retroactively from the start of the current billing period
    * **At selected date** and pick a date in the past for a mid-period retroactive change
  </Step>

  <Step title="Choose the update source">
    Select **Update current subscription** to edit the existing configuration, or **Update to a template or a plan** to reset the configuration from a template or plan. Make the changes that should have been in place as of the effective date (add a product, change a price, swap the plan...).
  </Step>

  <Step title="Configure transition options">
    Under **Transition invoice**, choose how to correct the already-issued invoice:

    * **Issue transition invoice** — issues an additional invoice for the delta, keeping the original invoice intact
    * **Issue separate credit note and invoice** — refunds the original invoice and issues a new one reflecting the updated configuration (only with **At last renewal**)

    <Tip>
      Use the invoice preview at this step to review both the transition invoice (or refund and new invoice) and the following invoice. This is the safest way to confirm the financial impact before applying the change.
    </Tip>
  </Step>

  <Step title="Review and confirm">
    Review the update summary, then confirm. The subscription is updated retroactively and the corresponding invoices (transition invoice, or credit note and new invoice) are generated immediately.
  </Step>
</Steps>

## What happens after the update

* The subscription configuration reflects the change as of the effective date
* The corrective invoices (transition invoice or credit note + new invoice) are issued and follow your usual collection rules
* The change is recorded in the [versions tab](/docs/subscriptions/update#subscription-versions), preserving a full audit trail of what changed and when

<Info>
  Is something still unclear? Don't hesitate to reach out to our team via the in-app chat if you need additional support.
</Info>


# Subscription billing cycles
Source: https://docs.hyperline.co/guides/subscription-billing-cycles

Change the billing cycle alignment of a Hyperline subscription using the advanced update feature, with prorations, anchors, and timing examples.

When a subscription is created, its billing cycle is determined by its start date or initial billing date. For example, a monthly subscription starting on March 10th renews on the 10th of each month. In some cases, you may need to realign the billing cycle—for instance, to have all your subscriptions renew on the 1st of the month.

This guide walks you through how to change the billing cycle alignment of a subscription using the [advanced update (transition)](/docs/subscriptions/update#advanced-update) feature.

## Change the billing cycle alignment

Use this when you want to shift a subscription's renewal date to a different day. For example, moving a monthly subscription that renews on the 10th to renew on the 1st instead.

### Step-by-step instructions

<Steps>
  <Step title="Open the subscription and start an update">
    Navigate to the customer's subscription details page, click the **Actions** dropdown, then select **Update subscription**.

    Choose **Advanced update** to access the full transition configuration.
  </Step>

  <Step title="Choose when to apply the update">
    Select **Scheduled date** and pick the date you want the new billing cycle to start on.

    This date should correspond to your desired new anchor date—either:

    * **A past date** matching the new anchor (e.g., the 1st of the current month if you want the subscription to renew on the 1st going forward)
    * **A future date** matching the new anchor (e.g., the 1st of the next month)

    <Card title="Example 💡">
      If today is January 15th and the subscription currently renews on the 10th, you could select:

      * **January 1st** (past) to retroactively realign the billing cycle from the beginning of the current month
      * **February 1st** (future) to realign starting from the next month
    </Card>
  </Step>

  <Step title="Keep the current subscription configuration">
    In the update source step, select **Update current subscription**. Since you only want to change the billing cycle alignment and not modify the products or pricing, keep the subscription configuration as-is.
  </Step>

  <Step title="Configure transition options">
    This step is key to realigning the billing cycle:

    1. Under **Billing cycle alignment**, select **Start new period**. This resets the subscription billing dates to start a fresh cycle from the selected transition date, effectively making that date the new anchor for all future renewals.
    2. Under **Transition invoice**, choose the option that fits your use case:
       * **Issue transition invoice** to settle the period between the last renewal and the transition date
       * **Waive transition invoice** to skip billing for the partial period

    <Tip>
      Use the invoice preview at this step to review both the transition invoice and the following invoice. This helps you verify that the new billing cycle alignment is correct before confirming.
    </Tip>
  </Step>

  <Step title="Review and confirm">
    Review the update summary to verify that:

    * The transition date matches your desired new anchor date
    * **Start new period** is selected
    * The transition invoice setting is correct

    Confirm the update. The subscription will now follow the new billing cycle, renewing on the selected anchor date going forward.
  </Step>
</Steps>

### What happens after the update

Once the transition is applied:

* The subscription's billing cycle resets to start from the transition date
* All future renewals align to this new date (e.g., the 1st of each month)
* If a transition invoice was generated, it covers the partial period between the previous renewal and the new anchor date
* The subscription version history records this change in the [versions tab](/docs/subscriptions/update#subscription-versions)

<Card title="Example 💡">
  A monthly subscription renewing on the 10th is transitioned on February 1st with **Start new period** selected:

  * A transition invoice covers January 10th–January 31st (if not waived)
  * The new billing period runs from February 1st to February 28th
  * All future renewals happen on the 1st of each month
</Card>

<Info>
  Is something still unclear? Don't hesitate to reach out to our team via the in-app chat if you need additional support.
</Info>


# Upsell and downsell a subscription
Source: https://docs.hyperline.co/guides/upsell-downsell-subscriptions

Upsell or downsell a Hyperline subscription with the advanced update flow, or send a quote for subscription update that the customer signs.

Upsells (adding products, increasing quantities, moving to a higher plan) and downsells (removing products, decreasing quantities, moving to a lower plan) are common changes on active subscriptions. Hyperline provides two ways to apply them, depending on whether the change needs customer approval:

* **Advanced update** — apply the change directly from the subscription details page, with full control over the effective date and the transition invoice.
* **Quote for subscription update** — send the customer a quote for signature; the change only takes effect once the quote is signed, or at the specified date after quote signature.

This guide walks you through both flows, then explains how the effective date (**Next renewal**, **At last renewal**, **Immediately**, **Scheduled date**) and the transition invoice mode (**Waive**, **Issue transition invoice**, **Issue separate credit note and invoice**) drive the pro-rata logic on the resulting invoices.

## Choose the right flow

<CardGroup>
  <Card title="Advanced update" href="/docs/subscriptions/update#advanced-update">
    Best when you're applying the change on your side — no customer signature required. Use it for internal amendments, corrections, or upsells and downsells agreed on outside of a quote.
  </Card>

  <Card title="Quote for subscription update" href="/docs/quotes/subscription-update">
    Best when the customer must approve the change. The upsell or downsell is materialised in a signed document, and only applied once the quote is signed.
  </Card>
</CardGroup>

<Tip>
  Both flows expose the same transition settings (effective date, billing cycle alignment, transition invoice mode) — so the pro-rata logic described below applies identically to both.
</Tip>

## Upsell or downsell with the advanced update flow

The **advanced update** flow gives you a multi-step process to configure exactly when and how the upsell or downsell is applied.

<Steps>
  <Step title="Open the subscription and start an update">
    From the customer's subscription details page, click **Actions** then **Update subscription**, and choose **Advanced update**.
  </Step>

  <Step title="Choose when to apply the update">
    Pick the effective date of the change:

    * **Next renewal** — Applied when the current billing cycle ends. Recommended for upsells or downsells that should only impact future periods, with no pro-rata on the current one.
    * **Immediately** — Applied right now, mid-period. Recommended for a live upsell or downsell that must take effect today, with a pro-rated transition invoice for the remainder of the period.
    * **At last renewal** — Applied retroactively as of the start of the current period. Recommended when the change should have been in place from the start of the current period (see [Retroactive subscription update](/guides/retroactive-subscription-update)).
    * **Scheduled date** — Applied at a specific date in the future.
  </Step>

  <Step title="Choose the update source">
    Select **Update current subscription** to edit the existing configuration (add or remove products, adjust quantities, change prices), or **Update to a template or a plan** to move the customer to a pre-configured upsell or downsell plan.
  </Step>

  <Step title="Configure transition options">
    Under **Billing cycle alignment**, choose whether to **Keep current period** or **Start new period** from the update date. Then, under **Transition invoice**, pick how the current period should be settled:

    * **Waive transition invoice** — No transition invoice is issued.
    * **Issue transition invoice** — A transition invoice settles the current period based on the pro-rata logic described below.
    * **Issue separate credit note and invoice** — The current period's invoice is refunded and re-issued to reflect the new configuration (only available with **At last renewal**).

    <Tip>
      Use the invoice preview at this step to review both the **transition invoice** and the **following invoice** before confirming — this is the safest way to validate the financial impact of the upsell or downsell.
    </Tip>
  </Step>

  <Step title="Review and confirm">
    Review the update summary and confirm. The subscription is updated according to your effective date, and the corresponding invoices are generated.
  </Step>
</Steps>

## Upsell or downsell with a quote for subscription update

Use a [quote for subscription update](/docs/quotes/subscription-update) when the customer needs to approve the upsell or downsell before it takes effect. The transition settings you configure on the quote (effective date and transition invoice mode) behave identically to the advanced update flow — the only difference is that the change is applied on quote signature (or on the scheduled date after signature) rather than immediately.

<Steps>
  <Step title="Create the update quote">
    From the subscription details page, click **Actions** then **Create update quote**. Alternatively, from the **Quotes** page, click **New quote** and select **Quote for subscription update**.
  </Step>

  <Step title="Select the update effective date">
    Choose between:

    * **On quote signature** — The upsell or downsell is applied when the customer signs the quote.
    * **On selected date** — The upsell or downsell is applied on a future date, provided the quote is signed by then.
  </Step>

  <Step title="Configure the new subscription">
    Keep the current configuration and adjust it (add or remove products, edit quantities and prices, add or remove coupons or phases), or start from a template for pre-configured upsell and downsell scenarios.
  </Step>

  <Step title="Select the transition settings">
    Click **Revise transition** to choose the billing cycle alignment (**Keep current period** or **Start new period**) and the transition invoice mode (**Waive transition invoice** or **Issue transition invoice**). The pro-rata logic on the transition invoice is the same as with the advanced update flow.
  </Step>

  <Step title="Send the quote and wait for signature">
    Finalise, review and send the quote. Once signed, Hyperline applies the change automatically — either immediately or on the scheduled date — and generates the transition invoice according to your settings.
  </Step>
</Steps>

<Note>
  While a quote for subscription update is pending signature, the source subscription cannot be edited directly. You can still create additional open quotes on the same subscription — useful when negotiating several upsell scenarios in parallel.
</Note>

## Effective date and pro-rata logic on the transition invoice

The effective date you pick controls both **when** the new configuration starts and **what** the transition invoice looks like. Below is how each option impacts the transition invoice for a typical upsell or downsell.

### Next renewal

* The current period runs to its scheduled end date, invoiced as originally configured.
* The new configuration starts at the next renewal — the first invoice under the new pricing is the regular period invoice.
* **No transition invoice is generated** (no pro-rata is needed).
* Best for upsells and downsells that shouldn't disturb the current period.

<Card title="Example 💡">
  A customer is on a monthly plan at €100, renewing on the 1st of each month. On **March 15th**, you upsell them to a €150/month plan with **Next renewal** as the effective date.

  * March 1st–31st: invoiced €100 as originally scheduled.
  * April 1st: the new plan starts and the customer is invoiced €150 for April.
  * No transition invoice.
</Card>

### Immediately

* The new configuration takes effect on the update date, mid-period.
* The transition invoice settles the current period on a **pro-rata basis**:
  * The **removed** or **downgraded** products are credited for the unused portion of the period (elapsed days are billed at the old price, remaining days are credited).
  * The **added** or **upgraded** products are charged for the remaining portion of the period.
* Best for live upsells and downsells that should apply from today.

<Card title="Example 💡">
  Same customer on a €100/month plan renewing on March 1st. On **March 16th** (half of a 30-day period elapsed), you upsell them to a €150/month plan **Immediately** with **Issue transition invoice**.

  * The old plan is billed for the first 15 days: €100 × 15/30 = **€50**.
  * The new plan is billed for the remaining 15 days: €150 × 15/30 = **€75**.
  * The €100 already invoiced on March 1st is offset. The transition invoice charges **€25** (€75 for the new plan minus the €25 credit for the unused half of the old plan).
  * On April 1st, the customer is invoiced €150 for the full April period.

  If it were a downsell to a €60/month plan instead, the transition would produce a **credit** on the transition invoice (unused portion of the old plan is worth more than the pro-rated new plan).
</Card>

### At last renewal

* The new configuration is applied retroactively, as if it had been in place from the start of the current period.
* Two transition invoice modes are available:
  * **Issue transition invoice** — The original invoice for the current period is kept as-is. A transition invoice is issued for the **delta** between what was originally billed and what should have been billed for the full period under the new configuration.
  * **Issue separate credit note and invoice** — The original invoice for the current period is fully refunded via a credit note, and a new invoice is issued reflecting the new configuration for the full period.
* Best when the upsell or downsell was agreed on retroactively and should cover the current period entirely. See [Retroactive subscription update](/guides/retroactive-subscription-update) for the full walkthrough.

<Card title="Example 💡">
  Customer on a €100/month plan, March invoice of €100 already issued and paid. On **March 20th**, you upsell them to €150/month **At last renewal**.

  * With **Issue transition invoice**: the €100 March invoice is kept, and a second invoice of **€50** is issued to cover the delta for March.
  * With **Issue separate credit note and invoice**: a **credit note of €100** cancels the original invoice, and a new **€150 invoice** is issued for March.
</Card>

<Note>
  **Spanish invoicing entities**: when the invoicing entity is registered in Spain (`ES`), only **Issue separate credit note and invoice** is available for the transition invoice — on every effective date, not just **At last renewal**. Spanish invoicing rules do not allow a single netted transition invoice, so Hyperline always cancels the current period's invoice with a credit note and issues a new invoice for the updated configuration.
</Note>

### Scheduled date

* The upsell or downsell is applied on a specific future date.
* Between now and the scheduled date, the subscription continues under the current configuration and is invoiced normally.
* On the scheduled date, the transition follows the same pro-rata logic as **Immediately** if the date falls mid-period, or as **Next renewal** if it aligns with a renewal.
* Best for planned upsells (for example, a customer confirms today that they'll expand on the 1st of next quarter).

<Card title="Example 💡">
  Customer on a €100/month monthly plan renewing on the 1st. You schedule an upsell to €150/month on **April 15th**.

  * March and early April: invoiced normally on the €100 plan.
  * April 1st: invoiced €100 for the April period as usual.
  * April 15th: the upsell takes effect, and a pro-rated transition invoice is generated for the second half of April (charging the delta between the new and old plan for the remaining days).
  * May 1st: invoiced €150 for the full May period.
</Card>

## Billing cycle alignment

Alongside the effective date, the **billing cycle alignment** on the transition options step controls whether the customer's renewal date changes after the upsell or downsell:

* **Keep current period** — The renewal date stays the same. The transition invoice covers the remainder of the existing period (if applicable), and the next invoice lands on the original renewal date.
* **Start new period** — A fresh billing cycle starts on the effective date. The customer's future renewal date shifts to align with the update.

<Card title="Example 💡">
  Customer renews monthly on the 1st. On **March 16th**, you apply an upsell **Immediately**.

  * With **Keep current period**: April 1st stays the next renewal date, and the customer is invoiced for the second half of March on the transition invoice.
  * With **Start new period**: a new monthly period starts on March 16th, and the next renewal is April 16th.
</Card>

## Choosing the right combination

| Scenario                                                         | Effective date  | Transition invoice                     |
| ---------------------------------------------------------------- | --------------- | -------------------------------------- |
| Upsell that should apply from the next renewal                   | Next renewal    | Not applicable                         |
| Live upsell in the middle of the period                          | Immediately     | Issue transition invoice               |
| Live downsell mid-period, refund unused portion                  | Immediately     | Issue transition invoice               |
| Upsell agreed on last week, should cover the current period      | At last renewal | Issue transition invoice               |
| Correction where the current period invoice was materially wrong | At last renewal | Issue separate credit note and invoice |
| Upsell confirmed today, effective on a future date               | Scheduled date  | Issue transition invoice               |
| Cosmetic change (relabelling, custom properties) with no billing | Immediately     | Waive transition invoice               |

<Tip>
  Whenever you're unsure, use the invoice preview at the **Configure transition options** step (advanced update) or the **Revise transition** modal (quote for subscription update) to confirm the transition invoice matches what you expect before confirming or sending the quote.
</Tip>

## What happens after the upsell or downsell

* The subscription reflects the new configuration from the effective date.
* Any transition invoice, credit note, or refund follows your usual payment collection rules.
* Previous configurations are preserved on the **Versions** tab of the subscription details page, providing a full audit trail of the upsell or downsell.

<Info>
  Is something still unclear? Don't hesitate to reach out to our team via the in-app chat if you need additional support.
</Info>


# Adyen
Source: https://docs.hyperline.co/integrations/adyen

Collect card and local payments through Adyen on Hyperline with one-click connection, payment orchestration, and automatic reconciliation.

## Prerequisites

You need to have an [Adyen](https://www.adyen.com) account, finished Adyen's onboarding flow, and admin rights on Hyperline.

## Setup

If [Adyen](https://www.adyen.com) is your preferred Payment Service Provider, connecting it with Hyperline is a straightforward process:

1. In the menu, select **Settings**
2. Select **Payment**
3. Click on **Connect payment provider**, then Adyen

This will redirect you to the Adyen login page where you will have to enter your account credentials and click **Continue**.

Once the process is completed, you will see Adyen appearing as **Active** in the Payment page.

<Tip>
  You can connect multiple Adyen accounts to Hyperline so that payments are routed based on your invoicing entities and preferences.
</Tip>

## Payment methods

Adyen through Hyperline supports:

* **Card** payments from major card schemes such as Visa, Mastercard, American Express, Discover & Diners, JCB and more, depending on country and locality
* **Direct Debit** payments including SEPA (EU), Bacs (UK), and ACH (US, in USD)

## Customer information

Each time you bill a customer in Hyperline, the corresponding payment details (including payment methods and mandates) are automatically created and managed by Hyperline in your Adyen account.

Additionally, Hyperline integrates payment method collection forms into our hosted pages (checkout, customer portal, invoice page, and quote page), requiring no technical effort on your part.

This seamless integration ensures that customer data and payments remain synchronized between Hyperline and Adyen, streamlining transaction management and customer information handling.


# Airwallex
Source: https://docs.hyperline.co/integrations/airwallex

Collect card and bank transfer payments through Airwallex on Hyperline, with automatic customer sync, payment routing, and reconciliation.

## Prerequisites

You need to have an [Airwallex](https://www.airwallex.com) account, finished Airwallex's onboarding flow, and admin rights on Hyperline.

## Setup

If [Airwallex](https://www.airwallex.com) is your preferred Payment Service Provider, connecting it with Hyperline is a straightforward process:

1. In the menu, select **Settings**
2. Select **Payment**
3. Click on **Connect payment provider**, then Airwallex

This will redirect you to the Airwallex login page where you will have to enter your account credentials and click **Continue**.

<Frame>
  <img />
</Frame>

Once the process is completed, you will see Airwallex appearing as **Active** in the Payment page.

<Frame>
  <img />
</Frame>

<Tip>
  You can connect multiple Airwallex accounts to Hyperline so that payments are routed based on your invoicing entities and preferences.
</Tip>

## Payment methods

Airwallex through Hyperline supports:

* **Card** payments from major card schemes such as Visa, Mastercard, American Express, JCB, UnionPay, Discover and Diners Club, depending on country and locality
* **Direct Debit** payments including SEPA (EU), Bacs (UK), or ACH (US)

## Customer information

Each time you bill a customer in Hyperline, the corresponding customer profile and payment details (including payment methods and mandates) are automatically created and managed by Hyperline in your Airwallex account.

Additionally, Hyperline integrates payment method collection forms into our hosted pages (checkout, customer portal, invoice page, and quote page), requiring no technical effort on your part.

This seamless integration ensures that customer data and payments remain synchronized between Hyperline and Airwallex, streamlining transaction management and customer information handling.

<Tip>
  If you already have an Airwallex account with existing customers and payment
  methods, you have the possibility **to import them in Hyperline**. It is
  particularly useful when you configure your account.

  Please contact support if you are interested.
</Tip>


# Anrok
Source: https://docs.hyperline.co/integrations/anrok

Use Anrok as the tax engine for Hyperline: automate sales tax calculation, product mapping, and compliance for US transactions and beyond.

## Prerequisites

You need to have an [Anrok account](https://anrok.com).

<Note>
  You need to know that Hyperline is able to connect only one tax engine at a
  time per invoicing entity, so if you want to use Anrok, you'll need to
  configure all your products and jurisdictions in Anrok.
</Note>

## Setup

If [Anrok](https://www.anrok.com) is your preferred tax engine, you need to ask us for a connection, and we'll do the setup for you inside Hyperline.

### Get Anrok API key

But first, you'll need to provide us an Anrok API key that you can get from your Anrok account.

1. In the menu, select **Settings**

<Frame>
  <img />
</Frame>

2. Then, at the bottom, **Manage API keys**

<Frame>
  <img />
</Frame>

3. Click on **Create API key**

<Frame>
  <img />
</Frame>

4. Copy the API key. Once Hyperline has activated the feature for you, you'll be able to click **Connect** in the **Integrations** page.

<Frame>
  <img />
</Frame>

### Configure Anrok accounting timezone

You need to configure the timezone of your Anrok account in the **Settings** page otherwise you'll get errors when you try to create an invoice.

1. In the menu, select **Settings**, and in the **Accounting** section, select **Timezone**.

<Frame>
  <img />
</Frame>

### Configure Anrok as tax engine

Click on **Taxes** in the settings menu and select **Anrok** as tax engine.

<Frame>
  <img />
</Frame>

### Configure products

Then, to make the mapping between your Hyperline products and Anrok products, you need to go to the **Products** page.

1. Click on **Products** in the menu

   <Frame>
     <img />
   </Frame>

2. Click on **Add product**

<Frame>
  <img />
</Frame>

3. Fill the form with the following information:

<Note>
  The **Product ID** is a product ID that you'll need to fill in the Hyperline
  product page. (It can be shared across multiple products in Hyperline
  afterwards.)
</Note>

<Note>
  Here is an article from Anrok that explains the tax categories: [Anrok Tax
  Categories](https://help-center.anrok.com/hc/en-us/articles/4412669541907-Available-tax-categories-for-product-IDs)
</Note>

<Frame>
  <img />
</Frame>

4. As a recommendation from Anrok, we strongly encourage you to create a product that will be used as default when Hyperline doesn't have any mapping saved for a product.

Name it **default\_hyperline\_product\_anrok** and set the **Product ID** to **default\_hyperline\_product\_anrok** with the default tax categories that will be used.

If you don't do this, we'll take a product from your mapped products and use it as default.

5. Click on **Save**

Then, as the last step, you'll need to update all the products in Hyperline with the Anrok product ID, on each product of the **Products** page in the accounting section.

<Frame>
  <img />
</Frame>


# Attio
Source: https://docs.hyperline.co/integrations/attio

Connect Attio CRM with Hyperline to sync customers, subscriptions, and revenue data, and surface billing details on Attio records and lists.

The Hyperline-Attio integration provides a seamless connection between your Attio workspace and Hyperline.

With this integration, you can access dedicated widgets and actions directly from your Attio record pages, allowing you to create and manage Hyperline quotes, subscriptions, and customers without leaving your CRM. These features embed the full Hyperline interface inside Attio, ensuring smooth and efficient flows.

<Frame>
  <img />
</Frame>

In addition, the integration enables optional and automatic data synchronization between Hyperline entities—such as quotes, subscriptions, and invoice details—and Attio's custom objects. This ensures you always have the most up-to-date information at your fingertips, allowing this data to be used for internal automations, workflows, and reporting within Attio.

<Frame>
  <img />
</Frame>

## Prerequisites

You must have a valid [Attio account](https://attio.com) with admin rights as well as access to the settings of your Hyperline account.

We recommend creating a dedicated Attio test workspace before going live, and using the [test mode](../docs/getting-started/sandbox) of your Hyperline account during setup and experimentation.

## Embedded Hyperline UIs in Attio

### Installation

Upon connecting your Attio account to Hyperline, the Hyperline app is automatically installed in your Attio workspace.

You'll then need to configure a **Workspace Connection**:

1. In Attio, navigate to Workspace settings > Apps > Hyperline > Workspace Connection > Connect
2. Enter an [API key created in your Hyperline settings](../api-reference/docs/authentication#how-to-generate-an-api-key) with **read access**

#### Sandbox

To use the Hyperline Attio app with your Hyperline **sandbox (test mode)** account, go to Workspace settings > Apps > Hyperline > Settings in Attio, and select "Sandbox" as the environment.

<Info>
  In this case, please use an API key created in your Hyperline **sandbox** account for the Attio app Workspace Connection.
</Info>

### Record actions

Once the integration is set up, new Hyperline actions become available directly from your Attio company and deal records.

These actions allow you to:

* create Hyperline quotes
* create Hyperline subscriptions
* manage the related Hyperline customer

Each action opens a dedicated Hyperline interface embedded directly within Attio, giving you access to the full Hyperline experience without leaving your CRM—and ensuring seamless interoperability between both systems.

### Widgets

In addition to record actions, the integration provides dedicated Hyperline widgets that can be embedded directly into your Attio company and deal record pages.

* **Subscription widget**: Displays a preview of the customer's active subscription along with its associated ARR. Clicking the widget opens the corresponding Hyperline subscription page.
* **Quote widget**: Displays a preview of the currently open quote and its associated value. Clicking the widget opens the corresponding Hyperline quote page.

If multiple subscriptions or quotes are linked to the Attio record, the widget will instead display the number of related items. Clicking it will open a list of all associated subscriptions or quotes.

### User access

Attio users do not need an existing Hyperline account. When a user triggers a Hyperline action for the first time, a corresponding Hyperline user is automatically created using their Attio email address and assigned to your default Hyperline role (the ['Account manager' role](../docs/getting-started/configure-account#account-manager-role) if not changed).

When Hyperline interfaces are opened inside Attio, the user's Hyperline role is applied to ensure the correct view and edit permissions. These permissions are managed directly in Hyperline under Settings > Team.

### Data reconciliation

When retrieving Hyperline customer data from an Attio company or deal record, the following lookup mechanism is applied:

1. If it's a deal record, use the associated company record for the lookup.
2. If the company record is already linked to a Hyperline customer (via the Integrations section on the Hyperline customer page), that customer is used.
3. If the company record has a value in the Hyperline customer ID custom field, we attempt to resolve the corresponding Hyperline customer.
4. If the company record has a value in the Hyperline external ID custom field, we attempt to resolve the Hyperline customer whose ID or external ID matches that value.

If the Attio company and the Hyperline customer were not previously linked, the link is automatically created—provided the integration settings allow it (customer sync enabled, sync direction including Attio → Hyperline, and the company flagged for sync).

If a customer is found but the settings do not allow automatic linking, Hyperline will surface the suggested customer in Attio, along with an action to manually trigger the link.

If no customer is found but the “Allow creating new customer” setting is enabled, the Attio user will be able to create a new related Hyperline customer and proceed with the desired action.

## Data synchronization

In addition to the fully built-in embedded UIs, the integration can also synchronize data from Hyperline to Attio custom objects. This synchronization is optional and can be configured afterward.

<Frame>
  <img />
</Frame>

When you connect your Attio workspace and select which entities you want to synchronize in the Hyperline settings, Hyperline automatically creates the required custom objects and their associated fields in Attio (if they do not already exist) and sets up the synchronization mechanisms.

<Warning>
  Deleting or manually modifying Hyperline custom objects and custom fields in
  Attio may break the integration and lead to unexpected behavior.
</Warning>

Changing the data you choose to synchronize requires reconfiguring the integration. This process may take a few minutes to complete.

### Customers sync

When enabled, Hyperline customers are synchronized with Attio companies. You can choose the synchronization direction (one-way or bidirectional).

During the integration setup, Hyperline creates a “(Hyperline) Synchronize” checkbox custom field (`hyperline_sync` slug) on the Company object.

An Attio company is imported and synchronized into Hyperline only when this checkbox is enabled; companies without it checked are ignored.

### Customer custom properties

You can synchronize customer custom properties in two ways:

* **As Attio company attributes** — create an attribute on the Attio Company object whose slug exactly matches the Hyperline custom property `slug`. Hyperline then synchronizes its value with the linked company according to the customer synchronization direction you selected.
* **As custom property value records** — enable **Custom property values** in the integration settings. Hyperline creates one record for each value in its dedicated custom property value object and links customer values to the related Attio company. This option also keeps each property's name, type, and value available as separate attributes.

<Card title="Example 💡">
  If a Hyperline customer custom property uses the `customer_tier` slug, create
  an Attio company attribute with the `customer_tier` slug to keep the value
  directly on the company record.
</Card>

<Note>
  The matching Attio company attribute must already exist and be writable.
  Hyperline does not create it automatically. When you use the custom object
  option, Hyperline creates the required object and attributes during
  integration setup.
</Note>

### Mapping

Below are the object mappings between Hyperline entities and Attio custom objects.

<Accordion title="Field mappings">
  <Frame>
    <a href="/images/integrations/attio/attio-field-mapping.svg">
      <img alt="Object and field mappings between Hyperline entities and Attio custom objects" />
    </a>
  </Frame>
</Accordion>

### Manually trigger a sync

You can also manually trigger customer data synchronization from the Hyperline customer page. In the Integrations dropdown, click “Sync with Attio” to push (or pull, depending on the sync direction) the customer's data and send all associated quotes, subscriptions, and invoices to Attio.

## Troubleshooting

If you encounter any issues with the integration (missing data, failed entity synchronization, etc.), we recommend checking the Hyperline issues page for more details: Settings > Integrations > Attio > View issues.

### Common issues

**Embedded Hyperline views don't load, or an action loads forever**

This happens when your browser blocks third-party cookies, which Hyperline needs to authenticate the embedded view inside your CRM. Allow third-party cookies for `[*.]hyperline.co`, then reload the page:

* **Chrome / Arc**: open [chrome://settings/cookies](chrome://settings/cookies), then under "Sites allowed to use third-party cookies" add `[*.]hyperline.co` (or select "Allow all cookies"). See [Google's guide](https://support.google.com/chrome/answer/95647).
* **Edge**: open `edge://settings/content/cookies` and add `[*.]hyperline.co` under "Allow". See [Microsoft's guide](https://support.microsoft.com/microsoft-edge/temporarily-allow-cookies-and-site-data-in-microsoft-edge-597f04f2-c0ce-f08c-7c2b-541086362182).
* **Safari**: open Settings > Privacy and uncheck "Prevent cross-site tracking". See [Apple's guide](https://support.apple.com/guide/safari/manage-cookies-sfri11471).
* **Firefox**: click the shield icon in the address bar and turn off "Enhanced Tracking Protection" for this site, or add an exception under Settings > Privacy & Security. See [Mozilla's guide](https://support.mozilla.org/kb/enhanced-tracking-protection-firefox-desktop).

Also disable any browser extension that blocks cookies or trackers for this site.

## Disconnect

At any time, you can disconnect the integration by clicking the Disconnect button located in the top-right corner of the Attio integration settings page.

Disconnecting the integration will stop all synchronization, but the custom objects, custom fields, and any previously pushed data in Attio will remain intact—they will not be deleted.


# Exact Online
Source: https://docs.hyperline.co/integrations/exact-online

Push invoices, credit notes, and customers from Hyperline into Exact Online accounting for Belgian, French, German, and Dutch bookkeeping.

[Exact](https://www.exact.com) is a Dutch technology company that provides software for small and medium enterprises. Exact Online is its cloud-based accounting software.

## Prerequisites

You need to have a valid [Exact Online account](https://www.exact.com/fr/software/exact-online) and admin rights on Hyperline.

## Setup

<Warning>
  If your Exact Online user has access to several companies (divisions), make sure you are logged into Exact Online and have switched to the division you want to connect to Hyperline **before** starting the connection flow. This also applies when reauthorizing or reconnecting an existing integration. Hyperline connects to whichever division is active in Exact Online at the moment of the OAuth flow.
</Warning>

<Steps>
  <Step title="In Hyperline, navigate to the Settings > Integrations page" />

  <Step title="Click Connect on the Exact Online card" />

  <Step title="Select your region">
    Choose the Exact Online region that matches your account: **Belgium**, **France**, **Germany**, or **Netherlands**. You will be redirected to the corresponding Exact Online login page.
  </Step>

  <Step title="Authenticate on Exact Online">
    If you are not already logged into Exact Online, enter your credentials to proceed. Hyperline detects and configures your division automatically when Exact Online redirects you back.
  </Step>

  <Step title="Configure codes and invoice push mode">
    Configure the required codes and select your invoice push mode. See the [Invoice push mode](#invoice-push-mode) and [Settings](#settings) sections below for details.
  </Step>

  <Step title="That's it!">
    Your Hyperline account is ready to send invoices and credit notes.
  </Step>
</Steps>

## Connect multiple Exact Online accounts

You can connect more than one Exact Online account to the same Hyperline workspace. This is useful if you operate several legal entities across regions (for example, one Belgian and one German subsidiary) and need to route each to its own Exact Online environment.

To add another account, go to **Settings > Integrations**, click **Connect** on the Exact Online card again, and select the region for the new account. Each connection is tied to its own region and can be reauthorized independently from its provider page in Hyperline.

## Reconcile Hyperline and Exact Online customers

If you already have existing customers in Exact Online, we'll need to link them with the corresponding customers in Hyperline. Our support team is available to assist you with this process during onboarding.

## Synchronization

When you connect your Exact Online account, Hyperline **automatically sends invoices** with their complete details (including line items and PDF file).

<Note>
  By default, only invoices and customers created after the connection date will sync. If you need to push older data to Exact Online, please contact our support team.
</Note>

### Invoice PDF synchronization

Invoice PDFs are automatically attached to invoices in Exact Online when they are first synced. If you need to re-attach or update PDFs for existing invoices (for example, if the initial attachment failed), please contact our support team.

### Customer synchronization

Hyperline supports 2 modes of synchronization for customers:

* **no synchronization**: customers are not synchronized with Exact Online.
* **from Hyperline to Exact Online**: customers created in Hyperline are automatically created in Exact Online with their details.

### Payment synchronization

Hyperline supports 3 modes of synchronization for payments:

* **no synchronization**: payments are not synchronized with Exact Online.
* **from Exact Online to Hyperline**: payments created in Exact Online are automatically created in Hyperline, and the status of the related invoice is updated accordingly.
* **from Hyperline to Exact Online**: payments created in Hyperline are automatically created in Exact Online as bank journal entries.

The synchronization delay is 1 hour maximum.

## Manage the integration

To reauthorize, reconfigure, resync, or disconnect this integration, see [Manage connected integrations](./manage-integration).

## Invoice push mode

Hyperline can push invoices to Exact Online in two different ways:

* **Sales Invoices** (default): Invoices are created as sales invoices in Exact Online. This mode is useful if you need to manage invoices directly in Exact Online's invoice module.
* **Sales Entries**: Invoices are created as sales entries (journal entries) in Exact Online. Enable the **Create sales journal entry instead of sales invoice** flag in your integration settings to use this mode.

<Note>
  The push mode applies to both invoices and credit notes.
</Note>

## Settings

You can configure the following codes on the **Settings > Integrations > Exact Online** page:

* **Invoice account code**: General Ledger (GL) account code used for invoices.
* **Credit note account code**: GL account code used for credit notes.
* **Payment account code**: GL account code used for payments created in Exact Online.
* **Invoice sales journal code**: Sales journal used when pushing invoices as sales entries. By default, invoices will be created with the sales journal code *70*.
* **Credit note sales journal code**: Sales journal used when pushing credit notes as sales entries. By default, credit notes will be created with the sales journal code *70*.
* **Bank journal code**: Bank journal used when creating payments in Exact Online.
* **Tax code**: Default tax code used when no tax code is matched for the line items products.

### Product, tax and account codes

Exact Online requires a **product code** for every invoice line item only when using the **Sales Invoices** mode. When using the **Sales Entries** mode, product codes are not required.

Tax codes can be configured in two different ways:

* **At the product level**: Define a specific tax code for each product in Hyperline. This tax code will be used when the product is invoiced.
* **At the invoicing entity level**: Configure tax codes with automatic computation of tax rates in the tax settings of the relevant invoicing entity. When configured this way, tax codes are automatically resolved according to what is configured in Hyperline and pushed to Exact Online.

You can also define a General Ledger **account code** for every product. If no account code is defined, the default invoice or credit note account code will be used.


# GoCardless
Source: https://docs.hyperline.co/integrations/gocardless

Collect SEPA, BACS, and ACH direct debit payments through GoCardless on Hyperline with one-click setup, mandate management, and reconciliation.

## Prerequisites

You need to have a [GoCardless](https://gocardless.com) account, finished GoCardless's onboarding flow, and admin rights on Hyperline.

## Setup

If [GoCardless](https://gocardless.com) is your preferred Payment Service Provider, integrating it with Hyperline is a straightforward process:

1. In the menu, select **Settings**
2. Select **Payment**
3. Click on **Connect payment provider**, then GoCardless

This will direct you to the GoCardless login page, where you will need to enter your account credentials and click **Connect Account**.

<Frame>
  <img />
</Frame>

Once the process is completed, you will see GoCardless appearing as **Active** in the Payment page.

<Frame>
  <img />
</Frame>

<Tip>
  You can connect multiple GoCardless accounts to Hyperline so that payments are routed based on your invoicing entities and preferences.
</Tip>

## Payment methods

GoCardless through Hyperline supports:

* **Direct Debit** payments including SEPA (EU), Bacs (UK), or ACH (US)

## Customer information

Each time you bill a customer in Hyperline, the corresponding customer profile and payment details (including payment methods and mandates) are automatically created and managed by Hyperline in your GoCardless account.

Additionally, Hyperline integrates payment method collection forms into our hosted pages (checkout, customer portal, invoice page, and quote page), requiring no technical effort on your part.

This seamless integration ensures that customer data and payments remain synchronized between Hyperline and GoCardless, streamlining transaction management and customer information handling.

<Tip>
  If you already have a GoCardless account with existing customers and payment
  methods, you have the possibility **to import them in Hyperline**. It is
  particularly useful when you configure your account.

  Please contact support if you are interested.
</Tip>

## Refund conditions

Refunding payments via GoCardless is a user-friendly process, applicable for full or partial amounts through the dashboard or API.

A concise timeline outlines the steps, with refunds typically processed 7 days after the payment charge date, unless users choose to opt out.
Timely customer notifications and swift fund receipt—usually within one to two business days—characterize the process.

The significance of the default 7-day refund delay is underscored for refund safety.
Payments via the bank debit network may not settle immediately, posing a risk of late failure payments.

It is strongly advised not to refund within 7 days to ensure sufficient settling time and minimize the potential for refunding unreceived funds.
Users seeking more flexibility can opt out of this default restriction, as explained in the [official documentation](https://hub.gocardless.com/s/article/Refunding-payments?language=en_GB), providing a balance between user control and risk management.


# Hightouch
Source: https://docs.hyperline.co/integrations/hightouch

Sync customer and revenue data from Hightouch into Hyperline reverse-ETL pipelines to power billing automation and finance workflows.

## What is Hightouch?

[Hightouch](https://hightouch.com) is a platform that enables businesses to sync data between different systems, databases, or applications, often associated with data integration and synchronization. It facilitates the movement of data between various sources and destinations, allowing companies to streamline their operations, automate processes, and ensure that different tools or databases remain up-to-date with the most recent information.

All this data can be easily sent to Hyperline to collect your customer's usage and automate usage-based billing and invoicing.

## Send usage from Hightouch to Hyperline

### Configure a data source

The first thing you need to create in Hightouch is a `source`.

<Steps>
  <Step title="Go to the Sources page" />

  <Step title="Click on Add source" />

  <Step title="Select and configure the data source">
    The source can be of any type (spreadsheet, database, warehouse, etc).

    <Frame>
      <img />
    </Frame>
  </Step>
</Steps>

### Create an HTTP Request destination

Hyperline uses HTTP requests to ingest usage. Setting up this `destination` in Hightouch takes only a few clicks:

<Steps>
  <Step title="Go to the Destinations page" />

  <Step title="Click on Add destination and select HTTP Request">
    <Frame>
      <img />
    </Frame>
  </Step>

  <Step title="Select and configure the request">
    You need to add two headers:

    * `Authorization` with `Bearer <your API key>` as a **secret** value
    * `Content-Type` with `application/json` as value

    <Frame>
      <img />
    </Frame>
  </Step>
</Steps>

### Create a model

After saving the destination, you need to create a `model` representing the entity you want to sync (represented as `event` in Hyperline).

<Steps>
  <Step title="Go to the Models page" />

  <Step title="Click on Add model" />

  <Step title="Select a source and configure a model">
    Put a name and select a primary key from the source fields.

    <Frame>
      <img />
    </Frame>

    After finishing the model, you can also configure more settings on it like column types, descriptions, etc.

    <Frame>
      <img />
    </Frame>
  </Step>
</Steps>

### Create a sync

The last step you need to configure is a `sync`. Syncs declare how you want query results from a model to appear in your destination (Hyperline).

<Steps>
  <Step title="Go to the Syncs page" />

  <Step title="Click on Add sync" />

  <Step title="Select your model and the HTTP Request destination">
    Put a name and select a primary key from the source fields.

    Select **Row added** and **Row updated** triggers, **POST** HTTP request method, don't change the URL, **JSON** as type of payload with **Use JSON editor**.

    Here is an example of JSON payload that can be sent to the Hyperline ingest API.

    ```json theme={null}
    {
      "customer_id": "{{ row.customerId }}",
      "event_type": "{{ row.eventType }}",
      "timestamp": "{{ row.timestamp }}",
      "record": {
        "id": "{{ row.eventId }}",
        "my_property": "{{ row.customProperty }}", // add any custom properties you want to ingest in Hyperline
      },
    }
    ```

    <Note>
      Hightouch supports Liquid template language to insert variables from your source to your JSON payload. These variables are created following this syntax: `{{ row.variable }}`, `variable` being the column name of your source.
    </Note>
  </Step>
</Steps>

Verify your synchronization by using a data sample. A new event should appear on your events [explore](https://app.hyperline.co/app/events/explore) page within Hyperline.

When you're ready, activate this sync and specify a periodic trigger.


# HubSpot
Source: https://docs.hyperline.co/integrations/hubspot

Connect HubSpot with Hyperline to sync deals, customers, contracts, and subscription data between your CRM and your billing platform.

The Hyperline-HubSpot integration provides a seamless connection between your HubSpot instance and Hyperline.
With this integration, you can access a dedicated widget directly from HubSpot, allowing you to create and manage Hyperline quotes, subscriptions, and customers without leaving your CRM. This feature embeds the full Hyperline interface inside HubSpot, ensuring smooth and efficient flows.

In addition, the integration enables optional and automatic data synchronization between Hyperline entities—such as quotes, subscriptions, and invoice details—and HubSpot's custom objects. This ensures you always have the most up-to-date information at your fingertips, allowing this data to be used for internal automations, workflows, and reporting within HubSpot.

## Prerequisites

You must have a valid [HubSpot account](https://hubspot.com) and access to the settings of your Hyperline account.

We recommend **experimenting with a test account** before going live. You can create a free [HubSpot account](https://app.hubspot.com/signup-hubspot/crm) and use the [test mode](../docs/getting-started/sandbox) of your Hyperline account during setup and testing.

## Embedded Hyperline UIs in HubSpot

### Installation

Upon connecting your HubSpot account to Hyperline, Hyperline automatically adds a HubSpot card to your HubSpot account.

This card will appear on your company and deal pages, allowing your revenue teams to keep using HubSpot while seamlessly accessing all Hyperline functionalities.

<Info>
  If the card isn't added automatically, you can add it manually. Open a company or deal record page and go to **Customize** > **Default view** (or any view) > **Edit layout**. In the right panel, hover over an existing card to reveal the option to add a new one. Select Hyperline and save your changes.
</Info>

### Card

Once installed, this card can be used on **company**, **contact**, and **deal** pages (right side panel).

It provides several available actions, allowing you to:

* create Hyperline quotes
* create Hyperline subscriptions
* manage the related Hyperline customer

Each action opens a dedicated Hyperline interface embedded directly within HubSpot, giving you access to the full Hyperline experience without leaving your CRM—ensuring seamless interoperability between both systems.

### Settings

The card's behavior can be fine-tuned from **Settings** > **Integrations** > **HubSpot**.

#### Root object

Controls which HubSpot object the widget treats as the source of truth when displaying Hyperline billing data (quotes and subscriptions). Two modes are available:

* **Company** — All quotes and subscriptions of a company are displayed on both the company card and the cards of its related deals. Choose this option if your revenue team thinks about billing at the customer level and wants the full billing picture available from any deal tied to that customer.
* **Deal** — Only the quotes and subscriptions attached to a specific deal are displayed on that deal's card. The company card still shows all of the company's quotes and subscriptions. Choose this option if you want each deal to surface only its own billing items, with no cross-deal bleed.

This setting only affects what's displayed in the embedded widget; it does not change how data is synchronized with HubSpot custom objects.

#### Allow creating new customer

When enabled, a HubSpot user triggering an action from a company or deal that isn't yet linked to a Hyperline customer can create the corresponding Hyperline customer on the fly and proceed with the action.

When disabled, actions are blocked until a matching Hyperline customer exists and is linked to the HubSpot record.

#### Display customers' children's data

When enabled, the widget also displays quotes and subscriptions belonging to the customer's children (in Hyperline's parent–child customer hierarchy), in addition to the customer's own. Useful when you bill parent accounts but want visibility into activity across their subsidiaries from the parent's HubSpot record.

### User access

HubSpot users do not need an existing Hyperline account. When a user triggers a Hyperline action for the first time, a corresponding Hyperline user is automatically created using their HubSpot email address and assigned to your default Hyperline role (the ['Account manager' role](../docs/getting-started/configure-account#account-manager-role) if not changed).
When Hyperline interfaces are opened inside HubSpot, the user's Hyperline role is applied to ensure the correct view and edit permissions. These permissions are managed directly in Hyperline under Settings > Team.

### Data reconciliation

Hyperline first determines which HubSpot record represents the customer. It then reconciles that record with a Hyperline customer.

| Where you open the Hyperline card                     | Record used for reconciliation |
| ----------------------------------------------------- | ------------------------------ |
| Company                                               | The company itself             |
| Contact associated with a company                     | The associated company         |
| Contact without an associated company                 | The contact itself             |
| Deal associated with a company                        | The associated company         |
| Deal without a company, but associated with a contact | The associated contact         |

For deals, Hyperline checks for an associated company first. It uses an associated contact only when no company is available. The deal identifies the sales opportunity but is not reconciled directly with a Hyperline customer.

<Note>
  The **Root object** setting does not change this lookup order. It controls which quotes and subscriptions the card displays after Hyperline identifies the customer.
</Note>

After selecting the company or contact, Hyperline applies the following lookup mechanism:

1. If the HubSpot record is already linked to a Hyperline customer through the **Integrations** section of the customer page, Hyperline uses that customer.
2. If the record has a value in the Hyperline customer ID property, Hyperline looks for the corresponding customer.
3. If the record has a value in the Hyperline external ID property, Hyperline looks for a customer whose ID or external ID matches that value.

Company and contact links are separate. Even if a contact belongs to a company, linking the contact does not link the company automatically. For B2B customers, associate the contact or deal with the correct company so Hyperline reconciles through the company. Use direct contact reconciliation for B2C customers without an associated company.

If the HubSpot record and the Hyperline customer were not previously linked, the link is automatically created—provided the integration settings allow it. For companies, customer synchronization must be enabled, the direction must include HubSpot → Hyperline, and the company must be flagged for synchronization.

If a customer is found but the settings do not allow automatic linking, Hyperline will surface the suggested customer in HubSpot, along with an action to manually trigger the link.

If no customer is found but the “Allow creating new customer” setting is enabled, the HubSpot user will be able to create a new related Hyperline customer and proceed with the desired action.

## Data synchronization

In addition to the fully built-in embedded UIs, the integration can also synchronize data from Hyperline to HubSpot custom objects. This synchronization is optional and can be configured afterward.

<Info>
  Data synchronization with custom objects is only available for HubSpot **companies** and **not for contacts**.
</Info>

When you connect your HubSpot account and select which entities you want to synchronize in the Hyperline settings, Hyperline automatically creates the required custom objects and their associated fields in HubSpot (if they do not already exist) and sets up the synchronization mechanisms.

<Warning>
  Deleting or manually modifying Hyperline custom objects and custom fields in HubSpot may break the integration and lead to unexpected behavior.
</Warning>

Changing the data you choose to synchronize requires reconfiguring the integration. This process may take a few minutes to complete.

### Prerequisites

To synchronize data, Hyperline requires specific custom objects to exist in your HubSpot account.

Hyperline does not have permission to automatically create custom objects in your HubSpot account. You must create them manually using the object internal names listed below. If a required custom object does not exist, you will be unable to activate synchronization for that entity, and no data will be pushed to HubSpot.

<Info>
  Custom objects are available only on the HubSpot **Enterprise** plan.
  For more details, see the [HubSpot documentation](https://knowledge.hubspot.com/object-settings/create-custom-objects).
</Info>

| Entity                | HubSpot object internal name       |
| --------------------- | ---------------------------------- |
| Quote                 | `hyperline_quotes`                 |
| Quote line item       | `hyperline_quote_line_items`       |
| Quote coupon          | `hyperline_quote_coupons`          |
| Quote phase           | `hyperline_quote_phases`           |
| Quote file            | `hyperline_quote_files`            |
| Subscription          | `hyperline_subscriptions`          |
| Subscription product  | `hyperline_subscription_products`  |
| Subscription coupon   | `hyperline_subscription_coupons`   |
| Subscription phase    | `hyperline_subscription_phases`    |
| Invoice               | `hyperline_invoices`               |
| Invoice line item     | `hyperline_invoice_line_items`     |
| Custom property value | `hyperline_custom_property_values` |

<Accordion title="Create a custom object in HubSpot">
  To create the required custom objects:

  1. Click the **Gear** icon (top-right corner).
  2. Navigate to **Data Management** → **Objects** → **Custom Objects**.
  3. Click the **Create Custom Object** button.
  4. Enter the object details.
     Hyperline requires the **Internal name** to match one of the names listed in the table above.
     You may customize the display name as you prefer.
  5. Repeat this process for each object you want to synchronize.
</Accordion>

<Warning>
  Object `Internal name` **must match the required name** (HubSpot object internal name) listed above.

  Each custom object **must include a mandatory `name` field** of type `text`.

  <Accordion title="Example">
    The red sections must match the requirements; otherwise, the integration will fail.

    <img />
  </Accordion>
</Warning>

<Info>
  We recommend creating only the custom objects required for the specific entities you wish to sync.
</Info>

### Customers sync

When enabled, Hyperline customers are synchronized with HubSpot companies. You can choose the synchronization direction (one-way or bidirectional).

During the integration setup, Hyperline creates a “(Hyperline) Synchronize” checkbox custom field (`hyperline_sync` slug) on the Company object.

A HubSpot company is imported and synchronized into Hyperline only when this checkbox is enabled; companies without it checked are ignored.

### Customer custom properties

You can synchronize customer custom properties in two ways:

* **As HubSpot company properties** — create a property on the HubSpot Company object whose internal name exactly matches the Hyperline custom property `slug`. Hyperline then synchronizes its value with the linked company according to the customer synchronization direction you selected.
* **As custom property value records** — enable **Custom property values** in the integration settings. Hyperline creates one record in the `hyperline_custom_property_values` custom object for each value and associates customer values with the related HubSpot company. This option also keeps each property's name, type, and value available as separate fields.

<Card title="Example 💡">
  If a Hyperline customer custom property uses the `customer_tier` slug, create
  a HubSpot company property with `customer_tier` as its internal name to keep
  the value directly on the company record.
</Card>

<Note>
  The matching HubSpot company property must already exist and be writable.
  Hyperline does not create it automatically. Synchronizing values through the
  custom object requires HubSpot Enterprise and the
  `hyperline_custom_property_values` object described above.
</Note>

### Mapping

Below are the default field mappings between Hyperline entities and HubSpot objects.

<Accordion title="Field mappings">
  <Frame>
    <a href="/images/integrations/hubspot/hubspot-field-mapping.svg">
      <img alt="Field mappings between Hyperline entities and HubSpot objects" />
    </a>
  </Frame>
</Accordion>

### Manually trigger a sync

You can also manually trigger customer data synchronization from the Hyperline customer page. In the Integrations dropdown, click “Sync with HubSpot” to push (or pull, depending on the sync direction) the customer's data and send all associated quotes, subscriptions, and invoices to HubSpot.

## Custom workflows

Beyond the built-in synchronization, you can build your own automations in HubSpot by reacting to Hyperline [webhooks](../api-reference/docs/webhooks).

A few examples of what this unlocks:

* Update HubSpot deal fields (stage, close date, amount, custom properties) when a Hyperline quote is signed or voided.
* Compute and write custom metrics (ARR, MRR, committed amount, contract length) on the company or deal once a subscription is activated or renewed.
* Trigger HubSpot tasks, internal notifications, or Slack alerts when an invoice becomes late or a subscription is cancelled.
* Move deals along your pipeline when subscription contracts start, renew, or expire.

### How it works

1. In Hyperline, create a webhook endpoint in **Settings** > **Webhooks** and subscribe to the events you care about (e.g. `quote.signed`, `subscription.activated`, `subscription.contract_renewed`, `invoice.settled`). See the full list in the [Webhooks](../api-reference/docs/webhooks) reference.
2. In HubSpot, expose an endpoint that receives the Hyperline payload. The most common patterns are:
   * A HubSpot workflow webhook trigger — use the Hyperline event to start a workflow that updates fields, sends notifications, or branches based on payload data.
   * A custom-coded action (HubSpot Operations Hub) or an external service (Zapier, n8n, your own backend) that calls the HubSpot API to update the relevant company or deal.
3. Use the Hyperline customer ID or HubSpot company ID from the webhook payload to resolve the correct HubSpot record, then apply your business logic.

<Info>
  Hyperline webhooks are signed — verify the signature before acting on a payload. Details are in the [Webhooks](../api-reference/docs/webhooks) reference.
</Info>

## Troubleshooting

If you encounter any issues with the integration (missing data, failed entity synchronization, etc.), we recommend checking the Hyperline issues page for more details: Settings > Integrations > HubSpot > View issues.

### Common issues

**Embedded Hyperline views don't load, or an action loads forever**

This happens when your browser blocks third-party cookies, which Hyperline needs to authenticate the embedded view inside your CRM. Allow third-party cookies for `[*.]hyperline.co`, then reload the page:

* **Chrome / Arc**: open [chrome://settings/cookies](chrome://settings/cookies), then under "Sites allowed to use third-party cookies" add `[*.]hyperline.co` (or select "Allow all cookies"). See [Google's guide](https://support.google.com/chrome/answer/95647).
* **Edge**: open `edge://settings/content/cookies` and add `[*.]hyperline.co` under "Allow". See [Microsoft's guide](https://support.microsoft.com/microsoft-edge/temporarily-allow-cookies-and-site-data-in-microsoft-edge-597f04f2-c0ce-f08c-7c2b-541086362182).
* **Safari**: open Settings > Privacy and uncheck "Prevent cross-site tracking". See [Apple's guide](https://support.apple.com/guide/safari/manage-cookies-sfri11471).
* **Firefox**: click the shield icon in the address bar and turn off "Enhanced Tracking Protection" for this site, or add an exception under Settings > Privacy & Security. See [Mozilla's guide](https://support.mozilla.org/kb/enhanced-tracking-protection-firefox-desktop).

Also disable any browser extension that blocks cookies or trackers for this site.

**The HubSpot card is empty (only the buttons appear, with no data)**

This issue usually occurs when the same HubSpot ID is assigned to multiple customers in Hyperline. Hyperline uses the first matching customer it finds, but that customer may not contain any data. Ensure that the HubSpot ID is assigned to only one customer in Hyperline — the correct one.

## Disconnect

At any time, you can disconnect the integration by clicking the Disconnect button located in the top-right corner of the HubSpot integration settings page.

Disconnecting the integration will stop all synchronization, but the custom objects, custom fields, and any previously pushed data in HubSpot will remain intact—they will not be deleted.


# Mollie
Source: https://docs.hyperline.co/integrations/mollie

Collect card and local payment method transactions through Mollie on Hyperline with one-click connection and automatic invoice reconciliation.

## Prerequisites

You need to have a [Mollie account](https://my.mollie.com/dashboard), finished Mollie's onboarding flow, and admin rights on Hyperline.

## Setup

If [Mollie](https://www.mollie.com) is your preferred Payment Service Provider, connecting it with Hyperline is a straightforward process:

1. In the menu, select **Settings**
2. Select **Payment**
3. Click on **Connect payment provider**, then Mollie

This will redirect you to the Mollie login page where you will have to enter your account credentials and click **Continue**.

<Note>
  By default, we use the first [Mollie profile](https://my.mollie.com/dashboard/settings/profiles) available on your Mollie account. If you have multiple profiles and want to use a specific one, please contact our support.
</Note>

<Frame>
  <img />
</Frame>

Once the process is completed, you will see Mollie appearing as **Active** in the Payment page.

<Frame>
  <img />
</Frame>

<Tip>
  You can connect multiple Mollie accounts to Hyperline so that payments are routed based on your invoicing entities and preferences.
</Tip>

## Payment methods

Mollie through Hyperline supports:

* **Card** payments
* **Direct Debit** payments with SEPA (EU)

## Customer information

Each time you bill a customer in Hyperline, the corresponding customer profile and payment details (including payment methods and mandates) are automatically created and managed by Hyperline in your Mollie account.

Additionally, Hyperline integrates payment method collection forms into our hosted pages (checkout, customer portal, invoice page, and quote page), requiring no technical effort on your part.

This seamless integration ensures that customer data and payments remain synchronized between Hyperline and Mollie, streamlining transaction management and customer information handling.

<Tip>
  If you already have a Mollie account with existing customers and payment
  methods, you have the possibility **to import them in Hyperline**. It is
  particularly useful when you configure your account.

  Please contact support if you are interested.
</Tip>


# NetSuite
Source: https://docs.hyperline.co/integrations/netsuite

Connect NetSuite to synchronize customers, invoices, credit notes, payments, refunds, chargebacks, and wallet activity from Hyperline.

[NetSuite](https://www.netsuite.com) is Oracle's cloud-based ERP and accounting platform. Hyperline connects to NetSuite so your finance team can send billing data from Hyperline to NetSuite without manually recreating customers, invoices, credit notes, payments, refunds, or chargebacks.

## What Hyperline synchronizes

The NetSuite integration is a one-way accounting synchronization from Hyperline to NetSuite. Hyperline also reads NetSuite metadata, such as subsidiaries, items, accounts, tax codes, and custom fields, so you can configure mappings from the Hyperline interface.

| Hyperline data                    | What happens in NetSuite                                                                                                                                                                                                                                                   |
| --------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Customers                         | Customers can be linked manually or created automatically when needed, depending on your customer synchronization setting.                                                                                                                                                 |
| Invoices                          | Eligible Hyperline invoices are created as NetSuite **Invoice** records with the invoice currency and exchange rate when available.                                                                                                                                        |
| Credit notes                      | Hyperline credit notes are created as NetSuite **Credit Memo** records with the credit note currency and exchange rate when available. They can be applied to the original invoice when the credit note is linked to one.                                                  |
| Invoice write-offs                | When uncollectible invoice synchronization is enabled, Hyperline creates a NetSuite **Credit Memo** for the write-off and applies it to the original NetSuite Invoice. The Credit Memo uses the **Bad Debt Expense** account from the matching invoice sync rule.          |
| Payments                          | Settled payments are created as NetSuite **Customer Payment** records when the payment method is configured to synchronize.                                                                                                                                                |
| Refunds                           | Settled refunds are created as NetSuite **Customer Refund** records when the payment method is configured to synchronize.                                                                                                                                                  |
| Chargebacks                       | Chargebacks are created as NetSuite **Customer Refund** records applied to the original Customer Payment when the payment method is configured to synchronize.                                                                                                             |
| Wallet top-ups and wallet refunds | Paid wallet top-ups are synchronized as customer payments. Credit notes refunded to the wallet are applied to the original invoice and reflected in NetSuite by adjusting the related Customer Payment applications. Free wallet credits are not synchronized as payments. |

<Note>
  NetSuite does not send accounting changes back to Hyperline through this integration. Keep Hyperline as the source for billing documents and payments that should be synchronized.
</Note>

## Prerequisites

Before connecting NetSuite, make sure you have:

* A NetSuite account with **SuiteTalk REST Web Services** and **Token-Based Authentication** enabled.
* A NetSuite **Integration record** and access token for the user or role used by Hyperline.
* Admin rights in Hyperline.
* NetSuite subsidiaries, items, accounts, and tax codes ready for the Hyperline entities you plan to synchronize.
* Hyperline products, sync rules, tax settings, and invoicing entities configured.

## Setup

<Steps>
  <Step title="Enable NetSuite authentication features">
    In NetSuite, go to **Setup > Company > Enable Features > SuiteCloud** and enable **Token-Based Authentication** and **SuiteTalk (REST Web Services)**.
  </Step>

  <Step title="Create a NetSuite Integration record">
    In NetSuite, go to **Setup > Integrations > Manage Integrations > New**, create an enabled integration record for Hyperline, and enable **Token-Based Authentication**.

    NetSuite shows the **Consumer Key** and **Consumer Secret** only once. Copy both values and store them securely.
  </Step>

  <Step title="Generate an access token">
    In NetSuite, go to **Setup > Users/Roles > Access Tokens > New** and create a token for the Hyperline integration record, user, and role.

    NetSuite shows the **Token ID** and **Token Secret** only once. Copy both values and store them securely.
  </Step>

  <Step title="Connect NetSuite in Hyperline">
    In Hyperline, open **Settings > Integrations**, select **NetSuite**, then enter your **Account ID**, **Consumer Key**, **Consumer Secret**, **Token ID**, and **Token Secret**.
  </Step>

  <Step title="Map invoicing entities to subsidiaries">
    On **Settings > Integrations > NetSuite**, link each Hyperline invoicing entity to the matching NetSuite subsidiary.
  </Step>

  <Step title="Configure your mappings">
    Map customers, products, accounts, tax codes, payment behavior, and optional custom fields. See [Configure mappings](#configure-mappings).
  </Step>
</Steps>

## Configure mappings

### Subsidiaries

NetSuite requires a subsidiary on every customer and transaction. Map each Hyperline invoicing entity to a NetSuite subsidiary on **Settings > Integrations > NetSuite**.

In OneWorld accounts, subsidiary mapping also controls which NetSuite items, accounts, and tax codes are available when you configure the rest of the integration.

### Customers

If a customer already exists in NetSuite, you can link it to the matching Hyperline customer:

1. Open the customer in Hyperline.
2. Go to the **Integrations** section.
3. Click **Edit**.
4. Enter the NetSuite customer internal ID.
5. Click **Save**.

For bulk linking during onboarding, contact our support team or use the [bulk provider mapping API](../api-reference/endpoints/customers/bulk-update-providerscustomers-mapping.mdx).

You can choose whether Hyperline should create missing NetSuite customers automatically:

* **No synchronization**: the customer must be linked manually before its invoices can be pushed.
* **From Hyperline to NetSuite**: Hyperline creates the NetSuite customer the first time it is needed by an invoice, credit note, payment, refund, or chargeback.

### Products and items

Every synchronized invoice line must have a NetSuite item. For each Hyperline product, open the product page, go to the **Accounting** section, and select the matching NetSuite item.

Hyperline fetches items from NetSuite and filters the list based on the subsidiary mapped to the invoicing entity. If a product is missing an item mapping, the invoice synchronization stops with an issue you can fix and retry.

If your NetSuite account uses revenue recognition rules, you can also select the relevant rule from the product **Accounting** section after choosing the NetSuite item.

#### Coupon discount lines

When an invoice or credit note includes coupons, Hyperline sends each coupon discount to NetSuite as a separate line below the impacted product line. This makes discounts easier to trace in NetSuite reports, revenue recognition, and journals.

Each coupon discount line uses:

* The same NetSuite item as the impacted product line.
* The same account, tax code, and revenue recognition rule as the impacted product line.
* A negative amount that offsets the gross product line amount.
* A description that includes the coupon name, product name, and service period when available.

When a coupon applies to multiple invoice lines, Hyperline splits the discount across the impacted lines and creates one discount line for each allocated share.

#### Rounding product

NetSuite can recalculate invoice and credit memo totals after Hyperline sends the record, for example when NetSuite applies its own tax or line rounding. To reconcile small differences, configure a dedicated rounding item from **Settings > Integrations > NetSuite > Default codes > Rounding product**.

When the NetSuite total differs from the Hyperline total by one currency minor unit, such as EUR 0.01 or USD 0.01, Hyperline adds a non-taxable **Round Off** line using the selected item. The rounding item is only used for this adjustment line; regular invoice lines still use the product item mappings configured on each Hyperline product.

If the difference is larger than one minor unit, Hyperline records an integration issue instead of adjusting the NetSuite record. If no rounding product is configured, Hyperline does not add a rounding adjustment line.

#### Bulk update product mappings

During implementation, you can update NetSuite product mappings for several products from the product catalog:

1. Go to **Catalog** > **Products**.
2. Select the products you want to update.
3. Click **Bulk update**.
4. In the accounting fields, update the NetSuite item or product code mapping.
5. If you use NetSuite revenue recognition, select the matching **Revenue recognition rule**.
6. Click **Save**.

<Tip>
  Complete product mappings before your first invoice synchronization. Missing NetSuite item mappings stop invoice synchronization until the affected products are corrected and retried.
</Tip>

### Accounts

Configure NetSuite account mappings from **Settings > Integrations > NetSuite > Sync rules**.

Only accounts that can be used for posting are available in rules. Non-posting and statistical accounts are filtered out.

<Note>
  If a NetSuite account does not appear in sync rules, check that the account is active, available to the relevant subsidiary, postable, and visible to the NetSuite role used by Hyperline.
</Note>

Review your sync rules before go-live so each invoice line, payment, refund, chargeback, and invoice write-off can resolve to the expected NetSuite account.

Coupon discount lines use the same account as the product line they discount. To route discounts differently, configure account sync rule criteria so the impacted invoice line resolves to the expected account.

If you synchronize invoices marked `uncollectible`, configure **Bad Debt Expense** on the matching invoice sync rule. NetSuite write-offs are created as Credit Memos applied to the original invoice, and Hyperline uses this account on the write-off lines. If no matching rule provides a bad debt expense account, the write-off synchronization stops with an issue you can fix and retry.

#### Accounting sync rule criteria

NetSuite account mapping is resolved from Hyperline sync rules. When a record is synchronized, Hyperline evaluates the matching rules, applies the highest-priority account mapping, then sends the matching NetSuite account on the invoice line, payment, refund, or chargeback record.

Use rule criteria to control when a mapping applies:

| Criterion                        | Use it when                                                                                                                |
| -------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| **Products**                     | A specific product should post to a specific NetSuite account.                                                             |
| **Product types**                | A whole product category should share the same NetSuite account mapping.                                                   |
| **Customers**                    | A customer needs a dedicated account override.                                                                             |
| **Coupons**                      | Discounts or revenue should be mapped differently when a coupon is used.                                                   |
| **Currencies**                   | Transactions in one currency should post to a different account.                                                           |
| **Countries**                    | Billing from a country or jurisdiction needs a specific mapping.                                                           |
| **Billing interval**             | Monthly, quarterly, annual, or one-off charges need different account treatment.                                           |
| **Accounting provider accounts** | A rule should apply only to this NetSuite connection when you have multiple accounting integrations or provider accounts.  |
| **Payment providers**            | Settlements need different accounts depending on the payment provider.                                                     |
| **Payment methods**              | Settlements need different accounts depending on the method, such as card, SEPA direct debit, ACH, BACS, or bank transfer. |
| **Bank accounts**                | Payments received on different bank accounts should post to different cash accounts.                                       |

<Note>
  An empty criterion matches everything, which makes the rule a default. When multiple rules match, the highest priority wins for each mapped account role.
</Note>

### Tax codes

Configure tax codes at the Hyperline invoicing entity level. Hyperline resolves the tax code from the invoice tax settings and sends it to NetSuite for taxable invoice lines.

See [Tax management](../docs/invoices/tax-management) for the Hyperline tax setup.

### Payment synchronization

Payment, refund, and chargeback synchronization is configured per payment method, such as card, direct debit, bank transfer, external payments, and other payment sources.

Each payment method can be set to:

* **No synchronization**: payments, refunds, and chargebacks using this method are not sent to NetSuite.
* **From Hyperline to NetSuite**: settled payments, settled refunds, and chargebacks are sent to NetSuite for the corresponding invoice or payment.

For invoice overpayments, Hyperline creates the NetSuite Customer Payment for the full amount received. It applies only the remaining NetSuite invoice balance and leaves the excess amount unapplied on the Customer Payment. Invoice overpayments are not automatically treated as wallet top-ups.

### Optional field mappings

You can map Hyperline customer fields, invoice custom properties, and invoice line fields to NetSuite fields from **Settings > Integrations > NetSuite**. This is useful for reporting dimensions such as location, department, class, contract references, or service periods.

Create the relevant [custom properties](../docs/properties/overview) in Hyperline before mapping them to NetSuite fields.

## Synchronization behavior

Hyperline sends eligible records to NetSuite automatically after they are created or updated. The synchronization delay is 5 minutes maximum.

By default, only data created after the connection date is synchronized. To send older data, contact our support team or use **Resync** when the option is available from the integration actions menu.

### Daily catch-up synchronization

Hyperline runs an additional NetSuite catch-up synchronization every day at **05:00 UTC**. This complements the regular synchronization and helps recover records that could not be sent during an earlier attempt.

The daily run processes records in this order:

1. Retry eligible customer and invoice issues from previous runs, with customer issues first.
2. Synchronize customers changed since the previous daily run.
3. Synchronize invoices changed since the previous daily run.

Hyperline automatically retries transient issues, such as temporary NetSuite or network errors, once per daily run for up to three automatic attempts. Configuration and validation issues, such as a missing item or account mapping, are not retried automatically because they require a correction first. Fix these issues, then retry them from **Settings > Integrations > NetSuite > View issues**.

An automatically retried issue temporarily appears as retrying. After a successful synchronization, Hyperline removes the related issue from the open issues list. If the retry fails, the issue remains open with the latest error.

Hyperline prevents two daily catch-up runs from overlapping. If a manual resync and the daily run target the same customer or invoice at the same time, Hyperline deduplicates the work so the record is not synchronized twice concurrently.

### Locked accounting periods

For invoices, credit notes, and customer payment creation or updates, Hyperline checks the NetSuite accounting period for the transaction date. If that period is closed, fully locked, or A/R locked, Hyperline keeps the original transaction date and sends the record to the nearest open NetSuite posting period.

Customer Payment deletion is stricter. If the NetSuite Customer Payment belongs to a closed, fully locked, or A/R locked period, Hyperline does not delete it and records an integration issue. An administrator can adjust or remove the payment in NetSuite, then resolve or ignore the issue in Hyperline when the accounting state is correct.

For creation and updates, you do not need to reopen the locked period or change the financial date in Hyperline.

The following invoice statuses are not pushed to NetSuite:

* **draft**
* **open**
* **charged on parent**
* **pending parent concatenation**
* **closed**
* **archived**

## Refunds, chargebacks, and wallet activity

Credit notes are synchronized as NetSuite **Credit Memo** records. When a credit note is linked to an invoice in Hyperline, Hyperline applies the NetSuite credit memo to the matching NetSuite invoice.

Settled refunds are synchronized as NetSuite **Customer Refund** records when the payment method is configured to synchronize. Chargebacks are also synchronized as NetSuite **Customer Refund** records, applied to the original Customer Payment. The related Customer Refund is removed and the Customer Payment application is restored when the chargeback is cleared or the transaction is deleted in Hyperline.

When a credit note is refunded to the customer's wallet, Hyperline does not create a NetSuite Customer Refund because no cash refund is sent back to the customer. Instead, Hyperline applies the NetSuite Credit Memo to the original invoice and keeps the customer value available as wallet balance in Hyperline.

If the original NetSuite invoice was already closed by payments, Hyperline first opens the invoice balance for the credit memo:

* For wallet-paid invoices, Hyperline reduces or removes the wallet top-up Customer Payment application.
* For card, direct debit, bank transfer, or other Hyperline-synchronized payments, Hyperline reduces the matching Customer Payment application for the credited amount.
* For invoices paid by both wallet and another payment method, Hyperline adjusts the wallet payment first, then reduces the other synchronized payment only for the remaining amount.

Hyperline does not change manual or unknown NetSuite payments when preparing a wallet-refunded credit note. If such a payment blocks the credit memo application, Hyperline records an integration issue so the payment can be reviewed in NetSuite.

<Warning>
  If NetSuite has locked a Customer Payment because it is deposited, Hyperline
  cannot change which invoices that payment is applied to. If the payment is
  included in a NetSuite Deposit, remove it from that Deposit. If the payment is
  posted directly to a bank account and shows as deposited, edit the Customer
  Payment and move it to Undeposited Funds. Then retry the failed
  synchronization from Hyperline. Hyperline will then reopen the original
  invoice balance and apply the Credit Memo.
</Warning>

Paid wallet top-ups are handled separately from regular invoices:

* The wallet top-up document generated by Hyperline is not pushed as a NetSuite Invoice.
* Paid top-ups are synchronized as NetSuite Customer Payments when eligible.
* Wallet payments are applied to the NetSuite invoices paid with wallet balance.
* When a paid top-up is reverted, Hyperline unapplies the related NetSuite Customer Payment and creates a Customer Refund. If the original Customer Payment was not synchronized, Hyperline records an integration issue instead.
* Free wallet credits are not pushed as Customer Payments.

## Guides

### Record an offline payment

Choose the payment action based on how the payment should be applied.

#### Payment for a specific invoice

Use **Mark as paid** when the payment received is for one specific invoice and you want to apply it directly to that invoice.

1. Open the invoice in Hyperline.
2. Click **Actions** > **Mark as paid**.
3. Enter the payment details, such as the amount paid, settlement date, bank account, payment reference, or internal comment.
4. Click **Save**.

When the payment method is configured to synchronize, Hyperline sends the settled payment to NetSuite as a **Customer Payment** applied to the matching NetSuite Invoice.

#### Customer-level payment or prepayment

Use **Record offline payment** from the customer's wallet when you receive one payment that should cover several invoices, or when part of the amount should remain available for future invoices.

1. Open the customer in Hyperline.
2. Go to the **Wallet** tab.
3. Click **Actions** > **Record offline payment**.
4. Enter the payment details, such as the amount received, bank account, payment reference, or internal comment.
5. Open the invoice you want to settle.
6. Click **Actions** > **Pay with wallet**.
7. Select the amount to allocate from the wallet to the invoice.
8. Repeat the wallet payment action on any other invoice that should use part of the same payment.

Any unused amount remains in the customer's wallet. When the related payment method is configured to synchronize, Hyperline sends the full context to NetSuite: the customer payment, the invoices paid with wallet balance, the payment applications, and any remaining unapplied amount.

## Monitor and recover

If NetSuite rejects a record or a mapping is missing, Hyperline records an integration issue. Open **Settings > Integrations > NetSuite > View issues** to review the error, fix the configuration or source data, then retry the synchronization.

Use **Resync** from the integration actions menu after changing mappings, reconnecting NetSuite, or correcting issues that affected existing records. For accounting integrations, **Resync** can send missing invoices, update existing provider invoices, and update linked customers.

See [Manage connected integrations](./manage-integration) for details about reauthorization, reconfiguration, resync, and disconnection actions.

<Info>
  Is something still unclear? Don't hesitate to reach out to our team via the in-app chat if you need additional support.
</Info>

## Next steps

* Review sync rules on **Settings > Integrations > NetSuite** before mapping NetSuite accounts.
* Configure [tax settings](../docs/invoices/tax-management) for each invoicing entity.


# Integrations overview
Source: https://docs.hyperline.co/integrations/overview

Browse Hyperline integrations for payment gateways, accounting systems, CRMs, tax engines, and automation platforms to connect your billing stack.

## Payment gateway

<CardGroup>
  <Card
    title="Stripe Payments"
    icon={
  <svg
    width="30"
    height="30"
    viewBox="0 0 80 80"
    fill="none"
    xmlns="http://www.w3.org/2000/svg"
  >
    <rect width="80" height="80" rx="16" fill="#635BFF" />
    <path
      fillRule="evenodd"
      clipRule="evenodd"
      d="M36.7496 31.6989C36.7496 29.7275 38.3622 28.9692 41.0331 28.9692C44.863 28.9692 49.7008 30.1319 53.5307 32.2044V20.3253C49.348 18.6571 45.2157 18 41.0331 18C30.8032 18 24 23.3582 24 32.3055C24 46.2571 43.1496 44.033 43.1496 50.0484C43.1496 52.3736 41.1339 53.1319 38.3118 53.1319C34.1291 53.1319 28.7874 51.4132 24.5543 49.0879V61.1187C29.2409 63.1407 33.978 64 38.3118 64C48.7937 64 56 58.7934 56 49.7451C55.9496 34.6813 36.7496 37.3604 36.7496 31.6989Z"
      fill="#FDFDFF"
    />
  </svg>
}
    href="./stripe"
  >
    Use Stripe's global payment processing platform as a payment gateway.
  </Card>

  <Card
    title="Mollie"
    icon={
  <svg
    width="30"
    height="30"
    viewBox="0 0 80 80"
    fill="none"
    xmlns="http://www.w3.org/2000/svg"
  >
    <rect width="80" height="80" rx="16" fill="black" />
    <path
      fillRule="evenodd"
      clipRule="evenodd"
      d="M64.6138 40.2148C65.8964 40.2148 67.0447 41.0577 67.4486 42.2548L61.7859 42.2548C62.1821 41.0577 63.3303 40.2148 64.6138 40.2148ZM70.2887 43.287C70.2887 41.7967 69.7085 40.392 68.658 39.3231C67.6013 38.2543 66.2088 37.6618 64.7237 37.6618C64.6993 37.6618 64.6749 37.6618 64.6504 37.6618C63.1113 37.6802 61.6577 38.2909 60.5696 39.3842C59.4825 40.4775 58.8717 41.925 58.8534 43.4702C58.8351 45.046 59.4397 46.5363 60.5574 47.6662C61.6751 48.7961 63.1541 49.4191 64.7298 49.4191H64.736C66.8004 49.4191 68.7374 48.3136 69.794 46.5363L69.9284 46.3103L67.6074 45.1682L67.4914 45.3575C66.9112 46.3164 65.9034 46.8844 64.7857 46.8844C63.3565 46.8844 62.1219 45.9316 61.7432 44.5757L70.2896 44.5757L70.2896 43.287H70.2887ZM55.7498 35.6646C54.7377 35.6646 53.9175 34.8444 53.9175 33.8323C53.9175 32.8202 54.7377 32 55.7498 32C56.7619 32 57.5821 32.8202 57.5821 33.8323C57.583 34.8444 56.7619 35.6646 55.7498 35.6646ZM54.345 49.187L57.1554 49.187L57.1554 37.9L54.345 37.9L54.345 49.187ZM48.9694 32.2373L51.7789 32.2373L51.7789 49.187L48.9694 49.187L48.9694 32.2373ZM43.5938 49.187L46.4042 49.187L46.4042 32.2373L43.5938 32.2373L43.5938 49.187ZM36.2026 46.6384C34.4977 46.6384 33.1103 45.2511 33.1103 43.5461C33.1103 41.8412 34.4977 40.4539 36.2026 40.4539C37.9075 40.4539 39.2948 41.8412 39.2948 43.5461C39.2948 45.2511 37.9075 46.6384 36.2026 46.6384ZM36.2026 37.6618C32.9577 37.6618 30.3235 40.3021 30.3235 43.5409C30.3235 46.7797 32.9638 49.42 36.2026 49.42C39.4414 49.42 42.0817 46.7797 42.0817 43.5409C42.0817 40.3012 39.4475 37.6618 36.2026 37.6618ZM24.2053 37.6802C24.0526 37.6679 23.9061 37.6618 23.7534 37.6618C22.3364 37.6618 20.9927 38.2421 20.0268 39.2682C19.0618 38.2482 17.7242 37.6618 16.3186 37.6618C13.509 37.6618 11.2178 39.9461 11.2178 42.7556L11.2178 49.187L13.9671 49.187L13.9671 42.835C13.9671 41.6685 14.926 40.5935 16.0559 40.4775C16.1353 40.4714 16.2147 40.4653 16.288 40.4653C17.5584 40.4653 18.5967 41.5036 18.6028 42.774L18.6028 49.187L21.4124 49.187L21.4124 42.8228C21.4124 41.6624 22.3652 40.5874 23.5012 40.4714C23.5806 40.4653 23.66 40.4591 23.7333 40.4591C25.0037 40.4591 26.0481 41.4913 26.0542 42.7556L26.0542 49.187H28.8646L28.8646 42.835C28.8646 41.5463 28.3882 40.3065 27.527 39.3475C26.6667 38.3825 25.4879 37.7901 24.2053 37.6802Z"
      fill="#FDFDFF"
    />
  </svg>
}
    href="./mollie"
  >
    Use Europe-based Mollie payment processor as payment gateway.
  </Card>

  <Card
    title="GoCardless"
    icon={
  <svg
    width="30"
    height="30"
    viewBox="0 0 80 80"
    fill="none"
    xmlns="http://www.w3.org/2000/svg"
  >
    <rect width="80" height="80" rx="16" fill="#F1F151" />
    <path
      fillRule="evenodd"
      clipRule="evenodd"
      d="M35.3736 18.5432C18.234 22.6218 12.1581 43.388 24.5445 55.5549C38.5835 69.3458 61.9398 59.5616 61.999 39.8653C62.0126 35.3239 61.9416 35.2224 58.6904 35.131C50.6453 34.9061 40.1274 35.1793 40.1274 35.6135C40.1274 35.8755 43.4892 39.5834 47.5978 43.8532C51.7066 48.1227 55.0684 51.8484 55.0684 52.1326C55.0684 55.1068 46.0444 55.9743 40.8642 53.4977C29.7199 48.1694 21.7904 30.9166 27.8745 25.236C31.1235 22.2026 36.337 23.4085 47.9627 29.8815C52.2224 32.2535 55.8719 34.0952 56.0721 33.9747C56.2727 33.8538 54.6417 30.3453 52.4486 26.1771L48.4607 18.5997L46.671 18.2899C43.9025 17.8112 37.8837 17.9458 35.3736 18.5432Z"
      fill="black"
    />
  </svg>
}
    href="./gocardless"
  >
    Use GoCardless direct debit as payment gateway.
  </Card>

  <Card title="Airwallex" icon={<svg width="30" height="30" viewBox="0 0 120 120" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="120" height="120" rx="24" fill="#080808"/><path fill-rule="evenodd" clip-rule="evenodd" d="M96.0228 54.2258C97.3979 55.5898 98.3517 57.3337 98.7669 59.243C99.1821 61.1523 99.0405 63.1435 98.3595 64.9719L93.1709 79.336C91.8091 83.1072 88.7053 86.0246 84.8697 86.7861C82.9511 87.1774 80.9642 87.0299 79.1215 86.3593C77.2789 85.6886 75.6498 84.5201 74.4085 82.9788L43.2947 44.9914C43.2174 44.8979 43.1173 44.8268 43.0045 44.7851C42.8917 44.7434 42.7701 44.7326 42.6519 44.7538C42.5338 44.775 42.4231 44.8275 42.3311 44.906C42.239 44.9844 42.1688 45.0861 42.1275 45.2009L32.0046 73.1024C31.7945 73.6791 32.3516 74.2378 32.9043 74.008L45.3264 68.8377C46.0267 68.5484 46.7781 68.4097 47.5336 68.4303C48.289 68.4508 49.0321 68.6303 49.7162 68.9573C50.4004 69.2843 51.0108 69.7519 51.5093 70.3306C52.0078 70.9094 52.3835 71.5869 52.6129 72.3206C53.5304 75.1885 51.9873 78.2861 49.2703 79.4171L33.0436 86.1688C30.0392 87.4192 26.5883 87.1984 23.8823 85.3578C22.0383 84.102 20.6635 82.2494 19.98 80.0993C19.2965 77.9492 19.3441 75.627 20.1153 73.5079L32.0753 40.5533C33.4924 36.6469 36.72 33.8894 40.7104 33.1775C42.6536 32.8226 44.6546 33.0019 46.5072 33.6968C48.3599 34.3917 49.9974 35.5772 51.2511 37.1313L69.1094 58.9387L85.5351 52.1014C89.185 50.583 93.2041 51.3962 96.0228 54.2258ZM86.5498 65.1791C86.7576 64.6024 86.2005 64.0437 85.6478 64.2757L76.5728 68.0515L82.0156 74.6996C82.0928 74.7942 82.1931 74.8664 82.3065 74.9088C82.4198 74.9512 82.5421 74.9623 82.6611 74.941C82.78 74.9198 82.8913 74.8669 82.9837 74.7877C83.0761 74.7085 83.1463 74.6058 83.1873 74.4901L86.5476 65.1791H86.5498Z" fill="#FF6E42"/></svg>} href="./airwallex">
    Use Airwallex payment processor as payment gateway.
  </Card>

  <Card
    title="Adyen"
    icon={
  <svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
    <g clip-path="url(https://mintlify.s3.us-west-1.amazonaws.com/hyperline/integrations#clip0_7254_50)">
      <rect width="30" height="30" rx="6" fill="#29D074"/>
      <path d="M2.625 12.75H6.31985C6.72813 12.75 7.05882 13.0856 7.05882 13.5V17.25H3.36397C2.95569 17.25 2.625 16.9144 2.625 16.5V14.625H4.47243V16.125H5.2114V13.875H2.625V12.75Z" fill="white"/>
      <path d="M23.3162 12.75V17.25H25.1636V13.875H25.9026V17.25H27.75V13.5C27.75 13.0856 27.4193 12.75 27.011 12.75H23.3162Z" fill="white"/>
      <path d="M12.9706 19.125H16.6654C17.0737 19.125 17.4044 18.7894 17.4044 18.375V12.75H15.557V16.125H14.818V12.75H12.9706V16.5C12.9706 16.9144 13.3013 17.25 13.7096 17.25H15.557V18H12.9706V19.125Z" fill="white"/>
      <path d="M22.5772 17.25H18.8824C18.4741 17.25 18.1434 16.9144 18.1434 16.5V12.75H21.8382C22.2465 12.75 22.5772 13.0856 22.5772 13.5V15.375H20.7298V13.875H19.9908V16.125H22.5772V17.25Z" fill="white"/>
      <path d="M12.2316 10.875V17.25H8.53676C8.12848 17.25 7.79779 16.9144 7.79779 16.5V13.5C7.79779 13.0856 8.12848 12.75 8.53676 12.75H9.64522V16.125H10.3842V10.875H12.2316Z" fill="white"/>
    </g>
    <defs>
      <clipPath id="clip0_7254_50">
        <rect width="30" height="30" rx="6" fill="white"/>
      </clipPath>
    </defs>
  </svg>

}
    href="./adyen"
  >
    Use Adyen payment platform as payment gateway.
  </Card>
</CardGroup>

## CRM

<CardGroup>
  <Card
    title="Salesforce"
    icon={
  <svg
    width="30"
    height="30"
    viewBox="0 0 80 80"
    fill="none"
    xmlns="http://www.w3.org/2000/svg"
  >
    <rect width="80" height="80" rx="16" fill="#00A1E1" />
    <path
      d="M65.9995 38.8571V39.0088C65.9816 39.0518 65.9546 39.0928 65.9464 39.1378C65.8336 39.7503 65.7673 40.3745 65.605 40.9733C64.8513 43.7552 63.2498 45.9468 60.8156 47.5194C58.984 48.7024 56.9626 49.3149 54.7687 49.2881C54.0777 49.28 53.3883 49.1708 52.6973 49.1202C52.6182 49.1146 52.4947 49.1642 52.4564 49.2269C51.7491 50.3903 50.8203 51.3366 49.6496 52.0432C48.3738 52.8135 46.9918 53.243 45.4905 53.249C45.1373 53.2506 44.7837 53.2111 44.4305 53.1914C43.7921 53.1555 43.1894 52.9688 42.5918 52.764C42.3208 52.6714 42.0575 52.5556 41.8003 52.4544C41.7707 52.4853 41.7549 52.4954 41.7482 52.5096C41.0134 54.1757 39.8743 55.5074 38.3561 56.5226C37.2431 57.2666 36.0116 57.7183 34.6955 57.9565C34.594 57.9575 34.4919 57.958 34.3903 57.959C33.557 57.959 32.7231 57.9585 31.8897 57.958C31.5213 57.8887 31.1452 57.8467 30.7854 57.7466C27.8066 56.9146 25.725 55.0684 24.5216 52.2511C24.4344 52.0473 24.3379 52.0093 24.145 52.0488C23.328 52.2172 22.5063 52.2248 21.6765 52.1429C20.931 52.069 20.217 51.8798 19.525 51.6113C17.746 50.9219 16.336 49.7737 15.3199 48.1723C14.4595 46.8153 13.9543 45.3454 14.0033 43.7188C14.0196 43.1756 14.0283 42.6323 14.0405 42.0891C14.1451 41.6137 14.2319 41.1387 14.4039 40.6744C15.0255 38.9967 16.0247 37.6032 17.4597 36.5198C17.7215 36.322 18.0001 36.1455 18.2839 35.9497C17.3775 33.8173 17.1923 31.6302 17.8083 29.3936C18.4278 27.1443 19.6807 25.3168 21.5806 23.936C23.2989 22.6882 25.23 22.0251 27.357 22.0008C30.7379 21.9619 33.4819 23.2987 35.607 25.9015C35.6815 25.8348 35.7325 25.7913 35.781 25.7447C36.6572 24.9071 37.6401 24.2334 38.7761 23.7807C39.6304 23.4403 40.5132 23.2107 41.4277 23.1596C42.4326 23.1035 43.4384 23.1313 44.4249 23.3887C46.8862 24.0316 48.7576 25.4544 50.0865 27.5899C50.2028 27.7765 50.2931 27.8221 50.5014 27.7295C51.6639 27.2141 52.8958 26.9743 54.1589 26.8929C55.1331 26.8302 56.1037 26.9147 57.0586 27.1109C61.3616 27.9955 64.7875 31.3783 65.7015 35.6083C65.8107 36.1136 65.8739 36.628 65.9582 37.1384C65.9576 37.2036 65.9571 37.2694 65.9561 37.3346C65.953 37.7984 65.9479 38.2622 65.9485 38.7266C65.9485 38.7701 65.9821 38.8131 66 38.856L65.9995 38.8571ZM36.0703 37.1414H36.0708C36.054 37.1252 36.0366 37.1085 36.0198 37.0913L35.9177 36.9902C35.9009 36.974 35.8835 36.9578 35.8667 36.9411C35.3217 36.4484 34.6552 36.4495 34.0061 36.5744C33.0727 36.7534 32.6231 37.4236 32.4429 38.3027C32.4291 38.3518 32.4154 38.4013 32.4011 38.4504C32.3985 38.5187 32.3955 38.5875 32.3929 38.6557V39.2081C32.3955 39.2769 32.3985 39.3452 32.4011 39.4139C32.4149 39.463 32.4291 39.5126 32.4429 39.5616C32.4735 39.6982 32.4812 39.8449 32.5384 39.9688C32.8389 40.6177 33.2885 41.1038 34.0351 41.2414L34.1816 41.2824C34.2173 41.2849 34.2536 41.2874 34.2893 41.2899C34.3403 41.3036 34.3919 41.3168 34.4429 41.3304C34.696 41.3304 34.9496 41.3304 35.2028 41.3304C35.2712 41.3173 35.3395 41.3036 35.4074 41.2905C35.4564 41.2864 35.5059 41.2824 35.5549 41.2783C35.6075 41.2657 35.6605 41.253 35.7131 41.2404C35.8024 41.2161 35.8922 41.1949 35.9805 41.167C36.3934 41.0381 36.4071 41.0102 36.2643 40.6167C36.1836 40.3945 36.0157 40.3122 35.7606 40.3699C35.7121 40.3846 35.6631 40.3997 35.6146 40.4144L35.5585 40.421C35.4921 40.4351 35.4263 40.4493 35.36 40.463C35.0527 40.463 34.7455 40.463 34.4383 40.463C34.3893 40.4488 34.3403 40.4351 34.2913 40.421C33.9576 40.3547 33.7198 40.1676 33.5748 39.8631L33.5228 39.7159C33.509 39.6653 33.4952 39.6152 33.4819 39.5652C33.4677 39.5298 33.4534 39.4944 33.4391 39.4585C33.4503 39.3613 33.462 39.2647 33.4733 39.1676H36.5429V38.4003C36.5429 38.3513 36.5424 38.3017 36.5419 38.2526C36.5097 38.1328 36.4776 38.0134 36.4454 37.8935C36.4378 37.845 36.4301 37.7959 36.4225 37.7473C36.3219 37.5637 36.2214 37.3796 36.1208 37.196C36.1035 37.1778 36.0867 37.1596 36.0693 37.1414H36.0703ZM40.6092 36.9391C40.5928 36.9219 40.576 36.9047 40.5597 36.8875L40.5592 36.8865C40.5245 36.8718 40.4898 36.8566 40.4551 36.842C40.4382 36.8258 40.4214 36.8091 40.4045 36.7929C40.3545 36.7742 40.3045 36.755 40.2545 36.7362L40.253 36.7337C40.2371 36.7292 40.2208 36.7246 40.205 36.7201C40.0846 36.6725 39.9646 36.6245 39.8442 36.5769C39.7932 36.5628 39.7426 36.5486 39.6916 36.5344L39.589 36.5243C39.5395 36.5233 39.4895 36.5218 39.44 36.5208C39.3364 36.5056 39.2333 36.4899 39.1297 36.4747C39.046 36.4747 38.9618 36.4747 38.8781 36.4747C38.7955 36.4788 38.7128 36.4823 38.6301 36.4864L38.4704 36.5238C37.8452 36.6862 37.4171 37.0443 37.2869 37.6973C37.2869 37.8308 37.2859 37.9643 37.2859 38.0979C37.289 38.1322 37.2926 38.1666 37.2956 38.201C37.3079 38.2339 37.3206 38.2663 37.3329 38.2992C37.5253 38.8348 37.9886 39.0321 38.4745 39.2076C38.8266 39.3345 39.1798 39.462 39.5217 39.6132C39.8508 39.7584 39.8901 40.074 39.6508 40.3411C39.4512 40.5636 38.9481 40.6567 38.5679 40.5135C38.5189 40.512 38.4699 40.51 38.4204 40.5085C38.4025 40.5105 38.3847 40.513 38.3663 40.5151C38.3168 40.4842 38.2668 40.4534 38.2173 40.4225C38.0632 40.3674 37.909 40.3117 37.7549 40.2566C37.7029 40.2283 37.6508 40.2005 37.5988 40.1721C37.5273 40.1317 37.4554 40.0917 37.3706 40.0437C37.3558 40.1468 37.3467 40.2091 37.3375 40.2718L37.2895 40.3719C37.1665 40.5464 37.1027 40.7199 37.2966 40.8904C37.337 40.9055 37.3773 40.9207 37.4176 40.9354C37.4319 40.9369 37.4406 40.9445 37.4441 40.9576C37.513 40.9986 37.5824 41.0391 37.6513 41.08C38.0427 41.1625 38.4342 41.2444 38.8256 41.3269C38.9685 41.3972 39.1098 41.4503 39.2323 41.291C39.2833 41.3046 39.3344 41.3188 39.3849 41.3324C39.4523 41.3188 39.5196 41.3046 39.5875 41.291C39.6217 41.2712 39.6564 41.252 39.6906 41.2323C39.7085 41.2019 39.7258 41.1721 39.7437 41.1417C39.7605 41.1417 39.7773 41.1417 39.7942 41.1417C39.8284 41.1417 39.8626 41.1417 39.8968 41.1417C39.9805 41.1033 40.0647 41.0649 40.1484 41.0259C40.1836 40.9976 40.2188 40.9693 40.254 40.9409C40.3897 40.7685 40.526 40.5955 40.6617 40.423C40.6786 40.3734 40.6954 40.3239 40.7123 40.2743C40.7036 40.0169 40.7378 39.7493 40.6781 39.504C40.5643 39.0351 40.1218 38.8429 39.7549 38.635C39.4227 38.4469 39.0103 38.4023 38.6551 38.2455C38.4826 38.1697 38.3153 38.0028 38.2346 37.8353C38.1923 37.7463 38.3112 37.5374 38.4122 37.4383C38.5025 37.3498 38.6689 37.3002 38.8026 37.2982C39.289 37.2901 39.7574 37.3953 40.2014 37.5956C40.2693 37.5966 40.3367 37.5981 40.4045 37.5991L40.4076 37.5941C40.4244 37.546 40.4413 37.4975 40.4576 37.4494C40.479 37.3958 40.5005 37.3422 40.5219 37.2886C40.5336 37.2562 40.5454 37.2233 40.5571 37.191L40.5581 37.1894L40.6102 37.0428L40.6127 37.0382C40.6112 37.0048 40.6092 36.9719 40.6076 36.9386H40.6082L40.6092 36.9391ZM25.0171 40.4731C25.0314 40.4397 25.0457 40.4063 25.06 40.3724L25.0605 40.3714C25.0651 40.3218 25.0697 40.2723 25.0748 40.2232C25.0901 40.1883 25.1059 40.1534 25.1213 40.119C25.1213 40.0861 25.1213 40.0528 25.1213 40.0199C25.1187 39.8666 25.1162 39.7134 25.1131 39.5601C25.0998 39.5288 25.0871 39.4974 25.0738 39.4655C24.8493 38.9309 24.3619 38.7397 23.8664 38.5571C23.5357 38.4352 23.2014 38.3219 22.8789 38.1828C22.6758 38.0953 22.5717 37.9269 22.6247 37.6937C22.6385 37.6624 22.6523 37.631 22.6661 37.5996C22.7671 37.5137 22.8687 37.4277 22.9697 37.3417C23.0034 37.3285 23.0366 37.3159 23.0702 37.3027L23.5836 37.3002L23.7919 37.3397C23.8245 37.3437 23.8572 37.3478 23.8893 37.3518C23.9378 37.366 23.9858 37.3801 24.0343 37.3948C24.1241 37.4165 24.2159 37.4332 24.3032 37.4621C24.4486 37.5101 24.6492 37.6492 24.7227 37.5991C24.8406 37.5192 24.8656 37.3118 24.9452 37.1667C25.0503 36.975 24.9779 36.8561 24.7931 36.8055C24.3573 36.6867 23.9169 36.584 23.4785 36.4742C23.4622 36.4742 23.4464 36.4742 23.43 36.4742C23.3953 36.4742 23.3601 36.4742 23.3254 36.4742C23.3091 36.4742 23.2933 36.4742 23.2769 36.4742C23.1937 36.4783 23.1111 36.4818 23.0279 36.4859C22.9753 36.498 22.9223 36.5107 22.8697 36.5228C22.5273 36.6093 22.2139 36.7484 21.9822 37.0251C21.675 37.3923 21.553 37.8313 21.6704 38.2779C21.7934 38.7443 22.2073 38.9704 22.6411 39.1266C22.982 39.2496 23.3377 39.3355 23.6704 39.4756C23.8449 39.549 23.9842 39.7043 24.1399 39.8226C24.1409 39.939 24.1419 40.0558 24.1424 40.1721C24.0496 40.3446 23.9358 40.4989 23.7214 40.5191C23.4714 40.5424 23.2203 40.5505 22.9697 40.5651C22.9355 40.5505 22.9018 40.5358 22.8676 40.5211C22.5956 40.4048 22.3231 40.2885 22.0511 40.1716C22.0154 40.1549 21.9802 40.1382 21.9445 40.1216C21.9286 40.1054 21.9133 40.0897 21.8975 40.0735C21.8475 40.0735 21.797 40.0735 21.747 40.0735C21.7434 40.1226 21.7403 40.1711 21.7368 40.2202C21.7056 40.2541 21.675 40.288 21.6439 40.3218C21.6398 40.3547 21.6408 40.3896 21.6301 40.421C21.5066 40.7766 21.5015 40.7836 21.8266 40.9774C21.9756 41.0664 22.1466 41.1195 22.3073 41.1888C22.3578 41.1873 22.4078 41.1863 22.4584 41.1847L22.5089 41.1903C22.5436 41.2207 22.5778 41.251 22.6125 41.2813C22.6467 41.2844 22.6809 41.2869 22.7151 41.2899C22.7819 41.3041 22.8493 41.3188 22.9161 41.3329C23.0039 41.3896 23.083 41.1392 23.1744 41.3259C23.3438 41.3835 23.5234 41.4968 23.6321 41.2394C23.6842 41.2581 23.7362 41.2773 23.7883 41.296C23.8383 41.2778 23.8883 41.2596 23.9383 41.2409C23.9567 41.2434 23.9751 41.2464 23.9939 41.249C24.0429 41.2414 24.0919 41.2333 24.1404 41.2257C24.4537 41.117 24.7237 40.948 24.9176 40.6734C24.9314 40.642 24.9452 40.6112 24.959 40.5798L24.9656 40.5742C24.9804 40.5429 24.9957 40.5115 25.0105 40.4802L25.0161 40.4726L25.0171 40.4731ZM29.5938 37.9572C29.581 37.9041 29.5688 37.851 29.556 37.7979C29.5524 37.765 29.5489 37.7317 29.5453 37.6988C29.531 37.6477 29.5167 37.5966 29.5024 37.545C29.3121 36.9871 28.916 36.6523 28.3394 36.5511C28.0352 36.4975 27.7204 36.5051 27.4106 36.4849C27.3075 36.498 27.2039 36.5112 27.1008 36.5243C27.0651 36.5268 27.0294 36.5294 26.9936 36.5319C26.9273 36.5466 26.861 36.5617 26.7946 36.5764C26.7768 36.5789 26.7589 36.581 26.741 36.5835C26.691 36.5982 26.641 36.6128 26.591 36.6275C26.3874 36.7145 26.1838 36.8015 25.9801 36.889C25.9771 36.9553 25.9745 37.0215 25.9715 37.0878C26.0495 37.2683 26.1281 37.4489 26.2159 37.6528C26.7354 37.3543 27.2774 37.328 27.8285 37.3387C28.2195 37.3462 28.5241 37.5587 28.5818 37.8854C28.5813 38.026 28.5803 38.1666 28.5797 38.3073C28.4935 38.3022 28.4073 38.2971 28.321 38.2926C28.2547 38.2911 28.1878 38.2901 28.1215 38.2885C27.8474 38.288 27.5734 38.287 27.2998 38.2865C27.2503 38.2885 27.2008 38.2906 27.1513 38.2931C27.1187 38.2966 27.086 38.3002 27.0534 38.3042C27.0008 38.3184 26.9487 38.3325 26.8962 38.3467C26.6175 38.5096 26.2914 38.6259 26.0705 38.8454C25.627 39.286 25.5805 39.8434 25.7735 40.424C25.8199 40.5075 25.8663 40.5909 25.9133 40.6749C26.0199 40.7806 26.1271 40.8868 26.2338 40.9925C26.2674 40.991 26.3016 40.989 26.3353 40.9875L26.642 41.1908C26.6915 41.1903 26.741 41.1893 26.791 41.1888L26.8441 41.1908L26.9487 41.2813C27.3034 41.298 27.6586 41.3142 28.0133 41.3309C28.0648 41.3178 28.1169 41.3046 28.1684 41.2915C28.221 41.2884 28.2735 41.2859 28.3256 41.2829C28.4093 41.2687 28.4925 41.2545 28.5762 41.2404C28.5945 41.2378 28.6129 41.2348 28.6308 41.2323C28.6976 41.2181 28.7645 41.2045 28.8313 41.1903C29.0181 41.1534 29.2054 41.1165 29.3922 41.079C29.4437 41.0482 29.4953 41.0173 29.5473 40.987C29.5642 40.9248 29.5958 40.8625 29.5958 40.8003C29.5968 40.2541 29.5927 39.7073 29.5897 39.161C29.5912 38.7599 29.5922 38.3588 29.5938 37.9577V37.9572ZM50.5942 38.9076C50.5988 38.7903 50.5999 38.6724 50.6085 38.5556C50.656 37.9234 50.9265 37.5349 51.4286 37.4216C51.6062 37.3816 51.7986 37.4105 51.9833 37.3968C52.0502 37.3918 52.1543 37.372 52.1732 37.3295C52.2666 37.1176 52.337 36.8961 52.4202 36.6654C51.7353 36.4338 51.1342 36.5127 50.5743 36.9977C50.557 36.8217 50.5468 36.7175 50.532 36.5643C50.2237 36.5886 49.9272 36.6123 49.6307 36.6356C49.6149 36.7246 49.5853 36.8136 49.5853 36.9021C49.5823 38.2218 49.5823 39.5409 49.5853 40.8605C49.5853 40.9501 49.6119 41.0396 49.6261 41.1291C49.7798 41.2636 50.433 41.2798 50.581 41.1498C50.5953 41.1372 50.5907 41.1033 50.5948 41.0795C50.5948 40.3557 50.5948 39.6319 50.5948 38.9076H50.5942ZM31.5442 41.1281C31.5585 41.0386 31.5846 40.949 31.5846 40.8595C31.5871 38.9188 31.5871 36.9775 31.5846 35.0368C31.5846 34.9472 31.558 34.8577 31.5442 34.7682C31.4228 34.7353 31.3003 34.6721 31.1799 34.6766C30.9722 34.6842 30.7655 34.7343 30.5588 34.7662C30.5108 34.8425 30.4266 34.9169 30.421 34.9963C30.4031 35.2472 30.4139 35.5006 30.4139 35.753C30.4139 37.4353 30.4128 39.1175 30.4154 40.7998C30.4154 40.9253 30.3644 41.0831 30.5588 41.1306C30.6032 41.163 30.6461 41.2217 30.6915 41.2232C30.9318 41.2323 31.1732 41.2323 31.4136 41.2232C31.4585 41.2217 31.5009 41.162 31.5442 41.1291V41.1281ZM54.2834 41.2287C54.3104 41.2363 54.337 41.2434 54.364 41.251C54.5881 41.2783 54.8157 41.3436 55.0351 41.3233C55.3775 41.292 55.7159 41.2075 56.0532 41.1331C56.1129 41.12 56.1915 41.0548 56.2053 40.9996C56.2818 40.7012 55.995 40.3876 55.6868 40.421C55.4862 40.4427 55.2857 40.469 55.0851 40.4938C55.0371 40.4938 54.9892 40.4938 54.9412 40.4938C54.0721 40.3851 53.8649 40.2177 53.6567 39.3538C53.5245 38.8055 53.6072 38.2718 53.9236 37.7903C54.0839 37.5465 54.315 37.3786 54.6059 37.3503C54.8999 37.3215 55.1994 37.3397 55.4959 37.3478C55.6572 37.3518 55.8654 37.4454 55.9654 37.3761C56.0803 37.2967 56.0997 37.0812 56.1578 36.9239C56.1803 36.8622 56.1956 36.798 56.2226 36.7059C55.5684 36.4818 54.9116 36.4206 54.2548 36.5693C53.2735 36.7909 52.6049 37.6902 52.5917 38.7513C52.586 39.1833 52.682 39.5859 52.8213 40.0037C53.0663 40.7407 53.6179 41.031 54.2834 41.2293V41.2287ZM41.6104 41.0178C41.5477 41.2748 41.5089 41.5408 41.416 41.7861C41.3083 42.0704 41.2568 42.4179 40.8659 42.4932L40.7143 42.5504C40.6122 42.562 40.5097 42.5737 40.4076 42.5853C40.3397 42.5544 40.2724 42.5236 40.2045 42.4927C40.1356 42.5514 40.0509 42.5995 40.0019 42.6718C39.96 42.733 39.959 42.821 39.9396 42.8974C39.9085 42.9318 39.8774 42.9662 39.8462 43.0006C39.7763 43.2201 39.8794 43.303 40.0892 43.3035C40.1657 43.3035 40.2458 43.2924 40.3173 43.3121C40.6852 43.4133 41.0302 43.348 41.3752 43.2069C41.7288 43.0623 41.9304 42.7558 42.1136 42.468C42.2723 42.2181 42.3193 41.8944 42.3969 41.5985C42.4923 41.2363 42.5795 40.8717 42.6474 40.5034C42.6806 40.3239 42.6352 40.1291 42.6714 39.9511C42.752 39.5571 42.874 39.1712 42.9577 38.7776C43.0552 38.3209 43.1302 37.8596 43.2169 37.3907C43.5237 37.3907 43.8038 37.3988 44.0825 37.3857C44.1595 37.3822 44.2861 37.3285 44.2994 37.2754C44.3534 37.061 44.3718 36.8379 44.4081 36.585H43.3762C43.4369 35.6356 43.7242 35.3949 44.6714 35.4571C44.7316 35.4611 44.8347 35.3893 44.8546 35.3316C44.9245 35.1248 44.9694 34.9093 45.0113 34.6948C45.0133 34.6852 44.8939 34.6367 44.8296 34.6331C44.6096 34.6205 44.3892 34.623 44.1687 34.6144C43.4308 34.5871 42.9419 34.9493 42.6612 35.5952C42.5265 35.9057 42.4509 36.2416 42.3428 36.5845C42.2984 36.5845 42.2397 36.5845 42.1815 36.5845C41.5839 36.5906 41.5905 36.5911 41.5084 37.194C41.4875 37.3472 41.5293 37.3948 41.6737 37.3918C41.8585 37.3877 42.0432 37.3907 42.2453 37.3907C42.2315 37.4879 42.2249 37.5536 42.2126 37.6189C42.008 38.7235 41.8028 39.8282 41.5977 40.9329C41.6013 40.9612 41.6053 40.99 41.6089 41.0183L41.6104 41.0178ZM57.5929 39.158C57.7062 39.158 57.798 39.158 57.8899 39.158C58.6115 39.1585 59.3326 39.1595 60.0542 39.16C60.6941 39.16 60.7018 39.16 60.6967 38.5263C60.6819 36.6629 59.0784 36.1379 57.7046 36.7383C56.8299 37.1207 56.612 37.9466 56.5242 38.7979C56.4824 39.203 56.6243 39.5864 56.7416 39.9804C56.9136 40.557 57.3357 40.8651 57.8031 41.1038C58.5553 41.4877 59.355 41.342 60.1363 41.1498C60.2481 41.1225 60.366 41.0376 60.4333 40.945C60.4757 40.8863 60.4594 40.7467 60.416 40.6754C60.3364 40.5449 60.2175 40.4382 60.1139 40.3224C60.1108 40.3188 60.0976 40.3239 60.0894 40.3264C59.9593 40.3669 59.8317 40.4271 59.6985 40.4437C59.3902 40.4822 59.0749 40.5409 58.7702 40.512C58.5074 40.4872 58.2272 40.3967 58.0037 40.2581C57.6209 40.0209 57.5954 39.6061 57.5929 39.159V39.158ZM48.8734 38.9188C48.7999 38.543 48.7698 38.1525 48.6438 37.7949C48.335 36.9204 47.6645 36.539 46.5341 36.5329C45.6732 36.5284 44.976 37.0013 44.6877 37.807C44.6015 38.0478 44.5392 38.3022 44.5055 38.5551C44.4162 39.2233 44.5372 39.8636 44.8903 40.4382C45.6032 41.597 47.6798 41.7118 48.4932 40.3274C48.7504 39.8899 48.8372 39.4241 48.8739 38.9188H48.8734Z"
      fill="white"
    />
    <path
      d="M31.8918 58C31.8918 57.9858 31.8907 57.9722 31.8902 57.958C32.7236 57.958 33.5575 57.9585 34.3908 57.959C34.3908 57.9727 34.3903 57.9863 34.3898 58H31.8918Z"
      fill="white"
    />
    <path
      d="M65.9995 38.8571C65.9816 38.8141 65.9479 38.7706 65.9479 38.7276C65.9474 38.2638 65.952 37.7999 65.9556 37.3356C65.9704 37.3371 65.9852 37.3397 65.9995 37.3417V38.8571Z"
      fill="white"
    />
    <path
      d="M34.3903 58C34.3903 57.9863 34.3914 57.9727 34.3914 57.959C34.4929 57.958 34.595 57.9575 34.6965 57.9565C34.6965 57.9712 34.6965 57.9853 34.6965 58H34.3903Z"
      fill="white"
    />
    <path
      d="M65.9995 37.3417C65.9847 37.3392 65.9704 37.3371 65.9556 37.3356C65.9561 37.2704 65.9566 37.2046 65.9576 37.1394C65.9719 37.1394 65.9857 37.1394 66 37.1394V37.3412L65.9995 37.3417Z"
      fill="white"
    />
    <path
      d="M30.5583 34.7657C30.5583 36.887 30.5583 39.0083 30.5583 41.1296C30.3638 41.0821 30.4154 40.9243 30.4149 40.7988C30.4123 39.1165 30.4133 37.4342 30.4133 35.752C30.4133 35.4996 30.4021 35.2467 30.4205 34.9953C30.4261 34.9159 30.5103 34.8415 30.5583 34.7651V34.7657Z"
      fill="white"
    />
    <path
      d="M31.5437 41.1281C31.5437 39.0078 31.5437 36.888 31.5437 34.7677C31.558 34.8572 31.584 34.9467 31.584 35.0363C31.5866 36.977 31.5866 38.9183 31.584 40.859C31.584 40.9485 31.5575 41.0381 31.5437 41.1276V41.1281Z"
      fill="white"
    />
    <path
      d="M49.6307 36.6346C49.6292 38.1328 49.6272 39.6304 49.6256 41.1286C49.6114 41.0391 49.5853 40.9495 49.5848 40.86C49.5823 39.5404 49.5823 38.2213 49.5848 36.9016C49.5848 36.8126 49.6144 36.7236 49.6302 36.6351L49.6307 36.6346Z"
      fill="white"
    />
    <path
      d="M29.4555 40.9915C29.4861 40.8565 29.5397 40.7219 29.5432 40.5864C29.556 40.1109 29.5519 39.635 29.554 39.159C29.5657 39.1595 29.5779 39.16 29.5902 39.1605C29.5927 39.7068 29.5973 40.2536 29.5963 40.7998C29.5963 40.862 29.5647 40.9243 29.5478 40.9865C29.5172 40.988 29.4866 40.99 29.456 40.9915H29.4555Z"
      fill="white"
    />
    <path
      d="M29.5897 39.1605C29.5774 39.1605 29.5657 39.1595 29.5534 39.159C29.5534 38.7524 29.5534 38.3457 29.5534 37.939C29.5667 37.9451 29.58 37.9512 29.5933 37.9572C29.5917 38.3583 29.5907 38.7594 29.5892 39.1605H29.5897Z"
      fill="white"
    />
    <path
      d="M23.1754 41.3259C23.328 41.297 23.4806 41.2682 23.6331 41.2394C23.5244 41.4968 23.3448 41.3835 23.1754 41.3259Z"
      fill="white"
    />
    <path
      d="M32.3929 38.6563C32.3929 38.8404 32.3929 39.0245 32.3929 39.2086V38.6563Z"
      fill="white"
    />
    <path
      d="M38.8271 41.3264C38.9629 41.3142 39.0981 41.3026 39.2338 41.2905C39.1119 41.4503 38.97 41.3967 38.8271 41.3264Z"
      fill="white"
    />
    <path
      d="M25.774 40.423C25.8204 40.5065 25.8668 40.5899 25.9138 40.6739C25.8674 40.5904 25.8209 40.507 25.774 40.423Z"
      fill="white"
    />
    <path
      d="M24.1404 39.8221C24.1414 39.9385 24.1424 40.0553 24.143 40.1716C24.1419 40.0553 24.1409 39.9385 24.1404 39.8221Z"
      fill="white"
    />
    <path
      d="M38.3673 40.5141C38.3178 40.4832 38.2678 40.4523 38.2183 40.4215C38.2683 40.4523 38.3178 40.4832 38.3673 40.5141Z"
      fill="white"
    />
    <path
      d="M29.4555 40.9915C29.4861 40.99 29.5167 40.988 29.5473 40.9865C29.4958 41.0173 29.4442 41.0482 29.3922 41.0785C29.4131 41.0497 29.4345 41.0204 29.4555 40.9915Z"
      fill="white"
    />
    <path
      d="M39.3864 41.3319C39.4538 41.3183 39.5212 41.3041 39.589 41.2905C39.5217 41.3041 39.4543 41.3183 39.3864 41.3319Z"
      fill="white"
    />
    <path
      d="M35.2033 41.3309C35.2717 41.3178 35.34 41.3041 35.4079 41.291C35.3395 41.3041 35.2712 41.3178 35.2033 41.3309Z"
      fill="white"
    />
    <path
      d="M23.7893 41.296C23.8393 41.2778 23.8893 41.2596 23.9393 41.2409C23.8893 41.2591 23.8393 41.2773 23.7893 41.296Z"
      fill="white"
    />
    <path
      d="M26.642 41.1898C26.6915 41.1893 26.741 41.1883 26.791 41.1878C26.7415 41.1883 26.692 41.1893 26.642 41.1898Z"
      fill="white"
    />
    <path
      d="M40.2024 37.5951C40.2703 37.5961 40.3382 37.5976 40.4056 37.5986C40.3377 37.5976 40.2698 37.5961 40.2024 37.5951Z"
      fill="white"
    />
    <path
      d="M35.5595 40.4215C35.4931 40.4357 35.4273 40.4498 35.361 40.4635C35.4273 40.4493 35.4931 40.4351 35.5595 40.4215Z"
      fill="white"
    />
    <path
      d="M29.5938 37.9572C29.5805 37.9512 29.5672 37.9451 29.554 37.939C29.5545 37.892 29.5555 37.845 29.556 37.7979C29.5688 37.851 29.581 37.9041 29.5938 37.9572Z"
      fill="white"
    />
    <path
      d="M33.5233 39.7154C33.5095 39.6653 33.4957 39.6152 33.4825 39.5652C33.4962 39.6152 33.51 39.6653 33.5233 39.7154Z"
      fill="white"
    />
    <path
      d="M38.6301 36.4859C38.5771 36.4985 38.524 36.5107 38.4704 36.5233C38.5235 36.5107 38.5765 36.4985 38.6301 36.4859Z"
      fill="white"
    />
    <path
      d="M25.0605 40.3714C25.0651 40.3218 25.0697 40.2723 25.0748 40.2232C25.0702 40.2728 25.0656 40.3224 25.0605 40.3714Z"
      fill="white"
    />
    <path
      d="M27.3004 38.286C27.2509 38.288 27.2013 38.2901 27.1518 38.2926C27.2013 38.2906 27.2509 38.2885 27.3004 38.286Z"
      fill="white"
    />
    <path
      d="M23.8893 37.3513C23.9378 37.3655 23.9858 37.3796 24.0343 37.3943C23.9858 37.3801 23.9378 37.366 23.8893 37.3513Z"
      fill="white"
    />
    <path
      d="M40.4086 37.5936C40.4255 37.5455 40.4423 37.497 40.4586 37.4489C40.4418 37.497 40.4249 37.5455 40.4086 37.5936Z"
      fill="white"
    />
    <path
      d="M29.5453 37.6983C29.531 37.6472 29.5167 37.5961 29.5024 37.5445C29.5167 37.5956 29.531 37.6467 29.5453 37.6983Z"
      fill="white"
    />
    <path
      d="M34.0357 41.2419C34.0846 41.2556 34.1336 41.2692 34.1821 41.2829C34.1331 41.2692 34.0846 41.2556 34.0357 41.2419Z"
      fill="white"
    />
    <path
      d="M38.5689 40.5125C38.5199 40.511 38.4709 40.509 38.4214 40.5075C38.4704 40.509 38.5194 40.511 38.5689 40.5125Z"
      fill="white"
    />
    <path
      d="M36.5434 38.4003C36.5434 38.3513 36.5429 38.3017 36.5424 38.2526C36.5424 38.3017 36.5429 38.3513 36.5434 38.4003Z"
      fill="white"
    />
    <path
      d="M23.9945 41.249C24.0434 41.2414 24.0924 41.2333 24.1409 41.2257C24.0919 41.2333 24.0429 41.2414 23.9945 41.249Z"
      fill="white"
    />
    <path
      d="M32.4429 38.3032C32.4291 38.3523 32.4154 38.4018 32.4011 38.4509L32.4429 38.3032Z"
      fill="white"
    />
    <path
      d="M35.9177 36.9902C35.9009 36.974 35.8835 36.9578 35.8667 36.9411C35.8835 36.9573 35.9009 36.9735 35.9177 36.9902Z"
      fill="white"
    />
    <path
      d="M54.2829 41.2282C54.3099 41.2358 54.337 41.2429 54.3635 41.2505C54.3365 41.2429 54.3094 41.2358 54.2829 41.2282Z"
      fill="white"
    />
    <path
      d="M25.0171 40.4731C25.0314 40.4397 25.0457 40.4063 25.06 40.3724C25.0457 40.4058 25.0314 40.4392 25.0171 40.4731Z"
      fill="white"
    />
    <path
      d="M25.1131 39.5596C25.0998 39.5283 25.0871 39.4969 25.0738 39.465C25.0871 39.4964 25.0998 39.5277 25.1131 39.5596Z"
      fill="white"
    />
    <path
      d="M41.5987 40.9318C41.6023 40.9607 41.6058 40.989 41.6099 41.0178C41.6064 40.989 41.6028 40.9607 41.5987 40.9318Z"
      fill="white"
    />
    <path
      d="M40.253 36.7332C40.2371 36.7271 40.2213 36.7221 40.205 36.7196C40.2208 36.7241 40.2371 36.7287 40.253 36.7332Z"
      fill="white"
    />
    <path
      d="M23.4785 36.4742L23.454 36.4788L23.43 36.4737C23.4464 36.4737 23.4622 36.4737 23.4785 36.4737V36.4742Z"
      fill="white"
    />
    <path
      d="M23.3254 36.4737L23.3014 36.4788L23.2769 36.4742C23.2933 36.4742 23.3091 36.4742 23.3254 36.4742V36.4737Z"
      fill="white"
    />
    <path
      d="M28.5813 40.4281C28.1495 40.5727 27.7122 40.6309 27.2611 40.5247C26.8487 40.4276 26.6211 40.1479 26.641 39.7554C26.6594 39.3952 26.9482 39.0882 27.3493 39.0624C27.7239 39.0381 28.1016 39.0634 28.4777 39.067C28.5114 39.1636 28.57 39.2597 28.5736 39.3573C28.5864 39.7139 28.5803 40.071 28.5813 40.4276V40.4281Z"
      fill="white"
    />
    <path
      d="M28.5813 40.4281C28.5803 40.071 28.5864 39.7139 28.5736 39.3578C28.57 39.2602 28.5114 39.1641 28.4777 39.0675C28.5256 39.0877 28.616 39.1079 28.616 39.1277C28.6104 39.5611 28.5951 39.9951 28.5813 40.4286L28.5813 40.4281Z"
      fill="white"
    />
    <path
      d="M35.5733 38.4069C35.5544 38.412 35.5355 38.4165 35.5166 38.4216C34.8506 38.4216 34.1847 38.4216 33.5187 38.4216C33.5013 38.4165 33.4845 38.4114 33.4671 38.4059C33.4631 38.3857 33.459 38.3654 33.4549 38.3457C33.5059 37.9112 33.6575 37.504 34.0974 37.3579C34.82 37.1181 35.4401 37.4079 35.5748 38.2461C35.5743 38.2997 35.5733 38.3533 35.5728 38.4069H35.5733Z"
      fill="white"
    />
    <path
      d="M33.4549 38.3457C33.459 38.3659 33.4631 38.3862 33.4671 38.4059C33.4631 38.3857 33.459 38.3654 33.4549 38.3457Z"
      fill="white"
    />
    <path
      d="M57.6842 38.4216C57.6541 38.3882 57.598 38.3543 57.598 38.3209C57.5995 37.803 58.0971 37.3048 58.6227 37.2881C59.3122 37.2658 59.7311 37.6871 59.726 38.3988C59.0453 38.4064 58.3645 38.414 57.6842 38.4216Z"
      fill="white"
    />
    <path
      d="M57.6842 38.4216C58.365 38.414 59.0458 38.4064 59.726 38.3988C59.7056 38.413 59.6857 38.4403 59.6653 38.4403C59.0049 38.4357 58.3446 38.4286 57.6837 38.4221L57.6842 38.4216Z"
      fill="white"
    />
    <path
      d="M47.7987 38.9921C47.8252 39.335 47.766 39.7194 47.5506 40.0846C47.3919 40.3537 46.8694 40.6142 46.5514 40.5672C45.9987 40.4852 45.7395 40.1387 45.6012 39.6395C45.4461 39.0781 45.4772 38.5308 45.6675 37.9891C45.7946 37.6265 46.0916 37.3159 46.5805 37.3346C47.3603 37.3644 47.7502 37.7129 47.7976 38.4974C47.8063 38.6396 47.7987 38.7827 47.7987 38.9921Z"
      fill="white"
    />
  </svg>
}
    href="./salesforce"
  >
    Bi-directionally sync your Hyperline data with your Salesforce instance, and
    fully manage your quotes and subscriptions directly from your CRM.
  </Card>

  <Card
    title="HubSpot"
    icon={
  <svg
    width="30"
    height="30"
    viewBox="0 0 80 80"
    fill="none"
    xmlns="http://www.w3.org/2000/svg"
  >
    <rect width="80" height="80" rx="16" fill="#FF5B35" />
    <path
      d="M44.7056 56.9043C44.4766 56.7734 44.2476 56.6425 44.0192 56.5117C43.9953 56.4954 43.9708 56.4791 43.9469 56.4635C43.7198 56.3125 43.4927 56.1616 43.2656 56.0107C43.2417 55.9951 43.2184 55.9788 43.1945 55.9631C43.1561 55.9381 43.1171 55.9137 43.0788 55.8886C43.0687 55.8636 43.0586 55.8391 43.0492 55.8141C43.0379 55.8379 43.0272 55.8617 43.0159 55.8861C42.8976 55.9356 42.7504 55.9562 42.6661 56.0395C41.1802 57.5067 39.7019 58.982 38.2223 60.4561C38.2009 60.4774 38.1852 60.5049 38.1669 60.5293C38.1367 60.55 38.1072 60.5713 38.077 60.592C38.1072 60.6126 38.1374 60.6333 38.1676 60.6546C38.1921 60.9382 38.2298 61.2219 38.2374 61.5062C38.2474 61.86 38.2732 62.2213 38.2204 62.5682C38.0908 63.418 37.692 64.1281 37.0761 64.7455C36.4175 65.4055 35.6506 65.8489 34.7403 65.9697C34.1798 66.0442 33.5973 65.961 33.0255 65.9353C32.899 65.9296 32.7751 65.8695 32.6493 65.8345L32.5254 65.7762C32.1473 65.5652 31.7692 65.3535 31.3905 65.1425C31.3685 65.1275 31.3458 65.1125 31.3238 65.0968C30.8419 64.7004 30.4859 64.207 30.1971 63.6603C30.1619 63.5964 30.1261 63.5326 30.0908 63.4687C29.9996 63.2264 29.9002 62.9865 29.8216 62.7398C29.7952 62.6578 29.8228 62.5582 29.826 62.4668C29.787 62.4255 29.7474 62.3841 29.7084 62.3428C29.7467 61.9207 29.7775 61.4981 29.8272 61.0773C29.8467 60.9119 29.9071 60.7516 29.9493 60.5888C29.9499 60.5725 29.9512 60.5556 29.9512 60.5394C29.9493 60.5156 29.9474 60.4918 29.9455 60.4673C29.9883 60.4047 30.0311 60.3415 30.0738 60.2789C30.3097 59.8637 30.5457 59.4485 30.7809 59.0334C30.8388 58.9732 30.896 58.9131 30.9539 58.853C31.0967 58.724 31.2395 58.595 31.3817 58.466C31.4062 58.4497 31.4301 58.4328 31.4547 58.4166C31.5597 58.3283 31.6648 58.24 31.7692 58.1523C31.8114 58.1147 31.8535 58.0772 31.895 58.0396C32.0372 57.9945 32.1787 57.9482 32.3209 57.905C32.6543 57.8048 32.9833 57.6451 33.3224 57.6219C33.8213 57.5875 34.3302 57.6232 34.8278 57.6839C35.0819 57.7146 35.2782 57.7321 35.46 57.5192C35.6129 57.3395 35.7997 57.188 35.9721 57.0245C36.0715 56.9807 36.1935 56.96 36.2671 56.8886C36.7603 56.4121 37.2466 55.9281 37.7253 55.4371C37.7964 55.3645 37.8172 55.2424 37.8612 55.1434C38.6343 54.4008 39.4081 53.6587 40.1573 52.9392C39.8654 52.4614 39.6182 52.0563 39.3704 51.6511C39.3326 51.5873 39.2949 51.5234 39.2571 51.4602C39.1904 51.3143 39.1244 51.1683 39.0577 51.0224C39.0407 51.0018 39.0231 50.9811 39.0061 50.9605C38.9816 50.9354 38.957 50.9104 38.9319 50.8853C38.9319 50.8665 38.9313 50.8477 38.9294 50.829C38.8885 50.7062 38.847 50.5829 38.8061 50.4601C38.7897 50.4395 38.7727 50.4188 38.7564 50.3981C38.6526 50.1896 38.5488 49.9811 38.445 49.7726C38.4745 49.7544 38.5041 49.7362 38.5337 49.7181C38.4997 49.6949 38.4657 49.6711 38.4318 49.648C38.3261 49.3079 38.2198 48.9685 38.1141 48.6285C38.0984 48.6141 38.082 48.5991 38.0663 48.5847C38.0336 48.276 38.0021 47.9672 37.9681 47.6585C37.9587 47.5702 37.9423 47.4826 37.9298 47.3943C37.9052 47.3536 37.8813 47.3135 37.8568 47.2728C37.8115 46.7568 37.7656 46.2402 37.7215 45.7242C37.7178 45.681 37.7297 45.6365 37.7335 45.5921C37.7788 45.0304 37.8297 44.4687 37.8637 43.9064C37.8731 43.7573 37.831 43.6052 37.8128 43.4543C37.8297 43.438 37.8467 43.4217 37.8637 43.4054C37.9908 42.9057 38.1166 42.406 38.2468 41.9076C38.3299 41.5888 38.4204 41.272 38.5073 40.9545C38.5375 40.9332 38.5683 40.9125 38.5985 40.8912C38.5683 40.87 38.5381 40.8487 38.5073 40.828C38.9734 39.957 39.4396 39.0853 39.9032 38.2193C39.2401 37.7014 38.5538 37.1648 37.8675 36.6281L37.6863 36.5135C37.558 36.4058 37.4303 36.2981 37.3019 36.1898C37.256 36.1516 37.2101 36.114 37.1635 36.0758L36.7364 35.7508C36.6905 35.7132 36.6439 35.6757 36.598 35.6381L36.1036 35.2486C36.0796 35.2323 36.0557 35.2154 36.0318 35.1991C35.9098 35.1102 35.7878 35.0213 35.6657 34.9324C35.6009 34.8766 35.5355 34.8203 35.4707 34.7646C35.3474 34.6744 35.2241 34.5842 35.1002 34.494C35.0354 34.4383 34.97 34.3826 34.9052 34.3268C34.7391 34.1966 34.5736 34.0657 34.4076 33.9355C34.3837 33.9192 34.3597 33.9029 34.3358 33.8866C34.193 33.7783 34.0496 33.67 33.9068 33.5616C33.8634 33.5247 33.8194 33.4884 33.776 33.4514C33.6313 33.3425 33.486 33.2329 33.3413 33.1239C33.2966 33.087 33.2513 33.0494 33.2066 33.0125C33.1255 32.9455 33.0443 32.8791 32.9626 32.8121C32.9393 32.7964 32.9166 32.7801 32.8934 32.7645C32.8323 32.7169 32.772 32.6693 32.7109 32.6223C32.687 32.6061 32.6631 32.5898 32.6399 32.5735C31.639 31.7989 30.6381 31.0243 29.6373 30.2497C29.592 30.2121 29.5473 30.1752 29.502 30.1376C29.3586 30.0286 29.2152 29.9197 29.0724 29.8114C29.0264 29.7738 28.9799 29.7356 28.934 29.698C28.7918 29.5897 28.649 29.4813 28.5068 29.373C28.4609 29.3354 28.4143 29.2979 28.3684 29.2603C28.2457 29.1708 28.1237 29.0818 28.001 28.9923C27.935 28.9359 27.8689 28.8789 27.8029 28.8226L27.4355 28.5546C27.3707 28.4988 27.3053 28.4431 27.2405 28.3868C26.3736 27.7167 25.5061 27.0473 24.6405 26.376C24.421 26.2057 24.2159 26.0135 23.9825 25.8644C23.8888 25.805 23.7057 25.7812 23.617 25.8325C22.6256 26.4055 21.5278 26.4982 20.4502 26.3591C19.1178 26.1869 18.0069 25.5138 17.1557 24.4486C16.3247 23.4091 15.9422 22.225 16.007 20.9112C16.0624 19.7922 16.4814 18.7997 17.1859 17.9212C17.8483 17.0958 18.7008 16.5586 19.6953 16.2304C19.986 16.1346 20.2892 16.0758 20.5867 16C20.6912 16 20.7962 16 20.9006 16H21.5291C21.6341 16 21.7386 16 21.8436 16C21.9065 16.0175 21.9694 16.0351 22.0323 16.0526C22.0663 16.0745 22.0978 16.1052 22.1355 16.1171C22.6633 16.2887 23.1911 16.4596 23.7202 16.6268C23.8252 16.66 23.9353 16.6775 24.0435 16.702C24.0592 16.7176 24.0743 16.7339 24.0901 16.7496C24.2209 16.8378 24.3524 16.9261 24.4832 17.0138C24.4983 17.0301 24.5134 17.0457 24.5285 17.062C24.5342 17.0827 24.5398 17.104 24.5455 17.1246C24.5625 17.1453 24.5795 17.1666 24.5958 17.1873C24.7619 17.3595 24.9311 17.5285 25.0934 17.7039C26.2327 18.9362 26.6152 20.3971 26.3742 22.0296C26.2912 22.5938 26.295 22.6539 26.8567 22.9226C26.8637 22.9257 26.8643 22.9414 26.8674 22.9514C26.8844 22.9689 26.9008 22.9865 26.9178 23.004C27.0895 23.1324 27.2612 23.2614 27.433 23.3897C27.45 23.4073 27.4663 23.4242 27.4833 23.4417C27.6349 23.5519 27.7865 23.6621 27.9375 23.7723C27.9803 23.808 28.0231 23.8437 28.0652 23.8794H28.0639C28.0809 23.9001 28.0973 23.9214 28.1143 23.9427C28.2439 24.0322 28.3734 24.1211 28.5024 24.2107C28.5452 24.2464 28.588 24.2821 28.6307 24.3171H28.6295C28.6465 24.3378 28.6628 24.3591 28.6798 24.3804C28.7805 24.463 28.8773 24.5507 28.9818 24.6283C29.3863 24.9289 29.7933 25.2264 30.199 25.525C30.2412 25.5607 30.2833 25.5958 30.3255 25.6315C30.3425 25.6522 30.3588 25.6728 30.3758 25.6935C31.0074 26.1763 31.639 26.6591 32.2706 27.1413C32.2876 27.1588 32.3039 27.1763 32.3209 27.1939C32.4926 27.3222 32.6644 27.4506 32.8361 27.5796C32.8531 27.5971 32.8695 27.6147 32.8864 27.6322C33.0582 27.7612 33.2299 27.8896 33.4017 28.0186C33.4186 28.0355 33.435 28.053 33.452 28.0699L33.9062 28.4005C33.949 28.4362 33.9917 28.4719 34.0345 28.5076C34.1207 28.5853 34.2025 28.6679 34.2931 28.7399C34.8083 29.1482 35.3216 29.559 35.8444 29.9585C36.4502 30.4219 37.0642 30.8734 37.6744 31.3305C37.6913 31.3487 37.7077 31.3668 37.7247 31.3844C37.758 31.4232 37.7857 31.4695 37.8253 31.5002C39.3553 32.6893 40.8871 33.876 42.4151 35.067C42.6101 35.2192 42.7642 35.1854 42.9586 35.0532C43.5757 34.6337 44.1834 34.1922 44.837 33.8347C46.0166 33.189 47.2974 32.8108 48.6216 32.5841C48.7996 32.5535 48.8745 32.5027 48.8738 32.3155C48.8669 30.4626 48.8663 28.6091 48.8638 26.7561C48.8185 26.7161 48.7732 26.676 48.7279 26.6359C48.5442 26.49 48.3542 26.3516 48.1781 26.197C47.8447 25.9039 47.4578 25.6459 47.2017 25.2952C46.4078 24.2075 46.0499 22.9921 46.2858 21.6351C46.5506 20.1116 47.3728 18.992 48.7273 18.2537C49.4494 17.8598 50.232 17.7897 51.0429 17.8072C52.379 17.836 53.5095 18.3031 54.3927 19.3019C55.415 20.4579 55.7075 21.8261 55.4508 23.3146C55.2036 24.7511 54.3613 25.7718 53.1138 26.4944C53.0188 26.5495 52.9333 26.7117 52.932 26.8244C52.9207 28.6479 52.9238 30.4714 52.9251 32.2948C52.9251 32.3856 52.937 32.4758 52.9433 32.5616C53.0849 32.5729 53.1994 32.5816 53.3139 32.5904C53.4416 32.6223 53.5693 32.6549 53.697 32.6868C54.143 32.8634 54.6714 32.7495 55.0778 33.0701C55.0916 33.0807 55.1212 33.0688 55.1388 33.077C55.8818 33.412 56.6517 33.6981 57.3601 34.0945C58.6723 34.8291 59.8254 35.7683 60.8074 36.9193C61.8932 38.1917 62.7362 39.5944 63.2545 41.1824C63.4363 41.7385 63.6043 42.3021 63.7232 42.8738C63.8358 43.4123 63.8754 43.9659 63.9478 44.5132C63.9465 44.5751 63.9453 44.6371 63.944 44.6991C63.9453 45.1419 63.9459 45.5839 63.9472 46.0267C63.9472 46.13 63.9472 46.2333 63.9465 46.3366C63.7811 48.482 63.1124 50.4664 61.987 52.2968C61.7032 52.7583 61.3944 53.2141 61.0326 53.6149C60.4759 54.2304 59.8909 54.8272 59.2668 55.3739C58.7164 55.8554 58.1181 56.2925 57.4997 56.6845C56.9927 57.0057 56.446 57.2925 55.8799 57.4867C55.0312 57.7772 54.1562 57.9995 53.2805 58.1993C52.764 58.317 52.2256 58.3427 51.6959 58.3965C51.3568 58.431 51.0108 58.4898 50.6761 58.4548C49.7652 58.3596 48.8575 58.2287 47.951 58.0972C47.0011 57.9594 46.1424 57.5424 45.2604 57.1999C45.2566 57.1804 45.2529 57.1617 45.2491 57.1423C45.2491 57.161 45.2491 57.1804 45.2491 57.1992C45.217 57.1855 45.1855 57.1717 45.1535 57.1579C45.1094 57.1354 45.0654 57.1134 45.0214 57.0909C44.9389 57.0421 44.8565 56.9932 44.7741 56.9444C44.7521 56.9306 44.7295 56.9168 44.7074 56.903L44.7056 56.9043ZM56.6599 48.5659C56.7864 48.43 56.8965 48.3555 56.9443 48.2522C57.2041 47.693 57.3777 47.1119 57.4878 46.4982C57.6149 45.7887 57.6218 45.0886 57.5211 44.3885C57.4035 43.572 57.0845 42.8149 56.692 42.0935C56.0849 40.9777 55.1979 40.1242 54.0845 39.5236C52.7779 38.8192 51.3725 38.6413 49.9017 38.8204C48.4429 38.9983 47.2238 39.6457 46.2047 40.6589C45.7976 41.0634 45.512 41.5869 45.1541 42.0422C44.7836 42.5131 44.6055 43.0654 44.4382 43.6233C44.296 44.098 44.286 44.5877 44.2388 45.0767C44.1834 45.6516 44.2967 46.1882 44.3438 46.7386C44.3703 47.0442 44.4936 47.3442 44.5886 47.6416C44.8716 48.5283 45.4045 49.271 46.0115 49.9548C46.3248 50.3086 46.7004 50.6217 47.091 50.8909C48.1756 51.638 49.3884 52.0193 50.7088 52.092C51.2109 52.1195 51.6978 52.0006 52.174 51.9311C53.3453 51.7595 54.372 51.189 55.2709 50.4188C55.5735 50.1596 55.8679 49.8803 56.1164 49.5709C56.3636 49.2628 56.6838 48.9729 56.6605 48.5653L56.6599 48.5659Z"
      fill="white"
    />
    <path
      d="M63.9459 46.0273C63.9446 45.5846 63.944 45.1425 63.9428 44.6998L63.9704 44.706H63.9987V46.0192C63.9811 46.0217 63.9629 46.0242 63.9453 46.0267L63.9459 46.0273Z"
      fill="white"
    />
    <path
      d="M63.9459 46.0273C63.9635 46.0248 63.9818 46.0223 63.9994 46.0198V46.3322C63.9811 46.3354 63.9635 46.3373 63.9453 46.3373C63.9453 46.2339 63.9453 46.1306 63.9459 46.0273Z"
      fill="white"
    />
    <path
      d="M63.9994 44.7066H63.9711L63.9434 44.7004C63.9446 44.6384 63.9459 44.5764 63.9472 44.5144C63.9654 44.5113 63.983 44.5125 64 44.5194V44.7073L63.9994 44.7066Z"
      fill="white"
    />
    <path
      d="M22.0317 16C22.0317 16.0175 22.0317 16.0351 22.0317 16.0526C21.9688 16.0351 21.9059 16.0175 21.843 16C21.9059 16 21.9688 16 22.0317 16Z"
      fill="white"
    />
    <path
      d="M37.8612 55.1441C37.8172 55.243 37.7964 55.3651 37.7253 55.4377C37.2466 55.9287 36.7603 56.4127 36.2671 56.8893C36.1941 56.96 36.0721 56.9807 35.9721 57.0252C36.6018 56.3983 37.2309 55.7715 37.8606 55.1441H37.8612Z"
      fill="white"
    />
    <path
      d="M27.2398 28.3855C27.3046 28.4412 27.3701 28.497 27.4349 28.5533C27.3701 28.4976 27.3046 28.4419 27.2398 28.3855Z"
      fill="white"
    />
    <path
      d="M31.8957 58.0396C31.8535 58.0772 31.8114 58.1147 31.7698 58.1523C31.812 58.1147 31.8541 58.0772 31.8957 58.0396Z"
      fill="white"
    />
    <path
      d="M39.2571 51.4608C39.2949 51.5247 39.3326 51.5885 39.3704 51.6518C39.3326 51.5879 39.2949 51.524 39.2571 51.4608Z"
      fill="white"
    />
    <path
      d="M38.4318 49.648C38.4657 49.6711 38.4997 49.6949 38.5337 49.7181C38.5041 49.7362 38.4745 49.7544 38.445 49.7726C38.4406 49.7312 38.4362 49.6893 38.4324 49.648H38.4318Z"
      fill="white"
    />
    <path
      d="M37.1635 36.0758C37.2095 36.114 37.2554 36.1516 37.3019 36.1898C37.256 36.1516 37.2101 36.114 37.1635 36.0758Z"
      fill="white"
    />
    <path
      d="M38.5073 40.828C38.5375 40.8493 38.5677 40.8706 38.5985 40.8912C38.5683 40.9125 38.5375 40.9332 38.5073 40.9545C38.5073 40.9125 38.5073 40.87 38.5073 40.828Z"
      fill="white"
    />
    <path
      d="M32.526 65.7762L32.6499 65.8345C32.6084 65.815 32.5675 65.7956 32.526 65.7762Z"
      fill="white"
    />
    <path
      d="M38.1676 60.6546C38.1374 60.6339 38.1072 60.6132 38.077 60.592C38.1072 60.5713 38.1367 60.55 38.1669 60.5293C38.1669 60.5713 38.1669 60.6126 38.1676 60.6546Z"
      fill="white"
    />
    <path
      d="M43.0152 55.8861C43.0266 55.8623 43.0372 55.8385 43.0486 55.8141C43.0586 55.8391 43.0687 55.8636 43.0781 55.8886C43.0574 55.888 43.036 55.8867 43.0152 55.8861Z"
      fill="white"
    />
    <path
      d="M38.9294 50.8296C38.9313 50.8484 38.9319 50.8672 38.9319 50.8859C38.9155 50.8828 38.8998 50.8803 38.8834 50.8772C38.8985 50.8615 38.9143 50.8452 38.9294 50.8296Z"
      fill="white"
    />
    <path
      d="M32.6392 32.5729C32.6631 32.5892 32.687 32.6054 32.7103 32.6217C32.6864 32.6054 32.6625 32.5892 32.6392 32.5729Z"
      fill="white"
    />
    <path
      d="M43.9469 56.4635C43.9708 56.4797 43.9953 56.496 44.0192 56.5117C43.9953 56.4954 43.9708 56.4791 43.9469 56.4635Z"
      fill="white"
    />
    <path
      d="M45.2472 57.2005C45.2472 57.1817 45.2472 57.1629 45.2472 57.1435C45.251 57.1623 45.2547 57.1817 45.2585 57.2011L45.2472 57.2005Z"
      fill="white"
    />
    <path
      d="M29.9512 60.5394C29.9512 60.5556 29.9499 60.5725 29.9493 60.5888C29.9323 60.5794 29.9153 60.5694 29.8983 60.56C29.9159 60.5531 29.9336 60.5462 29.9512 60.5394Z"
      fill="white"
    />
    <path
      d="M31.3245 65.0968C31.3465 65.1118 31.3691 65.1269 31.3911 65.1425C31.3691 65.1275 31.3465 65.1125 31.3245 65.0968Z"
      fill="white"
    />
    <path
      d="M28.5024 24.21C28.5452 24.2457 28.588 24.2814 28.6307 24.3165C28.588 24.2808 28.5452 24.2451 28.5024 24.21Z"
      fill="white"
    />
    <path
      d="M27.9369 23.7723L28.0646 23.8794C28.0218 23.8437 27.979 23.808 27.9369 23.7723Z"
      fill="white"
    />
    <path
      d="M24.5455 17.1246C24.5625 17.1453 24.5795 17.1666 24.5958 17.1873C24.5789 17.1666 24.5619 17.1453 24.5455 17.1246Z"
      fill="white"
    />
    <path
      d="M37.6737 31.3305C37.6907 31.3487 37.7071 31.3668 37.7241 31.3844C37.7071 31.3662 37.6907 31.348 37.6737 31.3305Z"
      fill="white"
    />
  </svg>
}
    href="./hubspot"
  >
    Bi-directionally sync your Hyperline data with your HubSpot account, and
    fully manage your quotes and subscriptions directly from your CRM.
  </Card>

  <Card
    title="Attio"
    icon={
  <svg
    width="30"
    height="30"
    viewBox="0 0 30 30"
    fill="none"
    xmlns="http://www.w3.org/2000/svg"
  >
    <g clip-path="url(https://mintlify.s3.us-west-1.amazonaws.com/hyperline/integrations#clip0_6351_59)">
      <rect width="30" height="30" rx="6" fill="#202124" />
      <path
        d="M23.0175 17.6581L21.6441 15.4601C21.6441 15.4601 21.6392 15.4508 21.6359 15.447L21.5276 15.2742C21.428 15.1136 21.2891 14.9811 21.1239 14.8893C20.9588 14.7974 20.7729 14.7492 20.5839 14.7493L18.3717 14.7417L18.2176 14.9893L15.428 19.4531L16.5363 21.2218C16.7408 21.551 17.094 21.7473 17.4833 21.7473H20.5834C20.9656 21.7473 21.327 21.5461 21.5293 21.2229L21.6386 21.048C21.6386 21.048 21.643 21.0436 21.6441 21.0414L23.0192 18.8407C23.1298 18.6632 23.1885 18.4583 23.1885 18.2491C23.1885 18.04 23.1298 17.835 23.0192 17.6575H23.0181L23.0175 17.6581ZM22.5987 18.5783L21.2231 20.779C21.2176 20.7899 21.21 20.7975 21.2039 20.8063C21.1846 20.8279 21.1604 20.8447 21.1334 20.8554C21.1064 20.866 21.0773 20.8702 21.0483 20.8675C21.0194 20.8648 20.9915 20.8555 20.9669 20.8401C20.9423 20.8247 20.9216 20.8038 20.9065 20.779L19.5314 18.5772C19.5003 18.528 19.4763 18.4746 19.4603 18.4186C19.4365 18.3356 19.4303 18.2485 19.4423 18.163C19.4543 18.0775 19.4841 17.9954 19.5298 17.9221L20.9032 15.7242L20.9065 15.7187C20.9393 15.6695 20.9803 15.6471 21.0159 15.64C21.0301 15.6356 21.0427 15.6345 21.0525 15.6329H21.0678C21.0995 15.6329 21.1783 15.6427 21.2275 15.7225L22.6004 17.9205C22.7261 18.1206 22.7261 18.3781 22.6004 18.5783H22.5987ZM18.954 12.3403C19.0642 12.1626 19.1226 11.9578 19.1226 11.7487C19.1226 11.5397 19.0642 11.3348 18.954 11.1571L17.5806 8.95915L17.4658 8.77435C17.3658 8.61342 17.2262 8.48076 17.0605 8.38898C16.8947 8.2972 16.7083 8.24936 16.5188 8.25001H13.4187C13.0321 8.25001 12.6784 8.44684 12.4722 8.77489L6.92101 17.6602C6.80947 17.8372 6.75019 18.042 6.75 18.2511C6.74981 18.4603 6.80871 18.6652 6.91991 18.8423L8.40873 21.2257C8.50844 21.3866 8.64775 21.5193 8.81334 21.6111C8.97893 21.7029 9.16529 21.7507 9.35462 21.75H12.4547C12.844 21.75 13.1972 21.5532 13.4017 21.2251L13.5154 21.0447V21.0425L13.5171 21.0387L18.9519 12.3414L18.954 12.3408V12.3403ZM18.6298 11.7487C18.6298 11.8619 18.5981 11.9762 18.5341 12.0773L13.0961 20.7806C13.0793 20.8076 13.0558 20.8298 13.0279 20.8451C13.0001 20.8604 12.9688 20.8683 12.937 20.8681C12.9051 20.8683 12.8737 20.8604 12.8458 20.8451C12.8178 20.8298 12.7943 20.8076 12.7773 20.7806L11.4033 18.5788C11.3422 18.4801 11.3098 18.3663 11.3098 18.2502C11.3098 18.1341 11.3422 18.0203 11.4033 17.9216L16.8408 9.22105C16.8575 9.19366 16.8809 9.17105 16.9089 9.15543C16.9369 9.13981 16.9684 9.13171 17.0005 9.13193C17.0322 9.13193 17.1109 9.14122 17.1607 9.22159L18.5341 11.4196C18.5981 11.5207 18.6298 11.635 18.6298 11.7487Z"
        fill="white"
      />
    </g>
    <defs>
      <clipPath id="clip0_6351_59">
        <rect width="30" height="30" rx="6" fill="white" />
      </clipPath>
    </defs>
  </svg>
}
    href="./attio"
  >
    Bi-directionally sync your Hyperline data with your Attio account, and fully
    manage your quotes and subscriptions directly from your CRM.
  </Card>
</CardGroup>

## Accounting software

<CardGroup>
  <Card
    title="Pennylane"
    icon={
  <svg
    width="30"
    height="30"
    viewBox="0 0 30 30"
    fill="none"
    xmlns="http://www.w3.org/2000/svg"
  >
    <g clipPath="url(https://mintlify.s3.us-west-1.amazonaws.com/hyperline/integrations#clip0_2551_3863)">
      <rect width="30" height="30" rx="6" fill="#F8F4F1" />
      <path
        d="M9.86767 24.7764C9.8543 24.7694 9.84094 24.7625 9.82782 24.7556C9.8241 24.7534 9.8199 24.7519 9.81544 24.7516C9.78895 24.7422 9.76247 24.7328 9.73598 24.7232C9.72856 24.7165 9.72113 24.7096 9.71371 24.7029L9.71173 24.6987C9.70356 24.692 9.69564 24.6856 9.68747 24.6789C9.66073 24.6643 9.63425 24.6497 9.60752 24.6351C9.6038 24.6314 9.59935 24.6289 9.59415 24.628L9.58771 24.625C9.57385 24.6173 9.56024 24.6096 9.54638 24.6022L9.53845 24.5985C9.52954 24.5926 9.52038 24.5869 9.51123 24.581C9.48524 24.5656 9.45924 24.5505 9.43325 24.5352C9.4288 24.5317 9.42385 24.5298 9.41815 24.5293C9.4085 24.528 9.3991 24.5268 9.38944 24.5255C9.38177 24.5186 9.37409 24.5119 9.36667 24.505L9.36518 24.5018C9.35726 24.4949 9.34934 24.4877 9.34142 24.4808C9.33152 24.4753 9.32186 24.4699 9.31196 24.4645C9.308 24.4593 9.30281 24.456 9.29637 24.4548L9.29092 24.4518C9.2783 24.4439 9.26568 24.4363 9.25305 24.4283L9.24538 24.4288L9.24167 24.4222C9.23399 24.417 9.22657 24.4118 9.21889 24.4066C9.208 24.3996 9.19711 24.3927 9.18647 24.386L9.17632 24.3806L9.17013 24.3818L9.16766 24.3762C9.15874 24.3702 9.14983 24.3643 9.14092 24.3581C9.1132 24.3413 9.08547 24.3245 9.05775 24.3076L9.05874 24.3069C9.05132 24.3089 9.04636 24.3061 9.04389 24.2987C9.03622 24.2933 9.02879 24.2881 9.02112 24.2827C9.00948 24.275 8.99785 24.2671 8.98646 24.2594L8.9825 24.2572C8.97532 24.2592 8.97112 24.2564 8.96963 24.2493C8.96221 24.2438 8.95478 24.2384 8.94711 24.2329C8.93547 24.2255 8.92408 24.2181 8.91245 24.2107L8.90626 24.2075H8.89884L8.89537 24.201C8.88745 24.1953 8.87928 24.1896 8.87136 24.184C8.86072 24.1768 8.85032 24.1696 8.83968 24.1624L8.83151 24.1577H8.82433L8.82136 24.1511C8.81369 24.1454 8.80601 24.1397 8.79834 24.134C8.78695 24.1266 8.77557 24.1189 8.76418 24.1115L8.75873 24.1085H8.75081L8.7471 24.1016C8.73968 24.0959 8.732 24.0902 8.72458 24.0845C8.71195 24.0766 8.69958 24.0684 8.68695 24.0605L8.68868 24.0598C8.68027 24.0608 8.67507 24.0573 8.67259 24.0494C8.66616 24.0445 8.65948 24.0395 8.65304 24.0343L8.64784 24.0311C8.63918 24.0247 8.63027 24.018 8.6216 24.0116C8.61245 24.0051 8.60329 23.9984 8.59413 23.992C8.59141 23.9888 8.58794 23.9863 8.58373 23.9848H8.57655L8.57383 23.9787C8.56616 23.9727 8.55848 23.967 8.55081 23.9611C8.53868 23.9529 8.52655 23.9448 8.51442 23.9366V23.9359C8.50625 23.9371 8.5013 23.9336 8.49932 23.9257C8.49289 23.9208 8.48621 23.9156 8.47977 23.9106L8.47457 23.9074C8.46615 23.9007 8.45774 23.8943 8.44957 23.8876C8.43868 23.8797 8.42804 23.8716 8.41714 23.8636L8.41368 23.8617C8.40625 23.8631 8.4018 23.8602 8.40056 23.8528C8.39388 23.8473 8.38695 23.8419 8.38026 23.8367L8.37556 23.8337C8.3669 23.827 8.35848 23.8204 8.34982 23.8137C8.33917 23.8055 8.32878 23.7974 8.31813 23.7894L8.3159 23.788C8.30798 23.7892 8.30303 23.786 8.3013 23.7781C8.29511 23.7729 8.28868 23.7677 8.28249 23.7625L8.27655 23.758C8.26863 23.7516 8.26071 23.7452 8.25278 23.7387C8.24066 23.7308 8.22853 23.7227 8.2164 23.7147L8.21912 23.714C8.20996 23.714 8.20427 23.71 8.20179 23.7011C8.19783 23.6952 8.19239 23.6907 8.1857 23.6878L8.17952 23.6883L8.17803 23.6821C8.1706 23.6759 8.16343 23.67 8.156 23.6638C8.1357 23.6477 8.11541 23.6316 8.09536 23.6156L8.09511 23.6148C8.0862 23.6153 8.08075 23.6111 8.07877 23.6027C8.07481 23.5965 8.06936 23.5918 8.06268 23.5888H8.056L8.05451 23.5827C8.04733 23.5767 8.04016 23.5705 8.03298 23.5646L8.02902 23.5619C8.0206 23.555 8.01243 23.548 8.00402 23.5411C7.98595 23.5258 7.96763 23.5107 7.94956 23.4956L7.94238 23.4906C7.93471 23.4916 7.93075 23.4884 7.93025 23.4807C7.92604 23.4736 7.91986 23.4684 7.91194 23.4657C7.87431 23.4335 7.83669 23.4013 7.79931 23.3692L7.79906 23.3684C7.78941 23.3684 7.78347 23.3635 7.78124 23.3543C7.77753 23.3489 7.77258 23.3447 7.76664 23.342L7.75946 23.3415L7.75748 23.3346C7.75104 23.3289 7.74461 23.3229 7.73817 23.3172L7.73248 23.3128C7.72505 23.3064 7.71787 23.2997 7.71045 23.2933L7.70723 23.2905C7.69955 23.2834 7.69188 23.2762 7.68421 23.269C7.65649 23.2448 7.62851 23.2205 7.60079 23.1963L7.5993 23.1951C7.5899 23.1948 7.58445 23.1899 7.58322 23.1807C7.58025 23.1765 7.57653 23.1728 7.57232 23.1698C7.56416 23.1703 7.55995 23.1666 7.55921 23.1584C7.55549 23.1523 7.55054 23.1476 7.54411 23.1443L7.53668 23.1436L7.5347 23.1364C7.52876 23.1307 7.52307 23.1251 7.51713 23.1194L7.51069 23.1189L7.51019 23.1124C7.50425 23.1065 7.49807 23.1006 7.49213 23.0949H7.48594L7.48519 23.0887C7.47826 23.0828 7.47133 23.0766 7.46415 23.0706L7.45995 23.0674C7.45252 23.0605 7.44509 23.0536 7.43767 23.0464C7.31291 22.9227 7.18791 22.7993 7.06316 22.6756C7.05573 22.6675 7.0483 22.6593 7.04063 22.6511L7.0389 22.6494C7.03147 22.6417 7.0238 22.6341 7.01637 22.6264L7.01439 22.6242C7.00697 22.6168 6.99954 22.6091 6.99211 22.6017L6.98964 22.5992C6.98221 22.5918 6.97503 22.5841 6.96761 22.5767L6.96489 22.574C6.95795 22.5665 6.95078 22.5591 6.94385 22.5519L6.94063 22.548C6.93419 22.5408 6.92776 22.5339 6.92157 22.5267L6.91637 22.5208C6.91018 22.5144 6.90399 22.5082 6.89781 22.5017L6.89162 22.4956C6.88568 22.4894 6.87974 22.4832 6.8738 22.477C6.86884 22.4775 6.86389 22.478 6.85894 22.4785C6.853 22.4718 6.84681 22.4651 6.84087 22.4582L6.83667 22.4533C6.82998 22.4463 6.8233 22.4394 6.81662 22.4325L6.81241 22.4283C6.80572 22.4211 6.79879 22.4137 6.79186 22.4065L6.78914 22.4033C6.78196 22.3951 6.77503 22.3867 6.76785 22.3786C6.75919 22.3617 6.75053 22.3447 6.74186 22.3278C6.73493 22.3199 6.728 22.3123 6.72132 22.3044L6.71785 22.3004C6.71142 22.2932 6.70498 22.2863 6.69854 22.2791C6.69384 22.2796 6.68889 22.2801 6.68419 22.2806C6.67849 22.2742 6.6728 22.2675 6.66711 22.2608L6.6624 22.2554C6.65597 22.2482 6.64929 22.2413 6.64285 22.2341L6.63963 22.2304C6.6327 22.2225 6.62577 22.2146 6.61884 22.2069L6.61735 22.2052C6.60993 22.1965 6.6025 22.1881 6.59483 22.1794C6.59433 22.1715 6.59384 22.1636 6.5931 22.1554C6.58641 22.1473 6.57948 22.1394 6.5728 22.1312L6.56958 22.1268C6.56339 22.1198 6.55745 22.1129 6.55126 22.106C6.54607 22.1065 6.54062 22.107 6.53542 22.1075C6.52998 22.101 6.52428 22.0944 6.51859 22.0879L6.51438 22.0825C6.50795 22.0748 6.50126 22.0674 6.49483 22.0597C6.48641 22.0424 6.47775 22.0253 6.46933 22.008C6.46265 21.9996 6.45596 21.9912 6.44928 21.9828L6.44582 21.9779C6.43963 21.9712 6.43369 21.9642 6.4275 21.9576C6.42255 21.9581 6.4176 21.9586 6.4124 21.9591C6.40671 21.9519 6.40077 21.945 6.39507 21.9378L6.3921 21.9338C6.38517 21.9257 6.37849 21.9175 6.37156 21.9093C6.37106 21.9012 6.37057 21.893 6.37007 21.8848C6.36314 21.8764 6.35621 21.8678 6.34928 21.8594L6.34656 21.8557C6.34086 21.8485 6.33517 21.8413 6.32948 21.8341C6.32453 21.8346 6.31958 21.8349 6.31463 21.8354C6.30844 21.8282 6.302 21.821 6.29581 21.8139L6.29284 21.8104C6.28591 21.8022 6.27898 21.7938 6.27205 21.7857C6.27156 21.7772 6.27131 21.7691 6.27081 21.7607C6.26438 21.7523 6.25769 21.7439 6.25126 21.7354L6.24754 21.73C6.24532 21.7226 6.24061 21.7169 6.23393 21.7129C6.22155 21.6959 6.20893 21.6788 6.19655 21.6617C6.18962 21.6533 6.18294 21.6449 6.17601 21.6365L6.17329 21.6326C6.17106 21.6241 6.16611 21.618 6.15868 21.614C6.13517 21.5883 6.1114 21.5623 6.08789 21.5366C6.08294 21.5306 6.07799 21.5245 6.07304 21.5185L6.06957 21.5138C6.06289 21.5054 6.05645 21.4968 6.04977 21.4883C6.03838 21.4715 6.027 21.455 6.01586 21.4381C6.01041 21.4312 6.00497 21.4243 5.99927 21.4174L5.99729 21.4146C5.98987 21.4062 5.98244 21.3981 5.97501 21.3897C5.97501 21.3805 5.97501 21.3713 5.97501 21.3624C5.97353 21.3545 5.96957 21.3481 5.96313 21.3434C5.95051 21.3251 5.93788 21.307 5.92526 21.2887C5.92006 21.2818 5.91462 21.2749 5.90942 21.268C5.89828 21.2501 5.88714 21.2323 5.876 21.2145C5.87105 21.2079 5.8661 21.2009 5.86115 21.194C5.71882 21.027 5.61362 20.8353 5.50124 20.6488C5.49085 20.6315 5.47946 20.6147 5.46857 20.5974C5.46386 20.5912 5.45891 20.585 5.45421 20.5788L5.45198 20.5751C5.44505 20.5662 5.43812 20.5571 5.43144 20.5482C5.40619 20.491 5.38119 20.4339 5.35594 20.3768C5.34852 20.3683 5.34109 20.3599 5.33366 20.3515L5.33168 20.3505C5.325 20.3429 5.31832 20.3352 5.31188 20.3275C5.28144 20.2692 5.25099 20.2105 5.22054 20.1522C5.21609 20.1457 5.21163 20.1393 5.20693 20.1331L5.2052 20.1299C5.19901 20.118 5.19282 20.1062 5.18663 20.0943C5.18539 20.0814 5.18391 20.0686 5.18267 20.0557C5.17821 20.0478 5.17376 20.0399 5.1693 20.032C5.16559 20.023 5.16188 20.0144 5.15817 20.0055C5.15346 19.9978 5.14901 19.9902 5.1443 19.9825C5.11559 19.9251 5.08712 19.8675 5.05841 19.8101C5.05371 19.8017 5.04876 19.793 5.04405 19.7846C5.04084 19.7757 5.03787 19.7668 5.03465 19.7579C5.03564 19.7495 5.03292 19.7426 5.02623 19.7374C5.02103 19.727 5.01559 19.7166 5.01039 19.7062C5.01039 19.6978 5.00692 19.6914 4.99975 19.6871C4.99455 19.679 4.9891 19.6708 4.9839 19.6627C4.97747 19.6538 4.97079 19.6446 4.96435 19.6357C4.94653 19.586 4.9287 19.5363 4.91088 19.4868C4.90692 19.4794 4.90296 19.4717 4.899 19.4643C4.89504 19.4544 4.89108 19.4445 4.88687 19.4349C4.88687 19.4264 4.88341 19.42 4.87623 19.4153C4.87103 19.4071 4.86583 19.3987 4.86063 19.3906C4.8542 19.3817 4.84776 19.3728 4.84133 19.3639C4.83959 19.3478 4.83786 19.3317 4.83613 19.3159C4.83192 19.3075 4.82771 19.2993 4.82375 19.2909C4.81954 19.2832 4.81534 19.2756 4.81113 19.2676C4.80445 19.2585 4.79776 19.2493 4.79108 19.2402C4.77969 19.2152 4.76831 19.1902 4.75667 19.1652C4.75073 19.1487 4.74454 19.1323 4.7386 19.1158C4.73811 19.1009 4.73736 19.0858 4.73687 19.071C4.73291 19.0621 4.72895 19.0532 4.72499 19.0443C4.72078 19.0364 4.71657 19.0282 4.71261 19.0203C4.70642 19.0114 4.70024 19.0022 4.6938 18.9933C4.69207 18.9768 4.69033 18.9599 4.6886 18.9434C4.68464 18.9359 4.68093 18.9285 4.67697 18.9211C4.67226 18.9127 4.66781 18.9043 4.66311 18.8961C4.65692 18.8875 4.65073 18.8786 4.64454 18.8699C4.64306 18.8526 4.64132 18.8353 4.63984 18.818C4.63365 18.8026 4.62721 18.787 4.62103 18.7717C4.61756 18.7593 4.61409 18.7467 4.61088 18.7344C4.60593 18.722 4.60073 18.7096 4.59578 18.6973C4.59355 18.6891 4.59132 18.6812 4.58909 18.673C4.58513 18.6651 4.58142 18.6572 4.57746 18.649C4.573 18.6406 4.5688 18.6322 4.56434 18.6238C4.55766 18.6151 4.55122 18.6065 4.54454 18.5976C4.54132 18.5889 4.5381 18.5805 4.53489 18.5718C4.5287 18.555 4.52251 18.5382 4.51632 18.5214C4.5131 18.5051 4.50964 18.4887 4.50642 18.4724C4.50939 18.4657 4.51186 18.4591 4.51409 18.4519C4.51013 18.4432 4.50617 18.4348 4.50221 18.4262C4.49578 18.4168 4.48909 18.4076 4.48266 18.3982C4.48563 18.391 4.4881 18.3839 4.49008 18.3764L4.48043 18.3529C4.47573 18.3356 4.47077 18.3183 4.46607 18.301C4.46607 18.2928 4.4636 18.2857 4.45815 18.2795C4.45271 18.2617 4.44726 18.2439 4.44181 18.2261C4.43612 18.2102 4.43067 18.1941 4.42498 18.1783C4.41855 18.1689 4.41211 18.1595 4.40567 18.1504C4.40889 18.1447 4.41162 18.1387 4.41434 18.1328C4.41038 18.1234 4.40642 18.114 4.4027 18.1046C4.39899 18.0964 4.39528 18.0883 4.39157 18.0799C4.38686 18.0633 4.38216 18.047 4.37746 18.0304C4.36359 17.9884 4.34998 17.9463 4.33612 17.9043C4.33018 17.8958 4.32424 17.8874 4.31854 17.879C4.31731 17.8424 4.31582 17.8056 4.31458 17.7687C4.31038 17.7568 4.30617 17.745 4.30171 17.7331C4.28414 17.6747 4.26681 17.6163 4.24924 17.558C4.27622 17.5157 4.28636 17.4781 4.223 17.46C4.20716 17.3856 4.19156 17.3114 4.17572 17.2372C4.17844 17.2352 4.18339 17.2327 4.18315 17.231C4.1824 17.2253 4.17993 17.2196 4.17819 17.2139C4.17498 17.1981 4.17176 17.1822 4.16854 17.1664C4.1621 17.1573 4.15567 17.1484 4.14923 17.1392C4.14998 17.1305 4.15072 17.1221 4.15121 17.1135C4.15394 17.1115 4.15889 17.1095 4.15864 17.1075C4.15839 17.1019 4.15616 17.0964 4.15468 17.0907C4.15121 17.0744 4.1475 17.0581 4.14404 17.0417C4.1376 17.0331 4.13116 17.0242 4.12473 17.0155C4.12151 16.9824 4.11829 16.949 4.11507 16.9158C4.11903 16.9084 4.12002 16.9008 4.1178 16.8926C4.15691 16.8592 4.13265 16.8491 4.09923 16.8421C4.09973 16.8337 4.10022 16.8251 4.10072 16.8167C4.12621 16.7684 4.14527 16.7217 4.07448 16.694C4.07002 16.6524 4.06532 16.6109 4.06087 16.5693C4.05591 16.5611 4.05096 16.5532 4.04601 16.5451C4.04354 16.4813 4.04131 16.4174 4.03884 16.3534C4.03661 16.3422 4.03463 16.3311 4.0324 16.32C3.93834 15.5089 3.92893 14.6971 4.01309 13.8848C4.02621 13.7584 4.03735 13.6315 4.04948 13.5049C4.08438 13.4975 4.10715 13.4861 4.06631 13.4539C4.06879 13.4134 4.07151 13.3726 4.07398 13.332C4.10765 13.3251 4.13191 13.3147 4.09205 13.2813C4.09453 13.2405 4.09676 13.1997 4.09923 13.1589C4.13191 13.1522 4.15691 13.1425 4.11829 13.1089L4.173 12.7881C4.20617 12.7812 4.23092 12.7713 4.19156 12.7376C4.21037 12.6345 4.22448 12.5303 4.24924 12.4287C4.28661 12.2753 4.33117 12.1237 4.37275 11.9716C4.37869 11.9624 4.38439 11.953 4.39033 11.9439C4.43389 11.7967 4.47721 11.6493 4.52078 11.5021C4.52696 11.4932 4.53315 11.4843 4.53934 11.4751C4.54157 11.4593 4.5438 11.4435 4.54602 11.4277C4.55196 11.4188 4.55815 11.4098 4.56409 11.4009C4.56632 11.3851 4.56855 11.3693 4.57078 11.3535C4.57697 11.3448 4.58291 11.3359 4.58909 11.3272C4.59132 11.3112 4.59355 11.2953 4.59578 11.2792C4.60172 11.2706 4.60791 11.2617 4.61385 11.253C4.624 11.2206 4.6339 11.1882 4.64405 11.1558L4.66286 11.1284C4.68142 11.0715 4.69999 11.0148 4.7183 10.9579C4.72474 10.949 4.73093 10.9401 4.73736 10.9312C4.74776 10.8988 4.75791 10.8664 4.76831 10.8343C4.77474 10.8259 4.78093 10.8172 4.78737 10.8088C4.79776 10.7761 4.80791 10.7435 4.81831 10.7106C4.82449 10.7022 4.83068 10.6938 4.83712 10.6856C4.8636 10.6198 4.89009 10.554 4.91682 10.4882L4.93613 10.4627C5.02054 10.2817 5.10495 10.1006 5.18935 9.91957C5.19604 9.91215 5.20247 9.90448 5.20916 9.89706C5.25198 9.81395 5.29455 9.73084 5.33738 9.64773C5.34406 9.64006 5.35074 9.63239 5.35743 9.62448C5.41683 9.51688 5.47599 9.40929 5.5354 9.30144C5.54208 9.29427 5.54902 9.28685 5.5557 9.27967C5.7963 8.89208 6.05398 8.51611 6.33839 8.15894C6.82082 7.55293 7.35425 6.99689 7.95674 6.50862C7.96466 6.50169 7.97283 6.49477 7.98075 6.48759L7.98471 6.48463C7.9909 6.47918 7.99709 6.47374 8.00327 6.4683C8.03793 6.4406 8.07283 6.4129 8.10748 6.38519C8.11392 6.3795 8.1206 6.37406 8.12704 6.36837C8.43051 6.1188 8.74487 5.8848 9.08696 5.68989C9.09736 5.68297 9.10775 5.67604 9.11815 5.66936C9.36617 5.52343 9.6137 5.3765 9.86297 5.2323C9.92188 5.19816 9.98673 5.17392 10.0486 5.14498C10.0602 5.13855 10.0716 5.13237 10.0833 5.12594L10.086 5.1247C10.1013 5.11703 10.1164 5.10936 10.1318 5.1017C10.4268 4.94611 10.7298 4.80883 11.0467 4.70247C11.0632 4.69629 11.0798 4.68986 11.0964 4.68368C11.1217 4.67131 11.1469 4.65919 11.1719 4.64682C11.1803 4.64088 11.189 4.6352 11.1974 4.62926C11.2132 4.62901 11.2291 4.62852 11.2447 4.62827C11.2613 4.62209 11.2776 4.61566 11.2942 4.60947C11.4187 4.56346 11.543 4.51721 11.6672 4.4712C11.6736 4.47392 11.6801 4.4764 11.6868 4.47838C11.7043 4.47244 11.7219 4.4665 11.7395 4.46032C11.7474 4.45859 11.7556 4.45686 11.7635 4.45488C11.7801 4.44869 11.7969 4.44276 11.8135 4.43657C11.8229 4.43039 11.8323 4.42421 11.8415 4.41778C11.8462 4.42124 11.8511 4.42421 11.8563 4.42668L11.887 4.41431C11.8962 4.40838 11.9053 4.40269 11.9145 4.39675C11.9209 4.39947 11.9274 4.40195 11.934 4.40417C11.9516 4.39824 11.969 4.39205 11.9865 4.38611C11.9942 4.38414 12.0021 4.3824 12.0098 4.38043C12.035 4.3735 12.0605 4.36682 12.0858 4.3599C12.0925 4.35569 12.0996 4.35421 12.1076 4.35544C12.1336 4.34852 12.1595 4.34159 12.1858 4.33467L12.1843 4.32502C12.1935 4.31933 12.2026 4.31364 12.212 4.3082C12.2368 4.30424 12.2615 4.30004 12.2865 4.29608C12.292 4.29905 12.2977 4.30177 12.3034 4.30424C12.3301 4.29781 12.3571 4.29138 12.3838 4.28495L12.3823 4.27505C12.3912 4.26961 12.4004 4.26417 12.4093 4.25873C12.4256 4.25601 12.4422 4.25329 12.4586 4.25081C12.4732 4.25279 12.488 4.25452 12.5029 4.2565C12.5289 4.24958 12.5549 4.2429 12.5808 4.23597C12.5875 4.22979 12.595 4.2288 12.6034 4.23251C12.6202 4.22756 12.637 4.22286 12.6539 4.21792C12.663 4.21272 12.6719 4.20728 12.6811 4.20209L12.6927 4.20505L12.7046 4.20283C12.7205 4.20456 12.7365 4.20629 12.7524 4.20802C12.7697 4.20134 12.787 4.19467 12.8046 4.18774L12.8034 4.1771C12.8187 4.17884 12.8341 4.18057 12.8494 4.18205C12.8754 4.17611 12.9011 4.17043 12.9271 4.16449C12.9435 4.16251 12.9596 4.16053 12.9759 4.1588C13.0009 4.15187 13.0262 4.14495 13.0512 4.13802C13.0603 4.13308 13.0695 4.12838 13.0784 4.12343C13.0846 4.12665 13.0908 4.12961 13.0969 4.13233C13.1395 4.12566 13.1821 4.11898 13.2247 4.1123C13.2333 4.10364 13.242 4.09474 13.2507 4.08608C13.292 4.08286 13.3333 4.07965 13.3744 4.07643C13.3905 4.07124 13.4069 4.06629 13.4229 4.0611C13.5514 4.04947 13.6799 4.03785 13.8083 4.02647C13.8531 4.02152 13.8977 4.01657 13.9425 4.01187C13.9497 4.00915 13.9571 4.00866 13.9648 4.01039C14.0645 4.00248 14.1643 3.99456 14.264 3.98665C14.2794 3.98541 14.2947 3.98417 14.3101 3.98269C14.3754 3.98294 14.441 3.98343 14.5064 3.98368L14.7829 3.96562C14.8163 3.96216 14.8495 3.95894 14.8829 3.95548C14.9732 3.95548 15.0636 3.95548 15.1537 3.95548C15.1953 3.95894 15.2368 3.96241 15.2787 3.96587C15.3789 3.97205 15.4792 3.97799 15.5794 3.98417C15.644 3.98417 15.7086 3.98368 15.7732 3.98343L15.773 3.98665C15.8727 3.99456 15.9725 4.00248 16.0723 4.01014C16.0799 4.0099 16.0869 4.00767 16.0935 4.00371C16.1841 4.01559 16.275 4.02746 16.3656 4.03933C16.3824 4.04527 16.3995 4.05096 16.4163 4.05665L16.4661 4.05467L16.478 4.0564L16.4891 4.05195C16.5391 4.0611 16.5893 4.07025 16.6393 4.0794C16.6552 4.07891 16.671 4.07841 16.6869 4.07816C16.7683 4.09721 16.8495 4.11774 16.9314 4.13431C16.9817 4.14445 17.0332 4.14792 17.0842 4.15435L17.0963 4.15657L17.1079 4.15262C17.1413 4.16127 17.1748 4.17018 17.2082 4.17884L17.2201 4.18106L17.2317 4.1771C17.2498 4.17908 17.2681 4.18131 17.2861 4.18329C17.3089 4.18873 17.3317 4.19417 17.3542 4.19961C17.3797 4.20901 17.4052 4.21841 17.4309 4.22756L17.4428 4.2293L17.454 4.22509C17.479 4.22806 17.5037 4.23127 17.5287 4.23424C17.5448 4.23919 17.5609 4.24389 17.577 4.24884C17.5941 4.2523 17.6111 4.25551 17.628 4.25898C17.6347 4.26096 17.6413 4.26269 17.648 4.26467C17.7329 4.31414 17.8248 4.33615 17.9228 4.33392C17.9305 4.3364 17.9381 4.33887 17.9458 4.34134C17.9916 4.37177 18.0406 4.39106 18.097 4.3829C18.1136 4.38859 18.1302 4.39452 18.1468 4.40021C18.156 4.40219 18.1651 4.40442 18.174 4.4064C18.1894 4.41184 18.205 4.41703 18.2203 4.42248C18.2317 4.42495 18.2428 4.42742 18.2542 4.43014L18.2584 4.43608L18.2602 4.43138C18.2884 4.43979 18.3166 4.44845 18.3446 4.45686C18.352 4.45958 18.3594 4.46255 18.3669 4.46527C18.3849 4.47046 18.403 4.47566 18.4211 4.48085C18.4275 4.48332 18.4339 4.4858 18.4406 4.48827C18.4587 4.49421 18.4768 4.4999 18.4948 4.50583C18.5015 4.50831 18.5082 4.51103 18.5149 4.5135C18.5329 4.51919 18.551 4.52488 18.5688 4.53057C18.5758 4.53353 18.5825 4.5365 18.5894 4.53947C18.607 4.54491 18.6243 4.55035 18.6419 4.5558C18.649 4.55876 18.6565 4.56173 18.6636 4.5647C18.6812 4.5699 18.699 4.57509 18.7166 4.58053C18.7238 4.5835 18.7307 4.58647 18.7379 4.58944C18.7466 4.59488 18.7555 4.60032 18.7641 4.60576C18.7731 4.61244 18.7817 4.61912 18.7906 4.62555C18.832 4.6352 18.8733 4.64484 18.9146 4.65449C18.9221 4.65795 18.9292 4.66141 18.9367 4.66488C18.9453 4.66982 18.9538 4.67477 18.9624 4.67972C18.9711 4.6864 18.9797 4.69283 18.9887 4.69951C19.0042 4.70124 19.0198 4.70322 19.0352 4.70495C19.0443 4.71163 19.0535 4.71806 19.0629 4.72474C19.0963 4.73908 19.1288 4.7559 19.1632 4.76728C19.2045 4.78113 19.2473 4.79053 19.2896 4.80191L19.2958 4.80958L19.3052 4.8076C19.3575 4.83035 19.4097 4.85311 19.4619 4.87611L19.4689 4.88527L19.4798 4.88403C19.4887 4.89021 19.4978 4.89615 19.5067 4.90233C19.5154 4.90901 19.5241 4.91569 19.533 4.92237C19.6171 4.95626 19.701 4.99039 19.7852 5.02428L19.7909 5.03219L19.8001 5.03021C19.83 5.04456 19.86 5.05891 19.8899 5.07325L19.8926 5.07993L19.8956 5.07572C19.91 5.08315 19.9243 5.09057 19.9389 5.09799L19.9416 5.10466L19.9454 5.10071C19.9597 5.10813 19.9738 5.11555 19.9882 5.12297L19.9909 5.12989L19.9959 5.12618C20.0062 5.13385 20.0169 5.14177 20.0273 5.14943C20.0357 5.15611 20.0444 5.16304 20.0528 5.16972C20.0634 5.17046 20.0743 5.17145 20.085 5.17219L20.0892 5.17862L20.0926 5.17417C20.1065 5.18184 20.1201 5.18951 20.134 5.19742L20.1384 5.20558L20.1468 5.2036C20.1585 5.20979 20.1699 5.21622 20.1815 5.2224L20.1872 5.2318H20.1978C20.2558 5.26223 20.3137 5.2929 20.3716 5.32357C20.381 5.32926 20.3907 5.33519 20.4001 5.34088L20.403 5.34682L20.4095 5.34558L20.4119 5.35251L20.4149 5.3483C20.4283 5.35597 20.4414 5.36339 20.4548 5.37106L20.4595 5.38021L20.4696 5.37972C20.5077 5.40148 20.5459 5.4235 20.584 5.44526L20.5865 5.4517L20.5882 5.44724C20.6013 5.45491 20.6144 5.46233 20.6273 5.47C20.6293 5.4789 20.6345 5.48187 20.6429 5.4789C20.6679 5.49325 20.6929 5.50735 20.7179 5.5217C20.7273 5.52813 20.7367 5.53456 20.7464 5.54099L20.7516 5.54371L20.7565 5.55286H20.7667C20.8026 5.57463 20.8384 5.59664 20.8743 5.61841C20.8763 5.62781 20.8818 5.63127 20.8912 5.6288C20.9375 5.65823 20.9837 5.68791 21.0298 5.71735L21.0318 5.72403L21.035 5.72007C21.132 5.78512 21.2293 5.85018 21.3263 5.91498L21.3281 5.92166L21.3323 5.9182C21.3538 5.93353 21.3753 5.94887 21.3969 5.9642L21.4008 5.97261H21.41C21.5083 6.04509 21.6065 6.11806 21.7048 6.19102L21.7033 6.19374V6.19003C21.7669 6.23851 21.8303 6.28675 21.8937 6.33523L21.8964 6.34339L21.9046 6.3424C21.9419 6.37307 21.9793 6.4035 22.0164 6.43417L22.0199 6.44282L22.0291 6.44332C22.1231 6.52272 22.2174 6.60212 22.3115 6.68152C22.3125 6.69092 22.3177 6.69537 22.3271 6.69438C22.4041 6.76438 22.4811 6.83413 22.5583 6.90413C22.564 6.90933 22.5697 6.91452 22.5754 6.91971C22.8021 7.15272 23.0355 7.37978 23.2546 7.61971C23.7952 8.21187 24.2588 8.86091 24.6551 9.5577C24.6672 9.57897 24.6752 9.60247 24.6851 9.62497C24.6917 9.63239 24.6984 9.63982 24.7051 9.64699C24.7477 9.73034 24.7903 9.81345 24.8331 9.89681C24.8398 9.90497 24.8464 9.91289 24.8531 9.92105C24.9205 10.0613 24.988 10.2015 25.0554 10.3418C25.0618 10.3507 25.0682 10.3596 25.0749 10.3685C25.1017 10.4338 25.1281 10.4991 25.1549 10.5642C25.1613 10.5726 25.1677 10.5812 25.1742 10.5896C25.1925 10.6389 25.2108 10.6881 25.2289 10.7373C25.2353 10.746 25.2418 10.7544 25.2482 10.763C25.2586 10.7957 25.2687 10.8283 25.2791 10.861C25.2853 10.8694 25.2915 10.8778 25.2977 10.8862C25.3078 10.9189 25.3177 10.9518 25.3279 10.9844C25.3343 10.9931 25.3405 11.002 25.347 11.0106C25.3571 11.043 25.3673 11.0757 25.3774 11.1081C25.3836 11.117 25.3898 11.1259 25.3962 11.1348C25.3984 11.1506 25.4009 11.1665 25.4031 11.1823C25.4091 11.1909 25.4153 11.1994 25.4212 11.208C25.4395 11.2654 25.4578 11.3228 25.4762 11.3799C25.4824 11.3891 25.4885 11.3985 25.4945 11.4076C25.4967 11.4232 25.4989 11.4385 25.5012 11.4541C25.5073 11.463 25.5135 11.4719 25.5195 11.4811C25.5217 11.4969 25.5239 11.5127 25.5259 11.5283C25.5319 11.5375 25.5378 11.5469 25.5437 11.556C25.5457 11.5716 25.5479 11.587 25.5499 11.6025C25.5561 11.6119 25.5621 11.6213 25.5682 11.6307C25.6195 11.8081 25.6712 11.9852 25.7215 12.1628C25.7336 12.2061 25.7405 12.2508 25.7497 12.2949C25.7551 12.304 25.7608 12.3134 25.7663 12.3226C25.7687 12.3463 25.7715 12.3701 25.7739 12.3938L25.7905 12.4227C25.8091 12.52 25.8274 12.6174 25.846 12.7146C25.8546 12.7475 25.8633 12.7802 25.872 12.8131C25.8715 12.8215 25.871 12.8299 25.8705 12.8383C25.8767 12.8551 25.8829 12.8719 25.889 12.8887C25.9076 13.0038 25.9262 13.1188 25.9447 13.234C25.9499 13.2511 25.9551 13.2684 25.9603 13.2855C25.9715 13.3837 25.9829 13.4819 25.994 13.5801C26.0014 13.6212 26.0086 13.6622 26.016 13.7033C26.017 13.7364 26.018 13.7693 26.019 13.8025C26.0242 13.8195 26.0296 13.8368 26.0348 13.8539C26.1066 14.5227 26.1145 15.1931 26.0616 15.8631C26.0433 16.0932 25.9987 16.321 25.968 16.5503C25.9603 16.6069 25.9601 16.6643 25.9564 16.7214C25.9512 16.7296 25.9462 16.7378 25.941 16.7459C25.9361 16.7964 25.9314 16.8466 25.9264 16.897C25.923 16.9124 25.9197 16.9277 25.9163 16.9433C25.915 16.9515 25.914 16.9596 25.9128 16.9678C25.9061 16.9772 25.8994 16.9863 25.8925 16.9957C25.89 17.0361 25.8876 17.0761 25.8848 17.1164C25.8789 17.1251 25.873 17.134 25.867 17.1427C25.8633 17.1837 25.8596 17.2248 25.8556 17.2661C25.8522 17.2775 25.8484 17.2886 25.845 17.3C25.8418 17.3213 25.8385 17.3425 25.8351 17.3638C25.8291 17.3725 25.8232 17.3811 25.8173 17.3898C25.814 17.4227 25.8111 17.4553 25.8079 17.4882C25.8039 17.5001 25.7997 17.5122 25.7957 17.5241C25.7915 17.5451 25.7873 17.5661 25.7831 17.5874C25.7779 17.604 25.773 17.6203 25.7678 17.6369C25.7626 17.6623 25.7571 17.6878 25.7519 17.7133C25.7482 17.7267 25.7445 17.74 25.7408 17.7534C25.7385 17.764 25.7363 17.7744 25.7343 17.785C25.7291 17.8019 25.7239 17.8184 25.7187 17.8352C25.717 17.8429 25.7153 17.8503 25.7135 17.858C25.7069 17.8669 25.7004 17.8756 25.6937 17.8845C25.6915 17.9087 25.689 17.9329 25.6868 17.9572C25.6809 17.9658 25.6747 17.9743 25.6687 17.9829C25.6653 18.0076 25.6621 18.0326 25.6586 18.0574C25.6534 18.0727 25.6482 18.088 25.643 18.1034C25.6385 18.1214 25.6341 18.1395 25.6299 18.1578C25.6254 18.1706 25.621 18.1835 25.6165 18.1964C25.6138 18.2078 25.6111 18.2194 25.6083 18.2308C25.6031 18.2451 25.5979 18.2594 25.5927 18.2735C25.5826 18.3084 25.5725 18.3433 25.5623 18.3782C25.5564 18.3938 25.5502 18.4091 25.5442 18.4247C25.5385 18.443 25.5331 18.4615 25.5274 18.4798C25.5224 18.4858 25.52 18.4927 25.52 18.5006C25.5145 18.5182 25.5091 18.536 25.5036 18.5535C25.4982 18.5592 25.4955 18.5659 25.495 18.5738C25.4682 18.6485 25.4415 18.7235 25.4148 18.7982C25.4088 18.815 25.4029 18.8318 25.3967 18.8484C25.3945 18.8563 25.392 18.8645 25.3898 18.8724C25.3833 18.888 25.3769 18.9033 25.3705 18.9189C25.3606 18.9446 25.3509 18.9701 25.341 18.9958C25.3343 19.0116 25.3279 19.0275 25.3212 19.043C25.3088 19.0772 25.2965 19.1113 25.2841 19.1455C25.2801 19.1529 25.2762 19.1603 25.2722 19.1677C25.2616 19.1929 25.2509 19.2182 25.2403 19.2434C25.2338 19.2582 25.2274 19.2728 25.221 19.2877L25.2197 19.2914C25.2123 19.308 25.2051 19.3243 25.1977 19.3409C25.1873 19.3661 25.1769 19.3911 25.1667 19.4163C25.1601 19.4311 25.1536 19.446 25.1469 19.4608C25.143 19.4712 25.139 19.4814 25.1353 19.4917C25.1314 19.4989 25.1274 19.5061 25.1234 19.5133C25.0967 19.5716 25.0702 19.6298 25.0435 19.6881C25.0368 19.7027 25.0299 19.7171 25.0232 19.7317C25.0175 19.743 25.012 19.7544 25.0064 19.7658C25.0024 19.77 24.9999 19.7747 24.9989 19.7804C24.9932 19.792 24.9875 19.8036 24.9818 19.8153C24.9776 19.8197 24.9752 19.8252 24.9742 19.8311C24.9695 19.842 24.9648 19.8526 24.9601 19.8635C24.9541 19.8687 24.9507 19.8754 24.9499 19.8835C24.9202 19.9429 24.8905 20.002 24.8608 20.0611C24.8551 20.0658 24.8516 20.0718 24.8504 20.0789C24.845 20.0898 24.8395 20.1005 24.8341 20.1114C24.8294 20.1158 24.8266 20.1212 24.8254 20.1277C24.82 20.1388 24.8145 20.1499 24.8091 20.1608C24.8046 20.1653 24.8016 20.1705 24.8004 20.1767L24.7982 20.1814C24.7908 20.194 24.7836 20.2066 24.7761 20.2192C24.7373 20.2904 24.6984 20.3617 24.6596 20.4329L24.6544 20.4421C24.6224 20.4972 24.5903 20.5526 24.5583 20.6078L24.5529 20.6179L24.5487 20.6261C24.5427 20.6352 24.5368 20.6444 24.5306 20.6535C24.515 20.6795 24.4994 20.7055 24.4838 20.7315L24.4786 20.7409L24.4799 20.7473L24.4739 20.7498C24.468 20.7589 24.462 20.7678 24.4563 20.777C24.4403 20.8037 24.4239 20.8304 24.4078 20.8569L24.4046 20.8635L24.4053 20.8702L24.3992 20.8732C24.3932 20.8816 24.3875 20.89 24.3816 20.8984C24.3754 20.9081 24.3692 20.918 24.363 20.9276C24.3596 20.9311 24.3568 20.935 24.3553 20.94L24.3509 20.9476C24.3447 20.9563 24.3385 20.9652 24.3326 20.9739C24.3271 20.9828 24.3219 20.9917 24.3165 21.0006C24.3113 21.0048 24.3076 21.01 24.3058 21.0167L24.3029 21.0218C24.2964 21.0312 24.29 21.0406 24.2836 21.0498C24.2786 21.058 24.2739 21.0659 24.269 21.074C24.2625 21.0782 24.2583 21.0839 24.2563 21.0913L24.2536 21.0958C24.2472 21.1052 24.2405 21.1146 24.2341 21.124C24.213 21.1566 24.1917 21.1893 24.1707 21.222C24.1638 21.2262 24.1596 21.2323 24.1576 21.2403L24.1553 21.2442C24.1487 21.2536 24.142 21.2628 24.1353 21.2722C24.1298 21.2803 24.1244 21.2887 24.1187 21.2969C24.1135 21.3006 24.11 21.3053 24.1078 21.3112L24.1031 21.3182C24.0969 21.3263 24.0907 21.3345 24.0843 21.3427C24.0766 21.3538 24.0687 21.3649 24.061 21.376L24.0586 21.3807V21.3887L24.0514 21.3924C24.0457 21.4 24.04 21.4075 24.0343 21.4151C24.0214 21.4334 24.0086 21.4515 23.9959 21.4698C23.99 21.4738 23.986 21.4792 23.9841 21.4861L23.9806 21.4916C23.9742 21.5002 23.9675 21.5086 23.961 21.5173C23.9534 21.5277 23.9459 21.5381 23.9383 21.5482L23.935 21.5539C23.9365 21.5608 23.9338 21.5648 23.9266 21.5658C23.9212 21.5727 23.9155 21.5796 23.91 21.5865L23.9073 21.5907C23.9006 21.5997 23.8937 21.6083 23.887 21.6172C23.8796 21.6269 23.8724 21.6368 23.865 21.6464L23.8605 21.6531L23.8595 21.6612L23.8519 21.6645C23.8464 21.6711 23.841 21.6776 23.8353 21.6842L23.8316 21.6894C23.8251 21.6978 23.8185 21.706 23.812 21.7144C23.8039 21.7258 23.7954 21.7374 23.7873 21.7488L23.7865 21.7493C23.7878 21.7572 23.7845 21.7619 23.7766 21.7636C23.7714 21.7701 23.7662 21.7765 23.761 21.7829L23.7571 21.7884C23.7506 21.796 23.7439 21.804 23.7375 21.8116C23.7229 21.8302 23.7083 21.8487 23.6939 21.8675L23.6873 21.8772L23.6868 21.8846L23.6796 21.8871C23.6739 21.8935 23.6682 21.8999 23.6625 21.9064L23.6581 21.9121C23.6516 21.92 23.6452 21.9281 23.6387 21.936C23.6236 21.9546 23.6088 21.9732 23.5937 21.9917L23.5885 21.9994C23.5895 22.0068 23.5863 22.0105 23.5788 22.0107C23.5719 22.015 23.5667 22.0209 23.5633 22.0283L23.5573 22.0352C23.5514 22.0427 23.5452 22.0498 23.539 22.0572C23.5157 22.085 23.4925 22.1127 23.4689 22.1404L23.4647 22.1458C23.4657 22.1535 23.4625 22.1579 23.4548 22.1589C23.4477 22.1634 23.4425 22.1695 23.4392 22.1775L23.4343 22.1834C23.4279 22.1903 23.4214 22.1972 23.415 22.2042L23.4113 22.2086C23.4046 22.2165 23.3979 22.2245 23.3912 22.2321C23.367 22.2598 23.3425 22.2878 23.3182 22.3155L23.3167 22.3175C23.3175 22.3259 23.3135 22.3308 23.3053 22.3321C23.2991 22.336 23.2944 22.3415 23.291 22.3479L23.2905 22.3548L23.2838 22.3563C23.2781 22.3625 23.2722 22.3684 23.2662 22.3746L23.2608 22.381C23.2546 22.3882 23.2481 22.3951 23.242 22.4023L23.2387 22.4063C23.2318 22.4137 23.2246 22.4209 23.2177 22.4283L23.215 22.4312C23.2078 22.4392 23.2006 22.4471 23.1934 22.455C23.161 22.4909 23.1286 22.5267 23.0962 22.5623L23.0959 22.5611C23.089 22.568 23.0823 22.575 23.0754 22.5819L23.0707 22.5871C23.0645 22.5933 23.0585 22.5994 23.0523 22.6054L23.0457 22.6121C23.0397 22.618 23.0338 22.6242 23.0278 22.6301L23.0199 22.6393C23.0204 22.6474 23.0167 22.6521 23.0085 22.6534C23.0023 22.6573 22.9976 22.6625 22.9942 22.6689L22.9934 22.6761L22.9865 22.6778C22.9808 22.6835 22.9751 22.6892 22.9694 22.6952L22.9687 22.7018L22.962 22.7026C22.9563 22.7083 22.9506 22.714 22.9447 22.7199L22.9439 22.7266L22.9372 22.7273C22.9316 22.733 22.9259 22.7387 22.9199 22.7444L22.9192 22.7511L22.9125 22.7518C22.9068 22.7575 22.9011 22.7632 22.8954 22.7689L22.8947 22.7756L22.888 22.7763C22.8823 22.782 22.8764 22.7879 22.8707 22.7936L22.8699 22.8003L22.8632 22.801C22.8573 22.807 22.8516 22.8127 22.8457 22.8186L22.8449 22.825L22.8385 22.8258C22.8325 22.8317 22.8269 22.8374 22.8209 22.8433L22.8202 22.85L22.8135 22.8507C22.8078 22.8564 22.8019 22.8621 22.7962 22.8681L22.7952 22.8747L22.7885 22.8755C22.7828 22.8812 22.7771 22.8869 22.7712 22.8928L22.7702 22.8995L22.7635 22.9002C22.7578 22.9059 22.7521 22.9116 22.7462 22.9175L22.7452 22.9242L22.7385 22.925C22.7328 22.9306 22.7271 22.9363 22.7214 22.942L22.7202 22.9487L22.7135 22.9497C22.7066 22.9529 22.7011 22.9578 22.6971 22.9645C22.6959 22.9724 22.6912 22.9762 22.683 22.9752L22.6739 22.9831C22.6677 22.989 22.6615 22.9952 22.6553 23.0011L22.6499 23.0063C22.6429 23.013 22.6363 23.0199 22.6296 23.0266L22.6254 23.0308C22.6189 23.0372 22.6125 23.0439 22.6058 23.0504V23.0511C22.5615 23.0917 22.5172 23.1325 22.4729 23.173C22.4652 23.18 22.4575 23.1869 22.4496 23.1938L22.4457 23.197C22.4385 23.2032 22.4315 23.2094 22.4244 23.2158L22.4174 23.2215C22.4098 23.2247 22.4038 23.2302 22.3996 23.2374L22.3971 23.245L22.3892 23.2465C22.3833 23.25 22.3786 23.2547 22.3751 23.2606C22.3754 23.268 22.3719 23.2717 22.3645 23.2712C22.3588 23.2745 22.3541 23.2789 22.3506 23.2846C22.3489 23.293 22.3437 23.297 22.3353 23.2965L22.335 23.2972C22.3155 23.3135 22.2959 23.3299 22.2763 23.3464C22.2682 23.3536 22.2603 23.3605 22.2521 23.3677L22.2491 23.3704C22.2417 23.3771 22.2345 23.384 22.2271 23.391L22.2226 23.3949C22.2157 23.4009 22.2088 23.4068 22.2018 23.413L22.1999 23.4196H22.1929C22.1867 23.4226 22.1818 23.4268 22.1781 23.4325C22.1761 23.4414 22.1706 23.4456 22.1615 23.4456L22.1622 23.4461C22.133 23.4704 22.1038 23.4948 22.0746 23.5191C22.0674 23.525 22.0605 23.531 22.0533 23.5369L22.0513 23.5433H22.0444C22.038 23.5463 22.0328 23.5507 22.0291 23.5567C22.0271 23.5653 22.0216 23.5693 22.013 23.5688L22.0142 23.5695C22.0028 23.5777 21.9914 23.5861 21.9801 23.5943C21.9716 23.6015 21.9632 23.6084 21.9548 23.6156L21.9516 23.618C21.9442 23.6245 21.9367 23.6306 21.9296 23.6371L21.9229 23.642C21.9162 23.6442 21.9112 23.6482 21.9075 23.6541C21.8805 23.6749 21.8536 23.6959 21.8266 23.7167C21.8197 23.7222 21.8127 23.7278 21.8055 23.7335L21.8031 23.7407L21.7956 23.7412C21.7914 23.7429 21.788 23.7457 21.7852 23.7494C21.7766 23.7555 21.7679 23.762 21.7593 23.7682C21.7503 23.7751 21.7412 23.782 21.7323 23.7892L21.7293 23.7914C21.7219 23.7974 21.7145 23.8035 21.7068 23.8095L21.7048 23.8159L21.6981 23.8154C21.6927 23.8174 21.6885 23.8209 21.6852 23.8256C21.6672 23.8389 21.6491 23.8525 21.631 23.8659C21.6234 23.8721 21.6154 23.8782 21.6078 23.8847L21.6001 23.8896C21.5951 23.8908 21.5909 23.8936 21.5877 23.8975C21.5687 23.9116 21.5496 23.9257 21.5305 23.9398C21.5234 23.9453 21.5159 23.951 21.5088 23.9564L21.505 23.9638L21.4969 23.9643L21.4907 23.968C21.4805 23.9754 21.4704 23.9829 21.4602 23.9905C21.4516 23.9967 21.4432 24.0031 21.4345 24.0093L21.4276 24.0135C21.4216 24.0153 21.4167 24.0187 21.4132 24.0237C21.3946 24.037 21.3758 24.0501 21.3573 24.0635C21.3498 24.0692 21.3427 24.0746 21.3352 24.0803C21.334 24.0872 21.3298 24.09 21.3229 24.0877L21.3194 24.0897C21.308 24.0976 21.2964 24.1055 21.285 24.1135C21.2771 24.1192 21.2691 24.1248 21.2612 24.1303L21.257 24.1372H21.2491L21.2454 24.1392C21.2335 24.1471 21.2219 24.155 21.21 24.1629C21.2023 24.1686 21.1946 24.1743 21.187 24.18L21.1833 24.1869H21.1753L21.1704 24.1896C21.1592 24.1973 21.1481 24.2052 21.1372 24.2129C21.129 24.2186 21.1211 24.2245 21.113 24.2302L21.1095 24.2369L21.1021 24.2364L21.0959 24.2396C21.0847 24.247 21.0733 24.2547 21.0622 24.2621C21.0545 24.2676 21.0466 24.2733 21.0389 24.2787C21.0372 24.2859 21.0328 24.2881 21.0258 24.2859L21.0243 24.2869C21.0117 24.295 20.9993 24.3029 20.9867 24.3111C20.9793 24.3165 20.9719 24.322 20.9644 24.3277L20.9612 24.3341L20.954 24.3336C20.9412 24.3415 20.9285 24.3492 20.9157 24.3571C20.8991 24.3668 20.8825 24.3766 20.8659 24.3863C20.8575 24.392 20.8493 24.3974 20.8409 24.4031L20.8382 24.409L20.8318 24.4078C20.8186 24.416 20.8053 24.4244 20.7922 24.4325C20.7647 24.4494 20.7375 24.4662 20.71 24.483L20.7008 24.4862C20.6738 24.5023 20.6469 24.5184 20.6199 24.5347C20.6112 24.5406 20.6023 24.5466 20.5936 24.5525L20.5909 24.5584L20.5845 24.5575L20.5756 24.5619C20.5063 24.6017 20.4369 24.6416 20.3676 24.6816C20.3617 24.6819 20.3563 24.6841 20.3518 24.6881C20.3399 24.6942 20.3283 24.7002 20.3164 24.7064C20.3102 24.7074 20.305 24.7101 20.3008 24.715C20.0756 24.8273 19.8501 24.9399 19.6248 25.0522C19.61 25.0588 19.5949 25.0653 19.58 25.0719C19.5211 25.0984 19.4622 25.1249 19.4033 25.1513C19.3882 25.1575 19.3728 25.1637 19.3577 25.1699C19.2736 25.2048 19.1892 25.2396 19.105 25.2745C19.0904 25.281 19.0758 25.2871 19.0612 25.2936C19.0525 25.296 19.0441 25.2985 19.0354 25.3007C19.0191 25.3069 19.0028 25.3131 18.9864 25.3195C18.9604 25.3294 18.9347 25.3393 18.9087 25.3492C18.8936 25.3552 18.8783 25.3611 18.8632 25.367C18.855 25.3695 18.8466 25.372 18.8384 25.3745C18.8218 25.3809 18.8052 25.3871 18.7886 25.3935C18.7807 25.3955 18.7726 25.3975 18.7646 25.3994C18.7478 25.4059 18.7312 25.412 18.7144 25.4185C18.707 25.4222 18.699 25.4242 18.6909 25.4242C18.6822 25.4304 18.6735 25.4365 18.6649 25.4427C18.655 25.4442 18.6453 25.4459 18.6354 25.4474C18.6208 25.4534 18.6062 25.4595 18.5914 25.4655C18.582 25.4679 18.5728 25.4704 18.5634 25.4726C18.5478 25.4788 18.5325 25.4848 18.5169 25.491C18.5077 25.4932 18.4983 25.4952 18.4891 25.4974C18.4738 25.5033 18.4584 25.509 18.4428 25.5149C18.4077 25.5253 18.3728 25.5357 18.3376 25.5459C18.3238 25.5506 18.3099 25.5555 18.2961 25.5602C18.2842 25.5634 18.2723 25.5666 18.2604 25.5699C18.2386 25.5768 18.2169 25.5837 18.1951 25.5904C18.1862 25.5926 18.1772 25.5946 18.1686 25.5968C18.1527 25.6025 18.1369 25.6084 18.1211 25.6141C18.1112 25.6164 18.1015 25.6183 18.0919 25.6206C18.0775 25.6253 18.0631 25.63 18.0488 25.6344C18.0042 25.6458 17.9594 25.6574 17.9149 25.6688C17.8928 25.6755 17.8711 25.6822 17.849 25.6888C17.8391 25.6908 17.8292 25.6925 17.8196 25.6945C17.7963 25.7012 17.773 25.7079 17.7498 25.7146C17.7404 25.7163 17.7312 25.718 17.7218 25.7195C17.698 25.7262 17.6743 25.7329 17.6508 25.7395C17.6352 25.7418 17.6198 25.744 17.6042 25.7462C17.5869 25.7517 17.5696 25.7571 17.5522 25.7625C17.5359 25.7653 17.5196 25.7677 17.5032 25.7705C17.4866 25.7757 17.4703 25.7808 17.4537 25.786C17.4361 25.7888 17.4183 25.7912 17.4007 25.794C17.3686 25.8009 17.3364 25.8081 17.3042 25.815C17.2792 25.8229 17.254 25.8308 17.229 25.839C17.221 25.839 17.2131 25.8387 17.2052 25.8385C17.1988 25.8429 17.1916 25.8452 17.1837 25.8449C17.1743 25.8513 17.1649 25.8578 17.1554 25.864C17.1386 25.8637 17.122 25.8632 17.1052 25.863C17.0973 25.863 17.0896 25.8625 17.0817 25.8625C17.0401 25.8711 16.9985 25.88 16.9569 25.8887C16.949 25.8887 16.9408 25.8887 16.9329 25.8884C16.9265 25.8926 16.9195 25.8946 16.9116 25.8944C16.9022 25.9008 16.8926 25.907 16.8832 25.9134C16.8582 25.9134 16.8332 25.9134 16.8082 25.9134C16.8002 25.9134 16.7921 25.9134 16.7842 25.9134C16.6931 25.9295 16.602 25.9453 16.5106 25.9614C16.4953 25.9594 16.4802 25.9572 16.4648 25.9552C16.3641 25.9733 16.2633 25.9913 16.1626 26.0094C16.1304 26.0119 16.0985 26.0141 16.0663 26.0166L16.0661 26.0069C16.0505 26.0064 16.0346 26.0059 16.019 26.0054C15.9381 26.0099 15.8574 26.0146 15.7765 26.019C15.7334 26.0235 15.6906 26.0279 15.6475 26.0324C15.5735 26.0364 15.4997 26.0406 15.4257 26.0445C15.1599 26.0445 14.8943 26.0445 14.6284 26.0445C14.5546 26.0406 14.4806 26.0366 14.4069 26.0326C14.3705 26.0284 14.3341 26.0245 14.2977 26.0203C14.2103 26.0156 14.1232 26.0109 14.0358 26.0062C14.0237 26.0025 14.0118 25.999 13.9997 25.9953C13.9309 25.9923 13.8621 25.9891 13.7932 25.9861C13.7173 25.9758 13.6413 25.9654 13.5653 25.9552C13.5581 25.9557 13.5509 25.956 13.5435 25.9565L13.542 25.9659C13.5158 25.9599 13.4893 25.9542 13.463 25.9483C13.4588 25.9446 13.4539 25.9421 13.4484 25.9414C13.4301 25.9399 13.4116 25.9382 13.3932 25.9367C13.3853 25.9369 13.3774 25.9372 13.3695 25.9377C13.3425 25.9322 13.3158 25.9265 13.2888 25.9211L13.2821 25.9166C13.2695 25.9149 13.2571 25.9134 13.2445 25.9117C13.2286 25.9117 13.2125 25.9117 13.1967 25.9117C13.1633 25.9035 13.1296 25.8956 13.0962 25.8875C13.0801 25.8875 13.0643 25.8875 13.0482 25.8872C13.0145 25.8783 12.9809 25.8694 12.9472 25.8605C12.9313 25.8607 12.9158 25.861 12.8999 25.8615C12.8744 25.8533 12.8492 25.8452 12.8237 25.837C12.8078 25.837 12.792 25.837 12.7761 25.837C12.7506 25.8281 12.7249 25.8189 12.6994 25.81C12.6838 25.8105 12.6682 25.811 12.6526 25.8115C12.6355 25.8056 12.6185 25.7999 12.6014 25.794C12.5853 25.792 12.5695 25.7897 12.5534 25.7878C12.5276 25.7786 12.5021 25.7695 12.4764 25.7601C12.4608 25.7606 12.4454 25.7611 12.4299 25.7616C12.4125 25.7534 12.3952 25.7452 12.3779 25.7371C12.3556 25.7306 12.3331 25.7242 12.3108 25.7178C12.3001 25.7158 12.2893 25.7136 12.2786 25.7116C12.2568 25.7054 12.235 25.699 12.2133 25.6928C12.2019 25.6906 12.1905 25.6881 12.1794 25.6859C12.164 25.6807 12.1484 25.6752 12.1331 25.67C12.1078 25.6685 12.0826 25.6671 12.0576 25.6658L12.0291 25.647C12.0204 25.647 12.013 25.6443 12.0066 25.6381C11.9848 25.6317 11.9628 25.625 11.941 25.6186L11.934 25.6171C11.9259 25.6169 11.918 25.6164 11.9098 25.6161C11.9014 25.6161 11.8932 25.6161 11.8848 25.6164C11.8739 25.5553 11.8256 25.5738 11.7873 25.5708C11.7781 25.5686 11.7687 25.5666 11.7595 25.5644C11.7435 25.5585 11.7274 25.5528 11.711 25.5469C11.7026 25.5449 11.6942 25.5431 11.6855 25.5412C11.6684 25.535 11.6516 25.5288 11.6345 25.5229C11.618 25.5187 11.6011 25.5147 11.5845 25.5105C11.5719 25.5053 11.559 25.5001 11.5464 25.4947C11.5343 25.491 11.5222 25.4875 11.51 25.4838C11.5026 25.4801 11.4949 25.4766 11.4875 25.4729C11.4702 25.4677 11.4526 25.4628 11.4353 25.4576C11.4281 25.4543 11.4209 25.4511 11.4135 25.4479C11.4051 25.4457 11.3967 25.4432 11.3882 25.441C11.3724 25.4348 11.3566 25.4289 11.341 25.4227C11.2746 25.4046 11.2083 25.3866 11.1417 25.3688C11.1333 25.3623 11.1249 25.3557 11.1165 25.3492C11.1009 25.3406 11.0853 25.3322 11.0697 25.3235C11.0113 25.3057 10.9526 25.2881 10.8942 25.2703C10.885 25.2636 10.8761 25.2572 10.8669 25.2505C10.8585 25.2456 10.8501 25.2409 10.8417 25.2359C10.8365 25.229 10.8296 25.2255 10.8207 25.2253C10.8038 25.2238 10.787 25.2221 10.7704 25.2206C10.762 25.2142 10.7533 25.2075 10.7449 25.2011C10.7298 25.1924 10.7145 25.1835 10.6994 25.1748C10.6652 25.1654 10.6313 25.1558 10.5971 25.1464C10.5887 25.1397 10.5801 25.1333 10.5716 25.1266C10.5565 25.118 10.5414 25.109 10.5263 25.1004C10.4756 25.0826 10.4249 25.065 10.3744 25.0472C10.3652 25.0408 10.356 25.0343 10.3466 25.0279C10.3387 25.0284 10.3315 25.0267 10.3249 25.0227C10.3164 25.016 10.3078 25.0096 10.2994 25.0029C10.2853 24.9938 10.2709 24.9851 10.2568 24.976C10.2449 24.9703 10.233 24.9646 10.2211 24.9592C10.2172 24.9549 10.2122 24.9527 10.2065 24.952C10.1952 24.9468 10.1838 24.9418 10.1724 24.9366C10.1679 24.9312 10.162 24.9282 10.1551 24.9275C10.0612 24.8798 9.96767 24.832 9.87386 24.7843C9.87064 24.7813 9.86693 24.7793 9.86247 24.7786L9.86767 24.7764ZM13.3999 23.639H13.4116L13.4224 23.6356C13.4474 23.6383 13.4727 23.6413 13.4977 23.644C13.5145 23.6507 13.5314 23.6571 13.5482 23.6638C13.5724 23.6623 13.597 23.6611 13.6212 23.6596C13.6296 23.6593 13.638 23.6591 13.6462 23.6586L13.6452 23.6685C13.6804 23.6744 13.7158 23.6804 13.7509 23.6865C13.7653 23.6883 13.7799 23.69 13.7942 23.6917C13.8036 23.6987 13.813 23.7056 13.8225 23.7125C13.8378 23.7115 13.8531 23.7105 13.8685 23.7095C13.8853 23.7086 13.9022 23.7073 13.9192 23.7063C13.9437 23.71 13.968 23.7137 13.9925 23.7177C14.0017 23.7244 14.0111 23.7308 14.0202 23.7375L14.0913 23.7348C14.1408 23.7348 14.1905 23.7343 14.24 23.734L14.2519 23.7368L14.2633 23.733C14.2873 23.7363 14.3116 23.7397 14.3356 23.7429C14.4277 23.7494 14.52 23.7558 14.6121 23.7622C14.62 23.7642 14.6279 23.7662 14.6358 23.7679C14.6519 23.7684 14.6678 23.7692 14.6839 23.7696C14.7084 23.7692 14.7329 23.7689 14.7576 23.7684C14.9133 23.7748 15.0693 23.7823 15.225 23.7867C15.2514 23.7875 15.2782 23.7746 15.3049 23.7682C15.3294 23.7684 15.3537 23.7687 15.3782 23.7689C15.3861 23.7687 15.394 23.7684 15.4019 23.7682C15.418 23.7659 15.4339 23.764 15.45 23.7617C15.542 23.7553 15.6344 23.7486 15.7265 23.7422C15.75 23.7407 15.7732 23.739 15.7968 23.7375C15.8718 23.7301 15.947 23.7224 16.022 23.715C16.0302 23.7125 16.0383 23.71 16.0465 23.7076L16.0581 23.711L16.07 23.7088C16.0945 23.7105 16.119 23.7123 16.1438 23.7137C16.1685 23.7076 16.1933 23.7014 16.2183 23.6952C16.2272 23.6907 16.2361 23.6863 16.245 23.6818L16.2564 23.6853L16.2681 23.6833C16.3005 23.6851 16.3329 23.6868 16.3651 23.6883C16.3822 23.6816 16.3995 23.6749 16.4166 23.6682C16.4329 23.6668 16.449 23.6653 16.4653 23.664C16.4903 23.6576 16.5151 23.6512 16.5401 23.6447C16.5492 23.6398 16.5584 23.6351 16.5676 23.6301C16.5809 23.6319 16.5943 23.6339 16.6077 23.6356C16.6346 23.6304 16.6616 23.6252 16.6886 23.6198C16.7049 23.618 16.7213 23.6163 16.7376 23.6143C16.7626 23.6079 16.7874 23.6015 16.8124 23.595C16.8287 23.5933 16.8448 23.5913 16.8611 23.5896C16.8864 23.5824 16.9116 23.5752 16.9371 23.5678L16.9361 23.5562C16.9438 23.5589 16.9512 23.5614 16.9589 23.5639C16.9844 23.5574 17.0097 23.5507 17.0351 23.5443C17.0455 23.5369 17.0559 23.5295 17.0663 23.5223C17.0671 23.528 17.0693 23.5327 17.0735 23.5366C17.0851 23.5327 17.0968 23.5287 17.1087 23.5248C17.1272 23.5161 17.1458 23.5075 17.1644 23.4988C17.1661 23.504 17.1691 23.5084 17.1733 23.5122C17.1847 23.508 17.1963 23.5037 17.2077 23.4995C17.2168 23.4941 17.2257 23.4887 17.2349 23.4835C17.2421 23.4864 17.2498 23.4887 17.2572 23.4904C17.2738 23.4847 17.2901 23.479 17.3067 23.4736C17.3158 23.4681 17.325 23.4627 17.3342 23.4575C17.3408 23.4602 17.3478 23.4627 17.3547 23.4652C17.3723 23.4592 17.3899 23.4533 17.4074 23.4474L17.4059 23.4367C17.4201 23.437 17.4342 23.4375 17.4483 23.4377C17.4673 23.4323 17.4861 23.4271 17.5052 23.4216C17.5399 23.406 17.5745 23.3907 17.6092 23.3751C17.6161 23.3729 17.623 23.3704 17.6297 23.3682C17.647 23.3633 17.6646 23.3583 17.6819 23.3536C17.6859 23.3573 17.6906 23.3608 17.6953 23.3633C17.7149 23.3576 17.7342 23.3519 17.7537 23.3464L17.752 23.336C17.7609 23.3304 17.7698 23.3247 17.779 23.319C17.7958 23.315 17.8126 23.3108 17.8295 23.3069C17.8381 23.3029 17.8466 23.2992 17.8552 23.2952L17.9042 23.2806C17.9121 23.2772 17.9201 23.2737 17.928 23.27C17.9359 23.2678 17.9441 23.2658 17.952 23.2636C17.9678 23.2571 17.9839 23.2507 17.9998 23.2445C18.0154 23.244 18.0312 23.2435 18.0468 23.2433C18.0641 23.2369 18.0815 23.2307 18.0988 23.2242L18.2993 23.1335C18.307 23.1295 18.3149 23.1253 18.3225 23.1213C18.3473 23.111 18.3721 23.1006 18.3971 23.0902C18.4129 23.084 18.4287 23.0776 18.4448 23.0714C18.4777 23.063 18.5109 23.0546 18.5438 23.0464C18.5518 23.0417 18.5599 23.0372 18.5679 23.0325C18.8243 22.9029 19.0807 22.7731 19.3372 22.6435C19.3456 22.638 19.3538 22.6323 19.3622 22.6269C19.6345 22.45 19.9067 22.2729 20.179 22.0961C20.185 22.0911 20.1912 22.0862 20.1971 22.0812L20.2013 22.0783C20.2095 22.0713 20.2176 22.0644 20.2258 22.0575C20.2761 22.0211 20.3263 21.9845 20.3768 21.9482C20.3827 21.9432 20.3887 21.938 20.3944 21.9331C20.4211 21.915 20.4481 21.897 20.4748 21.8789C20.4822 21.8725 20.4897 21.866 20.4971 21.8594L20.4983 21.8569C20.5053 21.8495 20.5124 21.8418 20.5194 21.8344C20.5543 21.8064 20.5892 21.7787 20.6241 21.7508C20.63 21.7456 20.636 21.7404 20.6422 21.7354C20.7013 21.6842 20.7607 21.6333 20.8199 21.5821C20.8271 21.5757 20.8342 21.569 20.8417 21.5625C20.9538 21.4614 21.0686 21.3632 21.1771 21.2583C21.4984 20.9474 21.7904 20.6105 22.0578 20.2523C22.0645 20.2444 22.0709 20.2368 22.0776 20.2288L22.1318 20.1527C22.1382 20.1452 22.1447 20.1376 22.1511 20.1301C22.2103 20.0423 22.2726 19.9568 22.3281 19.8667C22.4556 19.6589 22.5796 19.449 22.7051 19.2397L22.7264 19.2157C22.7853 19.0999 22.8444 18.9844 22.9033 18.8687C22.91 18.8598 22.9165 18.8506 22.9231 18.8417C22.9665 18.7435 23.0095 18.6451 23.0528 18.5469C23.0593 18.5385 23.0657 18.53 23.0722 18.5214C23.0905 18.4722 23.1088 18.4229 23.1271 18.3737C23.1333 18.3651 23.1397 18.3562 23.1459 18.3475C23.1561 18.3151 23.1665 18.2824 23.1766 18.25C23.1828 18.2414 23.1892 18.2327 23.1954 18.2243C23.2053 18.1917 23.2155 18.159 23.2254 18.1266C23.2318 18.1177 23.2382 18.1088 23.2444 18.0999C23.2632 18.046 23.2838 17.9926 23.3004 17.9379C23.3756 17.6881 23.4496 17.4378 23.5241 17.1877C23.5655 17.1763 23.5709 17.1523 23.5491 17.1182C23.5571 17.0754 23.565 17.0326 23.5727 16.9898C23.6142 16.9799 23.6185 16.9539 23.6034 16.9193C23.6172 16.8273 23.6311 16.7355 23.6449 16.6435C23.6801 16.6361 23.7024 16.6245 23.6615 16.5923C23.6727 16.5104 23.6836 16.4286 23.6947 16.3467C23.7293 16.3393 23.7521 16.3281 23.7115 16.2957C23.714 16.2549 23.7167 16.2144 23.7192 16.1735C23.7543 16.1661 23.7766 16.1545 23.7358 16.1223C23.7395 16.0897 23.7427 16.0568 23.7467 16.0242C23.8199 15.4337 23.8241 14.8421 23.7746 14.2497C23.7734 14.2385 23.7722 14.2274 23.7709 14.2163C23.7506 14.0609 23.7303 13.9056 23.71 13.75C23.7038 13.7409 23.6977 13.732 23.6915 13.7228C23.6888 13.6741 23.6863 13.6254 23.6836 13.5769C23.6779 13.5682 23.6722 13.5593 23.6665 13.5507C23.6647 13.5145 23.6675 13.4774 23.6608 13.4421C23.6378 13.3219 23.6113 13.2024 23.586 13.0827C23.5798 13.0738 23.5736 13.0651 23.5675 13.0562C23.5566 12.9907 23.5457 12.9254 23.5348 12.8598C23.5291 12.8514 23.5234 12.8427 23.5177 12.8343C23.4811 12.6941 23.4447 12.5538 23.4081 12.4136C23.4029 12.3988 23.3977 12.3839 23.3925 12.3691C23.3902 12.3594 23.388 12.3498 23.3858 12.3399C23.3798 12.3243 23.3741 12.309 23.3682 12.2934C23.3531 12.2496 23.3382 12.2056 23.3231 12.1618L23.3264 12.1526L23.3184 12.1465C23.3157 12.1366 23.313 12.1267 23.3103 12.1168C23.3046 12.1024 23.2986 12.0881 23.2929 12.0737C23.29 12.0631 23.287 12.0527 23.2843 12.0421C23.2786 12.0282 23.2731 12.0144 23.2675 12.0005L23.266 11.9951C23.259 11.9785 23.2521 11.9619 23.2449 11.9454C23.2264 11.8954 23.2076 11.8457 23.189 11.7957C23.1826 11.7801 23.1764 11.7648 23.1699 11.7492L23.1694 11.7472C23.162 11.7378 23.1546 11.7287 23.1472 11.7193C23.137 11.6871 23.1269 11.655 23.1167 11.6228C23.11 11.6065 23.1036 11.5902 23.0969 11.5738L23.0424 11.4499C23.0355 11.4343 23.0286 11.419 23.0217 11.4034C23.0182 11.3938 23.0147 11.3844 23.011 11.3747C23.0066 11.3668 23.0023 11.3589 22.9979 11.351C22.9028 11.161 22.8078 10.9711 22.7127 10.7808C22.7085 10.7742 22.7043 10.7677 22.6999 10.7611L22.6984 10.7583C22.6907 10.7455 22.6828 10.7326 22.6751 10.7197C22.6548 10.6824 22.6345 10.6453 22.614 10.6079C22.6098 10.601 22.6053 10.5943 22.6011 10.5874L22.5999 10.5852C22.5914 10.5711 22.583 10.5567 22.5746 10.5426L22.5714 10.5365C22.5652 10.5276 22.559 10.5186 22.5528 10.5097C22.5484 10.5013 22.5437 10.4927 22.5392 10.4843C22.535 10.4778 22.5308 10.4714 22.5264 10.4652L22.5246 10.462C22.5164 10.4482 22.508 10.4341 22.4999 10.4202L22.4964 10.413C22.4905 10.4041 22.4845 10.395 22.4783 10.3861C22.4736 10.3777 22.4692 10.369 22.4645 10.3606C22.4603 10.3547 22.456 10.3487 22.4518 10.3428L22.4491 10.3383C22.4424 10.3292 22.4358 10.32 22.4291 10.3109C22.4244 10.3027 22.4199 10.2945 22.4152 10.2866C22.411 10.2805 22.4065 10.2743 22.4023 10.2681L22.4001 10.2641C22.3919 10.2508 22.3838 10.2372 22.3759 10.2238L22.3768 10.2174L22.3709 10.2152C22.3652 10.207 22.3595 10.1988 22.3538 10.1907L22.3528 10.1892C22.3439 10.1758 22.3353 10.1627 22.3263 10.1494L22.3268 10.1429L22.3207 10.1409L22.3033 10.1184L22.3016 10.1157C22.2932 10.1026 22.2848 10.0897 22.2763 10.0766L22.2771 10.0697L22.2709 10.0667C22.2655 10.0588 22.2598 10.0512 22.2543 10.0432L22.2531 10.041L22.2271 10.0032V9.9955L22.2202 9.99229C22.215 9.98536 22.2095 9.97868 22.2043 9.97176L22.2013 9.96731C22.1947 9.95865 22.188 9.94999 22.1813 9.94158C22.1744 9.93193 22.1674 9.92204 22.1605 9.91239L22.1625 9.90497L22.1546 9.9025L22.1553 9.89607L22.1491 9.89384C22.1432 9.88568 22.137 9.87777 22.131 9.8696L22.1301 9.86812C22.1214 9.8555 22.1125 9.84289 22.1038 9.83052C22.1053 9.8236 22.1023 9.81989 22.0952 9.81939C22.0902 9.8137 22.0855 9.80777 22.0805 9.80208L22.0756 9.7949C22.0694 9.78674 22.0632 9.77858 22.057 9.77066L22.056 9.76918C22.0471 9.75656 22.0382 9.7437 22.0296 9.73109L22.0291 9.72367L22.0221 9.72095L22.0065 9.70215L22.0023 9.69621C21.9959 9.6883 21.9895 9.68038 21.983 9.67222C21.9684 9.65367 21.9538 9.63536 21.9392 9.61681L21.9404 9.60914L21.9325 9.60717V9.59999L21.9258 9.59752C21.9199 9.59035 21.914 9.58317 21.9083 9.576L21.9055 9.57204C21.8986 9.56363 21.8919 9.55497 21.885 9.54656C21.8706 9.529 21.8565 9.51169 21.8422 9.49413V9.48547L21.834 9.483L21.8333 9.47582L21.8263 9.4736C21.8206 9.46692 21.8149 9.45999 21.8093 9.45331L21.806 9.44861C21.7994 9.44045 21.7924 9.43229 21.7857 9.42413L21.7627 9.39741C21.7528 9.38554 21.7432 9.37342 21.7333 9.36155C21.7335 9.35363 21.7298 9.34943 21.7216 9.34893L21.7199 9.33904L21.7105 9.33607L21.71 9.32816L21.7028 9.32519L21.6857 9.3049L21.682 9.3002C21.6753 9.29254 21.6687 9.28462 21.662 9.27695L21.6602 9.27498C21.6528 9.26706 21.6451 9.2589 21.6377 9.25098C21.6147 9.22476 21.5917 9.1983 21.5689 9.17208L21.5704 9.16466L21.5625 9.16293C21.5635 9.15575 21.5602 9.15204 21.5528 9.15204C21.5476 9.14685 21.5427 9.14165 21.5375 9.13646L21.536 9.12904L21.5286 9.12731C21.5231 9.12187 21.5179 9.11642 21.5125 9.11098L21.5117 9.10406L21.505 9.10282C21.4993 9.09664 21.4934 9.0902 21.4877 9.08402L21.4825 9.07808C21.4761 9.07116 21.4696 9.06423 21.4632 9.05731L21.4595 9.0531C21.4528 9.04568 21.4459 9.03801 21.4392 9.03059L21.437 9.02787C21.4295 9.02021 21.4221 9.01229 21.4149 9.00462L21.4132 9.00289C21.4055 8.99522 21.3979 8.98755 21.3902 8.97989C21.2828 8.87204 21.1753 8.76445 21.0677 8.6566C21.0597 8.64918 21.0516 8.64201 21.0436 8.63459L21.0412 8.63236C21.0337 8.62544 21.0261 8.61851 21.0186 8.61183L21.0147 8.60837C21.0078 8.60144 21.0006 8.59476 20.9936 8.58784L20.9894 8.58363C20.9825 8.57696 20.9756 8.57003 20.9689 8.56335L20.9642 8.5589C20.9575 8.55272 20.9508 8.54678 20.9441 8.54059L20.9419 8.53416H20.9352C20.9345 8.52501 20.9293 8.52056 20.9201 8.5213C20.9194 8.51289 20.9147 8.50869 20.9065 8.50869L20.9045 8.49953L20.8954 8.4978C20.8954 8.48989 20.8914 8.48618 20.8835 8.48618L20.8474 8.45551C20.8392 8.44809 20.8308 8.44067 20.8226 8.43324C20.8139 8.42632 20.8053 8.41915 20.7964 8.41222L20.7934 8.40975C20.786 8.40282 20.7785 8.3959 20.7711 8.38922L20.7672 8.38575C20.7602 8.37932 20.753 8.37289 20.7461 8.36646L20.7402 8.36127C20.7337 8.35533 20.7275 8.34964 20.7211 8.3437L20.7191 8.33703L20.7122 8.33653L20.7095 8.32763L20.7003 8.32713C20.6738 8.30512 20.6476 8.2831 20.6211 8.26109C20.6134 8.25466 20.6058 8.24823 20.5981 8.24204L20.5919 8.23759L20.5731 8.22151L20.5706 8.21459L20.5634 8.21434C20.5508 8.20469 20.5379 8.1948 20.5253 8.18515C20.5164 8.17749 20.5075 8.16982 20.4986 8.16215C20.4904 8.15572 20.4825 8.14929 20.4743 8.14286L20.4681 8.1389C20.462 8.1337 20.4555 8.12826 20.4493 8.12307L20.4468 8.11614L20.4394 8.11565C20.4268 8.10625 20.4142 8.0966 20.4016 8.0872C20.3929 8.08028 20.3842 8.07335 20.3758 8.06643L20.3726 8.0642C20.3652 8.05826 20.3577 8.05257 20.3506 8.04664L20.3481 8.03996H20.3412L20.3387 8.0313L20.33 8.03204C20.3214 8.02561 20.3129 8.01918 20.3043 8.01275C20.2954 8.00558 20.2862 7.9984 20.2773 7.99148L20.2748 7.98975C20.2671 7.98381 20.2597 7.97787 20.252 7.97194L20.2501 7.966L20.2439 7.96699C20.2305 7.95784 20.2171 7.94869 20.2038 7.93954C20.1954 7.93236 20.1867 7.92519 20.1783 7.91826L20.1751 7.91604C20.1676 7.91035 20.1605 7.90466 20.153 7.89872L20.1508 7.89254L20.1441 7.89303C20.131 7.88438 20.1176 7.87572 20.1045 7.86682L20.1025 7.86558C20.0946 7.85964 20.0867 7.85371 20.079 7.84777L20.0713 7.84307C20.0577 7.83392 20.0444 7.82477 20.0308 7.81537C20.0223 7.80894 20.0134 7.80226 20.005 7.79583L19.9996 7.79261C19.9939 7.78841 19.9882 7.78395 19.9822 7.77975C19.9743 7.77505 19.9661 7.77035 19.9582 7.76565C19.9491 7.75897 19.9399 7.75254 19.931 7.74586L19.9265 7.74314C19.9204 7.73869 19.9142 7.73399 19.908 7.72954C19.8998 7.72533 19.8914 7.72113 19.8832 7.71667L19.8567 7.69788L19.851 7.69392C19.8446 7.68897 19.8384 7.68378 19.832 7.67883C19.8307 7.67166 19.8265 7.66894 19.8196 7.67116C19.8072 7.66325 19.7951 7.65558 19.7827 7.64766L19.7773 7.64494L19.734 7.61872L19.733 7.61823C19.7248 7.61254 19.7166 7.6066 19.7082 7.60091L19.7003 7.59646C19.6867 7.5878 19.6731 7.5794 19.6595 7.57074C19.6439 7.56159 19.628 7.55243 19.6124 7.54328C19.6033 7.5371 19.5939 7.53067 19.5847 7.52448L19.5793 7.52176C19.5647 7.51335 19.5503 7.50494 19.5357 7.49653C19.5075 7.47996 19.479 7.46364 19.4508 7.44706C19.4379 7.43915 19.4248 7.43099 19.4119 7.42307L19.4092 7.42159C19.4023 7.41713 19.3956 7.41243 19.3887 7.40798C19.3513 7.38795 19.3139 7.36816 19.2765 7.34812C19.2639 7.3407 19.2513 7.33304 19.2387 7.32561L19.234 7.32339L19.1894 7.29915L19.1864 7.29791C19.1708 7.28975 19.1555 7.28183 19.1399 7.27367C19.0072 7.20738 18.8745 7.14134 18.7419 7.07505C18.726 7.06763 18.7102 7.06021 18.6943 7.05279L18.6899 7.05106C18.675 7.04463 18.6602 7.03819 18.6451 7.03176C18.555 6.99639 18.4646 6.96127 18.3745 6.9259C18.3656 6.91848 18.3567 6.9113 18.3478 6.90388L18.3441 6.90265C18.329 6.89622 18.3139 6.88978 18.2988 6.88335C18.2829 6.88113 18.2671 6.87865 18.2513 6.87643C18.2423 6.86901 18.2332 6.86183 18.2243 6.85441L18.2206 6.85318C18.2052 6.8465 18.1899 6.83982 18.1748 6.83314L18.1656 6.83042C18.1441 6.82226 18.1223 6.8141 18.1008 6.80618L18.0953 6.8047L18.0268 6.78046L18.023 6.77922C17.9995 6.77229 17.976 6.76562 17.9525 6.75869C17.9371 6.75671 17.9218 6.75473 17.9062 6.75275C17.8805 6.73865 17.8547 6.72456 17.829 6.71046C17.7961 6.70007 17.7629 6.68968 17.73 6.67904C17.7052 6.67113 17.6805 6.66297 17.6559 6.65505L17.6545 6.65456L17.5817 6.63106L17.5795 6.63032L17.5074 6.6083L17.5017 6.60706C17.4706 6.59989 17.4394 6.59297 17.4084 6.58579C17.3599 6.57565 17.3114 6.56551 17.2626 6.55512C17.2535 6.5477 17.2443 6.54053 17.2351 6.53311L17.2312 6.53212C17.1995 6.5242 17.1678 6.51604 17.1364 6.50812L17.1327 6.50738C17.0926 6.50046 17.0525 6.49353 17.0124 6.48661C17.0047 6.48314 16.9968 6.48166 16.9884 6.48191C16.9715 6.47523 16.9547 6.4688 16.9381 6.46212C16.9139 6.46039 16.8896 6.45865 16.8653 6.45692C16.8483 6.45 16.8312 6.44307 16.8141 6.43615L16.7418 6.43194C16.7247 6.42502 16.7077 6.41809 16.6906 6.41116C16.6587 6.40968 16.6265 6.4082 16.5945 6.40696C16.5772 6.40053 16.5599 6.39385 16.5423 6.38742C16.5178 6.38593 16.4936 6.38445 16.469 6.38297L16.3938 6.36268C16.37 6.35996 16.3463 6.35724 16.3225 6.35452C16.2715 6.34116 16.2205 6.32781 16.1695 6.3142C16.072 6.30381 15.9745 6.29343 15.877 6.28279C15.7688 6.27314 15.6606 6.26325 15.5524 6.2536C15.4611 6.24866 15.3695 6.24371 15.2782 6.23876C15.0735 6.23876 14.8685 6.23876 14.6638 6.23901C14.5881 6.24544 14.5123 6.25187 14.4368 6.25855C14.422 6.25929 14.4071 6.26003 14.3923 6.26078C14.3079 6.26721 14.2237 6.27388 14.1393 6.28032C14.0871 6.28328 14.0346 6.28601 13.9821 6.28897C13.97 6.29343 13.9576 6.29788 13.9455 6.30233C13.9368 6.30456 13.9281 6.30703 13.9195 6.30926C13.8635 6.31 13.8076 6.31074 13.7517 6.31148C13.7418 6.31767 13.7319 6.3236 13.722 6.32979C13.713 6.33919 13.7039 6.34858 13.695 6.35823C13.6705 6.35971 13.6457 6.36145 13.6212 6.36293L13.6234 6.35328C13.6069 6.35353 13.5905 6.35378 13.5739 6.35427C13.565 6.36392 13.5559 6.37357 13.547 6.38297L13.4729 6.38791L13.4752 6.37851C13.467 6.37802 13.4586 6.37752 13.4504 6.37703C13.441 6.38717 13.4316 6.39707 13.4219 6.40721C13.3977 6.40894 13.3734 6.41042 13.3492 6.41215L13.3514 6.40275C13.3432 6.40226 13.3348 6.40201 13.3267 6.40152C13.3017 6.41191 13.2767 6.42229 13.2514 6.43268C13.243 6.43441 13.2346 6.43615 13.2262 6.43788C13.2012 6.44431 13.1759 6.45074 13.1509 6.45692C13.1108 6.45742 13.0705 6.45767 13.0304 6.45816C13.0138 6.4641 12.9972 6.47003 12.9804 6.47597C12.9734 6.48067 12.966 6.48314 12.9576 6.48339L12.9301 6.50293C12.9212 6.50565 12.9125 6.50837 12.9036 6.51109L12.9061 6.50145L12.8813 6.50021C12.8747 6.50516 12.867 6.50788 12.8586 6.50837C12.8494 6.5148 12.8403 6.52148 12.8311 6.52791C12.8224 6.53088 12.814 6.53385 12.8054 6.53657C12.7885 6.543 12.7717 6.54943 12.7549 6.55562C12.7467 6.55562 12.7388 6.55735 12.7313 6.56106C12.7073 6.55982 12.6833 6.55858 12.6596 6.55735C12.643 6.56279 12.6264 6.56823 12.6098 6.57342L12.5633 6.58282C12.5534 6.58827 12.5437 6.59346 12.5338 6.5989V6.60954C12.518 6.60855 12.5021 6.60781 12.4863 6.60682C12.4781 6.61053 12.47 6.61399 12.4618 6.6177C12.4608 6.62215 12.4598 6.62685 12.4591 6.6313C12.4425 6.6313 12.4261 6.63081 12.4096 6.63056C12.4014 6.63081 12.3942 6.63378 12.3885 6.63971C12.3875 6.64491 12.3863 6.65035 12.3848 6.65555C12.3685 6.65555 12.3524 6.65555 12.336 6.65555C12.3199 6.66148 12.3039 6.66742 12.2878 6.67335C12.2786 6.67558 12.2695 6.67781 12.2603 6.67979C12.2445 6.68572 12.2286 6.69191 12.2125 6.69784L12.2118 6.70996C12.1952 6.71615 12.1786 6.72208 12.162 6.72827C12.1457 6.72876 12.1294 6.72901 12.1133 6.7295C12.0972 6.73519 12.0813 6.74088 12.0652 6.74657C12.0571 6.74904 12.0487 6.75152 12.0405 6.75399C12.0239 6.76067 12.0073 6.76735 11.9907 6.77378C11.9843 6.77872 11.9769 6.7807 11.9687 6.77971C11.9595 6.7854 11.9504 6.79134 11.9412 6.79703C11.9316 6.79876 11.9219 6.80074 11.9125 6.80247C11.8974 6.80841 11.8826 6.81459 11.8675 6.82053C11.8593 6.823 11.8511 6.82547 11.8427 6.82795C11.834 6.83388 11.8251 6.84007 11.8165 6.846L11.8167 6.85664C11.7996 6.86307 11.7826 6.8695 11.7655 6.87569C11.7321 6.88434 11.6986 6.89275 11.6652 6.90141C11.6501 6.90759 11.635 6.91353 11.6199 6.91971C11.5947 6.93035 11.5694 6.94099 11.5439 6.95162L11.4959 6.97042C11.4788 6.98056 11.462 6.99145 11.4444 7.00035C11.2798 7.0842 11.1152 7.16781 10.9506 7.25141C10.9355 7.25858 10.9207 7.26576 10.9056 7.27318L10.9011 7.27516C10.8905 7.28159 10.8801 7.28777 10.8694 7.2942C10.8301 7.31498 10.791 7.33576 10.7516 7.35653C10.7444 7.36123 10.737 7.36618 10.7298 7.37088L10.7276 7.37212L10.6815 7.39636C10.5731 7.4619 10.4645 7.52745 10.356 7.593L10.3117 7.61922L10.3075 7.62144C10.2979 7.62788 10.2882 7.63455 10.2786 7.64098C10.2464 7.66201 10.2145 7.68279 10.1823 7.70381C10.1746 7.70826 10.1669 7.71272 10.1593 7.71717C10.1174 7.74586 10.0756 7.77455 10.034 7.80325C10.0283 7.80795 10.0224 7.8124 10.0167 7.8171L10.011 7.82056C10.0018 7.82699 9.99292 7.83342 9.98376 7.83961L9.95926 7.85494L9.94836 7.85643L9.9444 7.86682L9.93722 7.87151C9.92881 7.8777 9.92064 7.88388 9.91223 7.89007C9.89539 7.90169 9.87856 7.91332 9.86173 7.92494C9.85529 7.93014 9.84911 7.93558 9.84267 7.94077L9.83797 7.94424C9.8293 7.95091 9.82064 7.95735 9.81197 7.96402C9.80356 7.96452 9.7949 7.96501 9.78648 7.96526C9.7793 7.9707 9.77212 7.97639 9.76494 7.98183C9.73103 8.01275 9.69737 8.04342 9.66346 8.07434C9.65702 8.07929 9.65083 8.08423 9.6444 8.08918L9.64019 8.0919C9.63177 8.09883 9.62311 8.10551 9.61469 8.11243C9.59761 8.12604 9.58053 8.13964 9.56321 8.15325L9.55355 8.15399L9.55108 8.16363H9.5439L9.54192 8.17081C9.53474 8.1765 9.52781 8.18219 9.52063 8.18787L9.51642 8.19084C9.50801 8.19777 9.49959 8.20445 9.49118 8.21137C9.48326 8.21211 9.47533 8.21261 9.46741 8.2131C9.459 8.22028 9.45083 8.22745 9.44241 8.23462L9.43944 8.23685C9.43202 8.24303 9.42434 8.24897 9.41692 8.25515C9.41741 8.25985 9.41766 8.2648 9.41791 8.2695C9.41122 8.27519 9.40454 8.28113 9.3981 8.28681L9.39291 8.29102C9.38548 8.2977 9.37805 8.30413 9.37063 8.31081L9.36766 8.31328C9.35924 8.32045 9.35107 8.32763 9.34266 8.3348C9.33474 8.33554 9.32682 8.33628 9.3189 8.33653C9.31048 8.3437 9.30206 8.35063 9.2939 8.3578L9.29092 8.36028C9.2835 8.36696 9.27607 8.37363 9.26865 8.38031L9.26394 8.38452C9.25726 8.3907 9.25033 8.39688 9.24365 8.40332C9.24414 8.40826 9.24464 8.41346 9.24513 8.41865C9.23894 8.42434 9.23275 8.43003 9.22632 8.43547L9.22013 8.44067C9.21295 8.4471 9.20577 8.45353 9.1986 8.45971L9.19488 8.46293L9.17161 8.48395C9.14637 8.50077 9.12137 8.51759 9.09612 8.53441C9.08795 8.54183 9.07978 8.54925 9.07161 8.55667L9.06939 8.5584C9.06171 8.56533 9.05379 8.57201 9.04612 8.57893L9.04191 8.5824C9.03498 8.58908 9.02805 8.59575 9.02087 8.60268L9.01641 8.60713C9.00973 8.61381 9.0028 8.62074 8.99612 8.62741L8.99166 8.63187C8.98498 8.6383 8.97805 8.64498 8.97136 8.65141C8.97186 8.6566 8.97235 8.66204 8.9726 8.66724C8.96666 8.67243 8.96072 8.67763 8.95478 8.68282L8.9481 8.68851C8.94166 8.69469 8.93522 8.70113 8.92879 8.70731L8.92334 8.71275C8.91691 8.71918 8.91047 8.72561 8.90404 8.73204L8.89859 8.73773C8.89215 8.74416 8.88597 8.75035 8.87953 8.75678L8.87384 8.76247L8.85453 8.78151L8.84908 8.78646C8.8424 8.79289 8.83572 8.79957 8.82903 8.806L8.82433 8.8107C8.81765 8.81738 8.81096 8.82406 8.80428 8.83074L8.79958 8.83544C8.79314 8.84211 8.78646 8.84879 8.78002 8.85547L8.77507 8.86091C8.76888 8.86734 8.76245 8.87377 8.75626 8.88021L8.75032 8.88589C8.74388 8.89233 8.7377 8.89851 8.73126 8.90494L8.72557 8.91063C8.71913 8.91706 8.71294 8.92324 8.70651 8.92968L8.70081 8.93536L8.68225 8.95466L8.67606 8.95589V8.96233C8.67136 8.96777 8.66665 8.97346 8.66195 8.9789C8.65651 8.9789 8.65106 8.9784 8.64586 8.97791C8.63918 8.98483 8.63225 8.99176 8.62556 8.99869L8.6216 9.00264C8.61467 9.00957 8.60774 9.0165 8.60081 9.02342L8.59685 9.02738C8.58992 9.03455 8.58299 9.04172 8.57631 9.0489L8.57333 9.05236C8.5664 9.06028 8.55923 9.06844 8.55229 9.07635C8.54363 9.09293 8.53497 9.10925 8.5263 9.12582C8.51863 9.13423 8.51096 9.14264 8.50328 9.15105L8.50205 9.15254C8.49462 9.16045 8.48695 9.16812 8.47952 9.17604L8.47754 9.17801C8.47061 9.18568 8.46343 9.1936 8.4565 9.20127L8.45378 9.20522C8.44784 9.2124 8.4419 9.21957 8.43596 9.2265L8.42952 9.22748L8.42927 9.23391C8.42383 9.2396 8.41838 9.24554 8.41269 9.25123C8.40774 9.25098 8.40279 9.25049 8.39784 9.24975L8.37828 9.27151L8.37531 9.27473C8.36838 9.28264 8.3612 9.29031 8.35427 9.29823C8.34586 9.31554 8.33744 9.33285 8.32902 9.35017C8.32234 9.35833 8.31541 9.36625 8.30873 9.37441L8.30526 9.37886C8.29957 9.38579 8.29363 9.39271 8.28793 9.39939C8.28274 9.3989 8.27779 9.3984 8.27283 9.39791C8.26665 9.40483 8.26046 9.41176 8.25427 9.41868L8.25056 9.42314C8.24387 9.43081 8.23694 9.43872 8.23026 9.44639L8.22853 9.44837C8.2211 9.45702 8.21392 9.46568 8.2065 9.47434C8.206 9.4825 8.20575 9.49066 8.20526 9.49883C8.19882 9.50699 8.19263 9.5149 8.1862 9.52307L8.18199 9.529C8.17729 9.53444 8.17258 9.54013 8.16788 9.54558C8.13595 9.57946 8.10402 9.61335 8.07233 9.64748C8.06714 9.65441 8.06169 9.66109 8.05649 9.66801L8.05451 9.67073L8.03298 9.69646C8.03248 9.70437 8.03248 9.71229 8.03298 9.7202L8.03174 9.72169L8.01144 9.74568L8.00822 9.75013C8.00327 9.75632 7.99808 9.7625 7.99313 9.76868L7.92332 9.84561C7.91812 9.85229 7.91293 9.85897 7.90773 9.86565L7.9055 9.86886C7.89857 9.87777 7.89164 9.88692 7.88446 9.89582C7.88446 9.90349 7.88495 9.91091 7.8857 9.91858L7.88396 9.92105C7.87852 9.92798 7.87307 9.9349 7.86763 9.94208C7.84535 9.96755 7.82332 9.99303 7.80104 10.0185C7.7956 10.0259 7.79015 10.0333 7.78446 10.0408C7.78421 10.0492 7.78396 10.0573 7.78347 10.0658C7.77678 10.0747 7.7701 10.0833 7.76342 10.0922L7.76069 10.0967C7.75624 10.1026 7.75178 10.1088 7.74708 10.1147C7.74262 10.1229 7.73817 10.1308 7.73371 10.139L7.71465 10.1664L7.71119 10.1719C7.70698 10.1773 7.70302 10.183 7.69881 10.1884C7.66886 10.2367 7.63866 10.2849 7.60871 10.3331C7.60203 10.3433 7.5951 10.3537 7.58841 10.3638L7.58693 10.3665C7.58049 10.3742 7.57406 10.3816 7.56762 10.3893L7.56218 10.3915C7.55549 10.3987 7.54856 10.4056 7.54188 10.4128L7.53718 10.4397C7.53346 10.4464 7.52975 10.4531 7.52604 10.4598L7.51193 10.4877C7.50524 10.4959 7.49856 10.5043 7.49163 10.5125L7.48767 10.5142C7.48099 10.5216 7.4743 10.5288 7.46762 10.5362C7.46613 10.5459 7.46465 10.5553 7.46341 10.5649C7.454 10.5679 7.45128 10.5738 7.45475 10.5825C7.4493 10.5924 7.44361 10.6025 7.43816 10.6124C7.43148 10.6203 7.42455 10.6285 7.41787 10.6364L7.41391 10.6381C7.40722 10.6453 7.40054 10.6527 7.39386 10.6599C7.38049 10.6851 7.36712 10.7103 7.35376 10.7358C7.3488 10.7432 7.3441 10.7507 7.33915 10.7583C7.33915 10.768 7.3394 10.7776 7.33965 10.7875L7.32158 10.8098L7.31514 10.8125C7.3087 10.8194 7.30227 10.8261 7.29608 10.833C7.29385 10.8412 7.29163 10.8494 7.2894 10.8575C7.28321 10.8659 7.27702 10.8741 7.27083 10.8825C7.20276 11.0225 7.13469 11.1623 7.06687 11.3023C7.06068 11.3107 7.05474 11.3191 7.04855 11.3275C7.04657 11.3445 7.04459 11.3614 7.04286 11.3784C7.03395 11.3943 7.02479 11.4101 7.01588 11.4262L7.01687 11.4254C7.01043 11.4341 7.004 11.4427 6.99756 11.4514C6.98766 11.4756 6.97751 11.4999 6.96761 11.5241L6.94929 11.5503C6.94756 11.5674 6.94583 11.5845 6.94385 11.6013C6.93518 11.6171 6.92652 11.6332 6.91761 11.649L6.9181 11.6488C6.91191 11.6572 6.90597 11.6656 6.89979 11.674C6.89805 11.6916 6.89632 11.7089 6.89459 11.7265C6.89211 11.7326 6.88964 11.7386 6.88691 11.7448C6.88097 11.7542 6.87503 11.7636 6.86884 11.773C6.86266 11.7811 6.85622 11.7895 6.85003 11.7977C6.84805 11.8143 6.84607 11.8306 6.84409 11.8472C6.84063 11.8546 6.83716 11.8623 6.83369 11.8697C6.82874 11.8783 6.82404 11.887 6.81909 11.8959L6.80102 11.9214C6.79855 11.9372 6.79632 11.953 6.79384 11.9686C6.7879 11.9775 6.78171 11.9864 6.77577 11.9956C6.7733 12.0109 6.77107 12.0262 6.76859 12.0416C6.76241 12.051 6.75622 12.0604 6.75003 12.0698C6.7483 12.0863 6.74681 12.1029 6.74508 12.1195C6.74211 12.1267 6.73939 12.1338 6.73642 12.141L6.72008 12.1682C6.7134 12.1766 6.70671 12.185 6.70003 12.1935C6.69607 12.2105 6.69211 12.2273 6.68815 12.2444C6.68394 12.255 6.67998 12.2659 6.67577 12.2766C6.67849 12.2818 6.68245 12.286 6.68716 12.2892C6.67973 12.2988 6.67231 12.3087 6.66463 12.3184C6.65869 12.3349 6.6525 12.3515 6.64656 12.3681C6.6483 12.3757 6.65077 12.3834 6.65374 12.3906C6.64706 12.4 6.64037 12.4091 6.63369 12.4185C6.62998 12.4274 6.62651 12.4361 6.6228 12.445C6.61092 12.4853 6.59904 12.5259 6.5874 12.5662C6.58369 12.5766 6.57998 12.5867 6.57626 12.5971C6.57923 12.6026 6.58295 12.607 6.5879 12.6107C6.57899 12.629 6.56983 12.6473 6.56092 12.6656C6.5572 12.675 6.55374 12.6842 6.55003 12.6936C6.55275 12.6995 6.55597 12.7055 6.55968 12.7109C6.55547 12.7196 6.55126 12.7282 6.54706 12.7371C6.54037 12.7455 6.53394 12.7539 6.52725 12.7621L6.52824 12.7876C6.52478 12.7957 6.52527 12.8037 6.53022 12.8111C6.52527 12.8197 6.52032 12.8286 6.51537 12.8373C6.50968 12.8457 6.50374 12.8541 6.49804 12.8625C6.48913 12.9197 6.47997 12.9766 6.47106 13.0337L6.452 13.0842C6.44903 13.1007 6.44582 13.1173 6.44285 13.1339C6.43666 13.143 6.43047 13.1519 6.42453 13.1611C6.42379 13.193 6.42329 13.2249 6.42255 13.2566C6.41611 13.2734 6.40968 13.29 6.40324 13.3068C6.40374 13.3152 6.40448 13.3233 6.40497 13.3318C6.40176 13.3402 6.40275 13.3478 6.40794 13.355C6.40324 13.3639 6.39854 13.3726 6.39359 13.3815C6.3874 13.3904 6.38096 13.3993 6.37477 13.4079C6.37675 13.4238 6.37874 13.4396 6.38072 13.4554C6.37775 13.4797 6.37453 13.5039 6.37156 13.5284C6.36537 13.5452 6.35943 13.562 6.35324 13.5791C6.34953 13.6122 6.34581 13.6454 6.34185 13.6788C6.33616 13.6872 6.33047 13.6956 6.32477 13.704C6.32601 13.7201 6.327 13.7362 6.32824 13.7522C6.32552 13.8005 6.32255 13.849 6.31982 13.8972C6.31809 13.9081 6.31636 13.9192 6.31463 13.9301C6.30695 14.0011 6.29928 14.0721 6.29185 14.1431C6.28987 14.1544 6.28789 14.1656 6.28591 14.1769C6.24136 14.6511 6.23145 15.126 6.26809 15.6012C6.28542 15.8255 6.30819 16.0496 6.32849 16.2737C6.33393 16.2908 6.33963 16.3079 6.34507 16.3249C6.34779 16.3573 6.35027 16.3897 6.35299 16.4221C6.35869 16.4392 6.36413 16.4563 6.36982 16.4733C6.38987 16.5881 6.40968 16.7029 6.42973 16.8176C6.43542 16.8345 6.44087 16.851 6.44656 16.8679C6.49879 17.0821 6.55102 17.2963 6.60324 17.5107C6.60894 17.5196 6.61463 17.5285 6.62032 17.5372C6.63047 17.5778 6.64087 17.6183 6.65102 17.6589C6.65721 17.6683 6.66315 17.6774 6.66934 17.6868L6.75028 17.9557C6.75647 17.9646 6.76265 17.9738 6.76884 17.9827C6.77132 17.9985 6.77355 18.0143 6.77602 18.0299L6.79434 18.0549C6.80424 18.0878 6.81414 18.1207 6.82404 18.1533C6.83023 18.1625 6.83667 18.1716 6.84285 18.1805C6.853 18.2127 6.86315 18.2449 6.87305 18.2768C6.87949 18.2859 6.88592 18.2948 6.89236 18.304C6.90251 18.3361 6.91291 18.3683 6.92305 18.4004C6.92949 18.4091 6.93568 18.418 6.94211 18.4267C6.9686 18.492 6.99508 18.5575 7.02157 18.6228L7.04113 18.649C7.08444 18.7475 7.12776 18.8457 7.17083 18.9441C7.17727 18.9518 7.18395 18.9594 7.19039 18.9671C7.24162 19.0665 7.29262 19.166 7.34385 19.2654C7.35029 19.2726 7.35673 19.2795 7.36291 19.2867C7.3894 19.3374 7.41589 19.3879 7.44237 19.4386C7.44905 19.446 7.45599 19.4534 7.46267 19.4608C7.47158 19.4747 7.48099 19.4883 7.4894 19.5024C7.82381 20.0621 8.21442 20.5793 8.66715 21.0488C8.83819 21.2262 9.0179 21.3948 9.19365 21.5675C9.20206 21.5747 9.21048 21.5821 9.21889 21.5893C9.30924 21.6652 9.39984 21.7411 9.49019 21.8173C9.49786 21.824 9.50553 21.8304 9.51345 21.8371C9.69613 21.9724 9.87881 22.1075 10.0617 22.2425C10.0684 22.2477 10.0751 22.2527 10.0818 22.2578L10.0843 22.2593C10.0939 22.2663 10.1036 22.2732 10.113 22.2801C10.1513 22.3026 10.1897 22.3249 10.2278 22.3476C10.3288 22.408 10.4296 22.4686 10.5303 22.5289C10.5387 22.5364 10.5469 22.544 10.5553 22.5515L10.556 22.5532C10.5637 22.5601 10.5714 22.567 10.5791 22.574C10.6189 22.5942 10.6588 22.6148 10.6989 22.6346C10.9288 22.7486 11.159 22.8624 11.389 22.9762C11.3994 22.9841 11.4095 22.992 11.4199 22.9997L11.4194 22.9989C11.4279 23.0056 11.4365 23.0123 11.4449 23.0189C11.4788 23.033 11.513 23.0471 11.5469 23.0612C11.5524 23.0677 11.5595 23.0714 11.568 23.0724L11.5798 23.0711L11.5917 23.0731L11.6182 23.0929C11.6504 23.1028 11.6826 23.1127 11.7147 23.1228C11.7239 23.1295 11.7328 23.1359 11.742 23.1426C11.7917 23.1624 11.8417 23.1822 11.8915 23.2017L11.9397 23.2203C11.9479 23.2208 11.9561 23.2213 11.9642 23.2218L11.9638 23.221C11.9722 23.2277 11.9808 23.2341 11.9892 23.2408C12.0227 23.2524 12.0561 23.2638 12.0892 23.2754C12.1063 23.2814 12.1232 23.2876 12.1402 23.2935C12.1571 23.2984 12.1737 23.3034 12.1905 23.3083C12.1984 23.3118 12.2063 23.315 12.2143 23.3185C12.2222 23.3205 12.2301 23.3224 12.238 23.3244C12.2546 23.3309 12.2714 23.337 12.288 23.3435C12.2962 23.3454 12.3041 23.3474 12.3123 23.3492C12.3294 23.3553 12.3464 23.3615 12.3635 23.3677C12.3959 23.3778 12.4284 23.3882 12.4605 23.3984L12.5162 23.4142C12.5214 23.4115 12.5264 23.4085 12.5313 23.4053C12.54 23.4098 12.5487 23.4145 12.5573 23.4189C12.566 23.4256 12.5747 23.4323 12.5831 23.4387C12.5999 23.4419 12.617 23.4451 12.6338 23.4481C12.6526 23.4535 12.6714 23.459 12.6903 23.4644C12.7044 23.4637 12.7182 23.4627 12.7323 23.4619L12.7313 23.4726C12.7494 23.4783 12.7675 23.4842 12.7858 23.4899C12.7922 23.4874 12.7982 23.4849 12.8044 23.482C12.8135 23.4877 12.8229 23.4934 12.8321 23.499C12.8494 23.5045 12.8667 23.5097 12.8841 23.5151C12.8905 23.5127 12.8972 23.5099 12.9034 23.507C12.9125 23.5127 12.9219 23.5183 12.9311 23.524C12.9484 23.5292 12.9658 23.5344 12.9831 23.5396C12.9903 23.5371 12.9972 23.5347 13.0044 23.5319L13.0039 23.5438C13.021 23.5512 13.0378 23.5587 13.0549 23.5658C13.0628 23.5639 13.071 23.5619 13.0789 23.5601L13.0908 23.5616L13.1019 23.5572C13.1108 23.5619 13.1197 23.5663 13.1286 23.571C13.1405 23.5787 13.1524 23.5866 13.1643 23.5943C13.1771 23.5913 13.19 23.5881 13.2029 23.5851C13.2111 23.5881 13.2195 23.5911 13.2276 23.594L13.2883 23.619C13.3009 23.616 13.3138 23.6131 13.3264 23.6099L13.3383 23.6121L13.3497 23.6081C13.3583 23.6123 13.3672 23.6165 13.3759 23.6207C13.3846 23.6272 13.3932 23.6334 13.4019 23.6398L13.3999 23.639Z"
        fill="#2D4663"
      />
      <path
        d="M11.1986 18.9481C11.1491 18.9295 11.0996 18.911 11.0501 18.8924C11.0417 18.8852 11.0333 18.8783 11.0246 18.8711L11.0197 18.8689C11.0048 18.8612 10.99 18.8533 10.9754 18.8457L10.9714 18.8439C10.9563 18.8363 10.9412 18.8283 10.9261 18.8207L10.9226 18.8189C10.9073 18.811 10.8919 18.8031 10.8766 18.7952C10.8283 18.7692 10.7803 18.7435 10.732 18.7175C10.7224 18.7114 10.7127 18.7052 10.7031 18.699L10.6974 18.696C10.683 18.6876 10.6687 18.679 10.6541 18.6705C10.6385 18.6616 10.6231 18.6525 10.6075 18.6436C10.5981 18.6369 10.5887 18.6302 10.5793 18.6235L10.5749 18.6208C10.5689 18.6169 10.5632 18.6129 10.5573 18.609C10.5486 18.6043 10.54 18.5993 10.5313 18.5946C10.5226 18.5884 10.5137 18.582 10.5051 18.5756L10.4986 18.5714C10.4976 18.5617 10.4922 18.5577 10.4828 18.5592C10.4744 18.5545 10.4659 18.5496 10.4578 18.5449C10.4489 18.5382 10.4397 18.5315 10.4308 18.5249L10.4263 18.5216C10.4202 18.5167 10.414 18.5117 10.4075 18.5068C10.39 18.4952 10.3724 18.4833 10.3548 18.4717C10.3471 18.4657 10.3395 18.4596 10.3315 18.4536L10.3234 18.4479L10.3199 18.4388L10.3103 18.438C10.3016 18.4323 10.2929 18.4269 10.2845 18.4212C10.2756 18.414 10.2667 18.4069 10.2578 18.3997L10.2553 18.3977C10.2476 18.3913 10.2402 18.3849 10.2325 18.3784L10.2263 18.3737C10.2202 18.3685 10.214 18.3631 10.2078 18.3579C10.2063 18.3515 10.2023 18.3485 10.1959 18.3487L10.1947 18.3416L10.1882 18.3428C10.1791 18.3359 10.1699 18.329 10.1607 18.3223C10.1518 18.3151 10.1429 18.3079 10.134 18.3008L10.1313 18.2988C10.1239 18.2921 10.1164 18.2854 10.1088 18.2787L10.1043 18.2745C10.0976 18.2686 10.0907 18.2624 10.084 18.2565L10.082 18.2505L10.0758 18.2498C10.0704 18.2446 10.065 18.2397 10.0595 18.2345C10.0583 18.2278 10.0543 18.2246 10.0476 18.2248L10.0464 18.2176L10.0397 18.2189C9.99688 18.1793 9.95406 18.1397 9.91099 18.1002C9.90282 18.0925 9.8949 18.0848 9.88673 18.0772L9.88524 18.0757C9.87757 18.0682 9.86965 18.0606 9.86198 18.0529L9.86 18.0509C9.85232 18.0433 9.8449 18.0356 9.83722 18.0279L9.83549 18.0259C9.82782 18.0183 9.82014 18.0104 9.81272 18.0027C9.75826 17.9436 9.70356 17.8847 9.6491 17.8256L9.64786 17.8164L9.6387 17.814C9.6392 17.8078 9.63623 17.8043 9.63004 17.8041C9.6246 17.7979 9.61915 17.7917 9.6137 17.7855L9.609 17.7796C9.60256 17.7719 9.59613 17.7643 9.58969 17.7568C9.56841 17.7304 9.54712 17.7039 9.52583 17.6774C9.52756 17.6688 9.52385 17.6641 9.51469 17.6636L9.50925 17.6562C9.50306 17.6487 9.49687 17.6413 9.49068 17.6337C9.47632 17.6146 9.46172 17.5956 9.44736 17.5765L9.4486 17.5691L9.44068 17.5674C9.44167 17.5612 9.43919 17.5577 9.43301 17.557C9.42731 17.5498 9.42187 17.5426 9.41618 17.5355L9.4137 17.532C9.40677 17.5228 9.39984 17.5139 9.39291 17.5048C9.38672 17.4959 9.38078 17.4872 9.37459 17.4783V17.4694L9.36593 17.4662L9.36073 17.458C9.35479 17.4496 9.3486 17.4415 9.34266 17.4331C9.33622 17.4232 9.33003 17.4133 9.32385 17.4034L9.32484 17.3955L9.31667 17.3927V17.3866L9.31097 17.3838C9.30503 17.3757 9.29909 17.3673 9.29315 17.3591C9.28746 17.3494 9.28177 17.3398 9.27607 17.3299V17.3205L9.26716 17.3166L9.26295 17.3096C9.25677 17.3007 9.25058 17.2918 9.24414 17.2829C9.23919 17.2743 9.23424 17.2653 9.22929 17.2567C9.23152 17.2473 9.22756 17.2418 9.2179 17.2404L9.21493 17.2352C9.20874 17.2253 9.20231 17.2151 9.19587 17.2052C9.17261 17.1639 9.14934 17.1229 9.12632 17.0818L9.12731 17.0724L9.11864 17.0677L9.11592 17.0623C9.10973 17.0521 9.1033 17.0417 9.09711 17.0316C9.06963 16.9755 9.0424 16.9191 9.01493 16.8629C9.008 16.8483 9.00131 16.8337 8.99438 16.8191L8.9929 16.8149C8.98547 16.7996 8.9778 16.7843 8.97037 16.7689C8.96666 16.7585 8.96295 16.7484 8.95948 16.7382C8.95552 16.7306 8.95131 16.7227 8.94735 16.7147C8.93696 16.69 8.92656 16.6653 8.91616 16.6405C8.90973 16.625 8.90329 16.6096 8.89686 16.594C8.80502 16.3685 8.73101 16.1374 8.68819 15.8973C8.68398 15.8812 8.67953 15.8651 8.67532 15.8493C8.6716 15.824 8.66789 15.7991 8.66443 15.7738C8.65972 15.7501 8.65477 15.7263 8.65007 15.7026C8.64586 15.6682 8.64165 15.6341 8.63745 15.5997C8.63348 15.5762 8.62952 15.5529 8.62532 15.5295C8.62259 15.4726 8.62012 15.4159 8.6174 15.359C8.61913 15.334 8.62111 15.3091 8.62284 15.2841L8.60626 15.1577C8.60626 15.0273 8.60626 14.897 8.60626 14.7664C8.60849 14.7476 8.61071 14.7285 8.61269 14.7097C8.62507 14.5925 8.64042 14.4755 8.64933 14.358C8.66492 14.153 8.73274 13.9603 8.78968 13.7659C8.96319 13.1717 9.26964 12.6508 9.67633 12.1865C9.74613 12.1069 9.81148 12.0225 9.88599 11.9473C9.94317 11.8897 10.012 11.8437 10.0741 11.791C10.0887 11.7786 10.0976 11.7596 10.109 11.7438C10.1179 11.7366 10.1268 11.7292 10.1357 11.722L10.1348 11.7225C10.1593 11.7057 10.184 11.6889 10.2085 11.672C10.3758 11.56 10.5392 11.441 10.7115 11.3371C11.0553 11.1298 11.4249 10.9814 11.8135 10.881C11.8333 10.8758 11.8521 10.8677 11.8714 10.8607L11.8823 10.8639L11.8912 10.8563C11.9172 10.8511 11.9432 10.8456 11.9692 10.8404C11.9838 10.8372 11.9984 10.834 12.013 10.8308C12.0491 10.8234 12.0853 10.8157 12.1217 10.8083L12.1296 10.8125L12.1365 10.8061C12.3608 10.7878 12.5851 10.765 12.8096 10.7529C12.9484 10.7455 13.088 10.7544 13.2274 10.7559C13.244 10.7571 13.2606 10.7583 13.2771 10.7593C13.3356 10.7665 13.3937 10.7737 13.4522 10.7811L13.4588 10.787L13.4658 10.7826C13.518 10.7905 13.5702 10.7986 13.6225 10.8066L13.6311 10.8132L13.641 10.8093C13.6759 10.8167 13.7108 10.8239 13.746 10.8313C13.7527 10.8328 13.7593 10.8343 13.7663 10.8357C13.8829 10.8674 13.9994 10.8988 14.1158 10.9305C14.1247 10.9372 14.1336 10.9436 14.1425 10.9503C14.3004 10.9851 14.4534 11.0326 14.5898 11.1237C14.5955 11.1274 14.6056 11.1249 14.6136 11.1251C14.6794 11.1556 14.7455 11.186 14.8113 11.2162C14.8202 11.2191 14.8292 11.2224 14.8381 11.2253C14.8787 11.2498 14.9193 11.2745 14.9599 11.299L14.9613 11.2993C14.9839 11.3248 14.9789 11.3497 14.9601 11.3745L14.9589 11.3765C14.9425 11.3839 14.9262 11.3913 14.9099 11.399L14.9091 11.3995C14.9012 11.4076 14.8933 11.4155 14.8853 11.4237L14.8846 11.4249C14.8695 11.4331 14.8542 11.4413 14.8391 11.4492L14.8366 11.4544C14.8126 11.469 14.7886 11.4838 14.7646 11.4984L14.7608 11.5048C14.7467 11.5113 14.7326 11.5174 14.7185 11.5239L14.7126 11.5283C14.6962 11.5429 14.6801 11.5578 14.6638 11.5724L14.6621 11.5748C14.647 11.5823 14.6316 11.5899 14.6165 11.5973C14.5987 11.6159 14.5811 11.6344 14.5633 11.653C14.5569 11.6589 14.5504 11.6651 14.544 11.671L14.5383 11.675C14.5299 11.6817 14.5212 11.6881 14.5128 11.6948C14.4955 11.7084 14.4782 11.722 14.4611 11.7356L14.4519 11.7366L14.449 11.7457C14.4433 11.7448 14.4403 11.747 14.44 11.7529C14.4339 11.7586 14.4274 11.7645 14.4212 11.7702L14.415 11.7754C14.4074 11.7819 14.3999 11.788 14.3923 11.7945L14.3898 11.7965C14.3816 11.8039 14.3735 11.8113 14.3653 11.8187C14.3309 11.8499 14.2962 11.881 14.2618 11.9122L14.2554 11.911L14.2549 11.9181C14.2475 11.9186 14.243 11.9226 14.2418 11.93C14.2324 11.9295 14.2279 11.934 14.2284 11.9431C14.2215 11.9436 14.2178 11.9473 14.2173 11.9543C14.2079 11.954 14.2029 11.9587 14.2027 11.9681C14.1965 11.9676 14.193 11.9706 14.1928 11.9768C14.1873 11.9822 14.1819 11.9874 14.1764 11.9928C14.1705 11.9926 14.1678 11.9953 14.168 12.0015C14.1626 12.0069 14.1574 12.0121 14.1519 12.0176C14.1457 12.0176 14.143 12.0203 14.1433 12.0265C14.1381 12.0317 14.1329 12.0371 14.1277 12.0423C14.1215 12.0423 14.1183 12.0455 14.1185 12.0517C14.1135 12.0567 14.1088 12.0619 14.1039 12.0668C14.0972 12.0671 14.0937 12.0705 14.0935 12.0772C14.0838 12.0769 14.0791 12.0816 14.0796 12.0913C14.0727 12.0923 14.069 12.0965 14.0687 12.1034L14.0611 12.1044L14.0621 12.1116C14.0311 12.146 14.0002 12.1803 13.969 12.2147C13.9618 12.2229 13.9546 12.2313 13.9475 12.2395L13.945 12.2427C13.9385 12.2501 13.9319 12.2573 13.9254 12.2647L13.9207 12.2706C13.9155 12.2768 13.9101 12.283 13.9049 12.2894C13.8982 12.2904 13.8952 12.2944 13.8957 12.301L13.8883 12.3023L13.8895 12.3092C13.8749 12.3278 13.8603 12.3463 13.8455 12.3651C13.8385 12.373 13.8319 12.3807 13.8249 12.3886L13.8215 12.3931C13.8158 12.3997 13.8103 12.4067 13.8046 12.4133C13.7984 12.4143 13.7957 12.418 13.7967 12.4242L13.789 12.4257L13.7905 12.4326C13.7838 12.4423 13.7772 12.4522 13.7707 12.4618C13.764 12.4702 13.7576 12.4789 13.7509 12.4873L13.7472 12.4925C13.7418 12.4992 13.7363 12.5056 13.7309 12.5123C13.7244 12.5135 13.7217 12.5172 13.7227 12.5237L13.7153 12.5249L13.717 12.5316C13.7103 12.5415 13.7036 12.5514 13.697 12.5613C13.691 12.5697 13.6851 12.5781 13.6791 12.5865L13.6737 12.5951L13.6653 12.5979L13.666 12.6063C13.6598 12.6159 13.6536 12.6256 13.6472 12.6352C13.6413 12.6436 13.6351 12.6523 13.6291 12.6607L13.6239 12.6686L13.6148 12.6721V12.6815C13.6088 12.6904 13.6031 12.6993 13.5974 12.7084C13.5913 12.7173 13.5853 12.7262 13.5791 12.7351L13.5744 12.7433L13.5663 12.7463L13.5677 12.7544C13.5529 12.7804 13.538 12.8064 13.5232 12.8321C13.5173 12.841 13.5113 12.8499 13.5054 12.8588L13.5017 12.8657C13.493 12.8798 13.4846 12.8937 13.4759 12.9078C13.442 12.9724 13.4078 13.0367 13.3739 13.1012C13.368 13.1111 13.362 13.121 13.3561 13.1312L13.3531 13.1378C13.3467 13.1514 13.34 13.165 13.3336 13.1786C13.3227 13.2039 13.312 13.2291 13.3012 13.2543C13.2972 13.2618 13.2932 13.2692 13.2893 13.2763C13.2853 13.2867 13.2814 13.2971 13.2774 13.3078L13.268 13.3137L13.269 13.3241L13.2534 13.3592C13.245 13.3738 13.2366 13.3881 13.2281 13.4027L13.2271 13.4035C13.2182 13.4277 13.2093 13.452 13.2004 13.4765L13.2014 13.4755C13.1955 13.4841 13.1893 13.4925 13.1833 13.5012C13.1809 13.5168 13.1786 13.5321 13.1762 13.5477L13.1578 13.5754C13.1561 13.5925 13.1544 13.6095 13.1529 13.6266C13.1502 13.633 13.1474 13.6392 13.1447 13.6456C13.1388 13.663 13.1331 13.68 13.1271 13.6973C13.1242 13.7052 13.121 13.7129 13.118 13.7208C13.113 13.7386 13.1083 13.7565 13.1034 13.7743C13.0982 13.7898 13.0932 13.8054 13.088 13.821C13.0843 13.8371 13.0809 13.8529 13.0771 13.869C13.0737 13.8774 13.0705 13.8861 13.067 13.8945C13.0628 13.9125 13.0586 13.9308 13.0544 13.9489C13.0504 13.9635 13.0464 13.9778 13.0425 13.9924C13.0383 14.0112 13.0341 14.0298 13.0299 14.0486C13.0145 14.0889 12.9992 14.1292 12.9841 14.1698C12.9846 14.1782 12.9853 14.1868 12.9858 14.1952C12.9861 14.2108 12.9865 14.2267 12.9868 14.2422C12.9846 14.2593 12.9821 14.2764 12.9799 14.2937C12.9754 14.3172 12.9712 14.3404 12.9667 14.3639C12.9628 14.3815 12.9588 14.3991 12.9549 14.4166C12.9499 14.4508 12.9447 14.4849 12.9398 14.519C12.9351 14.5591 12.9304 14.5989 12.9257 14.639C12.9195 14.681 12.9133 14.7228 12.9071 14.7649L12.9153 14.8406C12.9167 14.9786 12.918 15.1166 12.9195 15.2546C12.9212 15.2734 12.9229 15.2922 12.9247 15.311C12.9271 15.3563 12.9276 15.4018 12.9328 15.4468C12.9504 15.5967 12.9566 15.7496 12.9917 15.8955C13.0447 16.1144 13.1187 16.3284 13.1838 16.5443C13.1898 16.5525 13.196 16.5606 13.2019 16.5688C13.4432 17.1795 13.8031 17.7098 14.2886 18.1526C14.5024 18.3475 14.719 18.5409 14.9826 18.6703C14.999 18.6789 15.0153 18.6879 15.0316 18.6965C15.0336 18.7015 15.0339 18.7067 15.0321 18.7116C15.024 18.7151 15.016 18.7188 15.0079 18.7222C14.996 18.7284 14.9844 18.7346 14.9725 18.7405H14.9638L14.9581 18.747C14.9418 18.7541 14.9257 18.7613 14.9094 18.7682L14.9086 18.769C14.8925 18.7771 14.8764 18.7851 14.8601 18.7932L14.8591 18.7945C14.8433 18.8024 14.8272 18.8103 14.8113 18.8182L14.8096 18.8204C14.7938 18.8279 14.7777 18.8353 14.7618 18.8427L14.7601 18.8452C14.744 18.8526 14.7282 18.86 14.7121 18.8674L14.7103 18.8694C14.694 18.8768 14.6779 18.8843 14.6616 18.8919L14.6608 18.8929C14.6222 18.9097 14.5839 18.9263 14.5452 18.9431L14.5368 18.9491C14.5274 18.9543 14.518 18.9592 14.5086 18.9644C14.5002 18.9627 14.493 18.9649 14.4873 18.9713C14.472 18.978 14.4566 18.9847 14.4415 18.9914L14.4383 18.9926C14.4207 18.9995 14.4029 19.0067 14.3853 19.0136H14.3737L14.3641 19.0198C14.3472 19.0262 14.3304 19.0327 14.3136 19.0393C14.2395 19.0628 14.1653 19.0863 14.0913 19.1101C14.0593 19.12 14.0274 19.1296 13.9955 19.1395L13.993 19.1403C13.9613 19.1484 13.9294 19.1566 13.8977 19.1647L13.8942 19.1657C13.8611 19.1732 13.8279 19.1808 13.795 19.1882C13.7868 19.1897 13.7789 19.191 13.7707 19.1924C13.7536 19.1994 13.7366 19.2063 13.7195 19.213C13.6952 19.2147 13.671 19.2167 13.6465 19.2184C13.6059 19.2251 13.565 19.2318 13.5244 19.2385C13.5158 19.2394 13.5071 19.2402 13.4984 19.2412C13.4828 19.2412 13.467 19.2412 13.4514 19.2409C13.3846 19.2483 13.3175 19.2558 13.2507 19.2632C13.2432 19.2632 13.2358 19.2637 13.2286 19.2652C12.9964 19.2654 12.764 19.2657 12.5318 19.2659C12.5081 19.2659 12.4841 19.2659 12.4603 19.2657C12.4442 19.2647 12.4279 19.2634 12.4118 19.2624C12.362 19.256 12.3125 19.2493 12.2628 19.2429C12.2222 19.2412 12.1813 19.2394 12.1407 19.2377C12.1237 19.2313 12.1063 19.2246 12.0892 19.2182C12.065 19.2164 12.041 19.2147 12.0167 19.213C11.9996 19.2056 11.9828 19.1979 11.9657 19.1905L11.962 19.1897C11.9219 19.1826 11.8818 19.1754 11.8417 19.1682C11.6939 19.1254 11.5464 19.0826 11.3986 19.0398C11.3897 19.0324 11.3806 19.0247 11.3717 19.0173L11.3689 19.0163C11.3536 19.0102 11.3382 19.004 11.3231 18.998C11.315 18.9956 11.3068 18.9928 11.2986 18.9904C11.2818 18.9832 11.265 18.9758 11.2479 18.9686L11.2444 18.9674C11.2293 18.9609 11.2142 18.9545 11.1991 18.9481H11.1986Z"
        fill="#00F872"
      />
      <path
        d="M15.0311 18.7121C15.0329 18.7069 15.0326 18.702 15.0306 18.697C15.0326 18.6888 15.0349 18.6807 15.0368 18.6723C15.1014 18.6359 15.1663 18.5993 15.2309 18.5629C15.2383 18.5575 15.246 18.5521 15.2534 18.5466C15.3034 18.5115 15.3537 18.4766 15.4037 18.4415C15.4116 18.4353 15.4195 18.4291 15.4274 18.4232C15.542 18.3304 15.6626 18.2441 15.7705 18.1442C16.1255 17.816 16.423 17.4427 16.6388 17.0079L16.6473 17.0032L16.645 16.9943C16.676 16.9327 16.7069 16.8713 16.7376 16.8097L16.7453 16.805L16.7428 16.7971L16.8121 16.6388L16.82 16.6331L16.8173 16.6242C16.8359 16.5834 16.8582 16.5441 16.8725 16.5018C16.901 16.4172 16.9198 16.3289 16.9517 16.2458C17.0339 16.0318 17.0648 15.8085 17.0864 15.5826C17.0923 15.5732 17.0985 15.5636 17.1045 15.5542L17.1099 15.5534C17.1166 15.4961 17.1233 15.4387 17.1299 15.3813C17.1322 15.357 17.1342 15.3331 17.1364 15.3088C17.1436 15.2816 17.1562 15.2546 17.1567 15.2274C17.1587 15.0832 17.1587 14.9393 17.1567 14.7951C17.1562 14.7679 17.1433 14.7407 17.1361 14.7137C17.1347 14.706 17.1344 14.6981 17.1351 14.6904C17.1332 14.6049 17.1629 14.5141 17.0936 14.4394C17.0889 14.3991 17.0844 14.3587 17.0797 14.3184L17.0616 14.2917C17.0599 14.2596 17.0582 14.2272 17.0562 14.195C17.0497 14.1859 17.0433 14.1767 17.0371 14.1673C17.027 14.1022 17.0171 14.0372 17.0069 13.9721C17.0005 13.9469 16.9941 13.9217 16.9876 13.8962C16.9837 13.8796 16.9799 13.8631 16.976 13.8467L16.9606 13.8032L16.9596 13.7997C16.9525 13.7903 16.9453 13.7812 16.9379 13.7718C16.9351 13.7478 16.9322 13.7236 16.9294 13.6996C16.9238 13.6832 16.9183 13.6672 16.9126 13.6508C16.9104 13.6424 16.9082 13.634 16.9059 13.6256C16.8997 13.61 16.8933 13.5947 16.8871 13.5791C16.8277 13.4381 16.7681 13.2971 16.7087 13.1561C16.702 13.1413 16.6953 13.1265 16.6886 13.1119L16.673 13.0787L16.6738 13.0683L16.6643 13.0631C16.6582 13.0515 16.6517 13.0399 16.6455 13.028L16.6488 13.0223L16.6416 13.0208C16.6116 12.9662 16.5819 12.9115 16.552 12.8571C16.5544 12.8477 16.5507 12.842 16.5408 12.8405L16.5379 12.8353C16.5314 12.8254 16.5252 12.8155 16.5188 12.8054C16.5037 12.7809 16.4886 12.7567 16.4733 12.7322L16.4757 12.7262L16.4688 12.7257C16.4584 12.7126 16.448 12.6995 16.4374 12.6864C16.4304 12.6721 16.4233 12.6575 16.4163 12.6429L16.4129 12.6372C16.4064 12.6288 16.4 12.6204 16.3938 12.612C16.3871 12.6021 16.3802 12.5924 16.3735 12.5825L16.3755 12.5751L16.3676 12.5729V12.5657L16.3614 12.563C16.3557 12.5551 16.3497 12.5472 16.344 12.539C16.3366 12.5281 16.3289 12.5172 16.3215 12.5063L16.3252 12.5029L16.3188 12.5024C16.3198 12.4947 16.3166 12.4903 16.3091 12.4888C16.3039 12.4824 16.2987 12.4759 16.2938 12.4695L16.2898 12.4638C16.2834 12.4556 16.2767 12.4477 16.2703 12.4396C16.2574 12.422 16.2443 12.4047 16.2314 12.3871L16.2297 12.3765L16.2195 12.3728L16.22 12.3666L16.2141 12.3651C16.2079 12.3577 16.202 12.35 16.1958 12.3426L16.1935 12.3396C16.1864 12.331 16.1794 12.3223 16.1723 12.3137C16.1572 12.2961 16.1418 12.2788 16.1267 12.2612L16.1284 12.2548L16.1213 12.2538C16.1225 12.2466 16.1195 12.2427 16.1124 12.2417C16.1069 12.2355 16.1015 12.2293 16.0963 12.2229L16.0911 12.2167C16.0849 12.2095 16.0784 12.2024 16.0723 12.1952L16.0693 12.1915C16.0621 12.1838 16.0552 12.1764 16.048 12.1687L16.0458 12.1665C16.0383 12.1588 16.0309 12.1509 16.0235 12.1432C15.9326 12.052 15.8421 11.9604 15.7512 11.8692C15.743 11.8618 15.7346 11.8543 15.7265 11.8472L15.7242 11.8452C15.7166 11.8383 15.7091 11.8311 15.7015 11.8242L15.6975 11.8207C15.6906 11.8148 15.6834 11.8088 15.6765 11.8031L15.6745 11.7967H15.6678C15.6623 11.7915 15.6569 11.7863 15.6515 11.7811C15.6515 11.7742 15.648 11.771 15.6411 11.7717L15.6378 11.7621L15.6279 11.7601C15.6255 11.7512 15.6198 11.7465 15.6104 11.746L15.6109 11.7406L15.6086 11.7445C15.5891 11.7287 15.5693 11.7129 15.5497 11.697C15.5425 11.6911 15.5354 11.6854 15.5282 11.6795L15.5262 11.673H15.5195C15.519 11.6631 15.5141 11.6587 15.5044 11.6599C15.5027 11.6515 15.4972 11.6473 15.4888 11.6473V11.6409L15.4846 11.6443C15.4745 11.6369 15.4643 11.6295 15.4542 11.6221L15.4297 11.6025L15.4242 11.5986C15.4178 11.5934 15.4116 11.5884 15.4052 11.5832C15.4042 11.5763 15.4005 11.5738 15.3938 11.5758C15.3812 11.5672 15.3685 11.5588 15.3559 11.5501L15.3534 11.5484C15.3458 11.5424 15.3383 11.5367 15.3307 11.5308L15.3287 11.5249L15.3225 11.5256C15.3086 11.5187 15.2948 11.5115 15.2811 11.5046L15.245 11.4737L15.243 11.4643H15.2336C15.2247 11.4591 15.2156 11.4539 15.2066 11.4487L15.1821 11.4311L15.1799 11.4249L15.1732 11.4254L15.17 11.4163L15.1606 11.4168C15.1509 11.4111 15.1413 11.4054 15.1316 11.3997C15.1237 11.3943 15.1158 11.3888 15.1079 11.3834L15.1039 11.377L15.0965 11.3774C15.0871 11.3455 15.0203 11.3589 15.0391 11.3047C15.1371 11.2572 15.2351 11.2097 15.3331 11.162C15.3396 11.159 15.346 11.1561 15.3522 11.1531C15.3945 11.1345 15.4368 11.1162 15.4789 11.0977C15.4938 11.0913 15.5089 11.0846 15.5237 11.0782C15.575 11.0579 15.6265 11.0378 15.6777 11.0176C15.6861 11.0136 15.6943 11.0099 15.7027 11.0059C15.7198 11 15.7369 10.9941 15.7537 10.9881C15.7604 10.9856 15.7673 10.9829 15.774 10.9804C15.7826 10.9782 15.7916 10.9762 15.8002 10.974C15.8168 10.9681 15.8334 10.9621 15.85 10.9562C15.8581 10.954 15.8663 10.952 15.8745 10.9498C15.8911 10.9436 15.9079 10.9377 15.9245 10.9315C15.9411 10.9275 15.9576 10.9236 15.9745 10.9196C15.9836 10.9156 15.9925 10.9117 16.0017 10.908C16.0173 10.9048 16.0327 10.9018 16.0482 10.8986C16.0648 10.8931 16.0817 10.8877 16.0982 10.8823C16.1146 10.879 16.1312 10.8758 16.1475 10.8726C16.1643 10.8677 16.1812 10.8627 16.1978 10.858C16.2225 10.8538 16.2473 10.8496 16.272 10.8454C16.2879 10.8412 16.3034 10.8367 16.3193 10.8325C16.3854 10.8217 16.4517 10.8108 16.5178 10.7999L16.5294 10.8031L16.5413 10.8014L16.5911 10.8036C16.6079 10.7974 16.6247 10.7915 16.6418 10.7853C16.6666 10.7813 16.6913 10.7774 16.7161 10.7737C16.7225 10.7776 16.7294 10.7794 16.7369 10.7789C16.7874 10.7732 16.8379 10.7675 16.8881 10.7618C16.9626 10.7581 17.0371 10.7541 17.1116 10.7504C17.1604 10.7504 17.2094 10.7504 17.2582 10.7504C17.3327 10.7544 17.4072 10.7583 17.4817 10.7623C17.5317 10.768 17.5819 10.7737 17.6319 10.7794C17.6557 10.7811 17.6797 10.7831 17.7035 10.7848C17.7203 10.791 17.7371 10.7972 17.754 10.8033C17.7706 10.8029 17.7871 10.8024 17.8037 10.8019L17.8159 10.8038L17.8272 10.7999C17.853 10.8024 17.879 10.8046 17.9047 10.8071C17.928 10.812 17.9513 10.8172 17.9745 10.8221C17.9933 10.8251 18.0121 10.8278 18.031 10.8308C18.0535 10.8367 18.076 10.8427 18.0985 10.8486C18.1161 10.8513 18.1337 10.8541 18.1513 10.8568C18.1664 10.8612 18.1815 10.8657 18.1966 10.8701C18.2149 10.8738 18.2329 10.8776 18.2513 10.8813C18.2661 10.886 18.281 10.8909 18.2958 10.8956C18.3129 10.8996 18.3297 10.9033 18.3468 10.9072C18.3631 10.9127 18.3792 10.9181 18.3956 10.9236C18.4102 10.927 18.425 10.9307 18.4396 10.9342C18.4498 10.9386 18.4599 10.9429 18.4698 10.9473C18.4802 10.9498 18.4906 10.9523 18.501 10.9547C18.5151 10.9602 18.5292 10.9656 18.5433 10.9708C18.5513 10.9745 18.5594 10.9782 18.5674 10.9819C18.5763 10.9884 18.5854 10.995 18.5943 11.0015C18.6354 11.0111 18.6768 11.021 18.7179 11.0307C18.7253 11.0341 18.733 11.0376 18.7404 11.0411C18.7488 11.046 18.7575 11.0509 18.7659 11.0556C18.7748 11.0623 18.7834 11.069 18.7924 11.0757C18.8268 11.0848 18.8612 11.0942 18.8956 11.1034L18.9018 11.1115L18.9114 11.1098C18.9208 11.1165 18.9302 11.1232 18.9396 11.1298C18.9483 11.1365 18.957 11.1435 18.9656 11.1501C19.058 11.1922 19.15 11.2345 19.2424 11.2765L19.2483 11.2837L19.257 11.2815C19.2988 11.3055 19.3406 11.3292 19.3825 11.3532C19.3919 11.3594 19.4013 11.3656 19.4107 11.3718C19.6035 11.513 19.7963 11.6542 19.9892 11.7952L19.9926 11.8041L20.002 11.8049C20.2087 12.0057 20.4176 12.2053 20.5857 12.441C20.6882 12.5848 20.7793 12.7364 20.8756 12.8845C20.8823 12.8925 20.8889 12.9004 20.8959 12.9083C20.9511 13.0085 21.006 13.1089 21.0612 13.2091L21.0607 13.2197L21.0699 13.2256C21.0738 13.236 21.0778 13.2464 21.0818 13.2571C21.0857 13.2645 21.0897 13.2716 21.0936 13.2791L21.0993 13.3295C21.1055 13.3379 21.112 13.3461 21.1182 13.3545C21.1362 13.4037 21.1543 13.4532 21.1724 13.5024C21.1788 13.5116 21.185 13.521 21.1914 13.5301C21.1936 13.5457 21.1961 13.561 21.1984 13.5766C21.2045 13.5853 21.2105 13.5942 21.2167 13.6028C21.2189 13.6189 21.2211 13.635 21.2236 13.6508C21.2295 13.6595 21.2355 13.6684 21.2414 13.6771C21.2454 13.6852 21.2491 13.6936 21.2531 13.7018C21.2583 13.7161 21.2632 13.7305 21.2684 13.7451C21.2751 13.7651 21.282 13.7851 21.2887 13.8054L21.285 13.8136L21.2927 13.8193C21.2984 13.8386 21.3038 13.8581 21.3095 13.8774C21.308 13.8801 21.3048 13.8836 21.3058 13.8853C21.3083 13.8903 21.3125 13.8945 21.3159 13.8992C21.307 13.9741 21.3342 14.0402 21.3654 14.1055L21.3607 14.1104L21.3672 14.1154C21.3838 14.2237 21.4003 14.3318 21.4167 14.4401C21.4246 14.5067 21.4325 14.5732 21.4402 14.64C21.4417 14.6479 21.4434 14.6561 21.4454 14.664C21.4446 14.6961 21.4441 14.7285 21.4434 14.7607C21.4434 14.9353 21.4432 15.1102 21.4429 15.2848C21.4437 15.3172 21.4441 15.3496 21.4449 15.382C21.4439 15.3909 21.4427 15.3998 21.4417 15.4087C21.4318 15.4802 21.4219 15.5517 21.412 15.6234C21.406 15.6499 21.4003 15.6766 21.3944 15.7031C21.3949 15.7115 21.3954 15.7199 21.3959 15.7286C21.3872 15.7612 21.3786 15.7941 21.3701 15.8268C21.3706 15.8352 21.3711 15.8438 21.3714 15.8522C21.3627 15.8849 21.354 15.9178 21.3454 15.9504C21.3454 15.9588 21.3459 15.9673 21.3459 15.9757C21.3449 15.992 21.3441 16.0083 21.3432 16.0246L21.3422 16.0284C21.3357 16.0514 21.3295 16.0744 21.3231 16.0974C21.3169 16.1033 21.3139 16.1107 21.3142 16.1191C21.306 16.1451 21.2981 16.1708 21.2899 16.1968C21.2815 16.2285 21.2729 16.2601 21.2644 16.2918C21.2503 16.3264 21.2362 16.361 21.2219 16.3957C21.2204 16.4125 21.2186 16.4296 21.2172 16.4464C21.2107 16.462 21.2045 16.4775 21.1981 16.4934C21.1959 16.5015 21.1936 16.5095 21.1914 16.5176C21.1828 16.5342 21.1738 16.551 21.1652 16.5676L21.1664 16.5666C21.1602 16.5755 21.154 16.5841 21.1479 16.5931C21.1461 16.6094 21.1441 16.6257 21.1424 16.642C21.1387 16.6497 21.1347 16.6571 21.131 16.6648C21.1271 16.6754 21.1231 16.6858 21.1191 16.6964C21.1105 16.7113 21.1018 16.7261 21.0932 16.741C21.087 16.7491 21.0805 16.7575 21.0743 16.7657C21.0394 16.8481 21.0043 16.9307 20.9694 17.0131C20.9625 17.0215 20.9558 17.0299 20.9488 17.0383L20.9454 17.0403C20.9389 17.0477 20.9323 17.0551 20.9258 17.0625C20.9159 17.0885 20.906 17.1145 20.8964 17.1404C20.8875 17.1434 20.8847 17.1488 20.8882 17.157C20.8823 17.1672 20.8766 17.1773 20.8706 17.1874C20.8639 17.1954 20.857 17.2033 20.8503 17.2112L20.8464 17.2132C20.8397 17.2206 20.8332 17.228 20.8266 17.2354C20.8251 17.2451 20.8236 17.2547 20.8219 17.2644C20.8127 17.2668 20.8097 17.2725 20.8132 17.2809C20.8075 17.2906 20.8018 17.3002 20.7961 17.3099C20.7904 17.3183 20.7845 17.3264 20.7788 17.3349L20.7726 17.3376L20.7731 17.3445L20.7652 17.3467L20.7669 17.3544C20.7602 17.3643 20.7535 17.3744 20.7469 17.3843C20.7409 17.3925 20.735 17.4009 20.729 17.4091L20.7231 17.4115L20.7238 17.418L20.7159 17.4204L20.7174 17.4284C20.7107 17.4382 20.7043 17.4484 20.6976 17.4583C20.6914 17.4664 20.6855 17.4749 20.6793 17.483L20.6741 17.4907L20.6647 17.4944L20.6642 17.5043C20.6506 17.5228 20.6372 17.5411 20.6236 17.5597C20.6179 17.5671 20.6122 17.5745 20.6068 17.582L20.5998 17.5852L20.5996 17.5928L20.5917 17.5946L20.5929 17.602C20.5783 17.6205 20.5637 17.6391 20.5491 17.6576C20.5426 17.6653 20.5365 17.6732 20.53 17.6809L20.5253 17.6871C20.5204 17.6933 20.5152 17.6992 20.5102 17.7054C20.5025 17.7066 20.4991 17.7111 20.4998 17.7187L20.4926 17.7192L20.4936 17.7262C20.4709 17.7531 20.4483 17.7803 20.4256 17.8073C20.4194 17.8147 20.4129 17.8219 20.4067 17.8293L20.4013 17.8357C20.3954 17.8419 20.3894 17.8479 20.3837 17.854L20.3773 17.8548L20.3766 17.8612C20.3714 17.8669 20.3659 17.8728 20.3607 17.8788C20.3535 17.8795 20.3503 17.8835 20.3516 17.8906L20.3426 17.8931L20.3416 17.9023C20.3325 17.9038 20.3273 17.909 20.3258 17.9181L20.3186 17.9176L20.3204 17.924C20.2548 17.9898 20.1889 18.0559 20.1233 18.1217L20.1186 18.1187L20.1191 18.1249C20.1097 18.1261 20.1043 18.1313 20.1028 18.1407L20.0946 18.1412L20.0941 18.1494C20.0847 18.1511 20.0793 18.1565 20.078 18.1659L20.0701 18.1664L20.0696 18.1744C20.0607 18.1749 20.0555 18.1793 20.0533 18.1877C20.0439 18.1865 20.0389 18.1907 20.0384 18.2003L20.0312 18.2011L20.0293 18.2078C20.0231 18.2134 20.0171 18.2191 20.011 18.2248L20.0043 18.2305C19.9971 18.2367 19.9899 18.2429 19.9827 18.2491L19.9793 18.252C19.9716 18.2592 19.9639 18.2664 19.9562 18.2733C19.9374 18.2884 19.9189 18.3037 19.9001 18.3188L19.8944 18.3163L19.8936 18.3233C19.8859 18.3225 19.8815 18.326 19.8803 18.3337C19.8746 18.3386 19.8689 18.3435 19.8632 18.3482L19.857 18.3477L19.8555 18.3537C19.8478 18.3599 19.8404 18.3661 19.8327 18.372C19.8139 18.3871 19.7951 18.4022 19.7763 18.4173L19.7701 18.415L19.7691 18.4222C19.7619 18.4207 19.7577 18.4237 19.7565 18.4306C19.7498 18.4361 19.7431 18.4412 19.7364 18.4467L19.7317 18.4502C19.7233 18.4568 19.7147 18.4635 19.706 18.4702C19.6968 18.4766 19.6877 18.4828 19.6785 18.4892L19.6701 18.4885L19.6676 18.4969H19.6604L19.6577 18.5033C19.6503 18.509 19.6426 18.515 19.6352 18.5209L19.6327 18.5229C19.6199 18.5313 19.607 18.5397 19.5941 18.5484H19.5869L19.5835 18.5543C19.5763 18.5597 19.5689 18.5652 19.5617 18.5706L19.5585 18.5728C19.5456 18.581 19.5327 18.5894 19.5199 18.5976L19.5127 18.5971L19.5092 18.6035C19.5015 18.609 19.4939 18.6141 19.4862 18.6196C19.4753 18.6268 19.4647 18.6337 19.4538 18.6409L19.4461 18.6386L19.4416 18.6461C19.4312 18.6532 19.4206 18.6604 19.4102 18.6673C19.3951 18.6765 19.38 18.6856 19.3649 18.6948L19.3604 18.697C19.3456 18.7047 19.3305 18.7126 19.3156 18.7203C19.2728 18.744 19.2302 18.7675 19.1874 18.7912C19.1718 18.8002 19.1562 18.8091 19.1409 18.818C19.1305 18.8229 19.1203 18.8279 19.1099 18.8328C19.1008 18.8296 19.0953 18.8328 19.0934 18.8427L19.0882 18.8452C19.0731 18.8526 19.0582 18.8603 19.0431 18.8677L19.0387 18.8697C19.0228 18.8771 19.007 18.8843 18.9911 18.8917C18.9493 18.9102 18.9075 18.929 18.8656 18.9476C18.8503 18.9538 18.8349 18.9602 18.8196 18.9664C18.7936 18.977 18.7674 18.9876 18.7414 18.9983C18.726 19.004 18.7107 19.0099 18.6953 19.0156C18.6857 19.0183 18.6763 19.021 18.6666 19.0238C18.6525 19.0297 18.6384 19.0356 18.6243 19.0413L18.6181 19.0433C18.5958 19.051 18.5735 19.0586 18.5513 19.0663L18.5438 19.0688C18.5216 19.0762 18.4993 19.0836 18.4768 19.091L18.4693 19.0933C18.452 19.0999 18.4347 19.1064 18.4174 19.113C18.4094 19.1118 18.4023 19.1135 18.3958 19.1185C18.3787 19.1252 18.3617 19.1321 18.3446 19.1388C18.3285 19.1408 18.3124 19.143 18.2966 19.145C18.2797 19.1511 18.2629 19.1573 18.2461 19.1635C18.23 19.1655 18.2136 19.1677 18.1975 19.1697C18.1807 19.1759 18.1639 19.1821 18.147 19.188C18.131 19.19 18.1149 19.1922 18.0985 19.1942C18.0661 19.2006 18.0334 19.207 18.001 19.2135C17.9923 19.2152 17.9837 19.2172 17.975 19.2189C17.95 19.2251 17.925 19.2313 17.8998 19.2377C17.8755 19.2394 17.8513 19.2409 17.8267 19.2427C17.8198 19.2375 17.8124 19.2362 17.8045 19.2394C17.6889 19.2479 17.573 19.2565 17.4574 19.2649L16.9594 19.2662C16.8277 19.257 16.696 19.2479 16.5643 19.2389C16.5562 19.237 16.5485 19.238 16.5411 19.2419C16.5007 19.2402 16.4606 19.2387 16.4203 19.237C16.4111 19.2303 16.4017 19.2239 16.3926 19.2172C16.3272 19.2075 16.2616 19.1976 16.1963 19.188C16.1792 19.1816 16.1624 19.1751 16.1453 19.1685C16.1294 19.1667 16.1136 19.165 16.0975 19.163C16.0886 19.1566 16.0799 19.1504 16.071 19.144C16.0624 19.142 16.0537 19.1403 16.045 19.1383C16.0208 19.1318 15.9965 19.1254 15.9723 19.119C15.9314 19.1091 15.8906 19.0989 15.8497 19.0891C15.8411 19.0824 15.8324 19.0759 15.824 19.0693L15.8148 19.0665C15.7933 19.0589 15.7715 19.0512 15.75 19.0438L15.7423 19.0413C15.7287 19.0356 15.7151 19.0297 15.7015 19.024C15.6913 19.0213 15.6814 19.0186 15.6713 19.0158C15.6477 19.0092 15.6242 19.0027 15.6007 18.9961C15.5935 18.9923 15.5859 18.9904 15.5777 18.9904C15.569 18.9829 15.5604 18.9753 15.5517 18.9679L15.5477 18.9664C15.5326 18.9604 15.5175 18.9542 15.5022 18.9483C15.3658 18.8803 15.2294 18.8125 15.093 18.7445C15.0809 18.7378 15.0685 18.7314 15.0564 18.7247C15.0475 18.7203 15.0388 18.7161 15.0299 18.7116L15.0311 18.7121Z"
        fill="#006666"
      />
    </g>
    <defs>
      <clipPath id="clip0_2551_3863">
        <rect width="30" height="30" rx="6" fill="white" />
      </clipPath>
    </defs>
  </svg>
}
    href="./pennylane"
  >
    Push your Hyperline invoicing data and reconcile easily with Pennylane.
  </Card>

  <Card
    title="Xero"
    icon={
  <svg
    width="30"
    height="30"
    viewBox="0 0 30 30"
    fill="none"
    xmlns="http://www.w3.org/2000/svg"
  >
    <g clipPath="url(https://mintlify.s3.us-west-1.amazonaws.com/hyperline/integrations#clip0_3686_24)">
      <rect width="30" height="30" rx="6" fill="#1AB4D7" />
      <path
        d="M7.53106 15.1844L9.94972 12.755C10.0299 12.6732 10.0746 12.5647 10.0746 12.4498C10.0746 12.2101 9.88024 12.0156 9.64108 12.0156C9.52459 12.0156 9.41538 12.0613 9.33302 12.1448C9.33278 12.1453 6.91654 14.5648 6.91654 14.5648L4.48926 12.1412C4.40724 12.0602 4.29856 12.0156 4.18332 12.0156C3.94446 12.0156 3.75 12.2101 3.75 12.4494C3.75 12.5662 3.79653 12.6758 3.88004 12.7583L6.29835 15.181L3.88129 17.6073C3.79634 17.6911 3.75 17.8009 3.75 17.9182C3.75 18.1578 3.94446 18.3521 4.18332 18.3521C4.29876 18.3521 4.40753 18.3073 4.48926 18.2253L6.91278 15.8004L9.32709 18.2165C9.41273 18.3052 9.52319 18.3524 9.64108 18.3524C9.87999 18.3524 10.0744 18.1578 10.0744 17.9182C10.0744 17.8026 10.0297 17.694 9.94836 17.6121L7.53106 15.1844Z"
        fill="white"
      />
      <path
        d="M21.9096 15.1837C21.9096 15.6187 22.2626 15.9727 22.6974 15.9727C23.1312 15.9727 23.4844 15.6187 23.4844 15.1837C23.4844 14.7485 23.1312 14.3946 22.6974 14.3946C22.2626 14.3946 21.9096 14.7485 21.9096 15.1837Z"
        fill="white"
      />
      <path
        d="M20.416 15.184C20.416 13.9241 21.439 12.899 22.6966 12.899C23.9536 12.899 24.9768 13.9241 24.9768 15.184C24.9768 16.4437 23.9536 17.4684 22.6966 17.4684C21.439 17.4684 20.416 16.4437 20.416 15.184ZM19.5189 15.184C19.5189 16.9393 20.9444 18.3675 22.6966 18.3675C24.4487 18.3675 25.875 16.9393 25.875 15.184C25.875 13.4285 24.4487 12 22.6966 12C20.9444 12 19.5189 13.4285 19.5189 15.184Z"
        fill="white"
      />
      <path
        d="M19.2933 12.0544L19.16 12.0541C18.7597 12.0541 18.3737 12.1805 18.0513 12.4295C18.0088 12.2347 17.835 12.0881 17.628 12.0881C17.3898 12.0881 17.1989 12.2794 17.1983 12.5186C17.1983 12.5194 17.1998 17.881 17.1998 17.881C17.2004 18.1198 17.3948 18.3138 17.6332 18.3138C17.8715 18.3138 18.0658 18.1198 18.0664 17.8805C18.0664 17.8794 18.0666 14.5833 18.0666 14.5833C18.0666 13.4843 18.1669 13.0405 19.1065 12.9228C19.1933 12.912 19.2878 12.9137 19.2882 12.9137C19.5452 12.9049 19.7279 12.7278 19.7279 12.4886C19.7279 12.2492 19.5329 12.0544 19.2933 12.0544Z"
        fill="white"
      />
      <path
        d="M10.9723 14.6599C10.9723 14.648 10.9733 14.6356 10.9738 14.6234C11.2254 13.6269 12.1262 12.8895 13.1989 12.8895C14.2846 12.8895 15.1936 13.645 15.4323 14.6599H10.9723ZM16.3197 14.5779C16.133 13.692 15.6489 12.9644 14.9118 12.4971C13.8344 11.8117 12.4116 11.8496 11.3709 12.5911C10.522 13.1962 10.032 14.186 10.032 15.2057C10.032 15.4613 10.0627 15.7194 10.1268 15.9734C10.4473 17.2368 11.5313 18.1932 12.8237 18.3517C13.2072 18.3983 13.5805 18.376 13.9671 18.2757C14.2993 18.1947 14.6207 18.0598 14.9168 17.8696C15.2242 17.6716 15.481 17.4106 15.7297 17.098C15.7347 17.0923 15.7398 17.0872 15.7448 17.0812C15.9174 16.8667 15.8854 16.5617 15.6957 16.416C15.5357 16.2932 15.2672 16.2434 15.0558 16.5146C15.0104 16.5794 14.9597 16.6461 14.9039 16.7128C14.7359 16.8989 14.5274 17.0791 14.2776 17.2189C13.9597 17.3891 13.5975 17.4863 13.2124 17.4885C11.9519 17.4744 11.2774 16.5929 11.0374 15.9636C10.9955 15.8461 10.9632 15.7242 10.9407 15.5987C10.9378 15.5753 10.9356 15.5526 10.9347 15.5317C11.1953 15.5317 15.458 15.531 15.458 15.531C16.0782 15.518 16.4119 15.0794 16.3197 14.5779Z"
        fill="white"
      />
    </g>
    <defs>
      <clipPath id="clip0_3686_24">
        <rect width="30" height="30" rx="6" fill="white" />
      </clipPath>
    </defs>
  </svg>
}
    href="./xero"
  >
    Push your Hyperline invoicing data and reconcile easily with Xero.
  </Card>

  <Card
    title="QuickBooks"
    icon={
  <svg
    width="30"
    height="30"
    viewBox="0 0 30 30"
    fill="none"
    xmlns="http://www.w3.org/2000/svg"
  >
    <g clipPath="url(https://mintlify.s3.us-west-1.amazonaws.com/hyperline/integrations#clip0_4852_78)">
      <rect width="30" height="30" rx="6" fill="#2CA01C" />
      <path
        d="M15 27C21.6274 27 27 21.6274 27 15C27 8.37257 21.6274 3 15 3C8.37257 3 3 8.37257 3 15C3 21.6274 8.37257 27 15 27Z"
        fill="#2CA01C"
      />
      <path
        d="M11.0001 10.3333C8.42149 10.3333 6.33349 12.424 6.33349 15C6.33349 17.5787 8.42149 19.6667 11.0001 19.6667H11.6669V17.9333H11.0001C9.38148 17.9333 8.06683 16.6187 8.06683 15C8.06683 13.3813 9.38148 12.0667 11.0001 12.0667H12.6029V21.1333C12.6029 22.0907 13.3788 22.8667 14.3361 22.8667V10.3333H11.0001ZM19.0025 19.6667C21.5812 19.6667 23.6691 17.5759 23.6691 15C23.6691 12.4213 21.5812 10.3333 19.0025 10.3333H18.3358V12.0666H19.0025C20.6212 12.0666 21.9358 13.3813 21.9358 15C21.9358 16.6187 20.6212 17.9333 19.0025 17.9333H17.3998V8.86665C17.3998 7.9093 16.6239 7.1333 15.6665 7.1333V19.6667H19.0025Z"
        fill="white"
      />
    </g>
    <defs>
      <clipPath id="clip0_4852_78">
        <rect width="30" height="30" rx="6" fill="white" />
      </clipPath>
    </defs>
  </svg>
}
    href="./quickbooks"
  >
    Push your Hyperline invoicing data and reconcile easily with QuickBooks.
  </Card>

  <Card
    title="NetSuite"
    icon={
  <svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
    <g clip-path="url(https://mintlify.s3.us-west-1.amazonaws.com/hyperline/integrations#clip0_7427_50)">
      <rect width="30" height="30" rx="6" fill="#F5F6F7"/>
      <path d="M7.90409 11.6357H10.973V18.9347H12.501V21.7869H7.90409V11.6357ZM22.1091 18.3513H19.0402V11.0523H17.5123V8.20009H22.1091V18.3513Z" fill="#BACCDB"/>
      <path d="M7.19189 7.5H16.8907V15.8362L13.1614 11.0264H7.19189V7.5ZM22.8084 22.5H13.1096V14.1638L16.8389 18.9736H22.8084" fill="#125580"/>
    </g>
    <defs>
      <clipPath id="clip0_7427_50">
        <rect width="30" height="30" rx="6" fill="white"/>
      </clipPath>
    </defs>
  </svg>
}
    href="./netsuite"
  >
    Push your Hyperline invoicing data and reconcile easily with NetSuite.
  </Card>

  <Card
    title="Rillet"
    icon={
  <svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
    <g clip-path="url(https://mintlify.s3.us-west-1.amazonaws.com/hyperline/integrations#clip0_7453_50)">
      <rect width="30" height="30" rx="6" fill="#240257"/>
      <path d="M20.337 11.1671C19.9189 11.1671 19.5664 11.0357 19.2797 10.7728C19.0049 10.4981 18.8675 10.1635 18.8675 9.76929C18.8675 9.37503 19.0049 9.04649 19.2797 8.78366C19.5664 8.52082 19.9189 8.3894 20.337 8.3894C20.7671 8.3894 21.1196 8.52082 21.3943 8.78366C21.6811 9.04649 21.8244 9.37503 21.8244 9.76929C21.8244 10.1635 21.6811 10.4981 21.3943 10.7728C21.1196 11.0357 20.7671 11.1671 20.337 11.1671ZM16.7708 21.4177V19.769H19.5664V14.7691C19.5664 14.3749 19.3753 14.1777 18.993 14.1777H17.0217V12.5291H19.3335C20.0742 12.5291 20.6118 12.7023 20.9463 13.0488C21.2928 13.3833 21.466 13.9209 21.466 14.6616V19.769H24.2616V21.4177H16.7708Z" fill="white"/>
      <path d="M5.73877 21.4177V8.87327H9.84258C10.8222 8.87327 11.6286 9.04053 12.2618 9.37504C12.907 9.70956 13.3849 10.1636 13.6955 10.737C14.0181 11.2985 14.1793 11.9377 14.1793 12.6545C14.1793 13.4669 13.9703 14.1897 13.5522 14.8229C13.1459 15.4442 12.5187 15.8981 11.6705 16.1848L14.3048 21.4177H12.1006L9.69921 16.4537H7.63835V21.4177H5.73877ZM7.63835 14.7333H9.73505C10.5952 14.7333 11.2225 14.5421 11.6167 14.1598C12.0229 13.7775 12.226 13.2758 12.226 12.6545C12.226 12.0213 12.0289 11.5195 11.6346 11.1492C11.2404 10.7669 10.6012 10.5757 9.71713 10.5757H7.63835V14.7333Z" fill="white"/>
    </g>
    <defs>
      <clipPath id="clip0_7453_50">
        <rect width="30" height="30" rx="6" fill="white"/>
      </clipPath>
    </defs>
  </svg>
}
    href="./rillet"
  >
    Push your Hyperline invoicing data and reconcile easily with Rillet.
  </Card>

  <Card
    title="Exact Online"
    icon={
  <svg
    width="30"
    height="30"
    viewBox="0 0 30 30"
    fill="none"
    xmlns="http://www.w3.org/2000/svg"
  >
    <g clipPath="url(https://mintlify.s3.us-west-1.amazonaws.com/hyperline/integrations#clip0_3682_5493)">
      <rect width="30" height="30" rx="6" fill="#E1141D" />
      <path
        d="M4.5 14.2169V15.0664H7.73231V14.2169H4.5ZM4.5 15.6836V16.5332H7.73231V15.6836H4.5ZM18.7295 16.427H17.4551C17.2428 16.427 17.1166 16.314 17.1166 16.1083C17.1166 15.9026 17.2428 15.7898 17.4551 15.7898H18.7295V16.427ZM18.1388 13.4802L16.4391 13.4802V14.3297L18.0856 14.3296C18.5892 14.3296 18.7253 14.5231 18.7292 14.9668H17.4153C16.6388 14.9668 16.214 15.365 16.214 16.1083C16.214 16.8451 16.6388 17.25 17.4153 17.25H19.4795L19.4803 17.2499H19.6453V14.9338C19.6453 13.9514 19.2737 13.4802 18.1388 13.4802ZM22.9135 16.4004H21.845C21.2676 16.4004 21.055 16.1217 21.055 15.3651C21.055 14.6086 21.2676 14.3297 21.845 14.3297H22.9002L22.9019 14.3297H23.0667V13.4802H21.752C20.5774 13.4802 20.126 14.0642 20.126 15.3651C20.126 16.6659 20.5774 17.2499 21.752 17.2499H23.0793V16.4004H22.9144L22.9135 16.4004ZM10.2795 16.4004C9.79954 16.4004 9.57653 16.2305 9.51484 15.8033H10.9988V15.8038H11.52V15.6525C11.5204 15.6474 11.5207 15.6424 11.5207 15.6371V15.1195C11.5207 15.1143 11.5204 15.1092 11.52 15.1042V14.9543H11.3735C11.3673 14.9538 11.361 14.9535 11.3548 14.9535H9.51142C9.56808 14.5109 9.79049 14.3297 10.2795 14.3297H11.7928V13.4802L10.1866 13.4802C9.01179 13.4802 8.56068 14.0642 8.56068 15.365C8.56068 16.6658 9.01179 17.25 10.1866 17.25H11.6402C11.6407 17.25 11.6413 17.2499 11.6418 17.2499H11.8061V16.4004H10.2795ZM24.7621 16.4004C24.5829 16.4004 24.4765 16.2744 24.4765 16.0487V14.3297H25.585V13.4802H24.4765V12.7633H23.5608V16.115C23.5608 16.8917 23.9258 17.25 24.6824 17.25H25.4988L25.5005 17.2499H25.6648V16.4004H24.7621ZM14.6459 15.3081L16.0309 13.4802H14.9552L14.1082 14.5982L13.261 13.4802H12.1457L13.5504 15.3344L12.0991 17.25L13.1748 17.2499L14.0883 16.0443L15.0017 17.2499H16.1171L14.6459 15.3081Z"
        fill="white"
      />
    </g>
    <defs>
      <clipPath id="clip0_3682_5493">
        <rect width="30" height="30" rx="6" fill="white" />
      </clipPath>
    </defs>
  </svg>
}
    href="./exact-online"
  >
    Push your Hyperline invoicing data and reconcile easily with Exact Online.
  </Card>

  <Card
    title="Zoho Books"
    icon={
  <svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
    <g clip-path="url(https://mintlify.s3.us-west-1.amazonaws.com/hyperline/integrations#clip0_7066_50)">
    <rect width="30" height="30" rx="6" fill="#106CF8"/>
    <path d="M6.03663 18.7358C6.03912 18.7241 6.04161 18.7124 6.05648 18.6888C6.09831 18.5718 6.12776 18.4668 6.15957 18.3513C6.25922 18.1647 6.35652 17.9885 6.46277 17.8091C6.4865 17.7796 6.50129 17.7533 6.52069 17.7186C6.59139 17.63 6.65746 17.5498 6.72354 17.4696C6.72354 17.4696 6.72412 17.4689 6.73334 17.468C6.76228 17.4544 6.782 17.4416 6.81078 17.4277C6.83583 17.4102 6.85182 17.3939 6.87437 17.3706C7.00067 17.2857 7.1204 17.2079 7.24912 17.1314C7.27735 17.1205 7.29659 17.1083 7.32546 17.0916C7.38169 17.0694 7.42828 17.0518 7.48363 17.0367C7.51063 17.0267 7.52888 17.0141 7.55561 16.9981C7.58769 16.9881 7.61128 16.9816 7.64085 16.9784C7.66345 16.9703 7.68008 16.959 7.7064 16.9431C7.86585 16.8915 8.0156 16.8445 8.1731 16.8017C8.24615 16.7765 8.31144 16.7471 8.38553 16.7133C8.42642 16.7017 8.4585 16.6945 8.49782 16.6908C8.54223 16.6757 8.5794 16.6571 8.62741 16.6363C8.70682 16.6122 8.77539 16.5901 8.85113 16.5717C8.89554 16.5575 8.93278 16.5396 8.97865 16.5195C8.99877 16.5144 9.01026 16.5115 9.02747 16.5123C9.04959 16.5048 9.06599 16.4936 9.09149 16.4783C9.13292 16.4667 9.16526 16.459 9.20499 16.4558C9.24935 16.4415 9.28633 16.4226 9.33311 16.3999C9.40303 16.3772 9.46315 16.3584 9.53067 16.3436C9.57508 16.3286 9.61208 16.3094 9.65759 16.2886C9.67742 16.2847 9.68874 16.2824 9.70613 16.2835C9.72848 16.2748 9.74477 16.2627 9.7707 16.2463C9.82854 16.2283 9.87674 16.2148 9.93372 16.2032C9.96255 16.1945 9.98261 16.1839 10.0128 16.1706C10.0492 16.1586 10.0755 16.1494 10.1104 16.1429C10.1393 16.1357 10.1596 16.1258 10.1882 16.1139C10.2078 16.1097 10.219 16.1073 10.237 16.1088C10.2663 16.0968 10.2888 16.081 10.3196 16.0623C10.3448 16.0561 10.3619 16.0529 10.3863 16.0533C10.4291 16.0364 10.4647 16.0156 10.5003 15.9949C10.5003 15.9949 10.4971 15.9919 10.5062 15.9936C10.5289 15.9953 10.5424 15.9953 10.5636 15.9992C10.6081 15.9832 10.6451 15.9633 10.6916 15.9414C10.7319 15.9187 10.7626 15.8979 10.7934 15.8771C10.8056 15.8756 10.8178 15.874 10.8499 15.873C10.899 15.8664 10.9282 15.8591 10.9661 15.8544C10.9949 15.8469 11.0151 15.837 11.0458 15.8241C11.1748 15.7814 11.2933 15.7417 11.4177 15.7055C11.4402 15.6969 11.4567 15.6847 11.4822 15.6683C11.5235 15.6578 11.5558 15.6513 11.5956 15.649C11.6406 15.6347 11.678 15.6162 11.724 15.5954C11.7438 15.5898 11.755 15.5866 11.772 15.5869C11.7933 15.5785 11.8089 15.5664 11.834 15.551C11.8767 15.5406 11.9097 15.5334 11.9487 15.5298C11.9708 15.5214 11.9871 15.5094 12.0133 15.493C12.1638 15.4441 12.3044 15.3998 12.4509 15.3587C12.4738 15.3508 12.4908 15.3398 12.5094 15.3223C12.5111 15.3159 12.5068 15.3033 12.5068 15.3033C12.5188 15.3008 12.5309 15.2984 12.5614 15.2966C12.5937 15.2971 12.6075 15.2968 12.6284 15.3005C12.6597 15.2904 12.6838 15.2763 12.7164 15.2583C12.7495 15.2479 12.7739 15.2415 12.804 15.2391C12.8259 15.2312 12.842 15.2192 12.8675 15.2036C12.9096 15.1928 12.9424 15.1857 12.9822 15.1826C13.0267 15.1687 13.0641 15.1508 13.1117 15.13C13.1812 15.1065 13.2406 15.086 13.3084 15.0688C13.391 15.0412 13.4651 15.0102 13.5483 14.9752C13.5898 14.9644 13.6223 14.9576 13.6619 14.9544C13.706 14.9385 13.7427 14.919 13.7881 14.8973C13.8082 14.8928 13.8197 14.8903 13.8369 14.8919C13.8587 14.8841 13.8749 14.8721 13.9004 14.8564C13.9424 14.8451 13.9751 14.8375 14.0161 14.8342C14.0983 14.8074 14.1722 14.7763 14.2545 14.7417C14.2862 14.7324 14.3096 14.7265 14.3403 14.7246C14.3722 14.7142 14.397 14.7 14.4309 14.6823C14.4838 14.6558 14.5275 14.6327 14.5712 14.6096C14.5834 14.6069 14.5955 14.6042 14.6264 14.6022C14.659 14.6033 14.673 14.6036 14.6942 14.6075C14.7385 14.5917 14.7755 14.5723 14.823 14.55C14.9026 14.5267 14.9718 14.5063 15.0497 14.4897C15.144 14.456 15.2295 14.4186 15.3234 14.3795C15.343 14.3758 15.3541 14.3737 15.3729 14.3755C15.4171 14.36 15.4538 14.3406 15.4998 14.3184C15.5408 14.2967 15.5724 14.2777 15.604 14.2587C15.6162 14.2569 15.6284 14.2552 15.6594 14.2553C15.6921 14.2564 15.7061 14.2557 15.7284 14.2582C15.81 14.2295 15.8833 14.1975 15.9656 14.1613C16.0076 14.1501 16.0406 14.1432 16.0816 14.1404C16.163 14.1124 16.2363 14.0804 16.3183 14.0451C16.339 14.039 16.3511 14.0362 16.3735 14.0363C16.4186 14.0236 16.4534 14.0079 16.4977 13.988C16.5889 13.9576 16.6706 13.9314 16.7596 13.9096C16.8038 13.8949 16.8406 13.8759 16.8877 13.8534C16.9676 13.8301 17.0373 13.8102 17.1128 13.7938C17.1344 13.7846 17.15 13.772 17.1742 13.756C17.2067 13.7465 17.2307 13.7406 17.2621 13.7386C17.3063 13.7238 17.3432 13.7049 17.3886 13.684C17.4088 13.6794 17.4204 13.6769 17.4389 13.6782C17.4829 13.6641 17.52 13.6462 17.5671 13.6259C17.6037 13.6147 17.6301 13.6059 17.6652 13.5994C17.6941 13.5915 17.7143 13.5812 17.7428 13.5688C17.7624 13.5642 17.7736 13.5617 17.7908 13.5626C17.8137 13.5545 17.8306 13.5428 17.8572 13.527C17.9738 13.4901 18.0806 13.4574 18.1963 13.4264C18.2247 13.4161 18.2442 13.4043 18.2721 13.3894C18.3031 13.3689 18.3256 13.3514 18.3481 13.3339C18.3604 13.332 18.3726 13.3301 18.4052 13.3292C18.5175 13.2931 18.6095 13.2561 18.7015 13.2191C18.7139 13.2169 18.7263 13.2147 18.7591 13.2124C18.8672 13.1854 18.9551 13.1585 19.0515 13.1342C19.0806 13.1275 19.1011 13.1183 19.1299 13.107C19.1493 13.1018 19.1603 13.0987 19.1781 13.0994C19.2128 13.0851 19.241 13.0672 19.2774 13.0474C19.297 13.0432 19.3083 13.041 19.3254 13.0423C19.3486 13.035 19.3659 13.0242 19.3931 13.0095C19.4506 12.9919 19.4983 12.978 19.5571 12.9669C19.6236 12.944 19.6788 12.9183 19.7433 12.8887C19.7852 12.878 19.8179 12.8713 19.8578 12.8685C19.9023 12.8541 19.9396 12.8359 19.9864 12.815C20.0269 12.7926 20.058 12.7729 20.0891 12.7532C20.1013 12.7512 20.1134 12.7492 20.1454 12.7475C20.2867 12.7104 20.4082 12.673 20.5372 12.6397C20.5819 12.6253 20.6191 12.6067 20.6668 12.5854C20.746 12.5599 20.8147 12.5372 20.8891 12.5183C20.9111 12.5105 20.9273 12.4989 20.9538 12.484C21.0457 12.4558 21.1274 12.4308 21.217 12.4091C21.2702 12.3912 21.3154 12.37 21.3692 12.3439C21.4193 12.3201 21.4608 12.3012 21.5088 12.2865C21.543 12.2723 21.5707 12.2537 21.6066 12.2302C21.6428 12.2107 21.6708 12.196 21.7087 12.1828C21.7455 12.16 21.7724 12.1356 21.8063 12.1047C21.8818 12.0407 21.9502 11.9833 22.0187 11.9258C22.0369 11.9119 22.0551 11.898 22.0906 11.88C22.1228 11.8577 22.1377 11.8395 22.1528 11.8217C22.1531 11.822 22.1524 11.8215 22.1614 11.82C22.1843 11.8003 22.198 11.782 22.2119 11.764C22.2121 11.7641 22.2117 11.7639 22.2208 11.7623C22.2434 11.7424 22.2569 11.724 22.2708 11.7059C22.2711 11.7063 22.2704 11.7056 22.2804 11.7044C22.3096 11.6725 22.3289 11.6419 22.3481 11.61C22.3481 11.6087 22.3508 11.6083 22.361 11.6079C22.4027 11.5589 22.4342 11.5103 22.4699 11.4539C22.4955 11.4174 22.5167 11.3888 22.5478 11.3579C22.6096 11.251 22.6618 11.1465 22.7136 11.0412C22.7133 11.0405 22.7148 11.0406 22.7241 11.0383C22.7558 10.9794 22.7781 10.9228 22.8018 10.8573C22.8063 10.8368 22.8095 10.8253 22.8206 10.81C22.8374 10.7688 22.8464 10.7314 22.8568 10.6845C22.8618 10.6629 22.8654 10.6507 22.8776 10.634C22.8975 10.5637 22.9088 10.4979 22.9204 10.4205C22.9247 10.3703 22.9287 10.3317 22.9409 10.2869C23.0289 10.0576 23.0397 9.83618 22.9305 9.60668C22.9262 9.56631 22.9241 9.53684 22.9273 9.49791C22.9449 9.3507 22.9387 9.21888 22.809 9.11744C22.8057 9.09686 22.8045 9.08498 22.8085 9.06547C22.7791 8.9965 22.7445 8.93514 22.7114 8.87271C22.713 8.87164 22.7096 8.87319 22.711 8.86264C22.6865 8.8082 22.6606 8.76432 22.6286 8.7131C22.6064 8.67932 22.5901 8.65286 22.5766 8.61593C22.4967 8.50046 22.4141 8.39548 22.3308 8.29093C22.3301 8.29137 22.3313 8.29014 22.3314 8.27984C22.2363 8.1039 22.1077 7.97537 21.914 7.90881C21.901 7.89924 21.8943 7.89292 21.8858 7.87627C21.8201 7.83213 21.7567 7.79769 21.6842 7.76081C21.6491 7.7407 21.6231 7.72302 21.5938 7.69607C21.4729 7.63805 21.3551 7.58929 21.2282 7.53989C21.2072 7.53653 21.1952 7.5338 21.1791 7.52218C21.061 7.43264 20.9435 7.36574 20.7836 7.41905C20.7416 7.41574 20.7112 7.41275 20.6743 7.40154C20.5375 7.37634 20.4072 7.3446 20.2769 7.34451C15.9505 7.34162 11.6241 7.34171 7.29772 7.3416C7.04162 7.34159 7.02069 7.36243 7.02063 7.6138C7.02011 10.1499 7.02157 12.686 7.01739 15.2222C7.01683 15.5612 7.06647 15.9051 6.94791 16.2449C6.9344 16.2714 6.92548 16.2908 6.91655 16.3103C6.89798 16.319 6.8794 16.3277 6.84539 16.334C6.81469 16.3457 6.79944 16.3597 6.77713 16.3783C6.75397 16.3881 6.73786 16.3932 6.71422 16.3926C6.67233 16.4005 6.63797 16.4141 6.59064 16.4293C6.4792 16.4181 6.38072 16.4053 6.28224 16.3925C6.25792 16.3734 6.23361 16.3544 6.19889 16.3243C6.15876 16.2731 6.12903 16.2329 6.10347 16.189C6.09478 16.1737 6.08191 16.1622 6.06355 16.1548C6.05806 16.1589 6.05684 16.1724 6.05684 16.1724C6.05201 16.1557 6.04719 16.139 6.04027 16.1043C6.0365 16.0641 6.03481 16.042 6.04061 16.0102C6.05425 15.9435 6.06574 15.8866 6.06576 15.8296C6.06664 12.8718 6.06668 9.91389 6.06562 6.95602C6.0656 6.89947 6.05151 6.84292 6.04482 6.77529C6.08468 6.68362 6.11186 6.59439 6.16515 6.52424C6.27915 6.37418 6.45295 6.37952 6.62223 6.37952C11.165 6.37958 15.7077 6.38277 20.2504 6.37501C20.9314 6.37384 21.565 6.5087 22.1523 6.84531C23.0841 7.37943 23.6805 8.1627 23.9112 9.1954C24.0622 9.87108 24.0231 10.5458 23.7751 11.2003C23.511 11.8969 23.0697 12.4608 22.4571 12.8999C22.0208 13.2127 21.5163 13.3739 21.0158 13.5433C20.0513 13.8695 19.0837 14.1866 18.1182 14.5101C17.5937 14.6858 17.0716 14.8685 16.5472 15.0447C15.4661 15.4081 14.3838 15.7683 13.3027 16.1319C12.8991 16.2677 12.4986 16.4125 12.095 16.5481C11.3431 16.8006 10.5897 17.049 9.83728 17.2999C9.30313 17.4779 8.7674 17.6518 8.23652 17.8388C8.02209 17.9144 7.81867 18.02 7.60061 18.1137C7.22426 18.3605 7.05456 18.7085 7.05331 19.1357C7.04974 20.3607 7.05265 21.5858 7.04867 22.8108C7.04824 22.9424 7.09353 22.989 7.22853 22.9889C11.0497 22.9864 14.8709 22.9867 18.692 22.9865C19.2463 22.9865 19.7861 22.9147 20.3084 22.7171C21.0288 22.4445 21.6265 22.0122 22.0976 21.4178C22.5745 20.8162 22.8598 20.1368 22.9425 19.3714C23.009 18.7551 22.9517 18.1555 22.7346 17.5792C22.3435 16.5406 21.6407 15.7674 20.6258 15.2677C20.5275 15.2193 20.4426 15.1047 20.3972 15.0015C20.3083 14.7996 20.375 14.5849 20.5327 14.4499C20.6962 14.31 20.9293 14.2903 21.1539 14.4017C21.7294 14.6873 22.2345 15.0631 22.6677 15.533C23.4029 16.3305 23.8357 17.2683 23.9618 18.3295C24.0434 19.0166 23.9982 19.7038 23.7885 20.375C23.4213 21.5499 22.7128 22.4723 21.6742 23.1587C21.653 23.17 21.6382 23.1837 21.6154 23.2033C21.4985 23.2697 21.3895 23.3302 21.271 23.3882C21.2323 23.4065 21.203 23.4273 21.1647 23.453C21.0788 23.4928 21.002 23.5276 20.9162 23.5605C20.8891 23.572 20.871 23.5853 20.8435 23.6033C20.7034 23.653 20.5728 23.6981 20.4344 23.7394C20.3801 23.7546 20.3337 23.7735 20.2786 23.7943C20.2587 23.7987 20.2472 23.8013 20.2288 23.7995C20.1856 23.8146 20.1494 23.8338 20.1132 23.8531C20.1132 23.8531 20.1165 23.8561 20.1054 23.8546C20.0627 23.854 20.031 23.8551 19.9915 23.8525C19.9371 23.8677 19.8905 23.8865 19.8318 23.9068C19.7418 23.9211 19.6638 23.9338 19.5793 23.942C19.5451 23.9457 19.5173 23.9539 19.4768 23.9629C19.387 23.9679 19.3099 23.9721 19.222 23.9705C19.143 23.9603 19.0748 23.952 19.0065 23.952C14.8699 23.9513 10.7333 23.9512 6.59674 23.9522C6.53917 23.9522 6.48161 23.9664 6.41323 23.9731C6.20412 23.9218 6.08117 23.8015 6.04976 23.5904C6.05878 23.5415 6.06581 23.5033 6.06582 23.4651C6.06627 21.9892 6.06633 20.5134 6.06496 19.0375C6.06491 18.9858 6.04986 18.9341 6.0427 18.8701C6.04127 18.8171 6.03895 18.7764 6.03663 18.7358Z" fill="white"/>
    <path d="M17.6292 16.7905C18.3821 16.9384 18.9043 17.3604 19.1909 18.0356C19.6256 19.0598 19.1663 20.2092 18.1505 20.7025C17.1383 21.1942 15.8483 20.7558 15.3444 19.7655C14.7595 18.6159 15.3385 17.1957 16.6698 16.822C16.9794 16.7351 17.2982 16.7177 17.6292 16.7905ZM16.1911 18.8645C16.2089 19.5231 16.8696 19.9738 17.4805 19.8216C17.9981 19.6927 18.3276 19.2262 18.2634 18.6631C18.2103 18.1976 17.7295 17.7902 17.2389 17.7962C16.6196 17.8038 16.1622 18.3167 16.1911 18.8645Z" fill="white"/>
    <path d="M13.8244 10.5534C14.2231 11.3894 14.1483 12.1743 13.5491 12.8715C12.827 13.7117 11.5936 13.8542 10.6937 13.1981C9.43788 12.2825 9.57098 10.4889 10.8748 9.73011C11.8581 9.15783 13.2042 9.44789 13.8244 10.5534ZM11.93 10.4864C11.3272 10.5045 10.8825 10.9735 10.885 11.543C10.8875 12.0976 11.3884 12.5581 11.9607 12.5575C12.5118 12.5569 12.9911 12.0899 13.0039 11.5409C13.0171 10.978 12.5516 10.5089 11.93 10.4864Z" fill="white"/>
    <path d="M20.5119 7.4232C20.4452 7.41614 20.3876 7.40128 20.3301 7.40127C15.9799 7.40015 11.6297 7.40012 7.27951 7.40041C7.08411 7.40042 7.08065 7.40397 7.0806 7.5944C7.07985 10.347 7.07984 13.0996 7.07783 15.8522C7.07777 15.9377 7.05814 16.0232 7.0476 16.1208C7.03858 16.1481 7.02959 16.1633 7.01094 16.1903C6.98502 16.2139 6.96875 16.2259 6.95249 16.2379C7.06648 15.9051 7.01683 15.5612 7.01739 15.2222C7.02157 12.686 7.02011 10.1499 7.02063 7.6138C7.02069 7.36243 7.04162 7.34159 7.29772 7.3416C11.6241 7.34171 15.9505 7.34162 20.2769 7.34451C20.4072 7.3446 20.5375 7.37634 20.6622 7.40484C20.6234 7.42007 20.5903 7.42379 20.5571 7.42751C20.5451 7.42578 20.533 7.42405 20.5119 7.4232Z" fill="white"/>
    <path d="M6.04061 16.0102C6.0253 15.964 6.01064 15.9081 6.01062 15.8521C6.00941 12.9256 6.00947 9.99901 6.00911 7.07244C6.0091 7.01467 6.0057 6.95689 6.00037 6.8859C5.99908 6.85125 6.00131 6.82981 6.00512 6.79771C6.01293 6.78711 6.01914 6.78716 6.03466 6.78679C6.0515 6.84292 6.0656 6.89947 6.06562 6.95602C6.06668 9.91389 6.06664 12.8718 6.06576 15.8296C6.06574 15.8866 6.05425 15.9435 6.04061 16.0102Z" fill="white"/>
    <path d="M10.556 15.9953C10.5424 15.9953 10.5289 15.9953 10.5059 15.9914C10.59 15.9471 10.6835 15.9065 10.7852 15.8715C10.7626 15.8979 10.7318 15.9187 10.6814 15.9406C10.6264 15.9596 10.5912 15.9775 10.556 15.9953Z" fill="white"/>
    <path d="M6.04108 18.6336C6.07521 18.5409 6.10881 18.4585 6.14981 18.3689C6.12776 18.4668 6.09831 18.5718 6.05935 18.6803C6.04674 18.6705 6.04364 18.6572 6.04108 18.6336Z" fill="white"/>
    <path d="M11.0298 16.9699C11.1312 16.9313 11.2462 16.8937 11.373 16.8569C11.271 16.8955 11.1571 16.9331 11.0298 16.9699Z" fill="white"/>
    <path d="M10.7054 17.0837C10.7769 17.0529 10.8613 17.023 10.9574 16.993C10.8856 17.0235 10.8019 17.054 10.7054 17.0837Z" fill="white"/>
    <path d="M20.2288 23.7995C20.2193 23.8185 20.2027 23.8332 20.1808 23.8542C20.1613 23.8606 20.1471 23.8607 20.1231 23.857C20.1494 23.8338 20.1856 23.8146 20.2288 23.7995Z" fill="white"/>
    <path d="M10.3863 16.0533C10.3956 16.0342 10.4121 16.0188 10.4338 15.9966C10.4529 15.9892 10.4667 15.9885 10.4905 15.9914C10.4647 16.0156 10.4291 16.0364 10.3863 16.0533Z" fill="white"/>
    <path d="M6.71422 16.3926C6.72137 16.4049 6.72099 16.4114 6.71961 16.4278C6.69737 16.4392 6.67613 16.4407 6.64441 16.4401C6.62847 16.4374 6.623 16.4369 6.61056 16.4321C6.63797 16.4141 6.67233 16.4005 6.71422 16.3926Z" fill="white"/>
    <path d="M22.0978 11.8338C22.1124 11.8239 22.1238 11.8224 22.1439 11.8211C22.1377 11.8395 22.1228 11.8577 22.0985 11.8765C22.0909 11.8655 22.0928 11.8539 22.0978 11.8338Z" fill="white"/>
    <path d="M6.8502 16.3598C6.83667 16.3687 6.82176 16.3709 6.79551 16.3734C6.79943 16.3597 6.81468 16.3457 6.83548 16.3368C6.84103 16.3419 6.84883 16.3531 6.8502 16.3598Z" fill="white"/>
    <path d="M19.0847 22.9129C19.0833 22.9161 19.0748 22.9207 19.0588 22.9263C19.0594 22.9214 19.0681 22.9171 19.0847 22.9129Z" fill="white"/>
    <path d="M7.15703 22.9028C7.15302 22.9036 7.14333 22.899 7.12861 22.8878C7.13285 22.8866 7.1421 22.8919 7.15703 22.9028Z" fill="white"/>
    <path d="M19.222 23.9705C19.1703 23.9842 19.1079 23.9991 19.0455 23.9992C14.9088 24.0002 10.772 24.0002 6.6353 23.9995C6.57193 23.9995 6.50856 23.9908 6.43463 23.98C6.48162 23.9664 6.53917 23.9522 6.59674 23.9522C10.7333 23.9512 14.8699 23.9513 19.0065 23.952C19.0748 23.952 19.143 23.9603 19.222 23.9705Z" fill="white"/>
    <path d="M6.04976 23.5904C6.03509 23.5404 6.01751 23.4796 6.01745 23.4187C6.01588 21.9611 6.01607 20.5036 6.01672 19.046C6.01674 18.9983 6.02501 18.9507 6.03562 18.8927C6.04986 18.9341 6.06491 18.9858 6.06496 19.0375C6.06633 20.5134 6.06627 21.9892 6.06582 23.4651C6.06581 23.5033 6.05878 23.5415 6.04976 23.5904Z" fill="white"/>
    <path d="M22.3314 8.27984C22.1963 8.17046 22.0613 8.05079 21.923 7.92189C22.1077 7.97537 22.2363 8.1039 22.3314 8.27984Z" fill="white"/>
    <path d="M21.1791 7.52218C21.0597 7.4983 20.9361 7.46553 20.8038 7.42605C20.9435 7.36574 21.061 7.43264 21.1791 7.52218Z" fill="white"/>
    <path d="M22.5766 8.61593C22.4938 8.52106 22.4137 8.4157 22.3325 8.30042C22.4141 8.39548 22.4967 8.50046 22.5766 8.61593Z" fill="white"/>
    <path d="M21.5938 7.69607C21.4817 7.65547 21.3663 7.60561 21.2442 7.54814C21.3551 7.58929 21.4729 7.63805 21.5938 7.69607Z" fill="white"/>
    <path d="M22.6581 11.113C22.6735 11.0851 22.6861 11.067 22.7063 11.0454C22.6618 11.1465 22.6096 11.251 22.5478 11.3579C22.5771 11.281 22.6162 11.2019 22.6581 11.113Z" fill="white"/>
    <path d="M15.0497 14.4897C15.1251 14.4505 15.2092 14.415 15.3041 14.3803C15.2295 14.4186 15.144 14.456 15.0497 14.4897Z" fill="white"/>
    <path d="M14.0161 14.8342C14.0799 14.8021 14.152 14.7744 14.2351 14.7459C14.1722 14.7763 14.0983 14.8074 14.0161 14.8342Z" fill="white"/>
    <path d="M13.3084 15.0688C13.3723 15.0371 13.4447 15.0089 13.5282 14.9799C13.4651 15.0102 13.391 15.0412 13.3084 15.0688Z" fill="white"/>
    <path d="M16.0816 14.1404C16.1448 14.1072 16.2161 14.078 16.2985 14.0485C16.2362 14.0804 16.163 14.1124 16.0816 14.1404Z" fill="white"/>
    <path d="M22.8085 9.06547C22.7727 9.01348 22.742 8.95388 22.7106 8.88402C22.7445 8.93514 22.7791 8.9965 22.8085 9.06547Z" fill="white"/>
    <path d="M22.7241 11.0383C22.7377 10.986 22.7607 10.9314 22.792 10.8715C22.7781 10.9228 22.7558 10.9794 22.7241 11.0383Z" fill="white"/>
    <path d="M21.8858 7.87627C21.8271 7.85002 21.7659 7.81406 21.6991 7.77068C21.7567 7.79769 21.8201 7.83213 21.8858 7.87627Z" fill="white"/>
    <path d="M15.7284 14.2582C15.7916 14.2261 15.8632 14.1972 15.9456 14.167C15.8832 14.1975 15.81 14.2295 15.7284 14.2582Z" fill="white"/>
    <path d="M8.1731 16.8017C8.22864 16.7712 8.29192 16.7448 8.36597 16.7181C8.31144 16.7471 8.24615 16.7765 8.1731 16.8017Z" fill="white"/>
    <path d="M22.361 11.6079C22.3834 11.5624 22.416 11.5164 22.4572 11.4661C22.4342 11.5103 22.4027 11.5589 22.361 11.6079Z" fill="white"/>
    <path d="M19.5571 12.9669C19.6016 12.9411 19.6572 12.918 19.7235 12.8938C19.6788 12.9183 19.6236 12.944 19.5571 12.9669Z" fill="white"/>
    <path d="M20.5372 12.6397C20.5652 12.6191 20.6007 12.6026 20.6462 12.5871C20.6191 12.6067 20.5819 12.6253 20.5372 12.6397Z" fill="white"/>
    <path d="M9.53067 16.3436C9.55845 16.3223 9.59365 16.305 9.63896 16.2891C9.61208 16.3094 9.57508 16.3286 9.53067 16.3436Z" fill="white"/>
    <path d="M10.5636 15.9992C10.5912 15.9775 10.6264 15.9596 10.6718 15.9426C10.6451 15.9633 10.6081 15.9832 10.5636 15.9992Z" fill="white"/>
    <path d="M9.20499 16.4558C9.23279 16.4348 9.26798 16.4183 9.31324 16.4028C9.28633 16.4226 9.24935 16.4415 9.20499 16.4558Z" fill="white"/>
    <path d="M11.5956 15.649C11.6238 15.6286 11.6595 15.6123 11.7054 15.5969C11.678 15.6162 11.6406 15.6347 11.5956 15.649Z" fill="white"/>
    <path d="M22.711 8.86264C22.6842 8.82881 22.6589 8.78443 22.6341 8.73024C22.6606 8.76432 22.6865 8.8082 22.711 8.86264Z" fill="white"/>
    <path d="M17.2621 13.7386C17.2897 13.7179 17.3248 13.7012 17.3699 13.6853C17.3432 13.7049 17.3063 13.7238 17.2621 13.7386Z" fill="white"/>
    <path d="M16.7596 13.9096C16.7873 13.8886 16.8223 13.8719 16.8674 13.8561C16.8406 13.8759 16.8038 13.8949 16.7596 13.9096Z" fill="white"/>
    <path d="M19.9915 23.8525C19.9546 23.8734 19.9098 23.8906 19.8544 23.9065C19.8905 23.8865 19.9371 23.8677 19.9915 23.8525Z" fill="white"/>
    <path d="M15.3729 14.3755C15.4003 14.3543 15.4353 14.3371 15.4804 14.3205C15.4538 14.3406 15.4171 14.36 15.3729 14.3755Z" fill="white"/>
    <path d="M20.4344 23.7394C20.3975 23.7602 20.353 23.7773 20.2978 23.7934C20.3337 23.7735 20.3801 23.7546 20.4344 23.7394Z" fill="white"/>
    <path d="M19.8578 12.8685C19.886 12.8483 19.9214 12.832 19.9668 12.8167C19.9396 12.8359 19.9023 12.8541 19.8578 12.8685Z" fill="white"/>
    <path d="M14.6942 14.6075C14.722 14.5864 14.7571 14.5689 14.8024 14.5522C14.7755 14.5723 14.7385 14.5917 14.6942 14.6075Z" fill="white"/>
    <path d="M8.49782 16.6908C8.52581 16.6702 8.56104 16.6531 8.60641 16.6372C8.57939 16.6571 8.54223 16.6757 8.49782 16.6908Z" fill="white"/>
    <path d="M8.85113 16.5717C8.87927 16.5516 8.91457 16.5353 8.95995 16.5203C8.93278 16.5396 8.89554 16.5575 8.85113 16.5717Z" fill="white"/>
    <path d="M12.9822 15.1826C13.0106 15.1626 13.046 15.1467 13.0915 15.1319C13.0641 15.1508 13.0267 15.1687 12.9822 15.1826Z" fill="white"/>
    <path d="M22.8206 10.81C22.8219 10.7776 22.8309 10.7416 22.8477 10.6997C22.8464 10.7314 22.8374 10.7688 22.8206 10.81Z" fill="white"/>
    <path d="M17.4389 13.6782C17.467 13.6582 17.502 13.6419 17.547 13.627C17.5199 13.6462 17.4829 13.6641 17.4389 13.6782Z" fill="white"/>
    <path d="M13.6619 14.9544C13.6895 14.9332 13.7244 14.9156 13.7694 14.8987C13.7427 14.919 13.706 14.9384 13.6619 14.9544Z" fill="white"/>
    <path d="M21.7087 12.1828C21.7262 12.1588 21.7536 12.1362 21.7902 12.1125C21.7724 12.1356 21.7455 12.16 21.7087 12.1828Z" fill="white"/>
    <path d="M21.5088 12.2865C21.528 12.2663 21.5537 12.2503 21.5889 12.2347C21.5707 12.2537 21.543 12.2723 21.5088 12.2865Z" fill="white"/>
    <path d="M19.1781 13.0994C19.1975 13.0797 19.2237 13.0638 19.2595 13.0486C19.241 13.0672 19.2128 13.0851 19.1781 13.0994Z" fill="white"/>
    <path d="M21.271 23.3882C21.2511 23.4099 21.2217 23.4292 21.183 23.4483C21.203 23.4273 21.2323 23.4065 21.271 23.3882Z" fill="white"/>
    <path d="M22.2804 11.7044C22.2908 11.6767 22.3111 11.6477 22.3398 11.615C22.3289 11.6419 22.3096 11.6725 22.2804 11.7044Z" fill="white"/>
    <path d="M16.3735 14.0363C16.3984 14.0198 16.4336 14.0062 16.4785 13.9924C16.4534 14.0079 16.4186 14.0236 16.3735 14.0363Z" fill="white"/>
    <path d="M19.5793 23.942C19.5603 23.953 19.5349 23.9595 19.4996 23.9641C19.5173 23.9539 19.5451 23.9457 19.5793 23.942Z" fill="white"/>
    <path d="M14.3403 14.7246C14.356 14.7089 14.3789 14.6971 14.4117 14.6855C14.397 14.7 14.3722 14.7142 14.3403 14.7246Z" fill="white"/>
    <path d="M12.6284 15.3005C12.6437 15.2854 12.6662 15.2742 12.6982 15.2626C12.6838 15.2763 12.6597 15.2904 12.6284 15.3005Z" fill="white"/>
    <path d="M10.237 16.1088C10.2512 16.0927 10.2721 16.0803 10.3022 16.0666C10.2888 16.081 10.2663 16.0968 10.237 16.1088Z" fill="white"/>
    <path d="M6.46277 17.8091C6.46886 17.7866 6.4839 17.7607 6.50751 17.7309C6.50129 17.7533 6.4865 17.7796 6.46277 17.8091Z" fill="white"/>
    <path d="M9.93372 16.2032C9.94501 16.1912 9.96507 16.1812 9.9939 16.1723C9.9826 16.1839 9.96255 16.1945 9.93372 16.2032Z" fill="white"/>
    <path d="M7.24912 17.1314C7.25947 17.1186 7.27882 17.107 7.307 17.0958C7.29659 17.1083 7.27735 17.1205 7.24912 17.1314Z" fill="white"/>
    <path d="M6.81078 17.4277C6.81798 17.413 6.83423 17.3972 6.85915 17.3795C6.85181 17.3939 6.83583 17.4102 6.81078 17.4277Z" fill="white"/>
    <path d="M17.7908 13.5626C17.7997 13.5501 17.8146 13.541 17.8385 13.5315C17.8306 13.5428 17.8137 13.5545 17.7908 13.5626Z" fill="white"/>
    <path d="M12.804 15.2391C12.8124 15.226 12.8266 15.2169 12.8494 15.2075C12.842 15.2192 12.8259 15.2312 12.804 15.2391Z" fill="white"/>
    <path d="M20.8891 12.5183C20.8977 12.5054 20.9119 12.4965 20.9349 12.4873C20.9273 12.4989 20.9111 12.5105 20.8891 12.5183Z" fill="white"/>
    <path d="M21.6753 23.1807C21.6621 23.1901 21.6512 23.1932 21.6319 23.1968C21.6382 23.1837 21.653 23.17 21.6742 23.1587C21.6806 23.1611 21.6776 23.1743 21.6753 23.1807Z" fill="white"/>
    <path d="M17.6652 13.5994C17.6767 13.5877 17.6969 13.5783 17.7258 13.5699C17.7143 13.5812 17.6941 13.5915 17.6652 13.5994Z" fill="white"/>
    <path d="M13.8369 14.8919C13.8455 14.879 13.8597 14.8701 13.8825 14.8607C13.8749 14.8721 13.8587 14.8841 13.8369 14.8919Z" fill="white"/>
    <path d="M20.9162 23.5605C20.9067 23.5739 20.8882 23.5855 20.8613 23.5979C20.871 23.5853 20.8891 23.572 20.9162 23.5605Z" fill="white"/>
    <path d="M17.1128 13.7938C17.1207 13.7805 17.1345 13.7708 17.157 13.7602C17.15 13.772 17.1344 13.7846 17.1128 13.7938Z" fill="white"/>
    <path d="M22.2208 11.7623C22.2253 11.7455 22.2389 11.7271 22.2614 11.7071C22.2569 11.724 22.2434 11.7424 22.2208 11.7623Z" fill="white"/>
    <path d="M10.9661 15.8544C10.9776 15.8427 10.9978 15.8335 11.0267 15.8256C11.0151 15.837 10.9949 15.8469 10.9661 15.8544Z" fill="white"/>
    <path d="M6.10347 16.189C6.09293 16.1867 6.08655 16.1806 6.07461 16.1626C6.0819 16.1622 6.09478 16.1737 6.10347 16.189Z" fill="white"/>
    <path d="M9.70613 16.2835C9.71453 16.2708 9.72898 16.2615 9.75225 16.2514C9.74476 16.2627 9.72848 16.2748 9.70613 16.2835Z" fill="white"/>
    <path d="M10.1104 16.1429C10.1221 16.1313 10.1424 16.1226 10.1713 16.1148C10.1596 16.1258 10.1393 16.1357 10.1104 16.1429Z" fill="white"/>
    <path d="M19.0515 13.1342C19.0634 13.1231 19.0839 13.1146 19.113 13.1076C19.1011 13.1183 19.0806 13.1275 19.0515 13.1342Z" fill="white"/>
    <path d="M22.1614 11.82C22.1662 11.8033 22.1799 11.785 22.2028 11.7653C22.198 11.782 22.1843 11.8003 22.1614 11.82Z" fill="white"/>
    <path d="M18.1963 13.4264C18.2069 13.4137 18.2265 13.4026 18.2548 13.392C18.2442 13.4043 18.2247 13.4161 18.1963 13.4264Z" fill="white"/>
    <path d="M9.02747 16.5123C9.03619 16.5 9.05063 16.4913 9.07373 16.4825C9.06599 16.4936 9.04959 16.5048 9.02747 16.5123Z" fill="white"/>
    <path d="M12.4509 15.3587C12.4599 15.3466 12.4749 15.3377 12.4988 15.3288C12.4908 15.3398 12.4738 15.3508 12.4509 15.3587Z" fill="white"/>
    <path d="M11.4177 15.7055C11.4263 15.6927 11.441 15.6834 11.4644 15.6733C11.4567 15.6847 11.4402 15.6969 11.4177 15.7055Z" fill="white"/>
    <path d="M11.772 15.5869C11.78 15.5739 11.7936 15.5645 11.8159 15.5547C11.8089 15.5664 11.7933 15.5784 11.772 15.5869Z" fill="white"/>
    <path d="M11.9487 15.5298C11.9571 15.517 11.9715 15.5079 11.9946 15.4981C11.9871 15.5094 11.9708 15.5214 11.9487 15.5298Z" fill="white"/>
    <path d="M7.64085 16.9784C7.64961 16.9662 7.66433 16.9572 7.68788 16.948C7.68007 16.959 7.66345 16.9703 7.64085 16.9784Z" fill="white"/>
    <path d="M7.48363 17.0367C7.49336 17.0232 7.51184 17.0122 7.53873 17.0015C7.52888 17.0141 7.51063 17.0267 7.48363 17.0367Z" fill="white"/>
    </g>
    <defs>
      <clipPath id="clip0_7066_50">
        <rect width="30" height="30" rx="6" fill="white"/>
      </clipPath>
    </defs>
    </svg>
}
    href="./zoho-books"
  >
    Push your Hyperline invoicing data and reconcile easily with Zoho Books.
  </Card>

  <Card
    title="DATEV"
    icon={
  <svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
    <g clip-path="url(https://mintlify.s3.us-west-1.amazonaws.com/hyperline/integrations#clip0_7672_82)">
      <rect width="30" height="30" rx="6" fill="#F5F6F7" />
      <path fill-rule="evenodd" clip-rule="evenodd"
        d="M5.15812 25.073H5.72906C6.60586 25.073 7.33313 24.5224 7.37391 23.4961C7.41469 22.5105 6.83695 21.9192 6.00094 21.9192H5.15812V25.073ZM4.125 21.1172H6.0757C7.41469 21.1172 8.36625 22.0687 8.40703 23.5301C8.40703 24.8487 7.25836 25.875 5.91938 25.875H4.125V21.1172ZM17.2362 21.1172H20.5598V21.9192H18.3033V22.9795H20.4035V23.7816H18.3033V25.1002H20.6754V25.875H17.2362V21.1172ZM10.6228 25.875V25.107H11.9958L10.7723 22.1027L9.28383 25.875H8.21672L10.1266 21.1172H11.4248L13.3755 25.875H10.6228ZM12.5327 21.9192V21.1172H16.8148V21.9192H15.2447V25.875H14.1368V21.9192H12.5327ZM23.2378 21.1172V21.9192H24.502L23.3534 24.8079L21.9396 21.1172H20.8317L22.7824 25.875H23.9651L25.875 21.1172H23.2378Z"
        fill="#039A9A" />
      <path d="M4.125 4.125H25.875V19.7578H4.125V4.125Z" fill="#90D033" />
    </g>
    <defs>
      <clipPath id="clip0_7672_82">
        <rect width="30" height="30" rx="6" fill="white" />
      </clipPath>
    </defs>
  </svg>
}
  >
    Push your Hyperline invoicing data to DATEV.
  </Card>
</CardGroup>

## Tax engine

<CardGroup>
  <Card
    title="Hyperline Taxes"
    icon={
  <svg width="30" height="30" viewBox="0 0 120 120" fill="none" xmlns="http://www.w3.org/2000/svg">
    <rect width="120" height="120" rx="24" fill="black" />
    <path d="M66.7348 98.3741L60.0939 105L53.453 98.3741L60.0939 91.7483L66.7348 98.3741Z" fill="white" />
    <path d="M54.3172 91.1182L45.6408 94.7044L42.0465 86.0473L50.7233 82.461L54.3172 91.1182Z" fill="white" />
    <path d="M78.0346 86.0171L74.4406 94.6742L65.7638 91.088L69.3577 82.4308L78.0346 86.0171Z" fill="white" />
    <path d="M37.5674 91.8855H28.1754V82.5148H37.5674V91.8855Z" fill="white" />
    <path d="M91.9585 91.7554H82.567V82.3851H91.9585V91.7554Z" fill="white" />
    <path d="M66.7353 79.6807L60.0944 86.3066L53.4534 79.6807L60.0944 73.0548L66.7353 79.6807Z" fill="white" />
    <path d="M50.8119 78.667H41.4199V69.2968H50.8119V78.667Z" fill="white" />
    <path d="M78.711 78.5374H69.319V69.1671H78.711V78.5374Z" fill="white" />
    <path d="M37.5194 69.3372L33.9254 77.9944L25.2486 74.4086L28.8425 65.7514L37.5194 69.3372Z" fill="white" />
    <path d="M94.7843 74.3264L86.1075 77.9127L82.5136 69.2555L91.1904 65.6693L94.7843 74.3264Z" fill="white" />
    <path d="M46.9153 60.0886L40.2749 66.7149L33.634 60.0886L40.2749 53.4627L46.9153 60.0886Z" fill="white" />
    <path d="M28.1812 60.0886L21.5403 66.7144L14.8994 60.0886L21.5403 53.4627L28.1812 60.0886Z" fill="white" />
    <path d="M105.101 59.9092L98.4606 66.5351L91.8201 59.9092L98.4606 53.2833L105.101 59.9092Z" fill="white" />
    <path d="M86.3665 59.9065L79.7256 66.5324L73.0847 59.9065L79.7256 53.2807L86.3665 59.9065Z" fill="white" />
    <path d="M37.4873 50.7419L28.8105 54.3281L25.2166 45.6709L33.8934 42.0847L37.4873 50.7419Z" fill="white" />
    <path d="M94.7528 45.5879L91.1588 54.245L82.482 50.6593L86.0759 42.0021L94.7528 45.5879Z" fill="white" />
    <path d="M50.6819 50.8302H41.2904V41.4595H50.6819V50.8302Z" fill="white" />
    <path d="M78.581 50.7006H69.1891V41.3303H78.581V50.7006Z" fill="white" />
    <path d="M66.5484 40.3184L59.9074 46.9443L53.2665 40.3184L59.9074 33.6926L66.5484 40.3184Z" fill="white" />
    <path d="M37.4339 37.6118H28.0424V28.2415H37.4339V37.6118Z" fill="white" />
    <path d="M54.2367 28.9097L50.6428 37.5669L41.9659 33.9807L45.5598 25.3235L54.2367 28.9097Z" fill="white" />
    <path d="M77.9549 33.9496L69.2781 37.5354L65.6841 28.8782L74.361 25.2924L77.9549 33.9496Z" fill="white" />
    <path d="M91.8286 37.4857H82.4371V28.115H91.8286V37.4857Z" fill="white" />
    <path d="M66.551 21.6259L59.9101 28.2517L53.2692 21.6259L59.9101 15L66.551 21.6259Z" fill="white" />
  </svg>
}
  >
    Compute taxes with Hyperline, only available in the EU.
  </Card>

  <Card
    href="./anrok"
    title="Anrok"
    icon={
  <svg
    width="30"
    height="30"
    viewBox="0 0 30 30"
    fill="none"
    xmlns="http://www.w3.org/2000/svg"
  >
    <g clipPath="url(https://mintlify.s3.us-west-1.amazonaws.com/hyperline/integrations#clip0_4852_82)">
      <rect width="30" height="30" rx="6" fill="#F5F6F7" />
      <path
        d="M5.57794 18.375C5.33414 18.375 5.08267 18.3262 4.8238 18.2291C4.56466 18.132 4.32852 17.986 4.1154 17.7913C3.902 17.5968 3.72537 17.3504 3.58522 17.0524C3.44507 16.7545 3.375 16.4049 3.375 16.0035C3.375 15.6022 3.4419 15.2525 3.57623 14.9546C3.71003 14.6567 3.88376 14.4089 4.09715 14.2113C4.31028 14.0136 4.54959 13.8677 4.8148 13.7735C5.07976 13.6793 5.34049 13.6321 5.59619 13.6321C5.89472 13.6321 6.15836 13.6822 6.38683 13.7825C6.61528 13.8827 6.80568 14.012 6.95824 14.1701V13.7231H8.21057V18.284H6.95824V17.7731C6.80594 17.9496 6.61238 18.094 6.37783 18.2064C6.14302 18.3188 5.87648 18.375 5.57794 18.375ZM5.82465 17.2255C5.99521 17.2255 6.15201 17.1936 6.29533 17.1298C6.43839 17.0659 6.56188 16.9778 6.66553 16.8654C6.76919 16.7529 6.84983 16.6223 6.90774 16.4732C6.96565 16.3244 6.99448 16.1648 6.99448 15.9943C6.99448 15.8238 6.96539 15.6644 6.90774 15.5154C6.84983 15.3665 6.76919 15.2372 6.66553 15.1277C6.56188 15.0182 6.43839 14.9317 6.29533 14.8678C6.15201 14.8039 5.99521 14.772 5.82465 14.772C5.65409 14.772 5.49385 14.8026 5.34472 14.8633C5.19531 14.9243 5.06601 15.0092 4.95627 15.1187C4.84654 15.2283 4.7598 15.3576 4.69581 15.5064C4.63183 15.6555 4.59982 15.818 4.59982 15.9943C4.59982 16.1706 4.63183 16.3334 4.69581 16.4822C4.7598 16.6313 4.84654 16.7603 4.95627 16.8698C5.06601 16.9793 5.19531 17.0659 5.34472 17.1298C5.49385 17.1936 5.65383 17.2255 5.82465 17.2255Z"
        fill="#231E52"
      />
      <path
        d="M8.88222 13.7231H10.1253V14.234C10.2715 14.0456 10.4529 13.8981 10.6692 13.7914C10.8855 13.6851 11.1248 13.6318 11.3869 13.6318C11.9292 13.6318 12.3526 13.7959 12.6574 14.1245C12.9621 14.4527 13.1144 14.9121 13.1144 15.5019V18.284H11.8438V15.666C11.8438 15.356 11.7737 15.1174 11.6336 14.9499C11.4934 14.7826 11.2832 14.6989 11.0029 14.6989C10.7652 14.6989 10.5611 14.7855 10.3905 14.9588C10.22 15.1322 10.1345 15.4103 10.1345 15.7935V18.2837H8.88222V13.7231Z"
        fill="#231E52"
      />
      <path
        d="M13.7789 13.7231H15.022V14.4712C15.1375 14.234 15.2991 14.0503 15.5064 13.9194C15.7134 13.7888 15.9725 13.7234 16.2833 13.7234H16.7859V14.9367H15.9908C15.6555 14.9367 15.4118 15.0295 15.2597 15.2148C15.1074 15.4003 15.0312 15.7059 15.0312 16.1315V18.2842H13.7789V13.7231Z"
        fill="#231E52"
      />
      <path
        d="M19.3262 18.375C18.9974 18.375 18.6895 18.3125 18.4032 18.1879C18.1168 18.0634 17.8653 17.8945 17.649 17.6815C17.4328 17.4688 17.2635 17.2179 17.1419 16.929C17.0197 16.6403 16.9589 16.3315 16.9589 16.003C16.9589 15.6745 17.0197 15.366 17.1419 15.0771C17.2637 14.7884 17.4328 14.5374 17.649 14.3245C17.8653 14.1118 18.1165 13.9429 18.4032 13.8181C18.6895 13.6935 18.9974 13.631 19.3262 13.631C19.6552 13.631 19.9631 13.6935 20.2494 13.8181C20.5358 13.9429 20.7873 14.1115 21.0035 14.3245C21.2198 14.5374 21.3889 14.7884 21.5109 15.0771C21.6329 15.366 21.6937 15.6745 21.6937 16.003C21.6937 16.3315 21.6326 16.64 21.5109 16.929C21.3891 17.2179 21.2198 17.4686 21.0035 17.6815C20.7873 17.8945 20.5358 18.0631 20.2494 18.1879C19.9631 18.3125 19.6552 18.375 19.3262 18.375ZM19.3262 17.1891C19.4847 17.1891 19.6341 17.1572 19.7743 17.0933C19.9144 17.0295 20.0363 16.9445 20.1399 16.8379C20.2436 16.7316 20.3259 16.6068 20.3867 16.464C20.4475 16.3212 20.4782 16.1677 20.4782 16.0033C20.4782 15.8389 20.4475 15.6856 20.3867 15.5425C20.3255 15.3998 20.2433 15.275 20.1399 15.1686C20.0363 15.0623 19.9144 14.977 19.7743 14.9132C19.6341 14.8493 19.4847 14.8174 19.3262 14.8174C19.1679 14.8174 19.0109 14.8493 18.8738 14.9132C18.7366 14.977 18.6163 15.0623 18.5126 15.1686C18.409 15.275 18.3284 15.3998 18.2705 15.5425C18.2126 15.6856 18.1837 15.8389 18.1837 16.0033C18.1837 16.1677 18.2126 16.321 18.2705 16.464C18.3284 16.607 18.409 16.7316 18.5126 16.8379C18.6163 16.9443 18.7366 17.0295 18.8738 17.0933C19.0109 17.1572 19.1619 17.1891 19.3262 17.1891Z"
        fill="#231E52"
      />
      <path
        d="M24.0109 16.4595L23.3985 17.1802V18.284H22.1461V11.625H23.3985V15.7389L25.0805 13.7228H26.5337L24.8702 15.6932L26.6252 18.2837H25.2542L24.0109 16.4595Z"
        fill="#231E52"
      />
    </g>
    <defs>
      <clipPath id="clip0_4852_82">
        <rect width="30" height="30" rx="6" fill="white" />
      </clipPath>
    </defs>
  </svg>
}
  >
    Connect and use your Anrok account as tax engine on Hyperline.
  </Card>
</CardGroup>

## Signature

<CardGroup>
  <Card
    title="Hyperline Signature"
    icon={
  <svg width="30" height="30" viewBox="0 0 120 120" fill="none" xmlns="http://www.w3.org/2000/svg">
    <rect width="120" height="120" rx="24" fill="black" />
    <path d="M66.7348 98.3741L60.0939 105L53.453 98.3741L60.0939 91.7483L66.7348 98.3741Z" fill="white" />
    <path d="M54.3172 91.1182L45.6408 94.7044L42.0465 86.0473L50.7233 82.461L54.3172 91.1182Z" fill="white" />
    <path d="M78.0346 86.0171L74.4406 94.6742L65.7638 91.088L69.3577 82.4308L78.0346 86.0171Z" fill="white" />
    <path d="M37.5674 91.8855H28.1754V82.5148H37.5674V91.8855Z" fill="white" />
    <path d="M91.9585 91.7554H82.567V82.3851H91.9585V91.7554Z" fill="white" />
    <path d="M66.7353 79.6807L60.0944 86.3066L53.4534 79.6807L60.0944 73.0548L66.7353 79.6807Z" fill="white" />
    <path d="M50.8119 78.667H41.4199V69.2968H50.8119V78.667Z" fill="white" />
    <path d="M78.711 78.5374H69.319V69.1671H78.711V78.5374Z" fill="white" />
    <path d="M37.5194 69.3372L33.9254 77.9944L25.2486 74.4086L28.8425 65.7514L37.5194 69.3372Z" fill="white" />
    <path d="M94.7843 74.3264L86.1075 77.9127L82.5136 69.2555L91.1904 65.6693L94.7843 74.3264Z" fill="white" />
    <path d="M46.9153 60.0886L40.2749 66.7149L33.634 60.0886L40.2749 53.4627L46.9153 60.0886Z" fill="white" />
    <path d="M28.1812 60.0886L21.5403 66.7144L14.8994 60.0886L21.5403 53.4627L28.1812 60.0886Z" fill="white" />
    <path d="M105.101 59.9092L98.4606 66.5351L91.8201 59.9092L98.4606 53.2833L105.101 59.9092Z" fill="white" />
    <path d="M86.3665 59.9065L79.7256 66.5324L73.0847 59.9065L79.7256 53.2807L86.3665 59.9065Z" fill="white" />
    <path d="M37.4873 50.7419L28.8105 54.3281L25.2166 45.6709L33.8934 42.0847L37.4873 50.7419Z" fill="white" />
    <path d="M94.7528 45.5879L91.1588 54.245L82.482 50.6593L86.0759 42.0021L94.7528 45.5879Z" fill="white" />
    <path d="M50.6819 50.8302H41.2904V41.4595H50.6819V50.8302Z" fill="white" />
    <path d="M78.581 50.7006H69.1891V41.3303H78.581V50.7006Z" fill="white" />
    <path d="M66.5484 40.3184L59.9074 46.9443L53.2665 40.3184L59.9074 33.6926L66.5484 40.3184Z" fill="white" />
    <path d="M37.4339 37.6118H28.0424V28.2415H37.4339V37.6118Z" fill="white" />
    <path d="M54.2367 28.9097L50.6428 37.5669L41.9659 33.9807L45.5598 25.3235L54.2367 28.9097Z" fill="white" />
    <path d="M77.9549 33.9496L69.2781 37.5354L65.6841 28.8782L74.361 25.2924L77.9549 33.9496Z" fill="white" />
    <path d="M91.8286 37.4857H82.4371V28.115H91.8286V37.4857Z" fill="white" />
    <path d="M66.551 21.6259L59.9101 28.2517L53.2692 21.6259L59.9101 15L66.551 21.6259Z" fill="white" />
  </svg>
}
  >
    Native and embedded electronic signature flow.
  </Card>

  <Card
    title="DocuSign"
    icon={
  <svg
    width="30"
    height="30"
    viewBox="0 0 30 30"
    fill="none"
    xmlns="http://www.w3.org/2000/svg"
  >
    <g clipPath="url(https://mintlify.s3.us-west-1.amazonaws.com/hyperline/integrations#clip0_4185_23006)">
      <rect width="30" height="30" rx="6" fill="#F5F6F7" />
      <path
        d="M18.9633 18.9541V23.5539C18.9633 23.7956 18.7682 23.9907 18.5266 23.9907H6.43676C6.19515 23.9907 6 23.7956 6 23.5539V11.4734C6 11.2318 6.19515 11.0367 6.43676 11.0367H11.0274V18.5173C11.0274 18.7589 11.2225 18.9541 11.4641 18.9541H18.9633Z"
        fill="#4C00FF"
      />
      <path
        d="M23.9999 12.4677C23.9999 16.3335 21.7418 18.9448 18.9633 18.9541L18.9633 14.0847C18.9633 13.9453 18.9075 13.8059 18.8053 13.713L16.2777 11.1854C16.1755 11.0831 16.0454 11.0274 15.906 11.0274H11.0366V6.43678C11.0366 6.19517 11.2317 6.00002 11.4734 6.00002H18.2849C21.5188 5.99073 23.9999 8.59269 23.9999 12.4677Z"
        fill="#FF5252"
      />
      <path
        d="M18.8053 13.7037C18.9075 13.8059 18.9633 13.936 18.9633 14.0754V18.9448H11.4734C11.2317 18.9448 11.0366 18.7496 11.0366 18.508V11.0274H15.906C16.0454 11.0274 16.1848 11.0831 16.2777 11.1854L18.8053 13.7037Z"
        fill="black"
      />
    </g>
    <defs>
      <clipPath id="clip0_4185_23006">
        <rect width="30" height="30" rx="6" fill="white" />
      </clipPath>
    </defs>
  </svg>
}
  >
    Connect and use your DocuSign account as signature provider on Hyperline.
  </Card>

  <Card
    title="Yousign"
    icon={
  <svg
    width="30"
    height="30"
    viewBox="0 0 30 30"
    fill="none"
    xmlns="http://www.w3.org/2000/svg"
  >
    <g clipPath="url(https://mintlify.s3.us-west-1.amazonaws.com/hyperline/integrations#clip0_4185_23007)">
      <rect width="30" height="30" rx="6" fill="#5DE8C1" />
      <path
        d="M17.4871 8.00281H20.6319C21.1199 8.00281 21.4995 8.54542 21.3368 8.9795L14.8845 22.9787C14.776 23.1415 14.6133 23.25 14.3965 23.25H11.2516C10.7636 23.25 10.3299 22.7074 10.5467 22.2733L16.9991 8.27412C17.1075 8.11133 17.2702 8.00281 17.4871 8.00281Z"
        fill="white"
      />
      <path
        d="M19.5476 7.02613C19.6018 7.02613 19.6018 7.08039 19.656 7.08039L13.2579 20.9711H10.1673C10.1131 20.9711 10.1131 20.9168 10.0588 20.9168L16.457 7.02613H19.5476ZM19.5476 6.375H16.4027C16.1859 6.375 16.0232 6.48352 15.9148 6.6463L9.46242 20.6455C9.24553 21.0796 9.6793 21.6222 10.1673 21.6222H13.3121C13.529 21.6222 13.6917 21.5137 13.8001 21.3509L20.2525 7.35169C20.4151 6.9176 20.0356 6.375 19.5476 6.375ZM9.19131 6.375H13.041C13.4206 6.375 13.6917 6.80908 13.529 7.13465L10.8179 12.9405C10.6011 13.4289 9.89619 13.3203 9.78774 12.832L8.6491 7.02613C8.54065 6.70056 8.81176 6.375 9.19131 6.375Z"
        fill="#002B44"
      />
    </g>
    <defs>
      <clipPath id="clip0_4185_23007">
        <rect width="30" height="30" rx="6" fill="white" />
      </clipPath>
    </defs>
  </svg>
}
  >
    Connect and use your Yousign account as signature provider on Hyperline.
  </Card>
</CardGroup>

## AI

<CardGroup>
  <Card
    title="ChatGPT"
    icon={
  <svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
    <g clip-path="url(https://mintlify.s3.us-west-1.amazonaws.com/hyperline/integrations#clip0_7672_71)">
      <rect width="30" height="30" rx="6" fill="#F5F6F7" />
      <path
        d="M24.4408 13.0272C24.9409 11.5461 24.7687 9.92364 23.9689 8.57647C22.7662 6.51018 20.3484 5.44712 17.9871 5.94738C16.9366 4.77965 15.4274 4.11559 13.8451 4.1251C11.4315 4.11966 9.28988 5.65307 8.54732 7.9192C6.99676 8.23254 5.65836 9.19024 4.87515 10.5476C3.6635 12.6085 3.93972 15.2063 5.55848 16.9735C5.05838 18.4546 5.23059 20.077 6.03033 21.4242C7.23303 23.4905 9.65083 24.5535 12.0122 24.0533C13.0619 25.221 14.5719 25.8851 16.1541 25.8749C18.5692 25.881 20.7114 24.3462 21.454 22.0781C23.0046 21.7647 24.343 20.807 25.1262 19.4497C26.3364 17.3888 26.0595 14.793 24.4415 13.0258L24.4408 13.0272ZM16.1555 24.4536C15.1891 24.455 14.2529 24.1213 13.5111 23.5102C13.5448 23.4925 13.6034 23.4606 13.6412 23.4375L18.0305 20.9362C18.255 20.8104 18.3928 20.5746 18.3914 20.3197V14.2139L20.2465 15.2709C20.2664 15.2804 20.2795 15.2994 20.2823 15.3212V20.3775C20.2795 22.6259 18.4341 24.4489 16.1555 24.4536ZM7.28056 20.7132C6.79631 19.8881 6.62203 18.9209 6.78804 17.9822C6.82042 18.0012 6.87759 18.0359 6.91823 18.059L11.3075 20.5603C11.53 20.6888 11.8055 20.6888 12.0287 20.5603L17.3871 17.5071V19.6209C17.3885 19.6427 17.3782 19.6638 17.3609 19.6774L12.9242 22.2052C10.9479 23.328 8.42402 22.6606 7.28125 20.7132H7.28056ZM6.12539 11.2593C6.60757 10.4327 7.36873 9.80061 8.27523 9.47232C8.27523 9.5097 8.27317 9.57563 8.27317 9.62185V14.6251C8.27179 14.8793 8.40956 15.1152 8.63343 15.2409L13.9919 18.2935L12.1368 19.3504C12.1182 19.3627 12.0948 19.3647 12.0741 19.3559L7.63668 16.826C5.66456 15.6991 4.98812 13.2093 6.1247 11.2599L6.12539 11.2593ZM21.3665 14.759L16.0081 11.7058L17.8631 10.6496C17.8817 10.6373 17.9051 10.6353 17.9258 10.6441L22.3632 13.1719C24.3388 14.2982 25.0159 16.792 23.8745 18.7414C23.3917 19.5666 22.6312 20.1987 21.7254 20.5277V15.3748C21.7275 15.1206 21.5904 14.8855 21.3672 14.759H21.3665ZM23.2126 12.0171C23.1802 11.9974 23.123 11.9634 23.0824 11.9403L18.6931 9.43901C18.4707 9.31055 18.1951 9.31055 17.9719 9.43901L12.6135 12.4922V10.3784C12.6121 10.3566 12.6225 10.3355 12.6397 10.3219L17.0765 7.79617C19.0527 6.67126 21.5794 7.34077 22.7187 9.29152C23.2002 10.1153 23.3745 11.0798 23.2112 12.0171H23.2126ZM11.6051 15.7847L9.74934 14.7278C9.72936 14.7183 9.71627 14.6992 9.71352 14.6775V9.62117C9.71489 7.37 11.5658 5.54568 13.8472 5.54704C14.8123 5.54704 15.7463 5.88145 16.4882 6.49046C16.4544 6.50814 16.3966 6.54008 16.358 6.56319L11.9688 9.0645C11.7442 9.19024 11.6064 9.42542 11.6078 9.68031L11.6051 15.7833V15.7847ZM12.6128 13.6409L14.9996 12.2808L17.3864 13.6402V16.3597L14.9996 17.7191L12.6128 16.3597V13.6409Z"
        fill="black" />
    </g>
    <defs>
      <clipPath id="clip0_7672_71">
        <rect width="30" height="30" rx="6" fill="white" />
      </clipPath>
    </defs>
  </svg>
}
    href="https://chatgpt.com/apps/hyperline/asdk_app_6a1da415f0908191b74b5b89f9546b4f"
  >
    Access Hyperline from ChatGPT to answer questions and manage revenue operations.
  </Card>

  <Card
    title="Claude"
    icon={
  <svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
    <g clip-path="url(https://mintlify.s3.us-west-1.amazonaws.com/hyperline/integrations#clip0_7673_51318)">
      <rect width="30" height="30" rx="6" fill="#D97757" />
      <path
        d="M8.16 18.7125L12.5925 16.2375L12.66 16.0125L12.5925 15.9H12.3675L11.625 15.855L9.105 15.7875L6.9 15.675L4.7625 15.5625L4.2225 15.45L3.75 14.775L3.795 14.4375L4.245 14.145L4.8975 14.19L6.315 14.3025L8.4525 14.4375L10.005 14.5275L12.3 14.7975H12.66L12.705 14.64L12.5925 14.55L12.5025 14.46L10.275 12.975L7.89 11.4L6.63 10.4775L5.955 10.0275L5.6175 9.5775L5.4825 8.6325L6.09 7.9575L6.9225 8.025L7.125 8.07L7.9575 8.7225L9.7575 10.095L12.075 11.85L12.4125 12.12L12.5475 12.03L12.57 11.9625L12.4125 11.715L11.175 9.375L9.825 7.035L9.2175 6.0675L9.06 5.4825C8.9925 5.2575 8.97 5.0325 8.97 4.8075L9.645 3.8625L10.05 3.75L10.995 3.885L11.355 4.2L11.94 5.55L12.8625 7.6425L14.325 10.4775L14.775 11.3325L15 12.0975L15.0675 12.3225H15.225V12.21L15.3375 10.59L15.5625 8.6325L15.7875 6.1125L15.855 5.3925L16.215 4.5375L16.89 4.0875L17.475 4.335L17.925 4.9875L17.8575 5.3925L17.61 7.125L17.025 9.8475L16.6875 11.6925H16.89L17.115 11.445L18.0375 10.23L19.59 8.295L20.265 7.5075L21.075 6.675L21.5925 6.27H22.56L23.2575 7.3275L22.9425 8.43L21.9525 9.69L21.12 10.7475L19.9275 12.345L19.2075 13.6275L19.275 13.7175H19.4325L22.1325 13.1325L23.5725 12.885L25.2825 12.5925L26.07 12.9525L26.16 13.3125L25.845 14.0775L24 14.5275L21.84 14.9775L18.6225 15.72L18.5775 15.7425L18.6225 15.81L20.0625 15.945L20.6925 15.99H22.2225L25.0575 16.215L25.8 16.665L26.2275 17.2725L26.16 17.7225L25.0125 18.3075L23.4825 17.9475L19.8825 17.0925L18.6675 16.8H18.4875V16.89L19.5225 17.9025L21.39 19.59L23.775 21.7725L23.8875 22.3125L23.595 22.7625L23.28 22.7175L21.21 21.1425L20.4 20.4675L18.6 18.9375H18.4875V19.095L18.8925 19.7025L21.0975 23.01L21.21 24.0225L21.0525 24.3375L20.4675 24.5625L19.86 24.4275L18.555 22.6275L17.205 20.6025L16.1475 18.7575L16.035 18.8475L15.3825 25.6425L15.09 25.98L14.415 26.25L13.8525 25.8L13.5375 25.125L13.8525 23.73L14.2125 21.93L14.505 20.49L14.775 18.7125L14.9325 18.1275V18.0825H14.775L13.425 19.95L11.4 22.7175L9.78 24.4275L9.3975 24.585L8.7225 24.2475L8.79 23.6175L9.15 23.1L11.4 20.22L12.75 18.4425L13.65 17.4075L13.6275 17.295H13.56L7.62 21.165L6.5625 21.3L6.1125 20.85L6.1575 20.175L6.3825 19.95L8.1825 18.7125H8.16Z"
        fill="white" />
    </g>
    <defs>
      <clipPath id="clip0_7673_51318">
        <rect width="30" height="30" rx="6" fill="white" />
      </clipPath>
    </defs>
  </svg>
}
    href="../api-reference/docs/ai/mcp"
  >
    Connect Claude to Hyperline through MCP.
  </Card>

  <Card
    title="Cursor"
    icon={
  <svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
    <g clip-path="url(https://mintlify.s3.us-west-1.amazonaws.com/hyperline/integrations#clip0_7672_74)">
      <rect width="30" height="30" rx="6" fill="black" />
      <g clip-path="url(https://mintlify.s3.us-west-1.amazonaws.com/hyperline/integrations#clip1_7672_74)">
        <path
          d="M15.0002 15L24.658 20.6305C24.5987 20.7343 24.5126 20.8229 24.4061 20.8849L15.3791 26.1475C15.1447 26.2842 14.8556 26.2842 14.6212 26.1475L5.59422 20.8849C5.48768 20.8229 5.40161 20.7343 5.34229 20.6305L15.0002 15Z"
          fill="#72716D" />
        <path
          d="M15.0002 3.75V15L5.34233 20.6305C5.28301 20.5267 5.25 20.4069 5.25 20.2829V9.71715C5.25 9.46866 5.38119 9.23958 5.59427 9.11512L14.6208 3.85252C14.7382 3.78417 14.869 3.75 14.9998 3.75H15.0002Z"
          fill="#55544F" />
        <path
          d="M24.6575 9.36952C24.5981 9.26573 24.5121 9.17714 24.4055 9.11512L15.3785 3.85252C15.2615 3.78417 15.1308 3.75 15 3.75V15L24.6579 20.6305C24.7172 20.5267 24.7502 20.4069 24.7502 20.2829V9.71715C24.7502 9.59269 24.7176 9.47372 24.6579 9.36952H24.6575Z"
          fill="#43413C" />
        <path
          d="M23.9819 9.76361C24.0366 9.85895 24.0442 9.9813 23.9819 10.0901L15.2152 25.4223C15.1563 25.5261 14.9996 25.4835 14.9996 25.3641V15.2608C14.9996 15.1802 14.9783 15.1026 14.9395 15.0346L23.9815 9.76318H23.9819V9.76361Z"
          fill="#D6D5D2" />
        <path
          d="M23.982 9.76361L14.94 15.0351C14.9015 14.9676 14.8455 14.9102 14.7762 14.8697L6.11141 9.81803C6.00863 9.75855 6.05083 9.60034 6.16907 9.60034H23.7021C23.8266 9.60034 23.9277 9.66827 23.982 9.76361Z"
          fill="white" />
      </g>
    </g>
    <defs>
      <clipPath id="clip0_7672_74">
        <rect width="30" height="30" rx="6" fill="white" />
      </clipPath>
      <clipPath id="clip1_7672_74">
        <rect width="19.5" height="22.5" fill="white" transform="translate(5.25 3.75)" />
      </clipPath>
    </defs>
  </svg>
}
    href="../api-reference/docs/ai/mcp"
  >
    Connect Cursor to Hyperline through MCP.
  </Card>
</CardGroup>

## Support platform

<CardGroup>
  <Card
    title="Intercom"
    icon={
  <svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
    <g clip-path="url(https://mintlify.s3.us-west-1.amazonaws.com/hyperline/integrations#clip0_7672_62)">
      <rect width="30" height="30" rx="6" fill="black" />
      <path
        d="M4.69971 21.1533C4.96807 21.1327 5.23406 21.2202 5.43896 21.3965C5.51301 21.4514 8.89951 24.2148 14.9956 24.2148C21.1009 24.2148 24.514 21.4265 24.5532 21.3965C24.7603 21.2217 25.0265 21.1347 25.2954 21.1553C25.5645 21.176 25.8151 21.3025 25.9937 21.5068C26.1656 21.7096 26.2518 21.9729 26.2329 22.2393C26.214 22.5053 26.0917 22.753 25.8931 22.9287L25.8843 22.9209C25.7443 23.0615 21.9523 26.2509 15.0044 26.251C8.05143 26.251 4.28366 23.0739 4.12354 22.9375C4.02274 22.8516 3.93993 22.7463 3.87939 22.6279C3.81885 22.5093 3.78197 22.38 3.771 22.2471C3.76005 22.1143 3.77471 21.9805 3.81494 21.8535C3.85522 21.7266 3.92005 21.6085 4.00537 21.5068C4.18139 21.3012 4.43132 21.1741 4.69971 21.1533ZM15.0376 3.74902C15.3081 3.74902 15.568 3.85753 15.7593 4.05078C15.9506 4.24404 16.0581 4.50697 16.0581 4.78027V19.5986C16.0581 19.8719 15.9506 20.1347 15.7593 20.3281C15.568 20.5214 15.3081 20.6299 15.0376 20.6299C14.7674 20.6298 14.508 20.5212 14.3169 20.3281C14.1256 20.1347 14.0181 19.8719 14.0181 19.5986V4.78027C14.0181 4.50697 14.1256 4.24404 14.3169 4.05078C14.508 3.8577 14.7674 3.7491 15.0376 3.74902ZM9.95557 4.31152C10.2072 4.32597 10.4452 4.43438 10.6226 4.61523C10.7998 4.79605 10.9044 5.03681 10.9165 5.29102V18.918C10.9164 19.1913 10.8088 19.4533 10.6177 19.6465C10.4264 19.8396 10.1673 19.9482 9.89697 19.9482C9.62668 19.9482 9.36745 19.8396 9.17627 19.6465C8.98504 19.4533 8.87751 19.1913 8.87744 18.918V5.29102C8.89268 5.01689 9.01419 4.75969 9.21631 4.57617C9.41833 4.39271 9.68425 4.29768 9.95557 4.31152ZM20.0942 4.26074C20.3647 4.26074 20.6247 4.36924 20.8159 4.5625C21.007 4.75574 21.1147 5.01785 21.1147 5.29102V18.918C21.1147 19.1912 21.0071 19.4533 20.8159 19.6465C20.6247 19.8397 20.3647 19.9482 20.0942 19.9482C19.8241 19.9481 19.5647 19.8396 19.3735 19.6465C19.1824 19.4533 19.0748 19.1913 19.0747 18.918V5.29102C19.0747 5.01781 19.1825 4.75575 19.3735 4.5625C19.5647 4.36933 19.824 4.26084 20.0942 4.26074ZM25.2192 6.30469C25.4896 6.3048 25.7488 6.41327 25.9399 6.60645C26.1311 6.79969 26.2388 7.06172 26.2388 7.33496V16.541C26.2388 16.8144 26.1312 17.0773 25.9399 17.2705C25.7488 17.4636 25.4895 17.5722 25.2192 17.5723C24.9488 17.5723 24.6888 17.4637 24.4976 17.2705C24.3064 17.0773 24.1987 16.8144 24.1987 16.541V7.33496C24.1987 7.06174 24.3065 6.79968 24.4976 6.60645C24.6888 6.41317 24.9487 6.30469 25.2192 6.30469ZM4.84033 6.35547C5.09186 6.36995 5.32897 6.47836 5.50635 6.65918C5.68372 6.84002 5.78919 7.08064 5.80127 7.33496V16.5244C5.80127 16.7975 5.69355 17.0597 5.50244 17.2529C5.3112 17.4463 5.05121 17.5547 4.78076 17.5547C4.51045 17.5546 4.25121 17.4462 4.06006 17.2529C3.8689 17.0597 3.76123 16.7976 3.76123 16.5244V7.33496C3.77646 7.0608 3.89894 6.80364 4.10107 6.62012C4.30319 6.4367 4.56902 6.34155 4.84033 6.35547Z"
        fill="white" />
    </g>
    <defs>
      <clipPath id="clip0_7672_62">
        <rect width="30" height="30" rx="6" fill="white" />
      </clipPath>
    </defs>
  </svg>
}
    href="../docs/customer-intelligence/overview"
  >
    Bring Intercom support conversations into customer intelligence.
  </Card>

  <Card
    title="Front"
    icon={
  <svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
    <g clipPath="url(https://mintlify.s3.us-west-1.amazonaws.com/hyperline/integrations#clip0_7688_24)">
      <rect width="30" height="30" rx="6" fill="#F8F2FE" />
      <path d="M4.5 25.0882H11.4227V11.3944H25.2251V4.5H4.5V25.0882Z" fill="#A857F1" />
      <path
        d="M19.255 25.5C22.704 25.5 25.5 22.704 25.5 19.2549C25.5 15.8058 22.704 13.0098 19.255 13.0098C15.806 13.0098 13.01 15.8058 13.01 19.2549C13.01 22.704 15.806 25.5 19.255 25.5Z"
        fill="#A857F1" />
    </g>
    <defs>
      <clipPath id="clip0_7688_24">
        <rect width="30" height="30" rx="6" fill="white" />
      </clipPath>
    </defs>
  </svg>
}
    href="../docs/customer-intelligence/overview"
  >
    Bring Front support conversations into customer intelligence.
  </Card>

  <Card
    title="Plain"
    icon={
  <svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
    <g clip-path="url(https://mintlify.s3.us-west-1.amazonaws.com/hyperline/integrations#clip0_7677_50)">
      <rect width="30" height="30" rx="6" fill="#1AD379" />
      <path
        d="M23.752 12.0317C23.752 8.75314 21.1072 6.09497 17.845 6.09497H13.2396C12.85 6.09497 12.3253 6.3406 12.0745 6.64041L8.03008 11.4863C7.77926 11.7861 7.8928 12.0317 8.28239 12.0317H13.9928C17.1326 12.0317 19.6994 14.4954 19.8872 17.6033C21.0232 17.1803 22.0026 16.4196 22.6936 15.4236C23.3846 14.4276 23.7535 13.2439 23.752 12.0317ZM11.5899 17.9684C11.1995 17.9684 10.6756 18.2133 10.4248 18.5138L6.38042 23.3597C6.12959 23.6595 6.24313 23.9051 6.63273 23.9051H13.9928C17.255 23.9051 19.8998 21.247 19.8998 17.9684C19.8993 17.8466 19.8951 17.7248 19.8872 17.6033C19.2338 17.8452 18.5425 17.9689 17.8457 17.9684H11.5899Z"
        fill="white" />
    </g>
    <defs>
      <clipPath id="clip0_7677_50">
        <rect width="30" height="30" rx="6" fill="white" />
      </clipPath>
    </defs>
  </svg>
}
    href="../docs/customer-intelligence/overview"
  >
    Bring Plain support conversations into customer intelligence.
  </Card>

  <Card
    title="Pylon"
    icon={
  <svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
    <g clip-path="url(https://mintlify.s3.us-west-1.amazonaws.com/hyperline/integrations#clip0_7673_51317)">
      <rect width="30" height="30" rx="6" fill="#5B0EFF" />
      <path
        d="M21.6554 8.35671C19.878 6.58113 17.5139 5.60425 14.9988 5.60425C12.4837 5.60425 10.1196 6.58113 8.34341 8.35547C6.56599 10.1298 5.5874 12.4885 5.5874 14.9993C5.5874 17.51 6.56599 19.8687 8.34341 21.6431C10.1208 23.4174 12.4849 24.3956 15 24.3956C17.5151 24.3956 19.8792 23.4186 21.6567 21.6443C23.4341 19.87 24.4127 17.5112 24.4127 15.0005C24.4127 12.4898 23.4341 10.1311 21.6567 8.35671H21.6554ZM22.4468 15.0005C22.4468 18.7237 19.6707 21.8823 15.9811 22.3695V7.62904C19.6707 8.11623 22.4468 11.2762 22.4468 14.9993V15.0005ZM9.22089 10.3142C10.4304 8.82896 12.1279 7.87824 14.0177 7.62904V10.3142H9.22089ZM14.0177 12.2755V14.0286H7.61571C7.69435 13.428 7.84788 12.8386 8.07006 12.2755H14.0177ZM14.0177 15.9886V17.7418H8.07755C7.85287 17.1786 7.69809 16.5892 7.61821 15.9886H14.0177ZM14.0177 19.703V22.3695C12.1379 22.1215 10.4454 21.177 9.23712 19.703H14.0177Z"
        fill="white" />
    </g>
    <defs>
      <clipPath id="clip0_7673_51317">
        <rect width="30" height="30" rx="6" fill="white" />
      </clipPath>
    </defs>
  </svg>
}
    href="../docs/customer-intelligence/overview"
  >
    Bring Pylon support conversations into customer intelligence.
  </Card>

  <Card
    title="Zendesk"
    icon={
  <svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
    <g clip-path="url(https://mintlify.s3.us-west-1.amazonaws.com/hyperline/integrations#clip0_7672_59)">
      <rect width="30" height="30" rx="6" fill="black" />
      <path
        d="M14.1738 11.2087V23.0688H4.40381L14.1738 11.2087ZM14.1738 6.93127C14.1738 9.65327 11.9865 11.8406 9.26451 11.8406C6.54252 11.8406 4.40381 9.65327 4.40381 6.93127H14.1738ZM15.7779 23.0202C15.7779 20.2982 17.9652 18.1109 20.6872 18.1109C23.4092 18.1109 25.5965 20.2982 25.5965 23.0202H15.7779ZM15.7779 18.7914V6.93127H25.5965L15.7779 18.7914Z"
        fill="white" />
    </g>
    <defs>
      <clipPath id="clip0_7672_59">
        <rect width="30" height="30" rx="6" fill="white" />
      </clipPath>
    </defs>
  </svg>
}
    href="../docs/customer-intelligence/overview"
  >
    Bring Zendesk support conversations into customer intelligence.
  </Card>
</CardGroup>

## Email

<CardGroup>
  <Card
    title="Gmail"
    icon={
  <svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
    <g clip-path="url(https://mintlify.s3.us-west-1.amazonaws.com/hyperline/integrations#clip0_7677_9895)">
      <rect width="30" height="30" rx="6" fill="#F3F2F1" />
      <g clip-path="url(https://mintlify.s3.us-west-1.amazonaws.com/hyperline/integrations#clip1_7677_9895)">
        <path d="M6.25568 22.5H9.47727V14.7727L4.875 11.3636V21.1364C4.875 21.8909 5.49401 22.5 6.25568 22.5Z"
          fill="#4285F4" />
        <path d="M20.5229 22.5H23.7445C24.5085 22.5 25.1252 21.8886 25.1252 21.1364V11.3636L20.5229 14.7727"
          fill="#34A853" />
        <path d="M20.5229 8.8636V14.7727L25.1252 11.3636V9.54542C25.1252 7.85905 23.1762 6.89769 21.8116 7.90905"
          fill="#FBBC04" />
        <path d="M9.47705 14.7727V8.86365L14.9998 12.9546L20.5225 8.86365V14.7727L14.9998 18.8636" fill="#EA4335" />
        <path
          d="M4.875 9.54542V11.3636L9.47727 14.7727V8.8636L8.18864 7.90905C6.82176 6.89769 4.875 7.85905 4.875 9.54542Z"
          fill="#C5221F" />
      </g>
    </g>
    <defs>
      <clipPath id="clip0_7677_9895">
        <rect width="30" height="30" rx="6" fill="white" />
      </clipPath>
      <clipPath id="clip1_7677_9895">
        <rect width="20.25" height="15" fill="white" transform="translate(4.875 7.5)" />
      </clipPath>
    </defs>
  </svg>
}
    href="../docs/customer-intelligence/overview"
  >
    Use Gmail messages as context in customer intelligence.
  </Card>
</CardGroup>

## Call recording

<CardGroup>
  <Card
    title="Google Meet / Gemini"
    icon={
  <svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
    <rect width="30" height="30" rx="6" fill="#F5F6F7" />
    <path
      d="M23.64 15.2045C23.64 14.5664 23.5827 13.9527 23.4764 13.3636H15V16.8491H19.8436C19.6309 17.97 18.9927 18.9191 18.0355 19.5573V21.8236H20.9564C22.6582 20.2527 23.64 17.9455 23.64 15.2045Z"
      fill="#4285F4" />
    <path
      d="M15 24C17.43 24 19.4673 23.1982 20.9564 21.8236L18.0355 19.5573C17.2336 20.0973 16.2109 20.4245 15 20.4245C12.66 20.4245 10.6718 18.8455 9.96 16.7182H6.96545V19.0418C8.44636 21.9791 11.4818 24 15 24Z"
      fill="#34A853" />
    <path
      d="M9.96 16.71C9.78 16.17 9.67364 15.5973 9.67364 15C9.67364 14.4027 9.78 13.83 9.96 13.29V10.9664H6.96545C6.35182 12.1773 6 13.5436 6 15C6 16.4564 6.35182 17.8227 6.96545 19.0336L9.29727 17.2173L9.96 16.71Z"
      fill="#FBBC05" />
    <path
      d="M15 9.58364C16.3255 9.58364 17.5036 10.0418 18.4445 10.9255L21.0218 8.34818C19.4591 6.89182 17.43 6 15 6C11.4818 6 8.44636 8.02091 6.96545 10.9664L9.96 13.29C10.6718 11.1627 12.66 9.58364 15 9.58364Z"
      fill="#EA4335" />
  </svg>
}
    href="../docs/customer-intelligence/overview"
  >
    Use Google Meet call recordings and Gemini meeting notes in customer intelligence.
  </Card>

  <Card
    title="Claap"
    icon={
  <svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
    <g clip-path="url(https://mintlify.s3.us-west-1.amazonaws.com/hyperline/integrations#clip0_7672_56)">
      <rect width="30" height="30" rx="6" fill="#FF5A81" />
      <path
        d="M6.89923 12.0168C6.0312 12.0168 5.21162 11.8251 4.58484 11.4899C3.90958 11.1065 3.42815 10.6268 3.04259 10.0036C2.70547 9.38036 2.5127 8.66181 2.5127 7.89403C2.5127 7.1263 2.70547 6.45588 3.04259 5.83264C3.37969 5.20942 3.91061 4.68254 4.58484 4.34633C5.26007 3.96295 6.0312 3.81945 6.89923 3.81945C7.4291 3.81945 7.96004 3.91581 8.39402 4.0593C8.82806 4.20281 9.21363 4.39449 9.50331 4.58618V6.79109H9.359C8.87654 6.45588 8.44356 6.16784 8.05693 6.02434C7.67136 5.88082 7.23738 5.78448 6.80335 5.78448C6.46624 5.78448 6.08067 5.88082 5.74254 6.02434C5.40543 6.16784 5.11574 6.4077 4.87452 6.74291C4.63328 7.07812 4.53741 7.46145 4.53741 7.94121C4.53741 8.42091 4.63432 8.8043 4.87452 9.13945C5.11574 9.47467 5.4044 9.71451 5.74254 9.85806C6.07964 10.0015 6.46521 10.0979 6.80335 10.0979C7.23738 10.0979 7.67136 10.0015 8.05693 9.85806C8.4425 9.71451 8.87648 9.47467 9.31052 9.09127H9.45483V11.2962C9.21363 11.4879 8.82806 11.6795 8.39402 11.8231C7.96004 11.9666 7.47858 12.0148 6.89923 12.0148V12.0168Z"
        fill="white" />
      <path d="M9.77534 13.053L12.9825 3.60718L14.9917 4.28166L11.7846 13.7275L9.77534 13.053Z" fill="white" />
      <path
        d="M18.0906 16.4768C17.3432 16.6644 16.6413 16.6428 16.0794 16.3886C15.4711 16.1457 15.0948 15.6476 14.9062 14.9034C14.6939 14.0669 14.9134 13.3688 15.5083 12.7743C16.1031 12.1798 16.9907 11.7595 18.1124 11.4776C18.7196 11.3249 19.3866 11.207 20.0525 11.0892L20.0288 10.9958C19.8876 10.6361 19.6763 10.3921 19.4422 10.2537C19.1494 10.0805 18.8803 9.99949 18.5763 9.97693C18.2721 9.95436 17.933 9.99027 17.6061 10.0723C17.0916 10.2014 16.6021 10.4238 16.1814 10.7273C15.7145 11.042 15.3527 11.3802 15.0619 11.7995L14.9217 11.8343L14.4134 9.8365C14.7629 9.4521 15.1835 9.14868 15.7083 8.86782C16.234 8.58696 16.7711 8.35328 17.3784 8.20051C18.2196 7.98939 18.9557 7.95249 19.5999 8.13699C20.2443 8.32149 20.8175 8.6218 21.2392 9.10972C21.6618 9.59665 21.9555 10.1655 22.1205 10.8165L23.2195 15.1381L21.303 15.62L20.7113 12.7036L20.571 12.7384C21.1854 15.3523 19.2587 16.1826 18.0906 16.4768ZM18.367 14.8254C18.9741 14.6728 19.4412 14.358 19.7557 13.8332C20.035 13.3678 20.1154 12.7046 19.9731 11.9491L18.8514 12.231C17.9638 12.4545 17.3793 12.6995 17.0648 13.0264C16.7506 13.3535 16.634 13.6784 16.7288 14.0505C16.8237 14.4226 17.034 14.6655 17.3031 14.7465C17.6422 14.9085 17.9937 14.9187 18.367 14.8254Z"
        fill="white" />
      <path
        d="M11.9029 23.8951C11.1802 24.1617 10.4802 24.2159 9.89359 24.0233C9.26266 23.8469 8.83484 23.3919 8.56679 22.6723C8.26477 21.8635 8.40808 21.1459 8.93485 20.4909C9.46167 19.836 10.2987 19.3233 11.3833 18.9226C11.9709 18.7052 12.6204 18.5166 13.2698 18.3291L13.2358 18.2389C13.0565 17.8965 12.8204 17.676 12.5719 17.5634C12.2616 17.4219 11.9853 17.3707 11.6812 17.3809C11.377 17.3911 11.0431 17.4629 10.7265 17.5797C10.2297 17.7633 9.76574 18.037 9.38123 18.3834C8.95136 18.7463 8.62866 19.1214 8.38435 19.5694L8.24826 19.6196L7.5266 17.6874C7.83279 17.2682 8.21736 16.9207 8.7091 16.5864C9.20084 16.2513 9.7101 15.9612 10.2977 15.7449C11.1111 15.4447 11.8399 15.3298 12.4987 15.4436C13.1585 15.5584 13.7615 15.7952 14.2337 16.2349C14.7059 16.6736 15.0596 17.2087 15.2945 17.837L16.8543 22.0162L15.0017 22.6999L14.0976 19.8636L13.9616 19.9138C14.9007 22.4302 13.0296 23.479 11.8998 23.8961L11.9029 23.8951ZM12.0441 22.2069C12.6317 21.9896 13.0616 21.6267 13.3173 21.0721C13.5451 20.5791 13.5523 19.9118 13.3296 19.1758L12.2451 19.5766C11.3863 19.8933 10.8328 20.1998 10.5544 20.5585C10.2771 20.9164 10.1967 21.2526 10.3307 21.6124C10.4647 21.9722 10.7008 22.1915 10.9771 22.2428C11.2874 22.3841 11.6369 22.3575 12.0441 22.2069Z"
        fill="white" />
      <path
        d="M16.2513 24.7828L21.4862 16.28L23.3366 17.4065L21.6965 19.6115L21.779 19.6616C22.2388 19.099 22.7459 18.733 23.2604 18.5404C23.7748 18.3475 24.2141 18.2778 24.6841 18.3394C25.1552 18.4008 25.55 18.5854 25.9201 18.8108C26.5366 19.1861 26.9294 19.6504 27.2058 20.2111C27.482 20.7729 27.5334 21.4228 27.4531 22.1044C27.3727 22.786 27.118 23.4739 26.716 24.1288C26.3139 24.784 25.8129 25.3209 25.2129 25.7433C24.6388 26.1247 24.0583 26.3327 23.4047 26.385C22.7511 26.4362 22.1408 26.2343 21.5656 25.8838C21.0718 25.5835 20.711 25.2513 20.4419 24.8629C20.1729 24.4743 19.9945 24.0284 19.9995 23.4698C20.0048 22.9111 20.1676 22.2796 20.5542 21.5591L20.4305 21.4842L19.6707 23.2699L18.0594 25.8858L16.2502 24.7849L16.2513 24.7828ZM21.8253 23.6235C22.2367 23.8736 22.616 23.9925 22.979 24.0448C23.3419 24.0971 23.715 24.0427 24.0964 23.8818C24.4367 23.6953 24.7613 23.4442 25.014 23.0351C25.2655 22.6261 25.385 22.2489 25.3305 21.8789C25.3418 21.4925 25.2212 21.1377 24.9676 20.8148C24.7553 20.5166 24.4356 20.21 24.0656 19.9846C23.6954 19.7591 23.2749 19.6155 22.9119 19.5632C22.549 19.511 22.1759 19.5653 21.7945 19.7263C21.4541 19.9128 21.1296 20.1639 20.9026 20.532C20.6512 20.941 20.5317 21.3182 20.5615 21.7291C20.5501 22.1156 20.6708 22.4704 20.9244 22.7932C21.1367 23.0915 21.4563 23.398 21.8264 23.6235H21.8253Z"
        fill="white" />
    </g>
    <defs>
      <clipPath id="clip0_7672_56">
        <rect width="30" height="30" rx="6" fill="white" />
      </clipPath>
    </defs>
  </svg>
}
    href="../docs/customer-intelligence/overview"
  >
    Use Claap call recordings and meeting notes in customer intelligence.
  </Card>

  <Card
    title="Attio"
    icon={
  <svg
    width="30"
    height="30"
    viewBox="0 0 30 30"
    fill="none"
    xmlns="http://www.w3.org/2000/svg"
  >
    <g clip-path="url(https://mintlify.s3.us-west-1.amazonaws.com/hyperline/integrations#clip0_attio_call_recording)">
      <rect width="30" height="30" rx="6" fill="#202124" />
      <path
        d="M23.0175 17.6581L21.6441 15.4601C21.6441 15.4601 21.6392 15.4508 21.6359 15.447L21.5276 15.2742C21.428 15.1136 21.2891 14.9811 21.1239 14.8893C20.9588 14.7974 20.7729 14.7492 20.5839 14.7493L18.3717 14.7417L18.2176 14.9893L15.428 19.4531L16.5363 21.2218C16.7408 21.551 17.094 21.7473 17.4833 21.7473H20.5834C20.9656 21.7473 21.327 21.5461 21.5293 21.2229L21.6386 21.048C21.6386 21.048 21.643 21.0436 21.6441 21.0414L23.0192 18.8407C23.1298 18.6632 23.1885 18.4583 23.1885 18.2491C23.1885 18.04 23.1298 17.835 23.0192 17.6575H23.0181L23.0175 17.6581ZM22.5987 18.5783L21.2231 20.779C21.2176 20.7899 21.21 20.7975 21.2039 20.8063C21.1846 20.8279 21.1604 20.8447 21.1334 20.8554C21.1064 20.866 21.0773 20.8702 21.0483 20.8675C21.0194 20.8648 20.9915 20.8555 20.9669 20.8401C20.9423 20.8247 20.9216 20.8038 20.9065 20.779L19.5314 18.5772C19.5003 18.528 19.4763 18.4746 19.4603 18.4186C19.4365 18.3356 19.4303 18.2485 19.4423 18.163C19.4543 18.0775 19.4841 17.9954 19.5298 17.9221L20.9032 15.7242L20.9065 15.7187C20.9393 15.6695 20.9803 15.6471 21.0159 15.64C21.0301 15.6356 21.0427 15.6345 21.0525 15.6329H21.0678C21.0995 15.6329 21.1783 15.6427 21.2275 15.7225L22.6004 17.9205C22.7261 18.1206 22.7261 18.3781 22.6004 18.5783H22.5987ZM18.954 12.3403C19.0642 12.1626 19.1226 11.9578 19.1226 11.7487C19.1226 11.5397 19.0642 11.3348 18.954 11.1571L17.5806 8.95915L17.4658 8.77435C17.3658 8.61342 17.2262 8.48076 17.0605 8.38898C16.8947 8.2972 16.7083 8.24936 16.5188 8.25001H13.4187C13.0321 8.25001 12.6784 8.44684 12.4722 8.77489L6.92101 17.6602C6.80947 17.8372 6.75019 18.042 6.75 18.2511C6.74981 18.4603 6.80871 18.6652 6.91991 18.8423L8.40873 21.2257C8.50844 21.3866 8.64775 21.5193 8.81334 21.6111C8.97893 21.7029 9.16529 21.7507 9.35462 21.75H12.4547C12.844 21.75 13.1972 21.5532 13.4017 21.2251L13.5154 21.0447V21.0425L13.5171 21.0387L18.9519 12.3414L18.954 12.3408V12.3403ZM18.6298 11.7487C18.6298 11.8619 18.5981 11.9762 18.5341 12.0773L13.0961 20.7806C13.0793 20.8076 13.0558 20.8298 13.0279 20.8451C13.0001 20.8604 12.9688 20.8683 12.937 20.8681C12.9051 20.8683 12.8737 20.8604 12.8458 20.8451C12.8178 20.8298 12.7943 20.8076 12.7773 20.7806L11.4033 18.5788C11.3422 18.4801 11.3098 18.3663 11.3098 18.2502C11.3098 18.1341 11.3422 18.0203 11.4033 17.9216L16.8408 9.22105C16.8575 9.19366 16.8809 9.17105 16.9089 9.15543C16.9369 9.13981 16.9684 9.13171 17.0005 9.13193C17.0322 9.13193 17.1109 9.14122 17.1607 9.22159L18.5341 11.4196C18.5981 11.5207 18.6298 11.635 18.6298 11.7487Z"
        fill="white"
      />
    </g>
    <defs>
      <clipPath id="clip0_attio_call_recording">
        <rect width="30" height="30" rx="6" fill="white" />
      </clipPath>
    </defs>
  </svg>
}
    href="../docs/customer-intelligence/overview"
  >
    Use Attio call recordings and meeting notes in customer intelligence.
  </Card>

  <Card
    title="Grain"
    icon={
  <svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
    <g clip-path="url(https://mintlify.s3.us-west-1.amazonaws.com/hyperline/integrations#clip0_7672_85)">
      <rect width="30" height="30" rx="6" fill="#F4F8F9" />
      <path
        d="M13.7417 5.11376C14.5511 4.79541 15.4488 4.79541 16.2582 5.11376C17.1677 5.4717 18.0647 5.888 18.9459 6.36327C19.1289 6.46214 19.1006 6.7367 18.9048 6.80578C14.0858 8.51329 10.6298 13.1576 10.6298 18.6196C10.6298 20.3206 10.9651 21.9429 11.5728 23.4217C11.6587 23.6302 11.4428 23.8434 11.2446 23.7386C9.80364 22.9781 8.43982 22.0765 7.17269 21.0466C6.49568 20.496 6.04679 19.7088 5.91442 18.84C5.72124 17.5694 5.62449 16.2858 5.625 15.0003C5.625 13.6942 5.72383 12.4119 5.91442 11.1606C6.04694 10.2917 6.49605 9.50444 7.17328 8.95402C8.16322 8.14932 9.21259 7.42258 10.3122 6.78017C11.4116 6.13684 12.5582 5.57974 13.7417 5.11376Z"
        fill="#00B96C" />
      <path
        d="M22.8273 8.95469C22.7144 8.86277 22.6006 8.77184 22.4861 8.68192C22.366 8.5866 22.2274 8.51798 22.0793 8.48052C21.9312 8.44306 21.777 8.43762 21.6267 8.46453C16.3913 9.43234 12.4223 14.0742 12.4223 19.6542C12.4223 21.3885 12.8053 23.0323 13.4912 24.5034C13.5971 24.7309 13.7935 24.9012 14.0283 24.9846C14.7621 25.201 15.5459 25.1665 16.2583 24.8863C17.4248 24.4277 18.5707 23.8738 19.6878 23.2205C20.7876 22.5781 21.8372 21.8514 22.8273 21.0466C23.5042 20.4963 23.9531 19.7093 24.0856 18.8406C24.2762 17.5887 24.375 16.3065 24.375 15.001C24.375 13.6949 24.2762 12.4126 24.0856 11.1613C23.9532 10.2924 23.5043 9.50521 22.8273 8.95469Z"
        fill="#00B96C" />
    </g>
    <defs>
      <clipPath id="clip0_7672_85">
        <rect width="30" height="30" rx="6" fill="white" />
      </clipPath>
    </defs>
  </svg>
}
    href="../docs/customer-intelligence/overview"
  >
    Use Grain call recordings and meeting notes in customer intelligence.
  </Card>
</CardGroup>

## Usage data

<CardGroup>
  <Card
    title="MySQL"
    icon={
  <svg
    width="30"
    height="30"
    viewBox="0 0 30 30"
    fill="none"
    xmlns="http://www.w3.org/2000/svg"
  >
    <g clipPath="url(https://mintlify.s3.us-west-1.amazonaws.com/hyperline/integrations#clip0_3160_32)">
      <g clipPath="url(https://mintlify.s3.us-west-1.amazonaws.com/hyperline/integrations#clip1_3160_32)">
        <rect width="30" height="30" rx="6" fill="#00618A" />
        <path
          d="M39.0366 33.2725C36.993 33.2193 35.432 33.4018 34.0975 33.9421C33.7182 34.0956 33.1135 34.0996 33.0516 34.5559C33.26 34.7657 33.2924 35.0788 33.4581 35.3368C33.7767 35.8319 34.3147 36.4952 34.7947 36.8431C35.3191 37.2231 35.8597 37.6297 36.422 37.9588C37.422 38.5443 38.5385 38.8786 39.5016 39.4651C40.069 39.8108 40.6329 40.2462 41.1866 40.6364C41.4602 40.8292 41.6443 41.1292 42 41.25C42 41.2316 42 41.213 42 41.1943C41.8131 40.9659 41.7649 40.6518 41.5933 40.4132C41.3417 40.1716 41.0898 39.9298 40.8379 39.688C40.0993 38.7468 39.1617 37.9202 38.165 37.2336C37.3702 36.6858 35.5912 35.9459 35.2596 35.0579C35.2402 35.0393 35.221 35.0207 35.2013 35.002C35.7649 34.9411 36.4248 34.7453 36.9449 34.6116C37.8186 34.3867 38.5994 34.4448 39.5016 34.2212C39.9083 34.1096 40.315 33.9977 40.7219 33.8864C40.7219 33.8118 40.7219 33.7378 40.7219 33.6632C40.2658 33.2139 39.9406 32.6194 39.4433 32.2128C38.1422 31.1491 36.722 30.0864 35.2596 29.2003C34.4485 28.7088 33.4462 28.3894 32.5867 27.9729C32.2975 27.8329 31.7896 27.76 31.5985 27.5266C31.1471 26.9739 28.9897 22.5592 28.6415 21.9156C27.912 20.5671 27.1957 19.0944 26.5495 17.6758C26.1087 16.7084 25.8208 15.7543 25.2712 14.8864C22.6327 10.7219 19.7926 8.20822 15.3929 5.73751C14.4568 5.21207 13.3297 5.00455 12.1386 4.73346C11.4997 4.69633 10.8602 4.65895 10.2211 4.62182C9.83094 4.46528 9.42502 4.00704 9.05897 3.78498C7.60148 2.90105 3.86303 0.978364 2.78351 3.50611C2.10188 5.10163 3.80219 6.65858 4.4103 7.46701C4.83719 8.0342 5.38368 8.67008 5.68863 9.3079C5.88926 9.72707 5.92395 10.1474 6.09559 10.5911C6.51808 11.6837 6.88543 12.8725 7.43192 13.8824C7.70814 14.3933 8.01258 14.9316 8.36181 15.3886C8.5759 15.6689 8.94273 15.7924 9.00072 16.2254C8.64191 16.7074 8.62146 17.4557 8.4198 18.0663C7.51165 20.8154 7.85415 24.2324 9.1752 26.267C9.58061 26.8915 10.5353 28.2311 11.8481 27.7174C12.9965 27.2683 12.74 25.8768 13.0685 24.6491C13.1428 24.3707 13.0972 24.1661 13.2427 23.9798C13.2427 23.9982 13.2427 24.0169 13.2427 24.0356C13.5914 24.705 13.9401 25.3743 14.2888 26.0436C15.0629 27.2405 16.4367 28.4913 17.6009 29.3353C18.2046 29.773 18.6799 30.5297 19.4604 30.7857C19.4604 30.7671 19.4604 30.7487 19.4604 30.7298C19.4407 30.7298 19.4216 30.7298 19.4022 30.7298C19.251 30.5034 19.0144 30.4097 18.8213 30.2278C18.3664 29.7998 17.8608 29.2677 17.4847 28.7774C16.4259 27.3973 15.49 25.8868 14.6375 24.3144C14.2303 23.5638 13.8764 22.7354 13.5332 21.9714C13.4009 21.6768 13.4024 21.2314 13.1267 21.0787C12.7508 21.6387 12.1971 22.0913 11.9064 22.7524C11.4414 23.8091 11.3814 25.0979 11.2092 26.4343C11.1072 26.4693 11.1525 26.4452 11.0927 26.4899C10.2835 26.3025 9.99895 25.5027 9.6984 24.8166C8.93755 23.0813 8.79621 20.287 9.46566 18.2896C9.63885 17.7729 10.4217 16.1451 10.1048 15.6677C9.95365 15.1913 9.45453 14.9158 9.1752 14.5517C8.8296 14.1018 8.48452 13.5093 8.24531 12.9897C7.62271 11.6367 7.33199 10.1178 6.67651 8.75018C6.36327 8.09633 5.83335 7.43473 5.39817 6.85347C4.9164 6.20959 4.3769 5.73532 4.0036 4.95651C3.87079 4.67983 3.69036 4.23688 3.88736 3.95244C3.95001 3.76045 4.03829 3.68038 4.23607 3.61775C4.57313 3.36825 5.51182 3.70076 5.86286 3.8408C6.79482 4.21237 7.57249 4.56623 8.36181 5.06815C8.74081 5.3094 9.12394 5.77586 9.5819 5.90499C9.75612 5.90499 9.93061 5.90499 10.1048 5.90499C10.9229 6.08555 11.8393 5.96106 12.6035 6.18384C13.9543 6.578 15.1649 7.19107 16.2643 7.85752C19.6137 9.88774 22.3521 12.7778 24.2253 16.2254C24.5267 16.7805 24.6571 17.3103 24.9225 17.8991C25.4581 19.0864 26.1327 20.3082 26.6655 21.4692C27.1972 22.6277 29.6269 27.511 30.3785 28.4751C30.7738 28.9818 32.2998 29.2536 32.9934 29.5349C33.4795 29.7323 34.2761 29.9378 34.7367 30.2042C35.6163 30.7137 36.4686 31.3201 37.2936 31.878C37.706 32.1569 38.9735 32.7685 39.0366 33.2725Z"
          fill="white"
        />
        <path
          fillRule="evenodd"
          clipRule="evenodd"
          d="M11.151 8.30384C10.7249 8.29631 10.4235 8.3485 10.1048 8.41526C10.1048 8.43392 10.1048 8.45261 10.1048 8.47108C10.1243 8.47108 10.1437 8.47108 10.1631 8.47108C10.3663 8.872 10.7251 9.12999 10.9765 9.47537C11.1701 9.86588 11.3638 10.2564 11.5577 10.6467C11.5768 10.6282 11.5965 10.6095 11.6157 10.5911C11.9755 10.3476 12.1404 9.95811 12.1386 9.36373C11.9944 9.2181 11.9732 9.03536 11.8481 8.86156C11.6819 8.63003 11.3604 8.49849 11.151 8.30384Z"
          fill="white"
        />
      </g>
    </g>
    <defs>
      <clipPath id="clip0_3160_32">
        <rect width="30" height="30" rx="6" fill="white" />
      </clipPath>
      <clipPath id="clip1_3160_32">
        <rect width="30" height="30" rx="6" fill="white" />
      </clipPath>
    </defs>
  </svg>
}
    href="../docs/usage/usage-data-with-connectors"
  >
    Automatically pull usage data from your MySQL database.
  </Card>

  <Card
    title="PostgreSQL"
    icon={
  <svg
    width="30"
    height="30"
    viewBox="0 0 30 30"
    fill="none"
    xmlns="http://www.w3.org/2000/svg"
  >
    <g clipPath="url(https://mintlify.s3.us-west-1.amazonaws.com/hyperline/integrations#clip0_2425_2662)">
      <path
        d="M28.125 17.9174V18.4764C28.021 18.8448 27.8461 19.1533 27.6003 19.4021C26.925 20.0853 26.1082 20.5604 25.1499 20.8275C24.3742 21.044 23.5378 21.1284 22.6407 21.0805C22.6216 21.0795 22.6103 21.0885 22.6067 21.1074C22.5879 21.1978 22.5769 21.3003 22.5736 21.4148C22.5726 21.456 22.5713 21.4975 22.5696 21.5394C22.5311 22.4863 22.4558 23.3384 22.3436 24.0957C22.258 24.6723 22.1188 25.2397 21.9259 25.7981C21.6021 26.7372 21.033 27.5652 20.1992 28.0963C19.5377 28.5178 18.6635 28.7549 17.8786 28.875H16.7828C15.8735 28.7156 15.1905 28.2383 14.7337 27.4432C14.6261 27.2552 14.5326 27.0565 14.4533 26.8473C14.205 26.1902 14.0248 25.5754 13.9459 24.8893C13.8323 23.9019 13.8002 22.8846 13.7736 21.8667C13.7734 21.8618 13.772 21.857 13.7696 21.8527C13.7672 21.8484 13.7638 21.8447 13.7596 21.8421C13.7555 21.8394 13.7508 21.8379 13.7459 21.8375C13.741 21.8371 13.7361 21.8379 13.7316 21.8398C12.8194 22.2409 11.8069 22.2802 10.8103 22.08C10.1735 21.9519 9.56583 21.6963 9.13489 21.2166C9.12173 21.2019 9.10741 21.2009 9.09194 21.2136C8.71037 21.5284 8.26412 21.7457 7.77789 21.8089C6.3888 21.9893 5.3186 20.8115 4.67787 19.702C3.97839 18.4909 3.46994 17.1826 3.04295 15.806C2.43446 13.8454 1.97209 11.9094 1.65584 9.99793C1.59693 9.64221 1.55563 9.31223 1.53194 9.00799C1.48027 8.34305 1.49129 7.66714 1.56501 6.98028C1.69385 5.77861 2.05025 4.61928 2.75812 3.6677C4.34911 1.52989 7.10013 1.25488 9.51746 1.65793C10.3708 1.80042 11.1861 2.00352 11.9634 2.26724C11.9779 2.27211 11.9932 2.27388 12.0084 2.27242C12.0237 2.27096 12.0384 2.26631 12.0518 2.25877C12.885 1.7795 13.7948 1.50747 14.7811 1.44271C15.5446 1.39255 16.3959 1.44121 17.3351 1.58868C17.4013 1.59898 17.4753 1.59283 17.5573 1.57025C19.2929 1.08848 21.1425 0.961439 22.8831 1.36947C24.516 1.75243 25.8846 2.55869 26.9887 3.78827C27.2404 4.06826 27.4769 4.35971 27.6403 4.70945C28.0129 5.50658 28.0584 6.48955 27.9971 7.36789C27.9313 8.31083 27.762 9.30525 27.4892 10.3512C26.8903 12.6472 25.9614 14.882 24.7026 17.0555C24.7008 17.0585 24.6999 17.0619 24.6999 17.0653C24.6999 17.0688 24.7009 17.0722 24.7027 17.0752C24.7045 17.0782 24.7072 17.0806 24.7103 17.0822C24.7134 17.0839 24.7169 17.0846 24.7204 17.0844C25.2965 17.0605 25.8187 16.9389 26.3736 16.8572C27.1673 16.7397 27.9206 17.0844 28.125 17.9174ZM14.3793 20.4952C14.3724 21.3982 14.3837 22.2801 14.4133 23.1406C14.4415 23.9692 14.4869 24.7503 14.6068 25.5026C14.6351 25.682 14.6708 25.8383 14.7139 25.9714C14.9815 26.8035 15.487 27.5797 16.2896 27.9493C16.8474 28.2059 17.5069 28.2318 18.119 28.1237C19.286 27.917 20.4139 27.4541 20.9703 26.3645C21.3099 25.6999 21.4284 24.9865 21.5305 24.2407C21.725 22.8228 21.893 21.4688 22.0345 20.1788C22.0368 20.1582 22.0479 20.1504 22.0676 20.1554C22.3628 20.2294 22.6463 20.27 22.9181 20.2769C23.572 20.2935 24.2251 20.219 24.8774 20.0532C25.6241 19.8636 26.306 19.4871 26.923 18.9238C27.2063 18.6657 27.5006 18.2328 27.274 17.8621C27.1106 17.5951 26.7621 17.5428 26.4812 17.5846C26.2239 17.6232 25.9619 17.6673 25.6953 17.7171C25.1892 17.8121 24.6859 17.844 24.1853 17.8128C23.948 17.7982 23.7109 17.7359 23.474 17.626C23.4368 17.6084 23.4292 17.5821 23.4513 17.5473C24.6738 15.6325 25.6384 13.592 26.345 11.4258C26.68 10.3988 26.9274 9.375 27.0874 8.35434C27.2241 7.48297 27.2873 6.59716 27.1417 5.71135C27.0464 5.13243 26.8184 4.74034 26.4254 4.29943C25.5385 3.30534 24.4675 2.61549 23.2124 2.22988C21.3331 1.65295 19.2421 1.79095 17.3746 2.39727C17.3526 2.40425 17.3305 2.40508 17.3085 2.39976C15.9767 2.08739 14.5525 2.04155 13.2933 2.48645C12.904 2.62363 12.5183 2.81759 12.1362 3.06836C12.123 3.07733 12.109 3.07899 12.0942 3.07334C11.1609 2.72526 10.1536 2.47499 9.0722 2.32254C6.6914 1.98625 4.11019 2.42019 2.92596 4.78568C2.70152 5.23373 2.53829 5.70936 2.43627 6.21255C2.21907 7.28519 2.18057 8.44302 2.34939 9.54456C2.62682 11.356 3.04591 13.1595 3.55781 14.9023C3.86617 15.9508 4.20776 16.9147 4.5826 17.7939C4.85706 18.4369 5.1562 19.0161 5.48002 19.5316C5.96132 20.2969 6.7847 21.1911 7.79813 20.9744C8.22265 20.8833 8.65113 20.5714 8.933 20.2316C9.61586 19.4082 10.3453 18.5724 11.1213 17.7241C11.1252 17.7199 11.1304 17.717 11.1361 17.7161C11.1418 17.7152 11.1477 17.7163 11.1529 17.7191C11.6064 17.9669 12.0967 18.1016 12.6239 18.1232C12.6299 18.1234 12.6357 18.1254 12.6407 18.1287C12.6457 18.1321 12.6497 18.1368 12.6522 18.1424C12.6547 18.1479 12.6556 18.154 12.6549 18.16C12.6542 18.166 12.6518 18.1717 12.6481 18.1765C12.5023 18.3681 12.3509 18.5571 12.1939 18.7435C11.96 19.0215 11.6095 19.1266 11.2773 19.2013C10.9811 19.2684 10.7112 19.3323 10.4677 19.3931C10.177 19.4654 9.81314 19.6133 9.63198 19.8744C9.46266 20.1175 9.49821 20.4269 9.68381 20.6516C9.91335 20.9296 10.2999 21.1119 10.6321 21.2031C11.9481 21.5638 13.3145 21.4049 14.3526 20.4827C14.3707 20.4668 14.3796 20.4709 14.3793 20.4952Z"
        fill="black"
      />
      <path
        d="M14.3526 20.4827C13.3145 21.4049 11.9481 21.5638 10.6321 21.2031C10.2999 21.1119 9.91335 20.9296 9.68381 20.6516C9.49821 20.4269 9.46266 20.1175 9.63198 19.8744C9.81314 19.6133 10.177 19.4654 10.4677 19.3931C10.7112 19.3323 10.9811 19.2684 11.2773 19.2013C11.6095 19.1266 11.96 19.0215 12.1939 18.7435C12.3509 18.5571 12.5023 18.3681 12.6481 18.1765C12.6518 18.1717 12.6542 18.166 12.6549 18.16C12.6556 18.154 12.6547 18.1479 12.6522 18.1424C12.6497 18.1368 12.6457 18.1321 12.6407 18.1287C12.6357 18.1254 12.6299 18.1234 12.6239 18.1232C12.0967 18.1016 11.6064 17.9669 11.1529 17.7191C11.1477 17.7163 11.1418 17.7152 11.1361 17.7161C11.1304 17.717 11.1252 17.7199 11.1213 17.7241C10.3453 18.5724 9.61586 19.4082 8.933 20.2316C8.65113 20.5714 8.22265 20.8833 7.79813 20.9744C6.7847 21.1911 5.96132 20.2969 5.48002 19.5316C5.1562 19.0161 4.85706 18.4369 4.5826 17.7939C4.20776 16.9147 3.86617 15.9508 3.55781 14.9023C3.04591 13.1595 2.62682 11.356 2.34939 9.54456C2.18057 8.44302 2.21907 7.28519 2.43627 6.21255C2.53829 5.70936 2.70152 5.23373 2.92596 4.78568C4.11019 2.42019 6.6914 1.98625 9.0722 2.32254C10.1536 2.47499 11.1609 2.72526 12.0942 3.07334C12.109 3.07899 12.123 3.07733 12.1362 3.06836C12.5183 2.81759 12.904 2.62363 13.2933 2.48645C14.5525 2.04155 15.9767 2.08739 17.3085 2.39976C17.3305 2.40508 17.3526 2.40425 17.3746 2.39727C19.2421 1.79095 21.3331 1.65295 23.2124 2.22988C24.4675 2.61549 25.5385 3.30534 26.4254 4.29943C26.8184 4.74034 27.0464 5.13243 27.1417 5.71135C27.2873 6.59716 27.2241 7.48297 27.0874 8.35434C26.9274 9.375 26.68 10.3988 26.345 11.4258C25.6384 13.592 24.6738 15.6325 23.4513 17.5473C23.4292 17.5821 23.4368 17.6084 23.474 17.626C23.7109 17.7359 23.948 17.7982 24.1853 17.8128C24.6859 17.844 25.1892 17.8121 25.6953 17.7171C25.9619 17.6673 26.2239 17.6232 26.4812 17.5846C26.7621 17.5428 27.1106 17.5951 27.274 17.8621C27.5006 18.2328 27.2063 18.6657 26.923 18.9238C26.306 19.4871 25.6241 19.8636 24.8774 20.0532C24.2251 20.219 23.572 20.2935 22.9181 20.2769C22.6463 20.27 22.3628 20.2294 22.0676 20.1554C22.0479 20.1504 22.0368 20.1582 22.0345 20.1788C21.893 21.4688 21.725 22.8228 21.5305 24.2407C21.4284 24.9865 21.3099 25.6999 20.9703 26.3645C20.4139 27.4541 19.286 27.917 18.119 28.1237C17.5069 28.2318 16.8474 28.2059 16.2896 27.9493C15.487 27.5797 14.9815 26.8035 14.7139 25.9714C14.6708 25.8383 14.6351 25.682 14.6068 25.5026C14.4869 24.7503 14.4415 23.9692 14.4133 23.1406C14.3837 22.2801 14.3724 21.3982 14.3793 20.4952C14.3796 20.4709 14.3707 20.4668 14.3526 20.4827ZM22.9803 16.8458C24.403 14.5854 25.4781 12.0381 26.0922 9.47481C26.3543 8.38025 26.533 7.17907 26.4269 6.09447C26.3943 5.76615 26.3025 5.37556 26.0947 5.11101C25.3628 4.18102 24.4639 3.51508 23.398 3.1132C21.8953 2.54624 20.2352 2.52432 18.668 2.85064C18.6489 2.85463 18.6482 2.86061 18.666 2.86858C20.677 3.77233 22.2068 5.47171 23.1205 7.49593C23.2982 7.88918 23.4185 8.23859 23.4814 8.54416C23.5038 8.6531 23.5115 8.7622 23.5046 8.87148C23.4868 9.16692 23.4957 9.46136 23.4562 9.7558C23.4052 10.1371 23.3557 10.5011 23.3076 10.8479C23.1936 11.6714 23.2667 12.4073 23.3772 13.2587C23.5347 14.4683 23.4671 15.6446 22.8525 16.6724C22.8456 16.684 22.8464 16.695 22.855 16.7053L22.9665 16.8468C22.9674 16.8479 22.9685 16.8487 22.9697 16.8493C22.971 16.8498 22.9723 16.8501 22.9737 16.85C22.9751 16.8499 22.9764 16.8494 22.9775 16.8487C22.9787 16.848 22.9797 16.847 22.9803 16.8458ZM15.8562 26.5867C16.5902 27.6853 17.8475 27.48 18.9088 27.1173C19.6503 26.8637 20.1913 26.4069 20.447 25.6486C20.5579 25.3195 20.6366 24.9994 20.683 24.6886C20.914 23.1458 21.1192 21.5218 21.2985 19.8166C21.3133 19.6774 21.3234 19.5416 21.3286 19.4091C21.3459 18.9791 21.3474 18.5746 21.5577 18.183C21.7357 17.8522 22.0344 17.6265 22.4536 17.5059C22.4579 17.5047 22.4618 17.5024 22.465 17.4993C22.4683 17.4961 22.4706 17.4922 22.472 17.488C22.4734 17.4837 22.4737 17.4791 22.4729 17.4747C22.4721 17.4703 22.4702 17.4661 22.4675 17.4626C22.1422 17.05 21.8287 16.6525 21.5932 16.1812C21.4777 15.9495 21.376 15.7034 21.2497 15.4777C20.6371 14.3821 20.021 13.2099 19.6513 12.0595C19.5233 11.6606 19.4375 11.2439 19.3941 10.8095C19.2806 9.67758 19.7855 8.72102 20.9342 8.447C21.442 8.32611 21.9985 8.3007 22.6037 8.37078C22.6078 8.37127 22.6119 8.3707 22.6157 8.36913C22.6195 8.36756 22.6229 8.36503 22.6255 8.36179C22.628 8.35855 22.6297 8.3547 22.6304 8.3506C22.6311 8.34651 22.6307 8.34231 22.6294 8.3384C22.0296 6.63951 20.795 5.04923 19.3102 4.09417C17.9895 3.24489 16.5147 2.86476 14.8857 2.95377C13.666 3.02003 12.5163 3.53169 11.7294 4.46035C11.3483 4.91006 11.0453 5.391 10.8202 5.90316C10.3825 6.89924 10.1194 7.98517 10.0308 9.16094C10.0306 9.16374 10.0311 9.16657 10.0323 9.16911C10.0335 9.17165 10.0354 9.1738 10.0377 9.17534C10.0401 9.17688 10.0428 9.17775 10.0456 9.17784C10.0483 9.17794 10.0511 9.17726 10.0535 9.17588C10.5837 8.87297 11.1338 8.66339 11.7038 8.54714C12.3351 8.41811 13.0158 8.4191 13.5534 8.72849C14.0207 8.99719 14.3268 9.41419 14.4716 9.97949C14.6315 10.6042 14.7398 11.3056 14.7964 12.0834C14.8685 13.0759 14.7714 13.9852 14.5051 14.8116C14.3363 15.3357 14.0811 15.8449 13.8762 16.3715C13.7318 16.7432 13.6023 17.1218 13.4878 17.5074C13.4867 17.511 13.4866 17.5149 13.4875 17.5186C13.4884 17.5222 13.4902 17.5256 13.4929 17.5284C13.4956 17.5311 13.4989 17.5331 13.5026 17.5341C13.5063 17.5352 13.5102 17.5352 13.5139 17.5343C13.6123 17.5081 13.7115 17.5001 13.8116 17.5104C14.4829 17.5786 14.9524 18.0779 15.1251 18.7161C15.1653 18.8639 15.1819 19.0414 15.175 19.2486C15.1319 20.541 15.1353 21.8596 15.1854 23.2044C15.2041 23.7116 15.236 24.2232 15.2811 24.7394C15.3114 25.0888 15.3484 25.3548 15.3922 25.5375C15.4807 25.9065 15.6354 26.2563 15.8562 26.5867ZM9.22819 9.67808C9.31556 7.56966 9.88028 5.21214 11.4071 3.67866C11.4086 3.67711 11.4098 3.67518 11.4104 3.67306C11.411 3.67095 11.411 3.66871 11.4105 3.66657C11.41 3.66442 11.409 3.66244 11.4075 3.66081C11.4061 3.65918 11.4042 3.65795 11.4022 3.65724C10.0684 3.21085 8.661 2.9468 7.2502 3.01206C6.31328 3.0554 5.37142 3.307 4.62554 3.88143C3.52918 4.72639 3.11502 6.12586 3.03406 7.52134C2.99392 8.22015 3.01695 8.84839 3.10317 9.40605C3.39573 11.2999 3.84511 13.2276 4.45129 15.1892C4.82991 16.4143 5.32107 17.7635 5.98501 18.8874C6.26391 19.3597 6.82616 20.1838 7.43235 20.2311C7.79665 20.2595 8.14318 19.9765 8.37371 19.698C9.05459 18.8753 9.75358 18.0732 10.4707 17.2917C10.4842 17.2771 10.4837 17.2628 10.4692 17.2488C10.3176 17.1019 10.1538 16.9484 10.0254 16.7875C9.43732 16.0478 9.13571 15.1919 9.12058 14.2197C9.1186 14.0965 9.1474 13.7644 9.20696 13.2233C9.30569 12.3236 9.30569 11.3456 9.23855 10.3855C9.2221 10.1474 9.21864 9.91157 9.22819 9.67808ZM22.4048 15.8633C22.6654 15.2326 22.7227 14.5371 22.6659 13.8745C22.6294 13.445 22.5797 12.9674 22.5168 12.4416C22.4494 11.8767 22.4625 11.2941 22.5563 10.6939C22.6458 10.121 22.7046 9.62028 22.7325 9.19183C22.7331 9.18513 22.7311 9.17847 22.7268 9.17319C22.7226 9.16792 22.7165 9.16443 22.7098 9.16343C22.3011 9.1053 21.8981 9.09418 21.5009 9.13005C20.8192 9.19232 20.2343 9.49822 20.1617 10.265C20.1265 10.6366 20.1689 11.045 20.2891 11.4901C20.6163 12.7037 21.2472 13.9108 21.8751 15.0233C22.0434 15.3208 22.1841 15.6292 22.3283 15.9435C22.3408 15.9708 22.3539 15.9709 22.3677 15.944C22.3809 15.9185 22.3932 15.8916 22.4048 15.8633ZM13.4038 15.5101C13.7681 14.708 14.009 13.9442 14.0426 13.0614C14.0772 12.1573 13.9728 11.1958 13.7296 10.1768C13.3283 8.49433 10.8903 9.46684 10.0565 10.0851C10.016 10.1155 9.99135 10.1683 9.99529 10.2191C10.0907 11.4019 10.0739 12.5056 9.94494 13.5302C9.90249 13.869 9.88686 14.1606 9.89805 14.4051C9.96814 15.9196 11.1218 17.2962 12.6841 17.352C12.6978 17.3525 12.7113 17.3484 12.7225 17.3403C12.7337 17.3322 12.7419 17.3205 12.7458 17.3071C12.9387 16.6502 13.158 16.0511 13.4038 15.5101ZM22.1851 18.6533C22.118 18.8469 22.0934 19.0618 22.1115 19.298C22.1126 19.3123 22.1176 19.3261 22.1261 19.3377C22.1346 19.3493 22.1461 19.3584 22.1594 19.3637C22.3171 19.4275 22.4808 19.4665 22.6506 19.4808C23.2755 19.5336 23.9071 19.4864 24.5452 19.3393C25.2073 19.1865 25.8029 18.8801 26.3321 18.4201C26.3631 18.3932 26.3586 18.3839 26.3188 18.3922C25.5003 18.5651 24.6088 18.6762 23.8008 18.5412C23.4806 18.4877 23.1944 18.3711 22.9423 18.1914C22.9275 18.1811 22.9112 18.1783 22.8935 18.183C22.5998 18.2602 22.2967 18.3324 22.1851 18.6533ZM13.1827 20.3422C13.6184 20.1393 13.9921 19.8189 14.3037 19.3812C14.5209 19.0758 14.3358 18.6274 14.0831 18.4266C13.8386 18.2323 13.6248 18.2386 13.4419 18.4455C13.2684 18.6418 13.1009 18.8448 12.9393 19.0543C12.7659 19.2792 12.6048 19.4443 12.4561 19.5496C12.1283 19.7807 11.6993 19.9093 11.2965 19.9945C10.9753 20.0622 10.6826 20.1378 10.4183 20.2211C10.3808 20.2328 10.3785 20.2494 10.4114 20.271C10.5108 20.3354 10.6141 20.3846 10.7214 20.4184C11.5211 20.67 12.421 20.6959 13.1827 20.3422Z"
        fill="white"
      />
      <path
        d="M26.0922 9.47481C25.4781 12.0381 24.403 14.5854 22.9803 16.8458C22.9797 16.847 22.9787 16.848 22.9775 16.8487C22.9764 16.8494 22.9751 16.8499 22.9737 16.85C22.9723 16.8501 22.971 16.8498 22.9697 16.8493C22.9685 16.8487 22.9674 16.8479 22.9665 16.8468L22.855 16.7053C22.8464 16.695 22.8456 16.684 22.8525 16.6724C23.4671 15.6446 23.5347 14.4683 23.3772 13.2587C23.2667 12.4073 23.1936 11.6714 23.3076 10.8479C23.3557 10.5011 23.4052 10.1371 23.4562 9.7558C23.4957 9.46136 23.4868 9.16692 23.5046 8.87148C23.5115 8.7622 23.5038 8.6531 23.4814 8.54416C23.4185 8.23859 23.2982 7.88918 23.1205 7.49593C22.2068 5.47171 20.677 3.77233 18.666 2.86858C18.6482 2.86061 18.6489 2.85463 18.668 2.85064C20.2352 2.52432 21.8953 2.54624 23.398 3.1132C24.4639 3.51508 25.3628 4.18102 26.0947 5.11101C26.3025 5.37556 26.3943 5.76615 26.4269 6.09447C26.533 7.17907 26.3543 8.38025 26.0922 9.47481Z"
        fill="#336791"
      />
      <path
        d="M18.9088 27.1173C17.8475 27.48 16.5902 27.6853 15.8562 26.5867C15.6354 26.2563 15.4807 25.9065 15.3922 25.5375C15.3484 25.3548 15.3114 25.0888 15.2811 24.7394C15.236 24.2232 15.2041 23.7116 15.1854 23.2044C15.1353 21.8596 15.1319 20.541 15.175 19.2486C15.1819 19.0414 15.1653 18.8639 15.1251 18.7161C14.9524 18.0779 14.4829 17.5786 13.8116 17.5104C13.7115 17.5001 13.6123 17.5081 13.5139 17.5343C13.5102 17.5352 13.5063 17.5352 13.5026 17.5341C13.4989 17.5331 13.4956 17.5311 13.4929 17.5284C13.4902 17.5256 13.4884 17.5222 13.4875 17.5186C13.4866 17.5149 13.4867 17.511 13.4878 17.5074C13.6023 17.1218 13.7318 16.7432 13.8762 16.3715C14.0811 15.8449 14.3363 15.3357 14.5051 14.8116C14.7714 13.9852 14.8685 13.0759 14.7964 12.0834C14.7398 11.3056 14.6315 10.6042 14.4716 9.97949C14.3268 9.41419 14.0207 8.99719 13.5534 8.72849C13.0158 8.4191 12.3351 8.41811 11.7038 8.54714C11.1338 8.66339 10.5837 8.87297 10.0535 9.17588C10.0511 9.17726 10.0483 9.17794 10.0456 9.17784C10.0428 9.17775 10.0401 9.17688 10.0377 9.17534C10.0354 9.1738 10.0335 9.17165 10.0323 9.16911C10.0311 9.16657 10.0306 9.16374 10.0308 9.16094C10.1194 7.98517 10.3825 6.89924 10.8202 5.90316C11.0453 5.391 11.3483 4.91006 11.7294 4.46035C12.5163 3.53169 13.666 3.02003 14.8857 2.95377C16.5147 2.86476 17.9895 3.24489 19.3102 4.09417C20.795 5.04923 22.0296 6.63951 22.6294 8.3384C22.6307 8.34231 22.6311 8.34651 22.6304 8.3506C22.6297 8.3547 22.628 8.35855 22.6255 8.36179C22.6229 8.36503 22.6195 8.36756 22.6157 8.36913C22.6119 8.3707 22.6078 8.37127 22.6037 8.37078C21.9985 8.3007 21.442 8.32611 20.9342 8.447C19.7855 8.72102 19.2806 9.67758 19.3941 10.8095C19.4375 11.2439 19.5233 11.6606 19.6513 12.0595C20.021 13.2099 20.6371 14.3821 21.2497 15.4777C21.376 15.7034 21.4777 15.9495 21.5932 16.1812C21.8287 16.6525 22.1422 17.05 22.4675 17.4626C22.4702 17.4661 22.4721 17.4703 22.4729 17.4747C22.4737 17.4791 22.4734 17.4837 22.472 17.488C22.4706 17.4922 22.4683 17.4961 22.465 17.4993C22.4618 17.5024 22.4579 17.5047 22.4536 17.5059C22.0344 17.6265 21.7357 17.8522 21.5577 18.183C21.3474 18.5746 21.3459 18.9791 21.3286 19.4091C21.3234 19.5416 21.3133 19.6774 21.2985 19.8166C21.1192 21.5218 20.914 23.1458 20.683 24.6886C20.6366 24.9994 20.5579 25.3195 20.447 25.6486C20.1913 26.4069 19.6503 26.8637 18.9088 27.1173Z"
        fill="#336791"
      />
      <path
        d="M11.4071 3.67866C9.88028 5.21214 9.31556 7.56966 9.22819 9.67808C9.21864 9.91157 9.2221 10.1474 9.23855 10.3855C9.30569 11.3456 9.30569 12.3236 9.20696 13.2233C9.1474 13.7644 9.1186 14.0965 9.12058 14.2197C9.13571 15.1919 9.43732 16.0478 10.0254 16.7875C10.1538 16.9484 10.3176 17.1019 10.4692 17.2488C10.4837 17.2628 10.4842 17.2771 10.4707 17.2917C9.75358 18.0732 9.05459 18.8753 8.37371 19.698C8.14318 19.9765 7.79665 20.2595 7.43235 20.2311C6.82616 20.1838 6.26391 19.3597 5.98501 18.8874C5.32107 17.7635 4.82991 16.4143 4.45129 15.1892C3.84511 13.2276 3.39573 11.2999 3.10317 9.40605C3.01695 8.84839 2.99392 8.22015 3.03406 7.52134C3.11502 6.12586 3.52918 4.72639 4.62554 3.88143C5.37142 3.307 6.31328 3.0554 7.2502 3.01206C8.661 2.9468 10.0684 3.21085 11.4022 3.65724C11.4042 3.65795 11.4061 3.65918 11.4075 3.66081C11.409 3.66244 11.41 3.66442 11.4105 3.66657C11.411 3.66871 11.411 3.67095 11.4104 3.67306C11.4098 3.67518 11.4086 3.67711 11.4071 3.67866Z"
        fill="#336791"
      />
      <path
        d="M22.4048 15.8633C22.3932 15.8916 22.3809 15.9185 22.3677 15.944C22.3539 15.9709 22.3408 15.9708 22.3283 15.9435C22.1841 15.6292 22.0434 15.3208 21.8751 15.0233C21.2472 13.9108 20.6163 12.7037 20.2891 11.4901C20.1689 11.045 20.1265 10.6366 20.1617 10.265C20.2343 9.49822 20.8192 9.19232 21.5009 9.13005C21.8981 9.09418 22.3011 9.1053 22.7098 9.16343C22.7165 9.16443 22.7226 9.16792 22.7268 9.17319C22.7311 9.17847 22.7331 9.18513 22.7325 9.19183C22.7046 9.62028 22.6458 10.121 22.5563 10.6939C22.4625 11.2941 22.4494 11.8767 22.5168 12.4416C22.5797 12.9674 22.6294 13.445 22.6659 13.8745C22.7227 14.5371 22.6654 15.2326 22.4048 15.8633ZM21.9931 9.80861C22.0844 9.58342 21.8203 9.50022 21.6584 9.48776C21.3448 9.46285 21.0769 9.51998 20.8548 9.65914C20.4752 9.89629 20.9638 10.2141 21.1924 10.2685C21.5143 10.3457 21.8682 10.1155 21.9931 9.80861Z"
        fill="#336791"
      />
      <path
        d="M13.4038 15.5101C13.158 16.0511 12.9387 16.6502 12.7458 17.3071C12.7419 17.3205 12.7337 17.3322 12.7225 17.3403C12.7113 17.3484 12.6978 17.3525 12.6841 17.352C11.1218 17.2962 9.96814 15.9196 9.89805 14.4051C9.88686 14.1606 9.90249 13.869 9.94494 13.5302C10.0739 12.5056 10.0907 11.4019 9.99529 10.2191C9.99135 10.1683 10.016 10.1155 10.0565 10.0851C10.8903 9.46684 13.3283 8.49433 13.7296 10.1768C13.9728 11.1958 14.0772 12.1573 14.0426 13.0614C14.009 13.9442 13.7681 14.708 13.4038 15.5101ZM13.1254 9.79615C12.7656 9.64768 12.3124 9.59786 12.0059 9.84497C11.9884 9.85892 11.9797 9.87686 11.9797 9.89878C11.9762 10.2077 12.2561 10.4842 12.5336 10.5753C12.8268 10.6725 13.1546 10.5469 13.3382 10.3038C13.5129 10.0727 13.3328 9.88134 13.1254 9.79615Z"
        fill="#336791"
      />
      <path
        d="M21.9931 9.80861C21.8682 10.1155 21.5143 10.3457 21.1924 10.2685C20.9638 10.2141 20.4752 9.89629 20.8548 9.65914C21.0769 9.51998 21.3448 9.46285 21.6584 9.48776C21.8203 9.50022 22.0844 9.58342 21.9931 9.80861Z"
        fill="white"
      />
      <path
        d="M13.1254 9.79615C13.3328 9.88134 13.5129 10.0727 13.3382 10.3038C13.1546 10.5469 12.8268 10.6725 12.5336 10.5753C12.2561 10.4842 11.9762 10.2077 11.9797 9.89878C11.9797 9.87686 11.9884 9.85892 12.0059 9.84497C12.3124 9.59786 12.7656 9.64768 13.1254 9.79615Z"
        fill="white"
      />
      <path
        d="M22.1851 18.6533C22.2967 18.3324 22.5998 18.2602 22.8935 18.183C22.9112 18.1783 22.9275 18.1811 22.9423 18.1914C23.1944 18.3711 23.4806 18.4877 23.8008 18.5412C24.6088 18.6762 25.5003 18.5651 26.3188 18.3922C26.3586 18.3839 26.3631 18.3932 26.3321 18.4201C25.8029 18.8801 25.2073 19.1865 24.5452 19.3393C23.9071 19.4864 23.2755 19.5336 22.6506 19.4808C22.4808 19.4665 22.3171 19.4275 22.1594 19.3637C22.1461 19.3584 22.1346 19.3493 22.1261 19.3377C22.1176 19.3261 22.1126 19.3123 22.1115 19.298C22.0934 19.0618 22.118 18.8469 22.1851 18.6533Z"
        fill="#336791"
      />
      <path
        d="M13.1827 20.3422C12.421 20.6959 11.5211 20.67 10.7214 20.4184C10.6141 20.3846 10.5108 20.3354 10.4114 20.271C10.3785 20.2494 10.3808 20.2328 10.4183 20.2211C10.6826 20.1378 10.9753 20.0622 11.2965 19.9945C11.6993 19.9093 12.1283 19.7807 12.4561 19.5496C12.6048 19.4443 12.7659 19.2792 12.9393 19.0543C13.1009 18.8448 13.2684 18.6418 13.4419 18.4455C13.6248 18.2386 13.8386 18.2323 14.0831 18.4266C14.3358 18.6274 14.5209 19.0758 14.3037 19.3812C13.9921 19.8189 13.6184 20.1393 13.1827 20.3422Z"
        fill="#336791"
      />
    </g>
    <defs>
      <clipPath id="clip0_2425_2662">
        <rect width="30" height="30" rx="6" fill="white" />
      </clipPath>
    </defs>
  </svg>
}
    href="../docs/usage/usage-data-with-connectors"
  >
    Automatically pull usage data from your PostgreSQL database.
  </Card>

  <Card
    title="MongoDB"
    icon={
  <svg
    width="30"
    height="30"
    viewBox="0 0 30 30"
    fill="none"
    xmlns="http://www.w3.org/2000/svg"
  >
    <g clipPath="url(https://mintlify.s3.us-west-1.amazonaws.com/hyperline/integrations#clip0_2422_10148)">
      <rect width="30" height="30" rx="6" fill="#011E2C" />
      <path
        d="M13.4435 7.132C14.2862 6.12364 15.0118 5.09952 15.1601 4.88682C15.1757 4.87106 15.1991 4.87106 15.2147 4.88682C15.3629 5.09952 16.0886 6.12364 16.9313 7.132C24.1642 16.4357 15.7921 22.7144 15.7921 22.7144L15.7219 22.7616C15.6594 23.7307 15.5034 25.125 15.5034 25.125H14.8792C14.8792 25.125 14.7231 23.7385 14.6607 22.7616L14.5905 22.7065C14.5827 22.7065 6.21058 16.4357 13.4435 7.132ZM15.1913 22.5726C15.1913 22.5726 15.5658 22.2496 15.6672 22.0841V22.0684L15.2147 11.9375C15.2147 11.906 15.1679 11.906 15.1679 11.9375L14.7153 22.0684V22.0841C14.8168 22.2496 15.1913 22.5726 15.1913 22.5726Z"
        fill="#01ED64"
      />
    </g>
    <defs>
      <clipPath id="clip0_2422_10148">
        <rect width="30" height="30" rx="6" fill="white" />
      </clipPath>
    </defs>
  </svg>
}
    href="../docs/usage/mongodb"
  >
    Automatically pull usage data from your MongoDB database.
  </Card>

  <Card
    title="BigQuery"
    icon={
  <svg
    width="30"
    height="30"
    viewBox="0 0 30 30"
    fill="none"
    xmlns="http://www.w3.org/2000/svg"
  >
    <g clipPath="url(https://mintlify.s3.us-west-1.amazonaws.com/hyperline/integrations#clip0_3160_43)">
      <rect width="30" height="30" rx="6" fill="#4386FA" />
      <path
        d="M6.99281 27.1586L0.630023 15.9661C0.289992 15.3683 0.289992 14.6312 0.630023 14.0334L6.99281 2.84136C7.33239 2.244 7.95943 1.87593 8.63812 1.875H21.3696C22.0461 1.87825 22.6699 2.24632 23.0081 2.84136L29.37 14.0334C29.71 14.6312 29.71 15.3683 29.37 15.9661L23.0072 27.1586C22.6676 27.756 22.0406 28.1241 21.3619 28.125H8.63355C7.95578 28.1227 7.33102 27.7546 6.99144 27.1586H6.99281Z"
        fill="#4386FA"
      />
      <path
        d="M18.9748 11.3956C18.9748 11.3956 20.7435 15.7043 18.3322 18.1467C15.9209 20.5891 11.5302 19.0258 11.5302 19.0258L20.4615 28.1213H21.3683C22.0474 28.1204 22.6745 27.7518 23.0136 27.1549L27.2256 19.748L18.9748 11.3956Z"
        fill="#4386FA"
      />
      <path
        d="M21.0634 20.2122L19.1133 18.227C19.0921 18.2049 19.0677 18.1861 19.0411 18.1713C19.8706 17.0862 20.2615 15.7207 20.1342 14.353C20.0069 12.9854 19.371 11.7185 18.356 10.8104C17.341 9.90235 16.0232 9.42147 14.6712 9.46575C13.3193 9.51002 12.0348 10.0761 11.0795 11.0487C10.1242 12.0213 9.5699 13.3272 9.52963 14.7003C9.48936 16.0734 9.9661 17.4105 10.8627 18.4391C11.7593 19.4677 13.0084 20.1104 14.3554 20.2363C15.7024 20.3623 17.0459 19.9619 18.1124 19.1168C18.1263 19.1423 18.1437 19.1658 18.164 19.1864L20.1188 21.1716C20.1762 21.2298 20.254 21.2625 20.3352 21.2625C20.4163 21.2625 20.4941 21.2298 20.5516 21.1716L21.0634 20.6517C21.1208 20.5934 21.153 20.5144 21.153 20.4319C21.153 20.3495 21.1208 20.2705 21.0634 20.2122ZM14.8355 18.9283C14.0445 18.9284 13.2713 18.6903 12.6136 18.2441C11.9559 17.7978 11.4432 17.1636 11.1405 16.4214C10.8378 15.6793 10.7585 14.8627 10.9128 14.0748C11.0671 13.287 11.448 12.5633 12.0073 11.9952C12.5666 11.4272 13.2792 11.0404 14.055 10.8837C14.8307 10.727 15.6348 10.8075 16.3656 11.1149C17.0963 11.4224 17.7209 11.943 18.1603 12.611C18.5997 13.2789 18.8341 14.0642 18.834 14.8675C18.8339 15.9445 18.4126 16.9773 17.6627 17.7388C16.9129 18.5003 15.8959 18.9282 14.8355 18.9283ZM12.2793 14.6507V16.3291C12.5339 16.7854 12.9022 17.166 13.3478 17.4314V14.6405L12.2793 14.6507ZM14.2788 13.2592V17.7949C14.632 17.861 14.9941 17.861 15.3473 17.7949V13.2592H14.2788ZM17.3702 16.3254V15.3312H16.3025V17.4198C16.7475 17.155 17.116 16.776 17.3711 16.3207L17.3702 16.3254Z"
        fill="white"
      />
    </g>
    <defs>
      <clipPath id="clip0_3160_43">
        <rect width="30" height="30" rx="6" fill="white" />
      </clipPath>
    </defs>
  </svg>
}
    href="../docs/usage/bigquery"
  >
    Automatically pull usage data from your BigQuery database.
  </Card>

  <Card
    title="Snowflake"
    icon={
  <svg
    width="30"
    height="30"
    viewBox="0 0 30 30"
    fill="none"
    xmlns="http://www.w3.org/2000/svg"
  >
    <rect width="30" height="30" rx="6" fill="#29B5E8" />
    <path
      d="M5.25 12.7155C5.25362 12.7156 5.25723 12.7157 5.26085 12.7158C5.26085 12.653 5.2606 12.5903 5.26047 12.5275C5.25698 12.5275 5.25349 12.5275 5.25 12.5278V12.7155Z"
      fill="#FFFDF9"
    />
    <path
      d="M17.1496 24.7395C17.1496 24.743 17.1496 24.7465 17.1496 24.75H17.2617C17.2617 24.7465 17.2617 24.743 17.2617 24.7395C17.2243 24.7395 17.1867 24.7395 17.1493 24.7395H17.1496Z"
      fill="#FFFDF9"
    />
    <path
      d="M12.8509 24.75C12.8509 24.7465 12.8508 24.743 12.851 24.7395C12.8177 24.7395 12.7843 24.7395 12.751 24.7395C12.751 24.743 12.7511 24.7465 12.7511 24.75H12.8509Z"
      fill="#FFFDF9"
    />
    <path
      d="M18.4247 9.06072C18.4242 8.69595 18.4233 8.33105 18.4232 7.96628C18.4231 7.44929 18.4235 6.93229 18.4237 6.41518C18.4238 6.14253 18.327 5.90657 18.1623 5.69301C18.0338 5.52653 17.8654 5.41311 17.6786 5.33162C17.5789 5.28806 17.4635 5.27491 17.3537 5.26152C17.2528 5.24913 17.149 5.24625 17.0478 5.25526C16.9663 5.26252 16.8845 5.28756 16.8069 5.3161C16.7155 5.34965 16.6245 5.38858 16.5411 5.43827C16.4791 5.4752 16.4294 5.53278 16.3745 5.58135C16.2486 5.69264 16.1702 5.8366 16.0904 5.98193C16.0295 6.09259 16.0322 6.21627 15.996 6.33156C15.979 6.38538 15.992 6.44885 15.992 6.50793C15.992 8.04439 15.9906 9.58085 15.9936 11.1173C15.994 11.3048 16.0016 11.4957 16.0898 11.669C16.1353 11.7585 16.183 11.8479 16.2398 11.9303C16.3682 12.1174 16.5537 12.2382 16.754 12.33C16.8557 12.3767 16.973 12.3941 17.0852 12.4117C17.1648 12.4241 17.2478 12.4174 17.3291 12.4139C17.4967 12.4068 17.6534 12.3568 17.7988 12.2753C18.0313 12.1452 18.2609 12.0095 18.4925 11.8776C18.7388 11.7377 18.9868 11.601 19.2325 11.4602C19.4783 11.3193 19.7216 11.1741 19.9669 11.0326C20.1203 10.9441 20.2763 10.8601 20.4296 10.7717C20.6645 10.6362 20.8977 10.4979 21.1325 10.3623C21.2664 10.285 21.4034 10.2129 21.5367 10.1345C21.7234 10.025 21.9134 9.91971 22.0917 9.79753C22.2157 9.71241 22.3095 9.59174 22.3953 9.46493C22.4606 9.36829 22.4993 9.26176 22.5288 9.15398C22.57 9.00339 22.5897 8.84742 22.5576 8.68982C22.5414 8.60995 22.5426 8.52433 22.514 8.44985C22.4736 8.34482 22.4191 8.2438 22.3594 8.14804C22.2747 8.01209 22.1585 7.90269 22.0222 7.82044C21.9296 7.76461 21.8272 7.72493 21.7285 7.67974C21.6094 7.62516 21.4808 7.63105 21.3544 7.62366C21.1307 7.61077 20.9284 7.68149 20.7367 7.78702C20.5687 7.87965 20.4047 7.97992 20.2377 8.07481C20.0435 8.18522 19.8471 8.292 19.6532 8.40303C19.4964 8.49278 19.3426 8.58817 19.186 8.6783C19.0241 8.77143 18.8601 8.86106 18.6974 8.95282C18.6174 8.99801 18.5381 9.0447 18.4585 9.09077C18.4488 9.0974 18.4389 9.10416 18.4209 9.11655C18.4227 9.09039 18.4238 9.0755 18.425 9.0606L18.4247 9.06072Z"
      fill="#FFFDF9"
    />
    <path
      d="M5.26047 12.5273C5.26047 12.5902 5.26072 12.6529 5.26085 12.7157C5.27569 12.881 5.32643 13.0371 5.39451 13.1859C5.42655 13.2559 5.48478 13.3136 5.53004 13.3778C5.66906 13.5748 5.8819 13.6725 6.08077 13.7879C6.46766 14.0126 6.85618 14.2347 7.24394 14.4578C7.52984 14.6225 7.81574 14.7872 8.10127 14.9524C8.12035 14.9634 8.13656 14.9796 8.16261 15C8.07883 15.0487 8.00751 15.0906 7.93581 15.1318C7.25903 15.5213 6.58437 15.9142 5.90459 16.2981C5.57031 16.4869 5.35573 16.7605 5.28541 17.1358C5.25835 17.28 5.27706 17.4327 5.27494 17.5817C5.29576 17.6504 5.30897 17.7228 5.33915 17.7871C5.39139 17.8982 5.44538 18.0104 5.51545 18.1103C5.57505 18.1952 5.64911 18.2763 5.73328 18.3355C5.86768 18.4303 6.01481 18.5044 6.1784 18.5457C6.31692 18.5806 6.45594 18.5929 6.59509 18.58C6.7477 18.5659 6.89632 18.5227 7.03186 18.449C7.22661 18.3431 7.41788 18.2304 7.61039 18.1202C7.82946 17.9948 8.0484 17.8691 8.26735 17.7433C8.4757 17.6236 8.68354 17.5032 8.89214 17.3839C9.02817 17.3062 9.1657 17.231 9.30135 17.1526C9.47803 17.0506 9.65308 16.9458 9.82964 16.8436C9.96168 16.7672 10.0953 16.6936 10.2278 16.6177C10.3568 16.5437 10.4847 16.4677 10.6139 16.3939C10.7482 16.317 10.8841 16.2428 11.018 16.1654C11.2331 16.0411 11.4482 15.9152 11.5945 15.7053C11.6984 15.5562 11.7763 15.3942 11.8014 15.2112C11.8129 15.1278 11.8314 15.0432 11.8269 14.9602C11.8109 14.6648 11.7161 14.4011 11.5121 14.1776C11.3755 14.0279 11.2063 13.93 11.0361 13.8309C10.7562 13.6683 10.4754 13.5074 10.1945 13.3466C9.94709 13.2052 9.69834 13.066 9.45147 12.9239C9.1425 12.7461 8.83553 12.565 8.52632 12.3878C8.24565 12.2269 7.96312 12.0692 7.68134 11.9101C7.45429 11.7818 7.22911 11.6503 6.99981 11.5263C6.85481 11.4479 6.69621 11.4136 6.53088 11.4145C6.45981 11.4149 6.38824 11.411 6.31767 11.4177C6.25957 11.4234 6.20196 11.4394 6.14535 11.4552C5.85472 11.5363 5.63041 11.7076 5.45972 11.9568C5.34089 12.1301 5.28329 12.3219 5.26047 12.5275V12.5273Z"
      fill="#FFFDF9"
    />
    <path
      d="M17.1496 24.7395C17.187 24.7395 17.2245 24.7395 17.2619 24.7395C17.4946 24.7227 17.7125 24.6655 17.906 24.5257C18.0538 24.419 18.1874 24.2972 18.2715 24.1369C18.3464 23.9937 18.4209 23.8447 18.4202 23.6743C18.42 23.6007 18.4228 23.527 18.423 23.4534C18.4232 22.6238 18.423 21.7941 18.423 20.9646C18.423 20.9397 18.423 20.9149 18.423 20.892C18.4303 20.8881 18.4354 20.8836 18.4373 20.8847C18.5422 20.9463 18.6464 21.009 18.7518 21.0698C18.7778 21.0849 18.8095 21.0905 18.835 21.1061C18.8883 21.1389 18.9375 21.1781 18.9912 21.2102C19.043 21.2412 19.099 21.2652 19.152 21.2947C19.2226 21.3338 19.2919 21.3752 19.3617 21.4157C19.391 21.4327 19.4199 21.4503 19.4495 21.4668C19.6042 21.5534 19.7595 21.6389 19.9136 21.7264C20.0628 21.8112 20.2101 21.8993 20.3596 21.9835C20.5432 22.0869 20.725 22.1947 20.9143 22.2868C20.9991 22.3281 21.0988 22.342 21.1934 22.3584C21.4483 22.4025 21.6883 22.3397 21.9147 22.2304C22.125 22.129 22.2928 21.972 22.4024 21.7637C22.4653 21.6439 22.5269 21.5175 22.5549 21.3867C22.5803 21.2672 22.564 21.1377 22.5574 21.0131C22.5531 20.9324 22.5353 20.852 22.5191 20.7725C22.514 20.7471 22.4938 20.725 22.4819 20.7006C22.448 20.6302 22.4217 20.5551 22.3794 20.4904C22.3369 20.4249 22.2773 20.371 22.2282 20.3096C22.1363 20.1951 22.0096 20.1271 21.8869 20.0566C21.1535 19.6352 20.4179 19.2177 19.6835 18.798C19.0707 18.4477 18.4584 18.0966 17.8466 17.7447C17.6459 17.6293 17.4322 17.5644 17.2002 17.5698C16.5976 17.5838 16.097 18.0036 16.0067 18.6184C15.9935 18.7082 15.9923 18.8002 15.9923 18.8912C15.9914 20.4233 15.9914 21.9554 15.9926 23.4874C15.9926 23.5618 16.01 23.6359 16.014 23.7104C16.0249 23.9127 16.1172 24.0857 16.2259 24.2448C16.2939 24.3442 16.4003 24.4175 16.4921 24.4996C16.6286 24.6218 16.7983 24.6731 16.971 24.7148C17.0291 24.7288 17.0899 24.7316 17.1494 24.7395H17.1496Z"
      fill="#FFFDF9"
    />
    <path
      d="M12.751 24.7395C12.7843 24.7395 12.8177 24.7395 12.851 24.7395C12.9873 24.7132 13.131 24.7062 13.2581 24.6562C13.4597 24.5768 13.6402 24.4532 13.7654 24.2693C13.8412 24.158 13.9115 24.0404 13.9648 23.9171C13.9983 23.8392 14.0075 23.7456 14.0078 23.6591C14.0105 22.035 14.0099 20.411 14.0115 18.7869C14.0117 18.6455 13.9911 18.51 13.9506 18.3742C13.9052 18.222 13.8143 18.1016 13.7169 17.9835C13.6311 17.8794 13.522 17.8037 13.4094 17.7299C13.2693 17.6382 13.1123 17.6118 12.9545 17.5828C12.7888 17.5525 12.6226 17.5688 12.4641 17.6136C12.3464 17.6468 12.236 17.7101 12.1262 17.7674C11.9596 17.8544 11.7952 17.9456 11.6321 18.039C11.4952 18.1172 11.3625 18.203 11.2261 18.282C11.0851 18.3637 10.9409 18.4402 10.7996 18.5213C10.6622 18.6002 10.5275 18.6837 10.39 18.7623C10.1478 18.9006 9.9037 19.0357 9.66169 19.1744C9.49224 19.2715 9.32554 19.3734 9.15647 19.4712C9.01533 19.5528 8.87219 19.6308 8.73067 19.7118C8.63018 19.7693 8.53193 19.8308 8.43118 19.8879C8.2964 19.9644 8.15538 20.0309 8.02596 20.1155C7.84679 20.2326 7.70016 20.3835 7.59206 20.5731C7.45004 20.8222 7.43895 21.0879 7.46638 21.3631C7.48483 21.5483 7.567 21.7055 7.66837 21.854C7.77709 22.0132 7.91848 22.1366 8.09192 22.2239C8.24291 22.2999 8.39914 22.346 8.56871 22.3631C8.85099 22.3915 9.09862 22.3056 9.33701 22.1679C9.58588 22.0242 9.83799 21.886 10.0875 21.7433C10.291 21.627 10.4926 21.5071 10.6956 21.3898C10.8542 21.2982 11.0143 21.209 11.1727 21.1172C11.3048 21.0406 11.4356 20.9616 11.5669 20.8837C11.57 20.8824 11.573 20.8813 11.5761 20.8801C11.5765 20.8856 11.5768 20.8912 11.5772 20.8967C11.578 20.9259 11.5792 20.9549 11.5792 20.9841C11.5793 21.8343 11.5772 22.6847 11.5808 23.5349C11.5819 23.8028 11.6611 24.0504 11.8306 24.2604C11.9052 24.3529 11.9912 24.4387 12.0828 24.5144C12.1459 24.5666 12.2286 24.5944 12.3005 24.6363C12.4403 24.7178 12.5964 24.7238 12.7507 24.7396L12.751 24.7395Z"
      fill="#FFFDF9"
    />
    <path
      d="M8.4151 10.0986C8.53891 10.1694 8.6626 10.2404 8.78641 10.3111C8.84339 10.3437 8.90099 10.3754 8.95785 10.4083C9.06719 10.4715 9.17567 10.5362 9.28539 10.5988C9.35409 10.638 9.42516 10.6728 9.49361 10.7121C9.6254 10.7876 9.7557 10.8654 9.88736 10.9412C9.95394 10.9795 10.0231 11.0134 10.0894 11.0525C10.2021 11.1188 10.3123 11.1898 10.4257 11.2549C10.5255 11.3121 10.6296 11.3614 10.7294 11.4186C10.8326 11.4779 10.9323 11.5433 11.0346 11.6044C11.0882 11.6364 11.1444 11.6637 11.1984 11.695C11.3377 11.7755 11.4753 11.8586 11.6155 11.9376C11.789 12.0355 11.9638 12.131 12.1389 12.2263C12.2218 12.2715 12.3032 12.3218 12.3909 12.3551C12.4698 12.3851 12.5556 12.4009 12.6398 12.4125C12.8223 12.4379 13.0043 12.4197 13.1779 12.3623C13.3296 12.3123 13.4703 12.237 13.5943 12.129C13.7018 12.0354 13.7825 11.9253 13.8588 11.8073C13.9344 11.6901 13.9659 11.5597 13.9928 11.4276C14.0073 11.357 14.0098 11.2829 14.0098 11.2103C14.0109 9.61152 14.0109 8.01272 14.0109 6.41392C14.0109 6.12626 13.9133 5.8754 13.7177 5.66635C13.6435 5.58711 13.5564 5.52002 13.4751 5.44741C13.4707 5.44453 13.4663 5.44153 13.4618 5.43865C13.4455 5.42888 13.4291 5.41912 13.4128 5.40923C13.4084 5.4066 13.4039 5.40397 13.3996 5.40135C13.3536 5.37906 13.3076 5.35691 13.2616 5.33462C13.2576 5.33112 13.2537 5.32749 13.2497 5.32398C13.1109 5.29882 12.9729 5.26302 12.8331 5.25201C12.7324 5.24412 12.6284 5.2649 12.5272 5.28105C12.4552 5.29256 12.3854 5.3176 12.3147 5.3365C12.3108 5.34001 12.3071 5.34351 12.3032 5.34714C12.0215 5.48171 11.814 5.69076 11.6797 5.97342C11.6766 5.97717 11.6733 5.98093 11.6702 5.98456C11.6526 6.0459 11.6298 6.10623 11.6187 6.16882C11.6009 6.26947 11.5907 6.37149 11.5773 6.47288C11.5781 6.49779 11.5794 6.52271 11.5794 6.54762C11.5794 7.32774 11.5796 8.10798 11.5794 8.8881C11.5794 8.9547 11.5782 9.02117 11.5776 9.08776C11.5772 9.09315 11.5768 9.09865 11.5765 9.10404C11.5735 9.10278 11.5705 9.10141 11.5675 9.10016C11.5509 9.09114 11.5343 9.08201 11.5177 9.07299C11.4891 9.05684 11.4605 9.0407 11.4318 9.02455C11.4275 9.02179 11.423 9.01904 11.4186 9.01629C11.2859 8.94005 11.1533 8.86382 11.0206 8.78758C11.0163 8.7847 11.0119 8.78195 11.0075 8.77907C10.9538 8.74853 10.9 8.71798 10.8463 8.68744C10.8419 8.68456 10.8375 8.68181 10.8331 8.67893C10.771 8.644 10.709 8.60908 10.6469 8.57415C10.6424 8.5714 10.638 8.56864 10.6336 8.56589C10.6171 8.55638 10.6006 8.54686 10.5841 8.53735C10.58 8.53484 10.5757 8.53222 10.5716 8.52971C10.5468 8.51557 10.522 8.50155 10.4972 8.4874C10.4928 8.48465 10.4886 8.48202 10.4843 8.47926C10.4597 8.46537 10.4349 8.45135 10.4102 8.43733C10.4058 8.43458 10.4014 8.4317 10.3971 8.42894C10.3725 8.41505 10.3478 8.40128 10.3233 8.38738C10.3188 8.38438 10.3143 8.3815 10.3098 8.37862C10.2269 8.33155 10.1441 8.28436 10.0612 8.23729C10.0568 8.23454 10.0526 8.23178 10.0482 8.22903C10.0236 8.21514 9.99908 8.20124 9.97452 8.18735C9.9699 8.18434 9.96542 8.18121 9.9608 8.17821C9.94447 8.16844 9.92826 8.1588 9.91193 8.14904C9.90744 8.14629 9.90307 8.14366 9.89859 8.1409C9.80744 8.08971 9.71642 8.03838 9.62528 7.98706C9.62091 7.98418 9.61643 7.9813 9.61206 7.97842C9.5956 7.96853 9.57927 7.95877 9.56281 7.94888C9.55845 7.94625 9.55408 7.9435 9.54972 7.94087C9.46668 7.89367 9.38377 7.84648 9.30073 7.79929C9.29649 7.79666 9.29237 7.79403 9.28813 7.7914C9.1617 7.71367 9.0233 7.66647 8.8788 7.64069C8.79962 7.62654 8.71721 7.62153 8.63703 7.62591C8.53766 7.6313 8.43654 7.64094 8.34091 7.66672C8.24316 7.69314 8.15127 7.74146 8.05688 7.78014C8.04741 7.78402 8.0378 7.78765 8.0282 7.79153C8.02608 7.79503 8.02309 7.79754 8.01935 7.79891C7.99741 7.81306 7.97546 7.8272 7.95352 7.84135C7.95152 7.84485 7.94865 7.84736 7.94504 7.84886C7.87584 7.9152 7.80514 7.98005 7.73781 8.0484C7.60914 8.17883 7.53682 8.34032 7.49356 8.51569C7.4584 8.65815 7.4362 8.80023 7.45167 8.95057C7.46912 9.11981 7.52635 9.2719 7.59966 9.42074C7.62398 9.46994 7.65503 9.51575 7.68308 9.56307C7.69044 9.57146 7.69767 9.57984 7.70502 9.58823C7.70914 9.59149 7.71313 9.59474 7.71724 9.59812C7.77597 9.65708 7.8332 9.71767 7.89404 9.77425C7.92322 9.80141 7.95801 9.82332 7.99242 9.8441C8.08606 9.90068 8.18082 9.95563 8.27533 10.0108C8.31323 10.033 8.35163 10.0545 8.38979 10.0763C8.39839 10.0838 8.40699 10.0913 8.4156 10.0988L8.4151 10.0986Z"
      fill="#FFFDF9"
    />
    <path
      d="M21.8429 14.9981C21.9401 14.9418 22.0363 14.8856 22.1328 14.8299C22.3131 14.7259 22.4933 14.6216 22.6741 14.5183C22.8384 14.4246 23.0037 14.3327 23.1678 14.2385C23.3111 14.1564 23.4535 14.0728 23.5959 13.9893C23.7996 13.8699 24.0048 13.7531 24.2059 13.6294C24.3719 13.5274 24.4983 13.3863 24.5953 13.2157C24.7083 13.0172 24.7552 12.8041 24.7496 12.579C24.7438 12.3478 24.6729 12.1354 24.5448 11.9429C24.5008 11.8768 24.4634 11.8033 24.4079 11.7485C24.3491 11.6904 24.2741 11.6476 24.2029 11.6032C24.0104 11.4836 23.8028 11.4108 23.5737 11.415C23.4663 11.4169 23.3548 11.4081 23.2531 11.4345C23.1345 11.4653 23.0226 11.5253 22.9115 11.5801C22.7925 11.6387 22.6773 11.7049 22.5616 11.7697C22.4819 11.8144 22.4041 11.8624 22.3256 11.9091C22.1753 11.9984 22.0257 12.0889 21.8746 12.1771C21.7256 12.2639 21.5756 12.3492 21.4254 12.4337C21.268 12.5222 21.1084 12.6066 20.9522 12.6971C20.6971 12.845 20.4446 12.9975 20.1899 13.1462C20.0523 13.2265 19.9118 13.3016 19.7738 13.3811C19.5962 13.4833 19.4204 13.5886 19.2429 13.691C19.1599 13.7388 19.0728 13.7797 18.9909 13.8294C18.8712 13.9021 18.7529 13.9772 18.6372 14.056C18.4857 14.1594 18.3798 14.3078 18.2984 14.4657C18.2422 14.5749 18.2288 14.7063 18.1962 14.8278C18.1854 14.8676 18.1739 14.9072 18.1638 14.9473C18.162 14.9543 18.1652 14.9627 18.1665 14.9705C18.2004 15.1866 18.2312 15.4026 18.3468 15.5964C18.4792 15.8181 18.6686 15.9715 18.8897 16.0971C19.5666 16.4818 20.2405 16.8717 20.9155 17.2595C21.5618 17.6308 22.21 17.9988 22.8534 18.375C23.0398 18.484 23.2338 18.5591 23.4466 18.5806C23.6093 18.597 23.7702 18.5698 23.9229 18.5139C24.3947 18.3414 24.6767 18.0037 24.7352 17.5035C24.7969 16.9752 24.5725 16.5746 24.1216 16.3109C23.3692 15.8705 22.61 15.4415 21.8536 15.0075C21.8502 15.0055 21.8474 15.0023 21.8428 14.9981H21.8429Z"
      fill="#FFFDF9"
    />
    <path
      d="M16.7727 14.1052C16.4375 13.7697 16.1024 13.4343 15.767 13.0989C15.7512 13.0831 15.7329 13.0699 15.7158 13.0555C15.6819 13.0217 15.648 12.9879 15.6141 12.9542C15.598 12.9382 15.582 12.9223 15.566 12.9062C15.5529 12.8931 15.5398 12.88 15.5267 12.8667C15.4427 12.7682 15.3378 12.7224 15.2071 12.7267C15.0661 12.7315 14.9247 12.7282 14.7836 12.7277C14.6791 12.7274 14.5911 12.762 14.5165 12.8379C14.3255 13.0323 14.1333 13.2257 13.9392 13.417C13.8009 13.5532 13.6561 13.6827 13.5188 13.8198C13.2761 14.062 13.036 14.3068 12.7972 14.5527C12.736 14.6158 12.732 14.7035 12.7292 14.7849C12.724 14.9349 12.7258 15.0851 12.7284 15.2352C12.7299 15.3236 12.7647 15.4 12.8275 15.4632C13.0269 15.6637 13.2258 15.8647 13.4249 16.0657C13.4506 16.0911 13.4761 16.1165 13.5018 16.142C13.6127 16.251 13.7235 16.3601 13.8345 16.4691C14.0806 16.7108 14.3246 16.9548 14.575 17.192C14.6139 17.229 14.6803 17.2509 14.7353 17.2536C14.899 17.2616 15.0632 17.2566 15.2273 17.2565C15.34 17.2565 15.4328 17.2129 15.5116 17.1318C15.6319 17.008 15.7551 16.8868 15.8772 16.7648C16.102 16.54 16.3267 16.3148 16.552 16.0904C16.7538 15.8895 16.9563 15.6891 17.1594 15.4895C17.2376 15.4126 17.2777 15.323 17.2763 15.2113C17.274 15.0427 17.2835 14.8737 17.2763 14.7055C17.2739 14.6503 17.2441 14.5897 17.2102 14.544C17.165 14.4834 17.1036 14.4351 17.0491 14.3815C17.0322 14.3645 17.0154 14.3473 16.9986 14.3303L16.999 14.3307C16.9895 14.3197 16.98 14.3086 16.9705 14.2976L16.969 14.2962C16.9534 14.2826 16.9377 14.269 16.922 14.2553C16.8936 14.2269 16.8652 14.1984 16.8369 14.1699C16.8154 14.1484 16.794 14.1267 16.7725 14.1052H16.7727ZM15.1683 14.2332C15.1849 14.2452 15.2034 14.2553 15.218 14.2695C15.3535 14.4014 15.4894 14.5328 15.6228 14.6668C15.6802 14.7244 15.7364 14.7797 15.7754 14.8574C15.8219 14.9501 15.8333 15.0298 15.7829 15.1185C15.779 15.1272 15.7752 15.1358 15.7713 15.1445C15.7576 15.1646 15.7439 15.1849 15.7302 15.205C15.6925 15.2469 15.6549 15.2887 15.6172 15.3305C15.4753 15.4679 15.3334 15.6054 15.1915 15.7428L15.1816 15.751C15.0518 15.8316 14.8791 15.8093 14.7696 15.7001C14.6078 15.5388 14.4443 15.3792 14.283 15.2173C14.2651 15.1994 14.2565 15.1724 14.2436 15.1496C14.2345 15.1351 14.2254 15.1206 14.2163 15.106C14.19 15.0298 14.178 14.9537 14.2174 14.8778C14.234 14.8484 14.2504 14.819 14.267 14.7896C14.2919 14.7648 14.3169 14.7399 14.3418 14.7151C14.405 14.6523 14.4682 14.5893 14.5315 14.5264C14.5352 14.5227 14.5389 14.5189 14.5428 14.5152L14.5927 14.4656C14.667 14.3943 14.7386 14.3198 14.8162 14.2524C14.9081 14.1729 15.0536 14.1659 15.1556 14.2288C15.1597 14.2301 15.164 14.2314 15.1681 14.2328L15.1683 14.2332Z"
      fill="#FFFDF9"
    />
    <path
      d="M18.4247 9.06072C18.4236 9.07562 18.4225 9.09064 18.4206 9.11668C18.4387 9.10429 18.4485 9.09753 18.4583 9.09089C18.447 9.08088 18.4359 9.07074 18.4247 9.06072Z"
      fill="#FFFDF9"
    />
    <path
      d="M9.96055 8.17796C9.96517 8.18096 9.96966 8.18409 9.97427 8.18709C9.96978 8.18409 9.96517 8.18096 9.96055 8.17796Z"
      fill="#FFFDF9"
    />
    <path
      d="M7.94479 7.84873C7.94853 7.84723 7.9514 7.84473 7.95327 7.84122C7.9504 7.84373 7.94754 7.84623 7.94479 7.84873Z"
      fill="#FFFDF9"
    />
    <path
      d="M8.0191 7.79879C8.02297 7.79729 8.02596 7.79491 8.02796 7.7914C8.02496 7.79391 8.02197 7.79641 8.0191 7.79879Z"
      fill="#FFFDF9"
    />
    <path
      d="M10.6335 8.56589C10.638 8.56864 10.6425 8.5714 10.6468 8.57415C10.6423 8.5714 10.6378 8.56864 10.6335 8.56589Z"
      fill="#FFFDF9"
    />
    <path
      d="M9.28801 7.79128C9.29213 7.79391 9.29636 7.79653 9.3006 7.79916C9.29649 7.79653 9.29225 7.79391 9.28801 7.79128Z"
      fill="#FFFDF9"
    />
    <path
      d="M11.6702 5.98468C11.6733 5.98093 11.6766 5.97717 11.6797 5.97354C11.6766 5.9773 11.6733 5.98105 11.6702 5.98468Z"
      fill="#FFFDF9"
    />
    <path
      d="M11.0074 8.77907C11.0118 8.78195 11.0161 8.7847 11.0205 8.78758C11.0161 8.78483 11.0118 8.78195 11.0074 8.77907Z"
      fill="#FFFDF9"
    />
    <path
      d="M12.3032 5.34727C12.3071 5.34376 12.3108 5.34026 12.3147 5.33663C12.3108 5.34013 12.3071 5.34364 12.3032 5.34727Z"
      fill="#FFFDF9"
    />
    <path
      d="M11.5776 9.08776C11.5742 9.09189 11.5707 9.09603 11.5674 9.10016C11.5703 9.10141 11.5733 9.10278 11.5763 9.10404C11.5767 9.09865 11.5771 9.09315 11.5775 9.08776H11.5776Z"
      fill="#FFFDF9"
    />
  </svg>
}
    href="../docs/usage/snowflake"
  >
    Automatically pull usage data from your Snowflake database.
  </Card>

  <Card
    title="PostHog"
    icon={
  <svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
    <g clip-path="url(https://mintlify.s3.us-west-1.amazonaws.com/hyperline/integrations#clip0_7702_11533)">
      <rect width="30" height="30" rx="6" fill="#F5F6F7" />
      <path
        d="M7.95692 11.8854L5.09538 8.98929C4.92425 8.82059 4.70641 8.70554 4.46923 8.65857C4.23204 8.61161 3.98608 8.63482 3.76222 8.72531C3.53837 8.81579 3.34659 8.96951 3.21098 9.16716C3.07538 9.36481 3.00198 9.59758 3 9.83625V12.0402L7.95692 17.1311V11.8854Z"
        fill="#0251F4" />
      <path d="M7.24154 21.375H7.95692V17.1311L3 12.0402V16.9262L7.24154 21.375Z" fill="#0251F4" />
      <path
        d="M3 20.1956C3.00121 20.5073 3.1269 20.8059 3.34982 21.0267C3.57274 21.2474 3.87491 21.3726 4.19077 21.375H7.24615L3 16.9262V20.1956Z"
        fill="#0251F4" />
      <path
        d="M7.95692 9.83625L7.95692 11.8854L13.1354 17.1311V12.0994L10.0615 8.98929C9.8909 8.81746 9.67227 8.69966 9.43352 8.65089C9.19476 8.60212 8.9467 8.62459 8.72094 8.71545C8.49518 8.8063 8.30195 8.96142 8.16588 9.16103C8.02981 9.36064 7.95707 9.5957 7.95692 9.83625Z"
        fill="#E83A01" />
      <path d="M7.95692 21.375H12.0923L7.95692 17.1311V21.375Z" fill="#E83A01" />
      <path d="M7.95692 11.8854V17.1311L12.0923 21.375H13.1354V17.1311L7.95692 11.8854Z" fill="#E83A01" />
      <path
        d="M13.1354 9.8408V12.0994L18.3508 17.3815H18.36V12.154L15.2908 9.01205C15.1708 8.8901 15.0274 8.79304 14.8688 8.72657C14.7103 8.6601 14.5399 8.62557 14.3677 8.625C14.0409 8.625 13.7274 8.75309 13.4963 8.9811C13.2652 9.20911 13.1354 9.51835 13.1354 9.8408Z"
        fill="#FDB301" />
      <path d="M13.1354 12.0994V17.1311L17.3215 21.375H18.36V17.3906L13.1354 12.0994Z" fill="#FDB301" />
      <path d="M13.1354 21.375H17.3215L13.1354 17.1311V21.375Z" fill="#FDB301" />
      <path
        d="M26.8431 20.1091C26.8437 19.8982 26.7661 19.6943 26.625 19.5358C26.4839 19.3773 26.289 19.2751 26.0769 19.2485L25.92 19.2303C25.4585 19.1711 25.0246 18.9571 24.6969 18.6246L18.36 12.154V21.375H25.6154C25.7774 21.3756 25.9379 21.3446 26.0877 21.2837C26.2375 21.2228 26.3736 21.1333 26.4881 21.0202C26.6027 20.9072 26.6934 20.773 26.7551 20.6252C26.8168 20.4774 26.8483 20.319 26.8477 20.1592L26.8431 20.1091ZM21.0923 19.3441H21.0508C20.835 19.3381 20.6302 19.2486 20.4808 19.0948C20.3314 18.9411 20.2494 18.7355 20.2524 18.5225C20.2554 18.3095 20.3433 18.1063 20.497 17.9567C20.6507 17.8072 20.858 17.7234 21.0738 17.7234C21.2897 17.7234 21.4969 17.8072 21.6507 17.9567C21.8044 18.1063 21.8923 18.3095 21.8953 18.5225C21.8983 18.7355 21.8163 18.9411 21.6669 19.0948C21.5175 19.2486 21.3127 19.3381 21.0969 19.3441"
        fill="#111111" />
    </g>
    <defs>
      <clipPath id="clip0_7702_11533">
        <rect width="30" height="30" rx="6" fill="white" />
      </clipPath>
    </defs>
  </svg>
}
    href="../docs/usage/posthog"
  >
    Automatically pull usage data from your PostHog project.
  </Card>

  <Card
    title="Segment"
    icon={
  <svg
    width="30"
    height="30"
    viewBox="0 0 80 80"
    fill="none"
    xmlns="http://www.w3.org/2000/svg"
  >
    <rect width="80" height="80" rx="16" fill="#52BC94" />
    <path
      d="M45.9064 49.4204H18.3049C17.0372 49.4204 16 48.3493 16 47.0401C16 45.7309 17.0372 44.6598 18.3049 44.6598H45.9064C47.1741 44.6598 48.2113 45.7309 48.2113 47.0401C48.2113 48.3493 47.1741 49.4204 45.9064 49.4204Z"
      fill="#FFFEFC"
    />
    <path
      d="M40.0288 64C37.7815 64 35.5342 63.6429 33.4022 62.9884C32.1921 62.5718 31.5006 61.2626 31.904 60.0129C32.3073 58.7633 33.575 58.0492 34.7851 58.4657C36.4562 59.0013 38.2425 59.2988 40.0288 59.2988C47.8655 59.2988 54.6651 54.1216 56.9124 46.3855C57.2581 45.1358 58.5834 44.4217 59.7935 44.7788C61.0036 45.1358 61.6951 46.5045 61.3493 47.7542C58.4106 57.4541 49.8824 64 40.0288 64Z"
      fill="#FFFEFC"
    />
    <path
      d="M61.6951 37.3402H34.0936C32.8259 37.3402 31.7887 36.2691 31.7887 34.9599C31.7887 33.6507 32.8259 32.5796 34.0936 32.5796H61.6951C62.9628 32.5796 64 33.6507 64 34.9599C64 36.2691 62.9628 37.3402 61.6951 37.3402Z"
      fill="#FFFEFC"
    />
    <path
      d="M20.898 37.3402C20.6675 37.3402 20.437 37.2807 20.2065 37.2212C18.9964 36.8642 18.3049 35.4955 18.6507 34.2458C21.5894 24.5459 30.1176 18 40.0288 18C42.2761 18 44.5234 18.3571 46.6555 19.0116C47.8655 19.4282 48.557 20.7374 48.1537 21.9871C47.7503 23.2367 46.4826 23.9508 45.2725 23.5343C43.6014 22.9987 41.8151 22.7012 40.0288 22.7012C32.1921 22.7012 25.3926 27.8784 23.1453 35.6145C22.7995 36.6856 21.8776 37.3402 20.898 37.3402Z"
      fill="#FFFEFC"
    />
    <path
      d="M53.6855 28.295C54.9584 28.295 55.9904 27.2292 55.9904 25.9146C55.9904 24.6 54.9584 23.5343 53.6855 23.5343C52.4125 23.5343 51.3806 24.6 51.3806 25.9146C51.3806 27.2292 52.4125 28.295 53.6855 28.295Z"
      fill="#FFFEFC"
    />
    <path
      d="M26.3145 58.5252C27.5875 58.5252 28.6194 57.4595 28.6194 56.1449C28.6194 54.8303 27.5875 53.7646 26.3145 53.7646C25.0416 53.7646 24.0096 54.8303 24.0096 56.1449C24.0096 57.4595 25.0416 58.5252 26.3145 58.5252Z"
      fill="#FFFEFC"
    />
  </svg>
}
    href="./segment"
  >
    Push events collected by Segment to Hyperline.
  </Card>

  <Card
    title="Hightouch"
    icon={
  <svg
    width="30"
    height="30"
    viewBox="0 0 80 80"
    fill="none"
    xmlns="http://www.w3.org/2000/svg"
  >
    <rect width="80" height="80" rx="16" fill="#03484D" />
    <path
      d="M32.1311 16.7869C32.1311 16.3523 32.4834 16 32.918 16H63.2131C63.6477 16 64 16.3523 64 16.7869V47.082C64 47.5166 63.6477 47.8689 63.2131 47.8689H32.1311V16.7869Z"
      fill="#CAF23A"
    />
    <path
      d="M16 48.6557C16 48.2212 16.3523 47.8689 16.7869 47.8689H32.1311V63.2131C32.1311 63.6477 31.7788 64 31.3443 64H16.7869C16.3523 64 16 63.6477 16 63.2131V48.6557Z"
      fill="#52C069"
    />
  </svg>
}
    href="./hightouch"
  >
    Sync data from databases, warehouses, spreadsheets, and more to Hyperline.
  </Card>
</CardGroup>

## Automation

<CardGroup>
  <Card
    title="Zapier"
    icon={
  <svg
    width="30"
    height="30"
    viewBox="0 0 80 80"
    fill="none"
    xmlns="http://www.w3.org/2000/svg"
  >
    <rect width="80" height="80" rx="16" fill="#FF5001" />
    <path
      d="M14.1309 43.7045L14.1207 43.6715L20.6128 37.664V34.7694H10.1972V37.664H16.4185L16.4287 37.6917L10 43.7045V46.5991H20.7173V43.7045H14.1309Z"
      fill="#FFFDF9"
    />
    <path
      d="M27.1105 34.4937C25.9091 34.4937 24.9299 34.6769 24.173 35.0432C23.4681 35.3624 22.8742 35.8884 22.4686 36.5529C22.0806 37.2218 21.8368 37.966 21.7536 38.7368L24.9139 39.1858C25.0282 38.5052 25.2569 38.0227 25.5998 37.7385C25.9897 37.4412 26.4701 37.2909 26.9579 37.3138C27.5992 37.3138 28.0645 37.4872 28.3538 37.8338C28.6402 38.1805 28.7859 38.6606 28.7859 39.2932V39.6087H25.7473C24.2005 39.6087 23.0893 39.9553 22.4138 40.6486C21.7381 41.342 21.4009 42.2571 21.4021 43.3942C21.4021 44.5589 21.7393 45.4256 22.4138 45.9941C23.0882 46.5627 23.9365 46.8452 24.9585 46.8416C26.2262 46.8416 27.2014 46.4009 27.8839 45.5192C28.2869 44.9773 28.5747 44.3572 28.7292 43.6975H28.8442L29.2798 46.592H32.1435V39.262C32.1435 37.7471 31.7484 36.5737 30.9586 35.7417C30.1685 34.9098 28.8859 34.4937 27.1105 34.4937ZM28.112 43.5294C27.6575 43.9124 27.0626 44.1031 26.3218 44.1031C25.7112 44.1031 25.2871 43.9951 25.0494 43.779C24.9336 43.6767 24.8413 43.55 24.7794 43.4077C24.7174 43.2654 24.6872 43.1111 24.691 42.9557C24.6842 42.8091 24.7071 42.6627 24.758 42.5253C24.809 42.3879 24.8871 42.2625 24.9876 42.1566C25.0963 42.0536 25.2245 41.9739 25.3645 41.9224C25.5046 41.8708 25.6534 41.8485 25.8022 41.8567H28.791V42.0561C28.7971 42.3378 28.739 42.6172 28.6213 42.8727C28.5035 43.1281 28.3293 43.3528 28.112 43.5294Z"
      fill="#FFFDF9"
    />
    <path
      d="M49.4582 34.7694H46.0749V46.6007H49.4582V34.7694Z"
      fill="#FFFDF9"
    />
    <path
      d="M69.4324 34.7694C68.4767 34.7694 67.7234 35.1102 67.1724 35.792C66.7768 36.2819 66.4761 37.0059 66.2703 37.9638H66.1709L65.7286 34.7694H62.839V46.5991H66.2224V40.5325C66.2224 39.7676 66.3996 39.1812 66.754 38.7733C67.1083 38.3654 67.7622 38.1614 68.7156 38.1614H70V34.7694H69.4324Z"
      fill="#FFFDF9"
    />
    <path
      d="M59.485 35.1561C58.6951 34.6812 57.6989 34.4443 56.4961 34.4455C54.6031 34.4455 53.1215 34.9903 52.0515 36.08C50.9814 37.1696 50.4465 38.6718 50.4465 40.5865C50.4192 41.7441 50.6692 42.8912 51.1752 43.93C51.6384 44.8557 52.3598 45.624 53.2502 46.1399C54.1464 46.6635 55.2124 46.9258 56.4481 46.9268C57.5171 46.9268 58.4099 46.7604 59.1266 46.4277C59.8006 46.1288 60.3873 45.6603 60.8311 45.0671C61.2537 44.4846 61.5675 43.8291 61.7571 43.1327L58.842 42.3076C58.7193 42.7605 58.4831 43.1736 58.1561 43.5071C57.8268 43.8399 57.2752 44.0063 56.5013 44.0063C55.5811 44.0063 54.8952 43.7399 54.4435 43.2072C54.1161 42.8224 53.9104 42.273 53.8194 41.5606H61.8018C61.8343 41.2278 61.8514 40.9488 61.8514 40.7234V39.9868C61.8707 38.9972 61.6684 38.0159 61.2599 37.1165C60.8774 36.2971 60.2587 35.6137 59.485 35.1561ZM56.3985 37.2655C57.7703 37.2655 58.5482 37.9478 58.7322 39.3125H53.8794C53.9565 38.8572 54.1431 38.428 54.4231 38.0628C54.8678 37.5301 55.5262 37.2644 56.3985 37.2655Z"
      fill="#FFFDF9"
    />
    <path
      d="M47.8027 30.0011C47.5482 29.9924 47.2945 30.0354 47.0568 30.1277C46.8191 30.22 46.6022 30.3597 46.4189 30.5384C46.2383 30.7189 46.0966 30.9353 46.003 31.174C45.9094 31.4127 45.8659 31.6684 45.8754 31.925C45.8662 32.1833 45.9099 32.4406 46.0035 32.6811C46.0972 32.9215 46.2389 33.1399 46.4197 33.3225C46.6006 33.5052 46.8167 33.6482 47.0546 33.7426C47.2926 33.8371 47.5473 33.8809 47.8027 33.8715C48.0565 33.8812 48.3098 33.8373 48.5459 33.7427C48.782 33.6481 48.9961 33.5049 49.1746 33.322C49.3515 33.1373 49.4897 32.9183 49.5807 32.6783C49.6718 32.4382 49.7138 32.182 49.7044 31.925C49.716 31.6696 49.675 31.4145 49.5836 31.1761C49.4923 30.9376 49.3529 30.721 49.1741 30.5402C48.9952 30.3593 48.7811 30.2181 48.5453 30.1256C48.3095 30.033 48.0571 29.9912 47.8045 30.0028L47.8027 30.0011Z"
      fill="#FFFDF9"
    />
    <path
      d="M40.8147 34.4455C39.6625 34.4455 38.7365 34.8112 38.0369 35.5426C37.5189 36.0846 37.1389 36.8934 36.8965 37.9692H36.7884L36.3461 34.7748H33.4566V50H36.8398V43.7289H36.9634C37.0666 44.1471 37.2113 44.5536 37.3955 44.9422C37.6817 45.5753 38.1511 46.106 38.7416 46.4641C39.3539 46.8018 40.0436 46.9699 40.7409 46.9512C42.1574 46.9512 43.236 46.3936 43.9768 45.2785C44.7175 44.1634 45.088 42.6075 45.088 40.6108C45.088 38.6822 44.7296 37.1725 44.0128 36.0817C43.296 34.9909 42.23 34.4455 40.8147 34.4455ZM41.1577 43.0183C40.7633 43.5961 40.146 43.8849 39.3057 43.8849C38.9593 43.9011 38.614 43.8336 38.2985 43.688C37.983 43.5424 37.7064 43.323 37.4916 43.0478C37.0536 42.492 36.8353 41.731 36.8365 40.765V40.5397C36.8365 39.5587 37.0548 38.8076 37.4916 38.2864C37.9282 37.7653 38.5329 37.5076 39.3057 37.5134C40.1609 37.5134 40.7821 37.7878 41.1697 38.3367C41.5572 38.8856 41.751 39.6511 41.751 40.6333C41.7534 41.649 41.5567 42.444 41.1611 43.0183H41.1577Z"
      fill="#FFFDF9"
    />
  </svg>
}
    href="./zapier"
  >
    Create any custom workflow with no-code using the native Hyperline Zapier
    app.
  </Card>

  <Card
    title="Slack"
    icon={
  <svg
    width="30"
    height="30"
    viewBox="0 0 80 80"
    fill="none"
    xmlns="http://www.w3.org/2000/svg"
  >
    <rect width="80" height="80" rx="16" fill="#4A154B" />
    <path
      d="M26.0847 46.3322C26.0847 49.1075 23.8176 51.3746 21.0423 51.3746C18.2671 51.3746 16 49.1075 16 46.3322C16 43.557 18.2671 41.2899 21.0423 41.2899H26.0847V46.3322Z"
      fill="#E01E5A"
    />
    <path
      d="M28.6254 46.3322C28.6254 43.557 30.8925 41.2899 33.6678 41.2899C36.443 41.2899 38.7101 43.557 38.7101 46.3322V58.9577C38.7101 61.7329 36.443 64 33.6678 64C30.8925 64 28.6254 61.7329 28.6254 58.9577V46.3322Z"
      fill="#E01E5A"
    />
    <path
      d="M33.6678 26.0847C30.8925 26.0847 28.6254 23.8176 28.6254 21.0423C28.6254 18.2671 30.8925 16 33.6678 16C36.443 16 38.7101 18.2671 38.7101 21.0423V26.0847H33.6678Z"
      fill="#36C5F0"
    />
    <path
      d="M33.6678 28.6254C36.443 28.6254 38.7101 30.8925 38.7101 33.6678C38.7101 36.443 36.443 38.7101 33.6678 38.7101H21.0423C18.2671 38.7101 16 36.443 16 33.6678C16 30.8925 18.2671 28.6254 21.0423 28.6254H33.6678Z"
      fill="#36C5F0"
    />
    <path
      d="M53.9153 33.6678C53.9153 30.8925 56.1824 28.6254 58.9577 28.6254C61.7329 28.6254 64 30.8925 64 33.6678C64 36.443 61.7329 38.7101 58.9577 38.7101H53.9153V33.6678Z"
      fill="#2EB67D"
    />
    <path
      d="M51.3746 33.6678C51.3746 36.443 49.1075 38.7101 46.3322 38.7101C43.557 38.7101 41.2899 36.443 41.2899 33.6678V21.0423C41.2899 18.2671 43.557 16 46.3322 16C49.1075 16 51.3746 18.2671 51.3746 21.0423V33.6678Z"
      fill="#2EB67D"
    />
    <path
      d="M46.3322 53.9153C49.1075 53.9153 51.3746 56.1824 51.3746 58.9577C51.3746 61.7329 49.1075 64 46.3322 64C43.557 64 41.2899 61.7329 41.2899 58.9577V53.9153H46.3322Z"
      fill="#ECB22E"
    />
    <path
      d="M46.3322 51.3746C43.557 51.3746 41.2899 49.1075 41.2899 46.3322C41.2899 43.557 43.557 41.2899 46.3322 41.2899H58.9577C61.7329 41.2899 64 43.557 64 46.3322C64 49.1075 61.7329 51.3746 58.9577 51.3746H46.3322Z"
      fill="#ECB22E"
    />
  </svg>
}
    href="./slack"
  >
    Send messages to Slack in reaction to events in Hyperline.
  </Card>
</CardGroup>

## Analytics

<CardGroup>
  <Card
    title="Hyperline Insights"
    icon={
  <svg width="30" height="30" viewBox="0 0 120 120" fill="none" xmlns="http://www.w3.org/2000/svg">
    <rect width="120" height="120" rx="24" fill="black" />
    <path d="M66.7348 98.3741L60.0939 105L53.453 98.3741L60.0939 91.7483L66.7348 98.3741Z" fill="white" />
    <path d="M54.3172 91.1182L45.6408 94.7044L42.0465 86.0473L50.7233 82.461L54.3172 91.1182Z" fill="white" />
    <path d="M78.0346 86.0171L74.4406 94.6742L65.7638 91.088L69.3577 82.4308L78.0346 86.0171Z" fill="white" />
    <path d="M37.5674 91.8855H28.1754V82.5148H37.5674V91.8855Z" fill="white" />
    <path d="M91.9585 91.7554H82.567V82.3851H91.9585V91.7554Z" fill="white" />
    <path d="M66.7353 79.6807L60.0944 86.3066L53.4534 79.6807L60.0944 73.0548L66.7353 79.6807Z" fill="white" />
    <path d="M50.8119 78.667H41.4199V69.2968H50.8119V78.667Z" fill="white" />
    <path d="M78.711 78.5374H69.319V69.1671H78.711V78.5374Z" fill="white" />
    <path d="M37.5194 69.3372L33.9254 77.9944L25.2486 74.4086L28.8425 65.7514L37.5194 69.3372Z" fill="white" />
    <path d="M94.7843 74.3264L86.1075 77.9127L82.5136 69.2555L91.1904 65.6693L94.7843 74.3264Z" fill="white" />
    <path d="M46.9153 60.0886L40.2749 66.7149L33.634 60.0886L40.2749 53.4627L46.9153 60.0886Z" fill="white" />
    <path d="M28.1812 60.0886L21.5403 66.7144L14.8994 60.0886L21.5403 53.4627L28.1812 60.0886Z" fill="white" />
    <path d="M105.101 59.9092L98.4606 66.5351L91.8201 59.9092L98.4606 53.2833L105.101 59.9092Z" fill="white" />
    <path d="M86.3665 59.9065L79.7256 66.5324L73.0847 59.9065L79.7256 53.2807L86.3665 59.9065Z" fill="white" />
    <path d="M37.4873 50.7419L28.8105 54.3281L25.2166 45.6709L33.8934 42.0847L37.4873 50.7419Z" fill="white" />
    <path d="M94.7528 45.5879L91.1588 54.245L82.482 50.6593L86.0759 42.0021L94.7528 45.5879Z" fill="white" />
    <path d="M50.6819 50.8302H41.2904V41.4595H50.6819V50.8302Z" fill="white" />
    <path d="M78.581 50.7006H69.1891V41.3303H78.581V50.7006Z" fill="white" />
    <path d="M66.5484 40.3184L59.9074 46.9443L53.2665 40.3184L59.9074 33.6926L66.5484 40.3184Z" fill="white" />
    <path d="M37.4339 37.6118H28.0424V28.2415H37.4339V37.6118Z" fill="white" />
    <path d="M54.2367 28.9097L50.6428 37.5669L41.9659 33.9807L45.5598 25.3235L54.2367 28.9097Z" fill="white" />
    <path d="M77.9549 33.9496L69.2781 37.5354L65.6841 28.8782L74.361 25.2924L77.9549 33.9496Z" fill="white" />
    <path d="M91.8286 37.4857H82.4371V28.115H91.8286V37.4857Z" fill="white" />
    <path d="M66.551 21.6259L59.9101 28.2517L53.2692 21.6259L59.9101 15L66.551 21.6259Z" fill="white" />
  </svg>
}
    href="../docs/analytics/insights"
  >
    Explore financial and revenue metrics with interactive charts, drill-down tables, and custom filters.
  </Card>

  <Card title="Fincome" icon={<svg width="30" height="30" viewBox="0 0 120 120" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="120" height="120" rx="24" fill="#03B4C7"/><path d="M21 47.9371C21 33.0602 33.0601 21 47.9371 21H99V72.0755C99 86.9456 86.9456 99 72.0755 99H21V47.9371Z" fill="white"/><path d="M33.1034 73.4511C33.1034 69.7359 36.1139 66.7241 39.8276 66.7241C43.5412 66.7241 46.5517 69.7359 46.5517 73.4511V86.8966H33.1034V73.4511Z" fill="#03B4C7"/><path d="M53.2759 57.4582C53.2759 53.6629 56.2864 50.5862 60 50.5862C63.7136 50.5862 66.7241 53.6629 66.7241 57.4582V86.8966H53.2759V57.4582Z" fill="#03B4C7"/><path d="M73.4483 39.854C73.4483 36.1258 76.4588 33.1034 80.1724 33.1034C83.886 33.1034 86.8966 36.1258 86.8966 39.854V73.3954C86.8966 80.8519 80.8755 86.8966 73.4483 86.8966V39.854Z" fill="#03B4C7"/></svg>} href="https://www.fincome.co?utm_source=hyperline">
    Monitor and analyze Hyperline subscription revenue with Fincome.
  </Card>

  <Card
    title="ChartMogul"
    icon={
  <svg
    width="30"
    height="30"
    viewBox="0 0 30 30"
    fill="none"
    xmlns="http://www.w3.org/2000/svg"
  >
    <g clip-path="url(https://mintlify.s3.us-west-1.amazonaws.com/hyperline/integrations#clip0_5209_22)">
      <rect width="30" height="30" rx="6" fill="#12324B" />
      <path
        d="M13.7992 21.375V12.9461L8.2147 20.8527C8.1056 21.0091 7.96057 21.1369 7.79186 21.2253C7.62315 21.3137 7.43571 21.36 7.24537 21.3605H5.625V10.1896C5.625 9.53678 6.1603 9 6.81134 9H8.2581V16.9792L13.3507 9.53678C13.4596 9.37568 13.6062 9.24381 13.7777 9.15276C13.9492 9.0617 14.1404 9.01423 14.3345 9.01451H16.4323V16.8776L21.4381 9.53678C21.547 9.37568 21.6936 9.24381 21.8651 9.15276C22.0366 9.0617 22.2278 9.01423 22.4219 9.01451H24.375V20.1854C24.375 20.8382 23.8397 21.375 23.1887 21.375H21.7564V13.0621L16.5336 20.8527C16.4247 21.0138 16.2781 21.1457 16.1065 21.2368C15.935 21.3278 15.7438 21.3753 15.5498 21.375H13.7992Z"
        fill="white"
      />
    </g>
    <defs>
      <clipPath id="clip0_5209_22">
        <rect width="30" height="30" rx="6" fill="white" />
      </clipPath>
    </defs>
  </svg>
}
    href="https://www.chartmogul.com?utm_source=hyperline"
  >
    Monitor and analyze Hyperline subscription revenue with ChartMogul.
  </Card>
</CardGroup>


# Pennylane
Source: https://docs.hyperline.co/integrations/pennylane

Push invoices, credit notes, and customer data from Hyperline to Pennylane accounting for French SMBs with automatic ledger synchronization.

[Pennylane](https://www.pennylane.com) is a French financial and accounting management solution, available as SaaS.

## Prerequisites

You need to have a valid [Pennylane account](https://www.pennylane.com) and admin rights on Hyperline.

## Setup

<Steps>
  <Step title="In Hyperline, navigate to the Settings > Integrations page" />

  <Step title="Click Connect on the Pennylane card" />

  <Step title="Authenticate on Pennylane">
    If you are not already logged into Pennylane, enter your Pennylane credentials to proceed.
  </Step>

  <Step title="Select the company you wish to connect">
    Select and authorize the company you want to use.
  </Step>

  <Step title="That's it!">
    Your Hyperline account is ready to send invoices and credit notes.
  </Step>
</Steps>

## Reconcile Hyperline and Pennylane customers

If you already have existing customers in Pennylane, we'll need to link them with the corresponding customers in Hyperline. Our support team is available to assist you with this process during onboarding.

## Synchronization

When you connect your Pennylane account, Hyperline **automatically sends invoices** with their complete details (including line items and PDF file).

<Info>
  Hyperline only exports invoices created in Hyperline to Pennylane. Invoices imported from Pennylane into Hyperline (or linked to Hyperline-managed subscriptions) are not re-exported to avoid duplication and data conflicts.
</Info>

<Info>
  If you use Stripe Payments or GoCardless with Hyperline, you also must connect them directly to your Pennylane account to ensure proper enrichment and reconciliation flow in Pennylane.
</Info>

<Note>
  By default, only invoices and customers created after the connection date will sync. If you need to push older data to Pennylane, please contact our support team.
</Note>

### Customer synchronization

Hyperline supports 2 modes of synchronization for customers:

* **no synchronization**: customers are not synchronized with Pennylane.
* **from Hyperline to Pennylane**: customers created in Hyperline are automatically created in Pennylane with their details.

Alternatively, you can manually link a Pennylane customer to a Hyperline customer. On the Hyperline customer page, click the `Edit` button in the `Integrations` section, then paste either the Pennylane customer ID or the URL to the Pennylane customer page.

### Payment synchronization

Hyperline supports 3 modes of synchronization for payments:

* **no synchronization**: payments are not synchronized with Pennylane.
* **from Hyperline to Pennylane**: payments created in Hyperline are automatically created in Pennylane and associated to the corresponding invoice. Due to a Pennylane API limitation, only payments done using Stripe or GoCardless can be synced.
* **from Pennylane to Hyperline**: payments created in Pennylane are automatically created in Hyperline, and the status of the invoice is updated accordingly.

The synchronization delay is 5 minutes maximum.

## Manage the integration

To reauthorize, reconfigure, resync, or disconnect this integration, see [Manage connected integrations](./manage-integration).

### Product and account codes

<Warning>
  Account codes set on products in Hyperline must be configured **without trailing zeros**. For example, if your Pennylane account code is `7010301000`, you should enter `7010301` in Hyperline.
</Warning>

Pennylane may display account codes with trailing zeros, but these should be removed when configuring them in Hyperline to ensure proper synchronization.

## Troubleshooting sync errors

If a Pennylane sync fails, open the Pennylane integration issues page in Hyperline to review the latest error and retry once the data has been corrected.

Common causes include:

| Error                            | What to check                                                                                                                                                                                          |
| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Duplicate payment                | The payment may already exist in Pennylane, often because it was created manually or synced from the payment provider. Remove the duplicate or adjust the reconciliation in Pennylane before retrying. |
| Line total or VAT mismatch       | Pennylane rejected the invoice because the line totals, tax rates, or VAT amounts do not match its expected calculation. Check the invoice lines, tax codes, and rounding before retrying.             |
| Missing customer or account code | The linked customer, product account code, or ledger mapping is missing or invalid. Complete the mapping in Hyperline, then retry the sync.                                                            |

<Note>
  By default, only invoices, customers, and payments created after the Pennylane connection date are synchronized. If you need to push older data, contact support to request a backfill.
</Note>

<Info>
  During some migrations, Pennylane can display an imported invoice as partially paid even when the invoice total is fully covered by payments. This usually comes from a header-total or reconciliation mismatch. Contact support with the invoice ID so the team can review the Pennylane response.
</Info>


# QuickBooks
Source: https://docs.hyperline.co/integrations/quickbooks

Push invoices, credit notes, customers, and payments from Hyperline to QuickBooks Online accounting with chart of accounts and tax mapping.

[QuickBooks](https://www.quickbooks.com) is a US accounting software developed by Intuit.

## Prerequisites

You need to have a valid [QuickBooks account](https://www.quickbooks.com) and admin rights on Hyperline.

## Setup

<Steps>
  <Step title="In Hyperline, navigate to the Settings > Integrations page" />

  <Step title="Click Connect on the QuickBooks card" />

  <Step title="Authenticate on QuickBooks">
    If you are not already logged into QuickBooks, enter your QuickBooks credentials to proceed.
  </Step>

  <Step title="That's it!">
    Your Hyperline account is ready to send invoices and credit notes.
  </Step>
</Steps>

## Reconciling data

### Customers

To link an existing QuickBooks customer to a Hyperline customer, navigate to the customer details page, click the "Edit" button in the "Integrations" section, and enter the QuickBooks customer ID.

For bulk operations during initial setup, contact our support team or use [this API endpoint](../api-reference/endpoints/customers/bulk-update-providerscustomers-mapping.mdx).

### Products

You can map your QuickBooks products (items) to your Hyperline product catalog. For each product in Hyperline, go to the Accounting section and enter the corresponding QuickBooks item name in the "Product code" field.

When specified, Hyperline automatically attaches each invoice line item to the corresponding item in QuickBooks.

### Taxes

When pushing an invoice with taxable line items, QuickBooks requires a tax code to be associated with each line. You can provide it in two ways:

* **At the product level**: Define a specific tax code on each product in Hyperline (Catalog → Products → Accounting → Tax code). This code is used when the product appears on an invoice.
* **At the invoicing entity level**: Configure tax codes on the default tax rates of the invoicing entity, in **Settings > Invoicing entities > Taxes**. Hyperline resolves the right tax code based on the invoice's tax rate before pushing it to QuickBooks. See [Default tax rates](../docs/invoices/tax-management#default-tax-rates) for details.

As a fallback, you can set a **Default tax code** in **Settings > Integrations > QuickBooks**. It is used whenever a taxable line item has no resolved tax code.

<Note>
  For US QuickBooks accounts, only the built-in `TAX` and `NON` tax codes are supported on line items. The Default tax code is still required to push invoices with non-zero tax, as QuickBooks uses it to override the computed sales tax.
</Note>

## Synchronization

When you connect your QuickBooks account, Hyperline **automatically sends invoices** with their complete details (including line item details).

<Note>
  By default, only invoices and customers created after the connection date will sync. If you need to push older data to QuickBooks, please contact our support team.
</Note>

### Customers

Hyperline supports 2 modes of synchronization for customers:

* **no synchronization**: customers are not synchronized with QuickBooks.
* **from Hyperline to QuickBooks**: customers created in Hyperline are automatically created in QuickBooks with their details.

### Payments

Hyperline supports 3 modes of synchronization for payments:

* **no synchronization**: payments are not synchronized with QuickBooks.
* **from Hyperline to QuickBooks**: payments created in Hyperline are automatically created in QuickBooks and associated to the corresponding invoice.
* **from QuickBooks to Hyperline**: payments created in QuickBooks are automatically created in Hyperline, and the status of the invoice is updated accordingly.

Synchronization occurs within 5 minutes.

## Manage the integration

To reauthorize, reconfigure, resync, or disconnect this integration, see [Manage connected integrations](./manage-integration).

## Troubleshooting

If you encounter any issues with the integration (missing data, failed entity synchronization, etc.), we recommend checking the Hyperline issues page for more details: Settings > Integrations > QuickBooks > View issues.

### Common issues

**Invoice has taxable line items but no product tax code defined and no default tax code ref provided**

This error is raised when Hyperline tries to push an invoice with taxable line items but cannot resolve a tax code for at least one line, and no Default tax code is configured on the integration. To fix it, set a tax code on the affected product(s), set tax codes on the default tax rates in **Settings > Invoicing entities > Taxes**, or set a **Default tax code** in **Settings > Integrations > QuickBooks**. See the [Taxes](#taxes) section for details.


# Rillet
Source: https://docs.hyperline.co/integrations/rillet

Push invoices, credit notes, customers, payments, and subscription contracts from Hyperline to Rillet accounting with per-entity subsidiary mapping.

[Rillet](https://www.rillet.com) is a modern AI-native ERP and accounting platform built for software companies.

## Prerequisites

You need to have a valid [Rillet account](https://www.rillet.com), an API key issued from Rillet, and admin rights on Hyperline.

## Setup

<Steps>
  <Step title="In Hyperline, navigate to the Settings > Integrations page" />

  <Step title="Click Connect on the Rillet card" />

  <Step title="Paste your Rillet API key">
    Hyperline uses the API key to authenticate every call to your Rillet account. The key can be revoked from Rillet at any time.
  </Step>

  <Step title="Map your invoicing entities to Rillet subsidiaries">
    On the **Settings > Integrations > Rillet** page, link each Hyperline invoicing entity to a Rillet subsidiary. The subsidiary drives the currency, accounts and tax codes available in the rest of the configuration.
  </Step>

  <Step title="Choose a revenue recognition mode and configure mappings">
    Pick **Revenue recognition only** or **Full accounting sync**, configure your products and (optionally) enable subscription contract sync. See [Settings](#settings) and [Mapping](#mapping) below.
  </Step>

  <Step title="That's it!">
    Your Hyperline account is ready to send invoices, credit notes, payments and contracts to Rillet.
  </Step>
</Steps>

## Settings

You can configure the following options on the **Settings > Integrations > Rillet** page:

* **Invoicing entity mapping**: per-entity table linking each Hyperline invoicing entity to a Rillet subsidiary. A subsidiary must be mapped for each entity that issues invoices — invoice push fails for any entity without a mapping.
* **Revenue recognition mode**: see [Revenue recognition mode](#revenue-recognition-mode) below.
* **Bank account**: cash account used to post payments in Rillet. Required when **Full accounting sync** is selected. The list is pulled from your Rillet chart of accounts.
* **Sync subscriptions as contracts**: when enabled, Hyperline pushes each subscription to Rillet as a contract so Rillet can schedule revenue automatically. See [Contract sync](#contract-sync).

### Revenue recognition mode

Hyperline can push invoices to Rillet in two different ways:

* **Revenue recognition only** (default): Hyperline sends invoices so Rillet can recognise revenue. Rillet automatically settles payments on its side, so payments are not pushed from Hyperline.
* **Full accounting sync**: Hyperline sends invoices and the matching payments to Rillet, including accounts receivable tracking. Requires a bank account to be configured.

<Note>
  The mode applies to both invoices and credit notes.
</Note>

## Mapping

### Customers

To link an existing Rillet customer to a Hyperline customer, open the Hyperline customer page, click **Edit** in the **Integrations** section, and paste the Rillet customer ID.

For bulk linking during initial onboarding, contact our support team or use [this API endpoint](../api-reference/endpoints/customers/bulk-update-providerscustomers-mapping.mdx).

If a Hyperline customer is not linked to any Rillet customer, the behavior depends on the **Customer sync mode** configured in Settings:

* **no synchronization** — the customer must be linked manually before any invoice can be pushed; otherwise the invoice push fails.
* **from Hyperline to Rillet** — the customer is automatically created in Rillet the first time it is needed (typically on the first invoice push).

### Products

Every invoice line item must be mapped to a Rillet product. For each product in Hyperline, go to the **Accounting** section of the product page and enter the corresponding Rillet product identifier in the **Product code** field.

If a line item is missing a product mapping, the invoice push fails with a clear error listing the affected products so you can fix the mapping and retry.

### Tax codes

Tax codes are configured **at the invoicing entity level** — set up tax codes with automatic computation in the tax settings of the relevant invoicing entity. Tax codes are then resolved according to what is configured in Hyperline and pushed to Rillet on each invoice line.

## Synchronization

When you connect your Rillet account, Hyperline **automatically sends invoices, credit notes, customers, payments and (optionally) contracts** with their complete details.

<Note>
  By default, only data created after the connection date is synced. To push older data, please contact our support team.
</Note>

Synchronization is **one-way: Hyperline → Rillet**. Rillet is queried read-only to fetch metadata (subsidiaries and chart of accounts).

### Customer synchronization

Hyperline supports 2 modes of synchronization for customers:

* **no synchronization**: customers are not automatically created — they must be linked manually before any invoice can be pushed.
* **from Hyperline to Rillet**: customers created in Hyperline are automatically created in Rillet with their details.

### Invoice and credit note synchronization

Invoices and credit notes are pushed as native Rillet **invoices** and **credit memos**. Updates made to an invoice in Hyperline are propagated to the matching Rillet record automatically.

### Payment synchronization

In **Revenue recognition only** mode, payments are not pushed to Rillet — Rillet automatically marks invoices as settled on its side once they are recognised.

In **Full accounting sync** mode, Hyperline supports a **per-payment-method sync setting** (card, SEPA / ACH / BACS direct debit, bank transfer, Apple Pay, Google Pay, Stripe Link, external, other). Each can be set independently to:

* **no synchronization**: payments are not synchronized.
* **from Hyperline to Rillet**: payments settled in Hyperline are pushed to Rillet against the corresponding invoice using the configured bank account.

The synchronization delay is 5 minutes maximum.

### Contract sync

When **Sync subscriptions as contracts** is enabled, Hyperline pushes each Hyperline subscription to Rillet as a contract. Rillet uses the contract to schedule revenue recognition automatically over the subscription term.

Contracts are kept in sync as the subscription evolves: changes are pushed as updates, and when a subscription is cancelled the matching Rillet contract is ended on the cancellation date.

## Manage the integration

To reauthorize, reconfigure, resync, or disconnect this integration, see [Manage connected integrations](./manage-integration).


# Salesforce
Source: https://docs.hyperline.co/integrations/salesforce

Connect Salesforce with Hyperline to sync accounts, opportunities, contracts, and subscription data between your CRM and billing platform.

The Hyperline-Salesforce integration provides a seamless connection between your Salesforce instance and Hyperline.
With this integration, you can access a dedicated widget directly from Salesforce, allowing you to create and manage Hyperline quotes, subscriptions, and customers without leaving your CRM. This feature embeds the full Hyperline interface inside Salesforce, ensuring smooth and efficient flows.

In addition, the integration enables optional and automatic data synchronization between Hyperline entities—such as quotes, subscriptions, and invoice details—and Salesforce's custom objects. This ensures you always have the most up-to-date information at your fingertips, allowing this data to be used for internal automations, workflows, and reporting within Salesforce.

## Prerequisites

You must have a valid [Salesforce account](https://salesforce.com) and access to the settings of your Hyperline account.

We recommend **experimenting with a Salesforce Developer Account** before going live. You can create a free [Salesforce Developer instance](https://developer.salesforce.com/signup) and use the [test mode](../docs/getting-started/sandbox) of your Hyperline account during setup and testing.

### Permissions

Hyperline automatically sets up the required technical components in your Salesforce instance upon connection to enable notifications and real-time synchronization.

For this reason, we recommend using a user with the **System Administrator** profile when connecting your Salesforce instance. Otherwise, the user must manually be granted specific permissions.

<Accordion title="Manually grant permissions to a non-System Administrator user">
  The user must have the following permissions:

  * **API Enabled** — Allows the user to execute API calls.
  * **Author Apex** — Allows the user to create and edit Apex classes and triggers.
  * **Customize Application** or **Modify All Data** — Allows the user to create or edit remote site settings.

  These permissions can be updated as follows:

  1. Click the **Gear** icon (top-right corner) and select **Setup**.
  2. In the **Quick Find** box, type “Profiles” and select **Profiles**.
  3. Click **Edit** next to the profile you want to update.
  4. Enable the required permission checkboxes and click **Save**.
</Accordion>

## Embedded Hyperline UIs in Salesforce

### Installation

Upon connecting your Salesforce instance to Hyperline, a Hyperline Salesforce package is automatically installed.

This package includes a **native Salesforce component** that can be easily **added to your page layouts**, allowing your revenue teams to keep using Salesforce while seamlessly accessing all Hyperline functionalities.

To add the component to an Account or Opportunity page:

1. Navigate to any Account or Opportunity page.
2. Click the menu in the top-right corner and select **Edit Page**.
3. Search for the **Hyperline** component and drag-and-drop it into the page layout.
4. Click **Save**.
   If this is your first time editing this layout, Salesforce will prompt you to **Activate** the updated view.

### Component

Once installed, this component can be used on both **Account** and **Opportunity** pages.

It provides several available actions, allowing you to:

* create Hyperline quotes
* create Hyperline subscriptions
* manage the related Hyperline customer

Each action opens a dedicated Hyperline interface embedded directly within Salesforce, giving you access to the full Hyperline experience without leaving your CRM—ensuring seamless interoperability between both systems.

### Settings

The component's behavior can be fine-tuned from **Settings** > **Integrations** > **Salesforce**.

#### Root object

Controls which Salesforce object the component treats as the source of truth when displaying Hyperline billing data (quotes and subscriptions). Two modes are available:

* **Account** — All quotes and subscriptions of an account are displayed on both the account component and the components of its related opportunities. Choose this option if your revenue team thinks about billing at the customer level and wants the full billing picture available from any opportunity tied to that customer.
* **Opportunity** — Only the quotes and subscriptions attached to a specific opportunity are displayed on that opportunity's component. The account component still shows all of the account's quotes and subscriptions. Choose this option if you want each opportunity to surface only its own billing items, with no cross-opportunity bleed.

This setting only affects what's displayed in the embedded component; it does not change how data is synchronized with Salesforce custom objects.

#### Allow creating new customer

When enabled, a Salesforce user triggering an action from an account or opportunity that isn't yet linked to a Hyperline customer can create the corresponding Hyperline customer on the fly and proceed with the action.

When disabled, actions are blocked until a matching Hyperline customer exists and is linked to the Salesforce record.

#### Display customers' children's data

When enabled, the component also displays quotes and subscriptions belonging to the customer's children (in Hyperline's parent–child customer hierarchy), in addition to the customer's own. Useful when you bill parent accounts but want visibility into activity across their subsidiaries from the parent's Salesforce record.

### User access

Salesforce users do not need an existing Hyperline account. When a user triggers a Hyperline action for the first time, a corresponding Hyperline user is automatically created using their Salesforce email address and assigned to your default Hyperline role (the ['Account manager' role](../docs/getting-started/configure-account#account-manager-role) if not changed).

When Hyperline interfaces are opened inside Salesforce, the user's Hyperline role is applied to ensure the correct view and edit permissions. These permissions are managed directly in Hyperline under Settings > Team.

### Data reconciliation

When retrieving Hyperline customer data from a Salesforce account or opportunity record, the following lookup mechanism is applied:

1. If it's an opportunity record, use the associated account record for the lookup.
2. If the account record is already linked to a Hyperline customer (via the Integrations section on the Hyperline customer page), that customer is used.
3. If the account record has a value in the Hyperline customer ID custom field, we attempt to resolve the corresponding Hyperline customer.
4. If the account record has a value in the Hyperline external ID custom field, we attempt to resolve the Hyperline customer whose ID or external ID matches that value.
   If the Salesforce account and the Hyperline customer were not previously linked, the link is automatically created—provided the integration settings allow it (customer sync enabled, sync direction including Salesforce → Hyperline, and the account flagged for sync).

If a customer is found but the settings do not allow automatic linking, Hyperline will surface the suggested customer in Salesforce, along with an action to manually trigger the link.

If no customer is found but the “Allow creating new customer” setting is enabled, the Salesforce user will be able to create a new related Hyperline customer and proceed with the desired action.

## Data synchronization

In addition to the fully built-in embedded UIs, the integration can also synchronize data from Hyperline to Salesforce custom objects. This synchronization is optional and can be configured afterward.

When you connect your Salesforce workspace and select which entities you want to synchronize in the Hyperline settings, Hyperline automatically creates the required custom objects and their associated fields in Salesforce (if they do not already exist) and sets up the synchronization mechanisms.

<Warning>
  Deleting or manually modifying Hyperline custom objects and custom fields in Salesforce may break the integration and lead to unexpected behavior.
</Warning>

Changing the data you choose to synchronize requires reconfiguring the integration. This process may take a few minutes to complete.

### Prerequisites

To synchronize data, Hyperline requires specific custom objects to exist in your Salesforce instance.

Hyperline does not have permission to automatically create custom objects in your Salesforce instance. You must create them manually using the object names listed below. If a required custom object does not exist, you will be unable to activate synchronization for that entity, and no data will be pushed to Salesforce.

| Entity                | Salesforce Object Name         |
| --------------------- | ------------------------------ |
| Quote                 | `HyperlineQuote`               |
| Quote line item       | `HyperlineQuoteLineItem`       |
| Quote coupon          | `HyperlineQuoteCoupon`         |
| Quote phase           | `HyperlineQuotePhase`          |
| Quote file            | `HyperlineQuoteFile`           |
| Subscription          | `HyperlineSubscription`        |
| Subscription product  | `HyperlineSubscriptionProduct` |
| Subscription coupon   | `HyperlineSubscriptionCoupon`  |
| Subscription phase    | `HyperlineSubscriptionPhase`   |
| Invoice               | `HyperlineInvoice`             |
| Invoice line item     | `HyperlineInvoiceLineItem`     |
| Custom property value | `HyperlineCustomPropertyValue` |

<Accordion title="Create a custom object in Salesforce">
  To create the required custom objects:

  1. Click the **Gear** icon (top-right corner) and select **Setup**.
  2. In the **Quick Find** box, type “Object Manager” and select **Object Manager**.
  3. Click the **Create** dropdown and choose **Custom Object**.
  4. Fill in the **Label**, **Object Name**, and **Record Name** fields.

  <Note>
    The **Object Name** must exactly match the required names listed above.
    Other fields may be configured according to your needs.
  </Note>

  <Frame>
    <img />
  </Frame>

  5. Repeat this process for each entity you want to synchronize.
</Accordion>

<Info>
  We recommend creating only the custom objects required for the specific entities you wish to sync.
</Info>

### Customers sync

When enabled, Hyperline customers are synchronized with Salesforce accounts. You can choose the synchronization direction (one-way or bidirectional).

During the integration setup, Hyperline creates a “(Hyperline) Synchronize” checkbox custom field (`HyperlineSync__c` slug) on the Account object.

A Salesforce account is imported and synchronized into Hyperline only when this checkbox is enabled; accounts without it checked are ignored.

### Customer custom properties

You can synchronize customer custom properties in two ways:

* **As Salesforce account fields** — create a custom field on the Salesforce Account object whose API name matches the Hyperline custom property `slug`, followed by `__c`. Hyperline then synchronizes its value with the linked account according to the customer synchronization direction you selected.
* **As custom property value records** — enable **Custom property values** in the integration settings. Hyperline creates one record in the `HyperlineCustomPropertyValue` custom object for each value and links customer values to the related Salesforce account. This option also keeps each property's name, type, and value available as separate fields.

<Card title="Example 💡">
  If a Hyperline customer custom property uses the `customer_tier` slug, create
  the `customer_tier__c` custom field on the Salesforce Account object to keep
  the value directly on the account record.
</Card>

<Note>
  The matching Salesforce account field must already exist and be writable.
  Hyperline does not create it automatically. Synchronizing values through the
  custom object requires the `HyperlineCustomPropertyValue` object described
  above.
</Note>

### Mapping

Below are the default field mappings between Hyperline entities and Salesforce objects.

<Accordion title="Field mappings">
  <Frame>
    <a href="/images/integrations/salesforce/salesforce-field-mapping.svg">
      <img alt="Field mappings between Hyperline entities and Salesforce objects" />
    </a>
  </Frame>
</Accordion>

### Manually trigger a sync

You can also manually trigger customer data synchronization from the Hyperline customer page. In the Integrations dropdown, click “Sync with Salesforce” to push (or pull, depending on the sync direction) the customer's data and send all associated quotes, subscriptions, and invoices to Salesforce.

## Troubleshooting

If you encounter any issues with the integration (missing data, failed entity synchronization, etc.), we recommend checking the Hyperline issues page for more details: Settings > Integrations > Salesforce > View issues.

### Common issues

**The component is empty with "Nothing yet" display and no button**

This issue usually occurs when the Salesforce instance is not connected to the correct Hyperline environment (production vs. sandbox). In Salesforce, go to Setup > Custom Code > Custom Settings, click Manage for Hyperline Settings, then Edit. Make sure the Environment field matches either `Production` or `Sandbox`, depending on your setup.

**Embedded Hyperline views don't load, or an action loads forever**

This happens when your browser blocks third-party cookies, which Hyperline needs to authenticate the embedded view inside your CRM. Allow third-party cookies for `[*.]hyperline.co`, then reload the page:

* **Chrome / Arc**: open [chrome://settings/cookies](chrome://settings/cookies), then under "Sites allowed to use third-party cookies" add `[*.]hyperline.co` (or select "Allow all cookies"). See [Google's guide](https://support.google.com/chrome/answer/95647).
* **Edge**: open `edge://settings/content/cookies` and add `[*.]hyperline.co` under "Allow". See [Microsoft's guide](https://support.microsoft.com/microsoft-edge/temporarily-allow-cookies-and-site-data-in-microsoft-edge-597f04f2-c0ce-f08c-7c2b-541086362182).
* **Safari**: open Settings > Privacy and uncheck "Prevent cross-site tracking". See [Apple's guide](https://support.apple.com/guide/safari/manage-cookies-sfri11471).
* **Firefox**: click the shield icon in the address bar and turn off "Enhanced Tracking Protection" for this site, or add an exception under Settings > Privacy & Security. See [Mozilla's guide](https://support.mozilla.org/kb/enhanced-tracking-protection-firefox-desktop).

Also disable any browser extension that blocks cookies or trackers for this site.

**The Salesforce component is empty (only the buttons appear, with no data)**

This issue usually occurs when the same Salesforce ID is assigned to multiple customers in Hyperline. Hyperline uses the first matching customer it finds, but that customer may not contain any data. Ensure that the Salesforce ID is assigned to only one customer in Hyperline — the correct one.

## Disconnect

At any time, you can disconnect the integration by clicking the Disconnect button located in the top-right corner of the Salesforce integration settings page.

Disconnecting the integration will stop all synchronization, but the custom objects, custom fields, and any previously pushed data in Salesforce will remain intact—they will not be deleted.


# Segment
Source: https://docs.hyperline.co/integrations/segment

Ingest usage events from Segment directly into Hyperline to drive usage-based billing without writing custom event-forwarding integrations.

## What is Segment?

[Segment](https://segment.com) is a Customer Data Platform (CDP). It simplifies collecting and using data from the users of your digital properties (websites, apps, etc.). It allows you to collect, transform, send, and archive your first-party customer data. You can also enrich the customer data you collect by connecting data from your other tools, and then aggregate it to monitor performance, inform decision-making processes, and create uniquely customized user experiences.

All this data can be easily sent to Hyperline to collect your customer's usage and automate usage-based billing and invoicing.

## Send usage from Segment to Hyperline

To facilitate the transmission of usage data to Hyperline, we will generate and use a custom Function within Segment.

<Info>
  Learn more about functions in [Segment's documentation](https://segment.com/docs/connections/functions).
</Info>

<Steps>
  <Step title="Go to the Catalog in Segment, access the Functions tab and click Create Function">
    <Frame>
      <img />
    </Frame>
  </Step>

  <Step title="Select Destination as the function type and click Build Function">
    <Frame>
      <img />
    </Frame>
  </Step>

  <Step title="Post request to Hyperline API">
    Replace the pre-written `onTrack` function in the code editor with the following code.

    The provided code will catch a Track event from Segment, and post it on Hyperline with the required properties picked from the Segment event.

    You can add any properties (with a value of type string, number, boolean, or array of the same types) you want to ingest in Hyperline by adding them in the `record` object. The field `my_property` is an example of an additional property pushed to Hyperline.

    ```javascript theme={null}
    async function onTrack(event, settings) {
      const endpoint = "https://ingest.hyperline.co/v1/events";

      // https://docs.hyperline.co/api-reference/endpoints/billable-events/create-billable-event
      const event = {
        customer_id: event.userId,
        event_type: event.event,
        timestamp: event.timestamp,
        record: {
          id: event.messageId,
          my_property: event.properties.customProperty,
          // add any custom properties you want to ingest in Hyperline
        },
      };

      try {
        // Post request
        const response = await fetch(endpoint, {
          method: "POST",
          headers: {
            Authorization: `Bearer ${settings.apiKey}`,
            "Content-Type": "application/json",
          },
          body: JSON.stringify(event),
        });

        // Retry on 5xx (server errors) and 429s (rate limits)
        if (response.status >= 500 || response.status === 429) {
          throw new RetryError(`Failed with ${response.status}`);
        }

        return response.json();
      } catch (error) {
        // Retry on connection error
        throw new RetryError(error.message);
      }
    }
    ```

    <Note>
      This code example will forward all event types to Hyperline. If you want to limit the events sent, you can use the Segment [Destination Filters](https://segment.com/docs/connections/destinations/destination-filters), or alternatively modify the code to filter out the data you don't want to send.
    </Note>
  </Step>

  <Step title="Configure your secret settings">
    In the provided code snippet, the API key is a secret configured within the **Settings** tab on the right panel. This approach helps you refrain from hard-coding private variables directly into the function.

    To implement this:

    1. Click on **Add Setting**
    2. Input `API Key` as the label (resulting in the generated name `apiKey`)
    3. Choose the type `String`
    4. Enter your Hyperline API key on the input on the right. You can generate a key with the [following guide](../api-reference/docs/authentication#how-to-generate-an-api-key).
    5. Toggle the `Required` and `Sensitive` options
    6. Save your setting
  </Step>
</Steps>

Finalize the creation of the function with a name ("Test Function" in the example below) and an optional description.

After creating the function, you can use it as a Destination of an existing source (in the example below it's the `Backend - Staging` source). Make sure to enable it to start receiving events from Segment in Hyperline.

<Frame>
  <img />
</Frame>


# Slack
Source: https://docs.hyperline.co/integrations/slack

Connect Slack to Hyperline to send automated billing notifications, alerts, and quote approval requests to your team's channels and direct messages.

## What is Slack?

[Slack](https://slack.com) is a collaborative communication platform for teams, offering real-time messaging, file sharing, and integration with various tools. It organizes conversations into channels based on topics, projects, or teams, fostering efficient and organized team communication.

## Connect Slack to Hyperline

You can connect Slack as a native integration in Hyperline to receive automated notifications in Slack channels and personal notification messages.

To connect Slack:

1. Go to **Settings > Integrations**
2. Find **Slack** in the list of available integrations
3. Click **Connect** and authorize Hyperline to access your Slack workspace
4. Once connected, you can start creating notification rules

<Note>
  If the Slack integration shows **Needs action**, reconnect Slack from the
  integration page. This can happen when Hyperline adds new Slack permissions
  required for the integration to work fully.
</Note>

## Notification rules

Notification rules let you automatically send Slack messages when specific events happen in Hyperline. Each rule combines a **trigger** (the event), a **Slack channel** (where to send), and a **message template** (what to send).

To create a notification rule:

1. Go to **Settings > Integrations > Slack > Notifications**
2. Click **Add rule**
3. Give the rule a **name**
4. Select a **trigger** from the list of available events
5. Choose the **Slack channel** where the notification should be sent
6. Customize the **message template** using variables
7. Save the rule

<Note>
  Hyperline automatically attempts to join public Slack channels when you configure them in a notification rule. For private channels, you'll need to manually invite the Hyperline app to the channel.
</Note>

## Quote approval requests in Slack

When Slack is connected, quote approvers can receive approval requests directly in Slack through their personal notification settings.

Slack approval request messages include the quote, customer, amount, quote owner, workflow, workflow step, and approvers. Hyperline also posts the quote PDF in a thread so approvers can review the document without leaving Slack.

Approvers can:

* Click **Approve** to approve the current workflow step
* Click **Reject** to provide a rejection reason
* Click **Open in Hyperline** to review the quote in Hyperline

If the quote is already approved, rejected, or no longer waiting for that step, Hyperline refreshes the Slack message to show the current approval state.

Users can manage personal Slack approval notifications from **Profile** > **Notifications**. Learn more about [quote approval workflows](/docs/quotes/approval).

### Available triggers

You can create notification rules for the following events:

| Trigger                       | Description                                    |
| ----------------------------- | ---------------------------------------------- |
| Approval requested            | An approval step has been requested            |
| Approval request approved     | An approval step has been approved             |
| Approval request rejected     | An approval step has been rejected             |
| Bank account errored          | A bank account encountered an error            |
| Data loader failed            | A data loader job has failed                   |
| Invoice chargeback            | An invoice has been charged back               |
| Invoice errored               | An invoice encountered an error                |
| Invoice late                  | An invoice is overdue                          |
| Invoice settled               | An invoice has been fully paid                 |
| Quote signed                  | A quote has been signed                        |
| Quote viewed                  | A quote has been viewed                        |
| Subscription activated        | A subscription has been activated              |
| Subscription contract renewed | A subscription contract has been renewed       |
| Subscription renewed          | A subscription has been renewed                |
| Subscription trial ended      | A subscription trial period has ended          |
| Subscription voided           | A subscription has been voided                 |
| Aggregator threshold crossed  | An aggregator usage threshold has been crossed |

### Message template

Each notification rule includes a customizable message template. You can format the message using **Markdown** and insert **dynamic variables** that will be replaced with actual values when the notification is sent.

Variables are inserted using the `{{variableName}}` syntax. The available variables depend on the selected trigger — for example, an invoice trigger provides variables like `{{invoiceNumber}}` and `{{invoiceAmount}}`, while a quote trigger provides `{{quoteNumber}}` and `{{quoteValue}}`.

You can also use **custom properties** in your message templates (e.g. `{{myCustomProperty}}`).

<Note>
  Hyperline automatically attempts to join public Slack channels when you configure them in a notification rule. For private channels, you'll need to manually invite the Hyperline app to the channel.
</Note>


# Stripe
Source: https://docs.hyperline.co/integrations/stripe

Collect card, ACH, SEPA, and Apple Pay payments through Stripe on Hyperline with one-click connection, customer sync, and full reconciliation.

## Prerequisites

You need to have a [Stripe](https://stripe.com) account, finished Stripe's onboarding flow, and admin rights on Hyperline.

## Setup

If [Stripe](https://stripe.com) is your preferred Payment Service Provider, connecting it with Hyperline is a straightforward process:

1. In the menu, select **Settings**
2. Select **Payment**
3. Click on **Connect payment provider**, then Stripe

This will redirect you to the Stripe login page where you will have to enter your account credentials and click **Continue**.

<Frame>
  <img />
</Frame>

Once the process is completed, you will see Stripe appearing as **Active** in the Payment page.

<Frame>
  <img />
</Frame>

<Tip>
  You can connect multiple Stripe accounts to Hyperline so that payments are routed based on your invoicing entities and preferences.
</Tip>

## Payment methods

Stripe through Hyperline supports:

* **Card** payments from major card schemes such as Visa, Mastercard, American Express, Discover & Diners, China Union Pay, eftpos, girocard, Interac, JCB and Maestro, depending on country and locality
* **Direct Debit** payments including SEPA (EU), Bacs (UK), or ACH (US)
* **Stripe Link** for faster checkout with saved payment details

## Customer information

Each time you bill a customer in Hyperline, the corresponding customer profile and payment details (including payment methods and mandates) are automatically created and managed by Hyperline in your Stripe account.

Additionally, Hyperline integrates payment method collection forms into our hosted pages (checkout, customer portal, invoice page, and quote page), requiring no technical effort on your part.

This seamless integration ensures that customer data and payments remain synchronized between Hyperline and Stripe, streamlining transaction management and customer information handling.

## Importing existing Stripe data

If you already have a Stripe account with existing customers, payment methods, products, prices, or subscriptions, Hyperline can import this data during setup. This is particularly useful when you are moving existing billing operations into Hyperline.

Before importing, check these points:

* Import prices before creating subscriptions that depend on them, including prices in a new currency such as CHF.
* Subscriptions with the same Stripe product on multiple lines may be skipped during import. Consolidate the lines in Stripe, or use distinct products for each line, then run the import again.
* Use your sandbox account first when validating the import flow or checking integration behavior.

<Note>
  Please contact support before importing existing Stripe data. The team can confirm the expected scope and help you review skipped records after the import.
</Note>


# Xero
Source: https://docs.hyperline.co/integrations/xero

Push invoices, credit notes, customers, and payments from Hyperline to Xero accounting with automatic product mapping and tax code synchronization.

[Xero](https://www.xero.com) is a New Zealand–based technology company that provides cloud-based accounting software for small businesses.

## Prerequisites

You need to have a valid [Xero account](https://www.xero.com) and admin rights on Hyperline.

## Setup

<Steps>
  <Step title="In Hyperline, navigate to the Settings > Integrations page" />

  <Step title="Click Connect on the Xero card" />

  <Step title="Authenticate on Xero">
    If you are not already logged into Xero, enter your Xero credentials to proceed.
  </Step>

  <Step title="Select the organisation you wish to connect">
    Choose the organisation you want to link to Hyperline, then click Allow
    access.

    <Note>
      By default, **your default invoicing entity** will be linked to this
      organisation. If you want to link a different entity, please contact our
      support team.
    </Note>
  </Step>

  <Step title="That's it!">
    Your Hyperline account is ready to send invoices and credit notes.
  </Step>
</Steps>

## Reconcile Hyperline and Xero customers

If you already have existing customers in Xero, we'll need to link them with the corresponding customers in Hyperline. Our support team is available to assist you with this process during onboarding.

## Synchronization

When you connect your Xero account, Hyperline **automatically sends invoices** with their complete details (including line items and PDF file).

<Note>
  By default, only invoices and customers created after the connection date will sync. If you need to push older data to Xero, please contact our support team.
</Note>

### Invoice PDF synchronization

Invoice PDFs are automatically attached to invoices in Xero when they are first synced. If you need to re-attach or update PDFs for existing invoices (for example, if the initial attachment failed), please contact our support team.

### Customer synchronization

Hyperline supports 2 modes of synchronization for customers:

* **no synchronization**: customers are not synchronized with Xero.
* **from Hyperline to Xero**: customers created in Hyperline are automatically created in Xero with their details. When a customer is updated in Hyperline, the changes are automatically synced to Xero in real-time.

### Payment synchronization

Hyperline supports 3 modes of synchronization for payments:

* **no synchronization**: payments are not synchronized with Xero.
* **from Hyperline to Xero**: payments created in Hyperline are automatically created in Xero and associated to the corresponding invoice.
* **from Xero to Hyperline**: payments created in Xero are automatically created in Hyperline, and the status of the invoice is updated accordingly.

The synchronization delay is 5 minutes maximum.

## Manage the integration

To reauthorize, reconfigure, resync, or disconnect this integration, see [Manage connected integrations](./manage-integration).

## Settings

Please contact our support team if you wish to change these settings.

* **Invoice account code**: by default, invoices are created in Xero using the account code *200*.
* **Credit note account code**: by default, credit notes are created in Xero using the account code *200*.
* **Payment account code**: by default, payments are created in Xero using the account code *001*.

## Product and account codes

Xero supports associating a product code and an account code to every invoice line item. You will need to configure the product code and the General Ledger account code for every product that you intend to invoice in Xero, in the **Products > Advanced settings** section.

If no account code is defined, the default invoice or credit note account code will be used.


# Automate Hyperline with Zapier
Source: https://docs.hyperline.co/integrations/zapier

Connect Hyperline to thousands of apps using Zapier — automate customer creation, invoice events, and subscription updates without writing code.

## What is Zapier?

[Zapier](https://zapier.com) is an online automation tool that connects your apps and services. You can connect two or more apps to automate repetitive tasks without coding or relying on developers to build the integration. You can use Zapier to connect Hyperline to heaps of other tools your team is using such as your CRM, your accounting software, your product, and more.

### What is a Zap?

A Zap is an automated workflow that connects your apps and services together. Each Zap consists of a trigger and one or more actions. When you turn your Zap on, it will run the action steps every time the trigger event occurs.

### Trigger and action

A trigger is an event that starts a Zap. An action is an event a Zap performs after it is triggered. For example, if you want to create an account in your CRM each time a customer is created in Hyperline, the trigger is "Customer Created" which will trigger the action "Create an account in CRM".

You can use the Hyperline app in Zapier to automate things like creating new customers from CRM, sending invoices to your accounting software, or pushing usage data into Hyperline.

[Learn more about the basics of using Zapier.](https://zapier.com/resources/guides/quick-start/automation-basics)

### Available triggers

The Hyperline Zapier app can start a Zap from several Hyperline events. The exact list available in Zapier depends on your app version, but the most common triggers are:

| Trigger                      | When it runs                                         |
| ---------------------------- | ---------------------------------------------------- |
| **Customer Created**         | A customer is created in Hyperline.                  |
| **Invoice Created**          | An invoice is created in Hyperline.                  |
| **Invoice Ready**            | An invoice is finalized and ready to be paid.        |
| **Invoice Paid**             | An invoice is settled.                               |
| **Subscription Created**     | A subscription is created.                           |
| **Subscription Activated**   | A subscription becomes active.                       |
| **Payment Method Created**   | A customer adds or starts adding a payment method.   |
| **Payment Method Activated** | A payment method becomes usable for future payments. |
| **Payment Method Deleted**   | A payment method is removed from the customer.       |

<Tip>
  If your automation needs to react as soon as a customer enters a payment method, listen to **Payment Method Created**. **Payment Method Activated** only runs once the payment method is confirmed and usable.
</Tip>

### More resources

There are lots of helpful guides in Zapier's help center, but here are some of the most useful ones to refer to when using our Zapier app:

* [Learn key concepts in Zapier](https://help.zapier.com/hc/en-us/articles/8496181725453)
* [Automation basics](https://zapier.com/resources/guides/quick-start/automation-basics)
* [Using Filters in Zaps](https://help.zapier.com/hc/en-us/articles/8496276332557)
* [Using Formatter in Zaps](https://help.zapier.com/hc/en-us/articles/8496212590093)
* [Troubleshooting errors in Zaps](https://help.zapier.com/hc/en-us/articles/8496037690637)

## Connect Hyperline and Zapier

Here's how to connect Hyperline to Zapier:

1. Log in to your [Zapier account](https://zapier.com/app/login) or [create a new account](https://zapier.com/sign-up)
2. Navigate to **Zaps** from the left sidebar
3. Click on **+ Create**, search for "Hyperline", and select it

   <Note>
     Zapier integration is in private access, so you might not see it the first time you search for it.

     To access the invite link, click the 'Connect' button on the Zapier card in the Settings > Integrations page of your Hyperline account.
   </Note>
4. You'll be asked to **Sign in**, and be prompted to add an API Key, which you can [learn how to generate in Hyperline here](/api-reference/docs/authentication).
5. Once you've added it in Zapier, click **Yes, Continue to Hyperline**.

When this is completed you can start creating all the automation you want! Creating a Zap requires no coding knowledge and you'll be walked step-by-step through the setup.

By default, this connection to Hyperline will be private and only able to be used by you. If you'd like to share it with your team, click **Share**. Add the members or teams you want to share it with, or select **Share with everyone**, then click **Done**.
[Learn more about sharing app connections.](https://help.zapier.com/hc/en-us/articles/8496326497037-Share-app-connections-with-your-team)

Follow [this example guide](./slack) to set up a Zap that sends your business metrics to a Slack channel regularly.


# Zoho Books
Source: https://docs.hyperline.co/integrations/zoho-books

Push invoices, credit notes, customers, and payments from Hyperline to Zoho Books accounting with automatic chart of accounts and tax mapping.

[Zoho Books](https://www.zoho.com/books) is a cloud-based accounting software developed by Zoho Corporation.

## Prerequisites

You need to have a valid [Zoho Books account](https://www.zoho.com/books) and admin rights on Hyperline.

## Setup

<Steps>
  <Step title="In Hyperline, navigate to the Settings > Integrations page" />

  <Step title="Click Connect on the Zoho Books card" />

  <Step title="Authenticate on Zoho Books">
    If you are not already logged into Zoho Books, enter your Zoho credentials to proceed.
  </Step>

  <Step title="That's it!">
    Your Hyperline account is ready to send invoices and credit notes.
  </Step>
</Steps>

## Reconciling data

### Customers

To link an existing Zoho Books customer to a Hyperline customer, navigate to the customer details page, click the "Edit" button in the "Integrations" section, and enter the Zoho Books customer ID.

For bulk operations during initial setup, contact our support team or use [this API endpoint](../api-reference/endpoints/customers/bulk-update-providerscustomers-mapping.mdx).

### Products

You need to map your Zoho Books products (items) to your Hyperline product catalog. For each product in Hyperline, go to the Accounting section and enter the corresponding Zoho Books item name in the "Product code" field.

When specified, Hyperline automatically attaches each invoice line item to the corresponding item in Zoho Books.

<Note>
  Zoho Books requires all Hyperline invoice line items to be mapped to Zoho Books items. If a product is not mapped, the invoice will not be created in Zoho Books.
</Note>

## Synchronization

When you connect your Zoho Books account, Hyperline **automatically sends invoices** with their complete details (including line item details).

<Note>
  By default, only invoices and customers created after the connection date will sync. If you need to push older data to Zoho Books, please contact our support team.
</Note>

### Customers

Hyperline supports 2 modes of synchronization for customers:

* **no synchronization**: customers are not synchronized with Zoho Books.
* **from Hyperline to Zoho Books**: customers created in Hyperline are automatically created in Zoho Books with their details.

### Payments

Hyperline supports 3 modes of synchronization for payments:

* **no synchronization**: payments are not synchronized with Zoho Books.
* **from Hyperline to Zoho Books**: payments created in Hyperline are automatically created in Zoho Books and associated to the corresponding invoice.
* **from Zoho Books to Hyperline**: payments created in Zoho Books are automatically created in Hyperline, and the status of the invoice is updated accordingly.

Synchronization occurs within 5 minutes.

## Manage the integration

To reauthorize, reconfigure, resync, or disconnect this integration, see [Manage connected integrations](./manage-integration).