---
title: "The bank connections this portfolio holds"
method: GET
path: "/api/v1/banking/ponto/connections"
tags: ["Money"]
---

# The bank connections this portfolio holds

`GET /api/v1/banking/ponto/connections`

## Request

- Base URL: `http://localhost:5180`
- URL: `http://localhost:5180/api/v1/banking/ponto/connections`
- Auth: API key in cookie `better-auth.session_token`

What is connected, to what, when it last read, and who made it. No token is among the fields and none ever will be: a screen that could read one is a screen that could leak it. A renewal that left for the bank is reported on its account until that account is next read, so the screen checks it once in whichever tab the owner comes back, and a list the screen discards spends nothing. `environment` says which Ponto this deployment talks to. `billing` says what an account past the plan’s own costs this team, how many the plan includes against how many it reads and how many of those the bill counts, and each connection says how many accounts it shares that nothing reads yet.

## Response `200`

The connections.

- object
  - `ok` unknown, required
  - `data` object, required
    - `connections` object[], required
      - `id` string, required: Stable record id, e.g. `lse_012`.
      - `provider` string, required
      - `status` 'pending' | 'live' | 'revoked' | 'error', required
      - `bankAccountId` string, nullable, required: Stable record id, e.g. `lse_012`.
      - `iban` string, nullable, required
      - `institution` string, nullable, required
      - `lastSyncedAt` string, nullable, required
      - `note` string, nullable, required: Why it needs attention, in words the owner reads.
      - `organizationName` string, nullable, required: The Ponto organization the grant is for.
      - `blocked` boolean: Ponto blocked the organization, so connecting again cannot help until the block lifts.
      - `granted` boolean, required: Whether the bank gave access on this connection, so it has something to disconnect.
      - `ending` boolean: Taken back here, but Ponto has not confirmed the integration ended. Disconnecting it again asks once more.
      - `finishing` boolean: A return whose code is being exchanged right now. Ask again in a moment rather than starting over.
      - `connectedBy` string: Who made the connection through their own Ponto login, while they are on the team.
      - `connectedById` string: The user id of whoever made it, set whenever `connectedBy` is.
      - `makerLeft` boolean: The person who made it has left the team, and it still reads through their consent.
      - `unpaired` number: Accounts the bank shared on this connection that nothing here reads yet. Pair them, or they are let go at the bank and never charged.
      - `accounts` object[], required: Every portfolio account the connection feeds.
        - `bankAccountId` string, required: Stable record id, e.g. `lse_012`.
        - `externalAccountId` string, required: Ponto’s own id for the account, which `/ponto/link` takes.
        - `iban` string, nullable, required
        - `institution` string, nullable, required
        - `lastSyncedAt` string, nullable, required
        - `authorizationExpiresAt` string, nullable, required: When the bank’s consent for the account is expected to run out.
        - `note` string, nullable, required
        - `renewalRequested` boolean: A renewal left for the bank since this account was last read, so check it once. Reported until the account is next read, not only on the first list.
    - `available` boolean, required: Whether this deployment can talk to Ponto at all.
    - `offered` boolean, required: Whether this team may start a new bank connection or pair an account on one.
    - `canChange` boolean, required: Whether the caller may connect, pair, renew or disconnect.
    - `environment` 'sandbox' | 'live', nullable, required: Which Ponto this deployment talks to: `live` reads real banks, `sandbox` reads test ones, null talks to none. The deploy smoke refuses production on anything but `live`.
    - `billing` object: What connecting a bank account costs this team, and whether the caller may add a charged one.
      - `mode` 'free' | 'charged' | 'needs_plan' | 'unavailable', required: `free` on the Ponto sandbox or where billing is not set up, `charged` while a plan is in trial or active, `needs_plan` with no plan or a payment that failed, `unavailable` where the price cannot be read.
      - `price` object, nullable, required: The price a month of one account past the plan’s own, to show and to send back as `agreed`.
        - `priceId` string, required: The Stripe price, as `billing.price.priceId` in GET /ponto/connections.
        - `unitAmount` integer, required: Minor units a month for one account past the plan’s own, as shown.
        - `currency` string, required: Lowercase, as shown.
      - `included` number, nullable, required: Bank accounts the plan includes before any is charged. Null with no plan we sell, or where accounts are not charged.
      - `connected` number, required: Accounts this team reads straight from a bank, a broken connection’s included.
      - `billed` number, required: Connected accounts past `included`, which is what the bill counts.
      - `trialEndsAt` number, nullable, required: Seconds since the epoch, while the plan is in its trial and connecting costs nothing yet.
      - `why` string, nullable, required: Why it is free, needs a plan or is unavailable. Null while charged.
      - `mayAdd` boolean, required: Whether the caller may add a charged account: an owner, on screen while accounts are charged.
  - `meta` object, required
    - `requestId` string, required: Echoed in the x-request-id header. Quote it in a bug report.

---

[API](https://skmtc.dev/dardaris/apis/dardaris-api.md) · [All operations](https://skmtc.dev/dardaris/apis/dardaris-api/llms.txt) · [OpenAPI document](https://skmtc.dev/dardaris/apis/dardaris-api/revisions/4aff33835c73?raw)
