> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ledgersyncappv2.com/llms.txt
> Use this file to discover all available pages before exploring further.

# For developers

> The LedgerSync AI connector for developers and admins: sandbox, access, tools, limits and error codes.

Reference for developers and admins. Accountants setting up their firm do not need this page: go to
[Start here](/ai/start-here).

**Live connector address:** `https://api.ledgersyncappv2.com/mcp`

## Sandbox

Add this address as a second connector, then connect **FinBank**, **MX Bank** or **Ledgersync Bank** with the
test sign-ins in [Testing in sandbox](/guides/testing).

```text theme={null}
https://api-sandbox.ledgersyncappv2.com/mcp
```

The desktop app tools are on the live connector only. The sandbox connector does not offer them.

## Who can connect

* Firms that use the LedgerSync app: the firm owner signs in with the LedgerSync app login (email or
  username, password, and the two-step code if the account has one). No new plan.
* New firms: on the LedgerSync sign-in page, a new email gets **Create your LedgerSync account**. The owner
  fills in the sign-up form and pays on the order page, then our team reviews the firm once. Until then the
  connector answers `firm_under_review` when asked to connect a bank; clients can be added. On live, sign-up
  needs a work email.
* Approved developer accounts: type the developer portal email on the LedgerSync sign-in page. It sends you
  to the developer portal sign-in. The account must be approved for that environment; live also needs the
  payment step. An application still waiting for its first approval cannot connect yet.
* Only the firm owner can connect for now. A teammate gets **For now, only the firm owner can use LedgerSync
  in their own Claude or ChatGPT.**
* ChatGPT needs a paid plan (Plus or higher), the web version on chatgpt.com, and **Developer mode** turned
  on (**Settings**, then **Security and login**). Without Developer mode, **Create MCP App** does not appear.
  On ChatGPT Business, Enterprise or Edu, only the workspace admin can add it for everyone.
* On Claude Team and Enterprise, an Owner first adds it under **Organization settings > Connectors** (**Add**,
  then **Custom**, then **Web**). Members then open **Connectors**, find LedgerSync and click **Connect**. The
  Claude Free plan allows one custom connector. Once added, it also works in Claude Desktop, the Claude
  mobile apps, and Claude Code signed in with the same account.
* AI apps other than Claude and ChatGPT are not supported yet (they are blocked). Ask support if you need
  one.

## Tools

The live connector offers 17 tools. The sandbox connector offers the first 15 (no desktop app tools).

| Tool | What it does | Changes something |
| - | - | - |
| `ledgersync_get_account_status` | Whether the connection is ready, sandbox or live, full or read-only, and how many of your firm's daily refreshes are left (the firm's shared budget, not the per-app cap) | No |
| `ledgersync_find_clients` | Finds clients by name or email | No |
| `ledgersync_create_client` | Adds a client (it checks for an existing one with the same name or email first) | Yes |
| `ledgersync_create_connect_link` | Creates a secure page where the account holder picks their bank and signs in | Yes |
| `ledgersync_search_institutions` | Checks whether a bank is supported, whether it gives transactions and statements, and whether it needs the LedgerSync desktop app | No |
| `ledgersync_list_connections` | Lists one client's bank connections, their status and when each last refreshed | No |
| `ledgersync_get_connection` | Checks one bank connection | No |
| `ledgersync_list_connections_needing_attention` | Lists the connections that are not working, across all your clients, the ones that need the account holder first | No |
| `ledgersync_list_accounts` | Lists a client's bank accounts with balances | No |
| `ledgersync_list_transactions` | Lists an account's transactions (the last 30 days unless you ask for other dates) | No |
| `ledgersync_list_statements` | Lists an account's statements | No |
| `ledgersync_get_statement_download_link` | Creates a link to download one statement PDF | No |
| `ledgersync_refresh_connection` | Asks the bank for the latest balances and transactions | Yes |
| `ledgersync_get_operation_status` | Reports whether a refresh has finished | No |
| `ledgersync_get_fix_link` | Creates a secure page where the account holder signs in to their bank again to fix a broken connection | Yes |
| `ledgersync_get_desktop_app_status` | Whether the LedgerSync desktop app is linked to the account and connected right now, with the Windows and Mac download links and the setup steps. It checks the app live. Live connector only | No |
| `ledgersync_pair_desktop_app` | Links the desktop app with the 7-character code it shows. It replaces any computer linked before, so the AI asks you to confirm first. Live connector only | Yes |

A bank or connection that needs the desktop app for refreshes carries `requires_desktop_app: true` in the
search, connection and refresh-status results; the field is left out otherwise. A connection that is not
working on such a bank also gets a `next_step` that says so.

