Ledge Transactions API

Transactions, their matches, and their reconciliation status.

Operations 1

POST /v1/api/{orgId}/transactions Query transactions #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/ledge-transactions-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

ledge-transactions-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Ledge Sources Transactions API
  version: '1.0'
  x-generated: '2026-07-19'
  x-method: generated
  x-source: Generated faithfully from the published Ledge API reference at https://docs.ledge.co/api-reference/ (Getting Started, Fundamentals, Authentication, Fine-Grained Permissions, Pagination, Status Codes, Error Handling, Sources, Transactions, Querying). Ledge does not publish an OpenAPI description; every path, parameter, schema field, enum value and status code below is transcribed from those pages. The server host was verified by probing the documented path (GET /v1/api/{orgId}/sources on https://api.goledge.io returns HTTP 401 with the documented JSON error envelope). No operation, field or value was invented.
  description: The Ledge REST API provides direct access to Transaction data, including transactions, matching and reconciliation status. It also provides Sources information, such as fetching times, files fetched, and any issues with fetching or parsing the data. Ledge is an AI-powered close management, reconciliation and payment-operations platform for finance teams.
  contact:
    name: Ledge
    url: https://www.ledge.co/contact-us
  termsOfService: https://www.ledge.co/terms-of-service
servers:
- url: https://api.goledge.io
  description: Production API host
security:
- oauth2ClientCredentials: []
tags:
- name: Transactions
  description: Transactions, their matches, and their reconciliation status.
paths:
  /v1/api/{orgId}/transactions:
    post:
      operationId: queryTransactions
      summary: Query transactions
      description: Retrieve the list of Transactions, their matches, and their reconciliation status. Filters are expressed as an array of composable typed SearchQuery objects combined with an AND operator.
      tags:
      - Transactions
      parameters:
      - $ref: '#/components/parameters/orgId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TransactionQuery'
            examples:
              filterByDescription:
                summary: Filter transactions by description within a date range
                value:
                  datasetId: 3fa85f64-5717-4562-b3fc-2c963f66afa6
                  limit: 100
                  offset: 0
                  from: 1704067200000
                  to: 1706745600
                  search:
                  - path: Description
                    search:
                      type: string
                      value: INV-340174
      responses:
        '200':
          description: The request was successful
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Transaction'
              examples:
                unmatchedAchCredit:
                  value:
                  - id: bb3e52d3-ce21-44be-b16c-e28f7d3d44da
                    datasetId: 8872aec1-6a21-423b-a7ad-e813f4419f75
                    reconciliationStatus: none
                    incomingMatches: []
                    outgoingMatches: []
                    description: Transfer to Vendor A/INV-12345/Jan-2024 PYMT
                    type: ACH Credit
                    timestamp: 1704067200000
        '204':
          description: The request was successful, and no content is returned
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        '504':
          $ref: '#/components/responses/GatewayTimeout'
