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

# Get an account

> **Scope:** any one of `read`, `entries:write`.



## OpenAPI

````yaml /openapi.json get /v1/accounts/{id}
openapi: 3.0.3
info:
  title: PanoQore API
  version: v1
  description: >-
    The REST form of the panoqore.v1 contract, limited to what an API key can
    call. Generated from the contract: do not edit by hand.


    Bodies are JSON in lowerCamelCase. A field at its zero value (empty string,
    `0`, `false`, empty list) is left out of responses. 64-bit integers and
    money are strings.
servers:
  - url: https://api.panoqore.example
    description: 'Live. PLACEHOLDER: the production host has not been set'
  - url: https://api.sandbox.panoqore.example
    description: 'Sandbox. PLACEHOLDER: the sandbox host has not been set'
  - url: http://localhost:8080
    description: A server on your own machine
security:
  - bearerAuth: []
tags:
  - name: Accounts
    description: Accounts, their balances and their history.
  - name: Entries
    description: 'Balanced journal entries: post, hold pending, reverse.'
  - name: Holds
    description: Reservations on an account with no counterparty yet.
  - name: Named accounts
    description: >-
      Partner account numbers bound to wallets, and the credits reported to
      them.
  - name: Lending
    description: >-
      Lending turns loan events into balanced entries on the Lending module's
      accounts. PanoQore holds no loan terms: schedules, interest, allocation
      and credit decisions stay with the product, which tells the ledger what
      happened. Loans are told apart by the product's loan_ref, which is opaque
      and carries no PII.
  - name: Fees
    description: >-
      Fees charges a tenant's schedules as extra postings. A schedule applies
      only to an entry that names it in fee_schedule: the first debit leg pays,
      and the fee is credited to the schedule's income account.
  - name: FX
    description: Rates, quotes and conversions.
  - name: Reconciliation
    description: Partner statements, breaks and the daily control.
  - name: Reporting
    description: Periods, exports and the trial balance.
  - name: Webhooks
    description: >-
      Outbound webhooks: the same CloudEvents the event stream shows, posted to
      a tenant's HTTPS endpoints. Each delivery carries Qore-Signature: t=<unix
      seconds>,v1=<hex HMAC-SHA256 of "<t>.<body>">, made with the endpoint's
      signing secret. A delivery that is not answered 2xx within 10 seconds is
      retried: eight tries over 24 hours, then it waits for a replay. Delivery
      is at least once; drop duplicates by the event id. Managing endpoints
      needs the manage scope (tenant admins) or webhooks:manage (an API key).
  - name: Approvals
    description: >-
      Maker-checker for every change to money. One workflow for adjustments,
      reversals, freezes, limit changes, FX rates, integration-mode changes,
      named-account changes and live API keys.
  - name: Events
    description: >-
      The append-only, hash-chained event log. The same rows feed Kafka through
      the outbox.
  - name: Chart of accounts
    description: >-
      The tenant's chart of accounts: one ledger per currency or token, built
      from account modules, with internal accounts created from templates.
      Customer wallets are opened through Ledger.CreateAccount.
  - name: Tenant
    description: The tenant and what it is connected to.
  - name: Identity
    description: Who a credential is.
paths:
  /v1/accounts/{id}:
    get:
      tags:
        - Accounts
      summary: Get an account
      description: '**Scope:** any one of `read`, `entries:write`.'
      operationId: Ledger_GetAccount
      parameters:
        - name: id
          in: path
          required: true
          description: The id.
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
        '401':
          $ref: '#/components/responses/Error'
        '403':
          $ref: '#/components/responses/Error'
        '404':
          $ref: '#/components/responses/Error'
        '503':
          $ref: '#/components/responses/Error'
components:
  schemas:
    Account:
      type: object
      properties:
        id:
          type: string
          description: acc_…
        code:
          type: string
          description: TYPE:GROUP:CCY[:PARTY|SEQ], for example LIA:WAL:NGN:0193
        name:
          type: string
        type:
          $ref: '#/components/schemas/AccountType'
        normalSide:
          $ref: '#/components/schemas/PostingSide'
        currency:
          type: string
        ownerRef:
          type: string
          description: opaque product-side id; never PII
        status:
          $ref: '#/components/schemas/AccountStatus'
        category:
          $ref: '#/components/schemas/AccountCategory'
        balance:
          $ref: '#/components/schemas/Balance'
        overdraftLimit:
          type: string
          description: Minor units, as a string.
        pendingApprovalId:
          type: string
          description: Set while a freeze or unfreeze approval is waiting.
        namedAccounts:
          type: array
          items:
            $ref: '#/components/schemas/NamedAccount'
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
    AccountType:
      type: string
      enum:
        - ASSET
        - LIABILITY
        - EQUITY
        - INCOME
        - EXPENSE
    PostingSide:
      type: string
      enum:
        - DEBIT
        - CREDIT
    AccountStatus:
      type: string
      enum:
        - ACTIVE
        - FROZEN
        - CLOSED
    AccountCategory:
      type: string
      enum:
        - WALLET
        - SETTLEMENT
        - INTERNAL
      description: |-
        What the console groups by. Derived from the code's group segment.

        `WALLET`: customer money

        `SETTLEMENT`: mirror of a partner omnibus

        `INTERNAL`: suspense, clearing, fees, FX position, equity
    Balance:
      type: object
      properties:
        currency:
          type: string
        posted:
          type: string
          description: settled value on the account's normal side Minor units, as a string.
        pending:
          type: string
          description: value in flight, either direction Minor units, as a string.
        available:
          type: string
          description: posted - pending debits + overdraft limit Minor units, as a string.
        version:
          type: string
          format: int64
          description: >-
            send back as If-Match to fail fast A 64-bit integer, written as a
            string.
        asOf:
          type: string
          format: date-time
    NamedAccount:
      type: object
      properties:
        id:
          type: string
          description: nam_…
        accountId:
          type: string
        accountLabel:
          type: string
          description: the bound ledger account's name
        partner:
          type: string
          description: safehaven | nomba | …
        partnerName:
          type: string
        accountNumber:
          type: string
        bankCode:
          type: string
        accountName:
          type: string
        currency:
          type: string
        status:
          $ref: '#/components/schemas/NamedAccountStatus'
        mandateRef:
          type: string
        partnerRef:
          type: string
        failureReason:
          type: string
        pendingApprovalId:
          type: string
        issuedAt:
          type: string
          format: date-time
        closedAt:
          type: string
          format: date-time
        createdAt:
          type: string
          format: date-time
    Error:
      type: object
      description: Every refusal on a `/v1` path has this shape. Branch on `error.code`.
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
            - details
          properties:
            code:
              type: string
              description: Stable and safe to branch on.
              example: INSUFFICIENT_FUNDS
            message:
              type: string
              description: For people. It can change.
            details:
              type: object
              additionalProperties:
                type: string
              description: Context for this code. Empty when there is none.
            request_id:
              type: string
              description: >-
                Quote it when you ask about a failure. Absent on
                `INVALID_REQUEST`, which is refused before a handler runs.
    NamedAccountStatus:
      type: string
      enum:
        - PENDING
        - ACTIVE
        - FROZEN
        - CLOSED
        - FAILED
      description: '`PENDING`: asked the partner, no number yet'
  responses:
    Error:
      description: Refused. See `error.code`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: An API key, `pk_live_…` or `pk_test_…`.

````

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