<AccordionGroup>
  <Accordion title="Security">
    * Bank sign-ins only happen on LedgerSync pages. Connect links expire after 72 hours.
    * Statement download links expire after 10 minutes and work once; if a download fails, ask for a new link.
    * The connector cannot see or change API keys, webhooks or account settings.
    * Firms that sign in with the LedgerSync app login: changing the LedgerSync password, or turning off
      two-step sign-in, turns off every AI app connected with that login within a minute.
    * Developer accounts: disconnecting in the portal's **Connected apps** page cuts the app off at once; adding it again signs in
      fresh. The page lists only the apps of the environment picked in the portal's **Sandbox** / **Live**
      switch, so pick **Live** to see the live connector's apps. Anyone with the account's LedgerSync login
      can add it again. To turn it off for good, email support: support turns off the account's access for
      that environment, which stops every connected app and, on live, the account's API keys too.
    * Linking the desktop app needs the code the app shows, and the AI asks you to confirm first. The code is
      never logged or repeated back.
    * The desktop app is linked to the account owner's LedgerSync login, the one the connector acts as.
      Linking a computer replaces any computer linked before: only one computer is connected at a time.
      Every link is recorded and the LedgerSync team is alerted at once.
  </Accordion>

  <Accordion title="Refreshes and limits">
    * LedgerSync refreshes every working connection about once a day. A refresh you ask for takes a few
      minutes; see [Keeping data fresh](/guides/data-freshness).
    * A connection refreshed in the last 30 minutes is skipped unless you ask for a new pull anyway.
    * Each AI app can start 50 refreshes a day on live (20 on sandbox). They also count against your firm's
      daily budget of 500 on live (100 on sandbox), shared with API keys, which is the number the AI shows as
      refreshes left.
    * Per connected AI app: 50 new clients a day, 30 connect links an hour, and 120 tool calls a minute on
      sandbox (60 on live).
    * Long lists of connections, accounts, transactions and statements come back in pages.
    * A refresh stopped by the desktop app (`desktop_app_required` or `desktop_app_route_choice`) never
      reached the bank. It counts against neither daily refresh limit, and the 30-minute skip does not block
      trying again.
    * Linking the desktop app: 10 tries an hour and 20 a day per LedgerSync account (UTC hours and days),
      whether the code works or not. A code that is not 7 letters or digits is refused without counting.
  </Accordion>

  <Accordion title="Error codes">
    Every error has a `code`, the same as the API's (see [Errors](/guides/errors)). Access errors (except
    `firm_under_review`, whose message is the whole sentence), desktop app errors and the per-minute limit
    also carry a `next_step` sentence the AI reads out. So does a connection
    or refresh stopped by the desktop app, in its result.

    The 15 codes you are most likely to see are listed below. The connector can also answer
    `invalid_request`, `internal_error`, `idempotency_conflict` or `upstream_unavailable` (LedgerSync could not
    check the firm just now; try again in a minute).

    | Code | What it means | What to do |
    | - | - | - |
    | `access_not_active` | This sign-in has no working LedgerSync account yet: it is not set up, the sign-up is not finished, it is being checked, we need an answer, it was not approved, it closed, or it was turned off. For a firm that signs in with its app login: the signed-in user is not the firm owner, the login or account is locked, LedgerSync is not active for the firm, or connecting AI assistants is turned off for the firm. | Follow the step the AI reads out. Firms: remove LedgerSync from the AI app, add it again and sign in on the LedgerSync page, where a new firm creates its account. Developers apply at [portal.ledgersyncappv2.com](https://portal.ledgersyncappv2.com). |
    | `access_request_not_approved` | This sign-in has a LedgerSync account, but not for this environment yet: its application is still being reviewed, needs more information, or has not finished the payment step. Or its access for this environment was turned off. | Follow the step the AI reads out: wait for the review, answer the question in the portal, or finish the payment step. If access was turned off, email support. |
    | `billing_not_configured` | Live access is approved, but no card is on file (the payment step was not completed). | Developers: complete the payment step in the portal. New firms and existing LedgerSync customers: email support. |
    | `connector_app_pending_approval` | This AI app is not supported yet. Only Claude and ChatGPT are. | Use Claude or ChatGPT, or email support. |
    | `connector_access_revoked` | This AI app was disconnected from your LedgerSync account, or the firm owner changed the LedgerSync password or turned off two-step sign-in after it connected. | Remove the connector from the AI app and add it again. |
    | `firm_under_review` | A new firm is still being reviewed by our team. It can add clients; bank connections open after the review. | Add clients now and connect banks after the review. |
    | `insufficient_scope` | This connection is read-only, or lacks permission for what you asked. | Ask for something the connection may do, or email support. |
    | `rate_limit_exceeded` | A limit was reached. | Try again when the AI says you can, or tomorrow for a daily limit. |
    | `not_found` | No client, connection, account or statement matches, or it belongs to another account. | Ask the AI to find the client first, then try again. |
    | `desktop_app_required` | This bank needs the LedgerSync desktop app for refreshes, and the app is not connected right now. The bank was not called. | Open the desktop app on the computer it is set up on, then refresh again. The account holder has nothing to do. |
    | `desktop_app_route_choice` | The refresh is waiting for someone to choose whether LedgerSync reaches the bank through the desktop app. The bank was not called. | The AI gives you a fix link for the account holder. They make the choice on that LedgerSync page. Then refresh again. |
    | `pairing_code_invalid` | The desktop app code did not work: it is wrong, expired or already used. | Get a new code in the desktop app (**Settings**, **Connect with: AI chat**) and tell it to the AI. |
    | `desktop_app_session_closed` | The desktop app that showed the code is not open anymore. | Open the desktop app, get a new code and tell it to the AI. |
    | `desktop_service_unavailable` | LedgerSync could not reach the desktop app service. Nothing you did is wrong. | Try again in a few minutes. If it keeps failing, email support. |
    | `pairing_rate_limited` | Too many tries to link the desktop app. The AI says how many minutes to wait. | Wait that long, then try again with a new code. |
  </Accordion>
</AccordionGroup>

Stuck? Email [support@ledgersync.com](mailto:support@ledgersync.com) with the step and what the screen says.
Never send passwords or card numbers.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.