components:
  schemas:
    NumberFilter:
      type: object
      properties:
        type:
          type: string
          const: number
        value:
          description: The filter value to apply, which can be a single value, multiple values, or more specific filters.
          oneOf:
          - type: number
          - type: array
            items:
              type: number
          - $ref: '#/components/schemas/NumberExpression'
          - $ref: '#/components/schemas/NumberRange'
    TextFilter:
      type: object
      properties:
        type:
          type: string
          const: string
        value:
          description: The text or texts to search for.
          oneOf:
          - type: string
          - type: array
            items:
              type: string
        exact:
          type: boolean
    NumberExpression:
      type: object
      properties:
        operator:
          type: string
          enum:
          - ne
          - ge
          - gt
          - le
          - lt
        value:
          type: number
          description: The filter value to apply.
    MoneyFilter:
      type: object
      properties:
        type:
          type: string
          const: money
        currencies:
          type: array
          description: A collection of ISO 4217 currency codes.
          items:
            type: string
        value:
          description: The filter value to apply, which can be a single value, multiple values, or more specific filters.
          oneOf:
          - type: number
          - type: array
            items:
              type: number
          - $ref: '#/components/schemas/NumberExpression'
          - $ref: '#/components/schemas/NumberRange'
    SearchQuery:
      type: object
      description: Ledge uses a simple composable typed filter.
      properties:
        path:
          type: string
          description: Name of transaction field to apply the query to
        search:
          $ref: '#/components/schemas/SearchFilter'
    Match:
      type: object
      description: A reconciliation match between two transactions. The Ledge API reference names the Match[] type on incomingMatches/outgoingMatches but does not publish its field-level schema, so no properties are asserted here.
    TransactionQuery:
      type: object
      properties:
        datasetId:
          type: string
          format: uuid
          description: Source ID, see Sources for more details.
        limit:
          type: integer
          description: Number of records to fetch.
        offset:
          type: integer
          description: Offset into the result set. The maximum offset value is 500.
          maximum: 500
        from:
          type: integer
          description: Transaction epoch timestamp in milliseconds from which to fetch.
        to:
          type: integer
          description: Transaction epoch timestamp in milliseconds to which to fetch.
        integrationId:
          type: string
          format: uuid
          description: Integration identifier, shown in the documented pagination examples.
        search:
          type: array
          description: An array of filters, with an AND operator between criteria.
          items:
            $ref: '#/components/schemas/SearchQuery'
        columns:
          type: array
          description: List of columns to include in the response.
          items:
            $ref: '#/components/schemas/SearchQuery'
    SearchFilter:
      description: The search filter to apply. Can be any one of the following filter types.
      oneOf:
      - $ref: '#/components/schemas/TextFilter'
      - $ref: '#/components/schemas/BooleanFilter'
      - $ref: '#/components/schemas/DateFilter'
      - $ref: '#/components/schemas/NumberFilter'
      - $ref: '#/components/schemas/MoneyFilter'
    DateFilter:
      type: object
      properties:
        type:
          type: string
          const: date
        value:
          allOf:
          - $ref: '#/components/schemas/NumberRange'
          description: A NumberRange filter. All numbers in milliseconds.
    NumberRange:
      type: object
      properties:
        start:
          type: number
          description: The minimum value in the range.
        end:
          type: number
          description: The maximum value in the range.
        includeStart:
          type: boolean
          description: Is inclusive on the lower bound.
        includeEnd:
          type: boolean
          description: Is inclusive on the upper bound.
    BooleanFilter:
      type: object
      properties:
        type:
          type: string
          const: boolean
        value:
          type: boolean
          description: The filter value to apply.
    Transaction:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Ledge ID for the line
        datasetId:
          type: string
          format: uuid
          description: Source ID, see Sources for more details.
        reconciliationStatus:
          type: string
          description: The reconciliation status of the transaction.
          enum:
          - none
          - partial
          - full
          - informative
          - out of scope
        incomingMatches:
          type: array
          description: List of matches in which the listed transaction is the origin.
          items:
            $ref: '#/components/schemas/Match'
        outgoingMatches:
          type: array
          description: List of matches in which the listed transaction is the target.
          items:
            $ref: '#/components/schemas/Match'
        description:
          type: string
          description: The value of the description field of the transaction.
        type:
          type: string
          description: The value of the type field of the transaction.
        timestamp:
          type: integer
          description: Epoch timestamp in milliseconds.
    Error:
      type: object
      description: Errors are returned as JSON objects with an `error` envelope. The documented shape carries `code` and `message`; live responses observed on api.goledge.io additionally carry `status` and a `request` correlation id.
      properties:
        error:
          type: object
          properties:
            code:
              description: Error code (the HTTP status code in observed responses).
              oneOf:
              - type: string
              - type: integer
            status:
              type: string
              description: Reason phrase for the error.
            request:
              type: string
              format: uuid
              description: Correlation id for the request, quote it when contacting Ledge support.
            message:
              type: string
              description: Human-readable description of the error.
      required:
      - error
  responses:
    ServiceUnavailable:
      description: An error occurred on the Ledge side, and is closely monitored. Contact Ledge for more details and remediation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: The request was unauthorized, please check your API key and contact Ledge for assistance
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: 401
              status: Unauthorized
              request: c1eb84b6-74e8-493d-9dfc-69f2f1f99e52
              message: The request could not be authorized
    NotFound:
      description: The requested resource was not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    BadRequest:
      description: The input data was malformed
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: The request was rejected for security reasons, contact Ledge for assistance
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    InternalServerError:
      description: An error occurred on the Ledge side, and is closely monitored. Contact Ledge for more details and remediation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    GatewayTimeout:
      description: The request exceeded the timeout. Try a smaller limit query parameter or contact Ledge for assistance.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  parameters:
    orgId:
      name: orgId
      in: path
      required: true
      description: Organization ID, can be found on the Developers page (https://app.goledge.io/developers).
      schema:
        type: string
        format: uuid
  securitySchemes:
    oauth2ClientCredentials:
      type: oauth2
      description: Obtain a client ID and generate a client secret on the Ledge Developers page (https://app.goledge.io/developers), then request an access token from the Ledge Auth0 tenant using the client_credentials grant. The response carries access_token, token_type (Bearer) and expires_in (10800 seconds observed in the documented example). Ledge does not document named OAuth scopes; authorization is enforced by Ledge's role-based fine-grained permissions model (https://docs.ledge.co/api-reference/fundamentals/fine-grained-permissions).
      flows:
        clientCredentials:
          tokenUrl: https://goledge.us.auth0.com/oauth/token
          scopes: {}
externalDocs:
  description: Ledge API reference
  url: https://docs.ledge.co/api-reference/getting-started