Heron Enriched Transactions API

The EnrichedTransactions API from Heron — 2 operation(s) for enrichedtransactions.

Operations 2

GET /api/end_users/{end_user_id_or_heron_id}/transactions Get end user transactions
GET /api/transactions/{reference_id_or_heron_id}

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/heron-enrichedtransactions-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 email required.

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

OpenAPI Specification

heron-enrichedtransactions-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  contact:
    email: support@herondata.io
    name: Support
  title: Heron Data Enriched Transactions API
  version: '2021-07-19'
servers:
- description: Production
  url: https://app.herondata.io
security:
- ApiKeyAuth:
  - key_XXX
tags:
- name: EnrichedTransactions
paths:
  /api/end_users/{end_user_id_or_heron_id}/transactions:
    get:
      description: 'Get all unique transactions for a single end user. Set end user status to "ready" to initiate transaction enrichment, otherwise may contain both enriched and unenriched transactions

        '
      parameters:
      - in: path
        name: end_user_id_or_heron_id
        required: true
        schema:
          type: string
      - description: Filter for transactions whose values were last updated in Heron systems after the specified input value, isoformat
        in: query
        name: last_updated_min
        required: false
        schema:
          example: '2026-08-14T12:24:30.685422'
          format: date-time
          type:
          - string
          - 'null'
      - description: Results page
        in: query
        name: page
        required: false
        schema:
          default: 1
          minimum: 1
          type: integer
      - description: Desired results per page
        in: query
        name: per_page
        required: false
        schema:
          default: 100
          maximum: 50000
          minimum: 1
          type: integer
      - description: Account ids to include. If not provided, all accounts are included
        explode: true
        in: query
        name: account_ids
        required: false
        schema:
          items:
            example: '1234'
            type: string
          type:
          - array
          - 'null'
        style: form
      - description: Filter by the heron_id of the category that the transaction is annotated with
        explode: true
        in: query
        name: category_heron_id
        required: false
        schema:
          default: []
          example: ctg_3NnYzuyQqUuP9MSkn7CBST
          items:
            type: string
          type:
          - array
          - 'null'
        style: form
      - description: What to order transactions by
        in: query
        name: order_by
        required: false
        schema:
          default: id_asc
          enum:
          - amount_asc
          - amount_desc
          - abs_amount_asc
          - abs_amount_desc
          - description_asc
          - description_desc
          - timestamp_asc
          - timestamp_desc
          - id_asc
          - id_desc
          - confidence_asc
          - confidence_desc
          - created_asc
          - created_desc
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  _meta:
                    $ref: '#/components/schemas/Pagination'
                  transactions_enriched:
                    items:
                      $ref: '#/components/schemas/TransactionEnriched'
                    type: array
                type: object
          description: OK
      security:
      - ApiKeyAuth: []
      summary: Get end user transactions
      tags:
      - EnrichedTransactions
  /api/transactions/{reference_id_or_heron_id}:
    get:
      description: Get enriched transaction
      parameters:
      - in: path
        name: reference_id_or_heron_id
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  transaction_enriched:
                    $ref: '#/components/schemas/TransactionEnriched'
                type: object
          description: OK
        '401':
          description: Unauthorized
      security:
      - ApiKeyAuth: []
      tags:
      - EnrichedTransactions
components:
  schemas:
    Pagination:
      properties:
        next_url:
          description: the URL of the next page
          format: url
          type:
          - string
          - 'null'
        num_results:
          description: the number of results returned
          type: integer
        page:
          description: current page
          type: integer
        per_page:
          description: the max number of results per page
          type: integer
        prev_url:
          description: the URL of the last page
          format: url
          type:
          - string
          - 'null'
      type: object
    TransactionFeatures:
      properties:
        description_clean:
          description: The cleaned description of the transaction
          example: GOOGLE ADS
          type: string
        duplicate_of_id:
          description: Indicates that the transaction is a duplicate and gives the heron_id of the original
          example: txn_PW7gZSP3EkwWi9Z3a3Pg4i
        has_matching_transaction:
          description: Whether the transaction is a transfer; requires end_user_id and timestamp to be present
          type: boolean
        is_potential_duplicate:
          description: Indicates whether the transaction has another transaction similar to it
          readOnly: true
          type: boolean
        is_recurring:
          description: Whether the transaction is recurring or not; requires end_user_id and timestamp to be present
          type: boolean
      type: object
    MerchantCategory:
      properties:
        code:
          example: '7311'
          readOnly: true
          type: string
        description:
          example: Advertising services
          readOnly: true
          type:
          - string
          - 'null'
        slug:
          example: advertising_services
          readOnly: true
          type:
          - string
          - 'null'
      required:
      - code
      type: object
    Category1:
      properties:
        heron_id:
          description: Unique ID of the category generated by Heron Data
          example: ctg_V5U2uiGd3QgehMHJuuBMFd
          readOnly: true
          type: string
        label:
          description: The label of the category
          example: Rent
          type: string
      required:
      - label
      type: object
    TransactionEnriched:
      properties:
        account_id:
          description: Your unique ID for account associated with transaction
          example: checking_account_202348
          maxLength: 400
          type:
          - string
          - 'null'
        account_number:
          description: The account number of the data source account associated with the transaction
          example: '1234567890'
          type:
          - string
          - 'null'
        amount:
          description: Amount. Inflows to an account should be positive, and outflows from an account should be negative. If using Plaid, please flip the amount sign for all transactions.
          example: -42.42
          type: number
        annotation:
          allOf:
          - $ref: '#/components/schemas/Annotation'
          description: The category annotation associated with the transaction
        balance:
          description: The running balance of the account after transaction ocurred
          example: 423.0
          type:
          - number
          - 'null'
        categories_default:
          description: Category of transaction that you may have received from other sources
          example: shopping
          type:
          - string
          - 'null'
          writeOnly: true
        counterparty:
          description: The counterparty associated with the transaction, if available
          example: GOOGLE
          type:
          - string
          - 'null'
        currency:
          description: ISO 4217 currency code
          example: USD
          maxLength: 3
          minLength: 3
          type:
          - string
          - 'null'
        data_source_account_heron_id:
          description: The heron ID of the data source account associated with the transaction
          example: dsa_2tYMWNLGCf39HdYbvEVrN3
          type:
          - string
          - 'null'
        data_source_heron_id:
          description: The heron ID of the data source associated with the transaction
          example: dso_d4a5SyQVvAj2apCmkJaVgT
          type:
          - string
          - 'null'
        date:
          description: The date of the transaction; 'timestamp' field takes priority over 'date'
          example: '2020-04-27'
          format: date
          type:
          - string
          - 'null'
          writeOnly: true
        description:
          description: The text description for the transaction
          example: GOOGLE *ADS12340929 cc@google.com US
          type: string
        end_user_id:
          description: Your unique ID for end user associated with transaction
          example: my_best_customer_203948
          maxLength: 140
          type:
          - string
          - 'null'
        features:
          allOf:
          - $ref: '#/components/schemas/TransactionFeatures'
          description: Features calculated from transaction
        heron_id:
          description: Unique ID of transaction; generated by Heron Data
          example: txn_Hafnew3Y97Q5Yv29VmHR4C
          readOnly: true
          type: string
        last_updated:
          description: When the transaction was last updated, either by updating its enrichments or the values of the transaction itself
          example: '2026-08-14T12:24:38.129442+00:00'
          format: date-time
          type: string
        mcc_code:
          description: Merchant category code associated with transaction that you may have received from other sources
          pattern: ^\d{4}$
          type:
          - string
          - 'null'
          writeOnly: true
        merchant:
          allOf:
          - $ref: '#/components/schemas/Merchant'
          description: The merchant associated with the transaction
        order:
          description: If sending a batch of transactions, the order in which the transaction occurs, where a higher value is equivalent to a more recent transaction
          type:
          - integer
          - 'null'
          writeOnly: true
        reference_id:
          description: Your unique ID for transaction
          example: my_favourite_transaction_231098
          maxLength: 140
          minLength: 1
          type:
          - string
          - 'null'
        request_id:
          description: ID associated with request, e.g., all transactions in same POST request will have same request_id
          example: req_KpKSZcc8f9N6m4kcVMn9ZP
          readOnly: true
          type:
          - string
          - 'null'
        timestamp:
          description: The ISO 8601 timezone aware timestamp of the transaction; takes precedence over 'date'
          example: '2021-11-12T10:38:05Z'
          format: date-time
          type:
          - string
          - 'null'
        transaction_code:
          description: Code associated with transaction to indicate the type of transaction
          example: card
          maxLength: 140
          type:
          - string
          - 'null'
      required:
      - amount
      - description
      type: object
    AnnotatorPublic:
      properties:
        context:
          enum:
          - sync
          - async_
          - manual
          - undetermined
          type: string
        priority_type:
          enum:
          - gold_standard
          - client_feedback
          - tagging_ui
          - reconcile
          - heuristic
          - classifier
          - undetermined
          - positions_detection
          type: string
      required:
      - context
      - priority_type
      type: object
    Annotation:
      properties:
        annotator:
          allOf:
          - $ref: '#/components/schemas/AnnotatorPublic'
          readOnly: true
        category:
          allOf:
          - $ref: '#/components/schemas/Category1'
          readOnly: true
        confidence:
          readOnly: true
          type: number
        model_version:
          readOnly: true
          type: string
      type: object
    Merchant:
      properties:
        categories:
          items:
            $ref: '#/components/schemas/MerchantCategory'
          readOnly: true
          type: array
        group_id:
          enum:
          - Uber
          - Google
          - Intuit
          - debt.mca_or_rbf
          - debt.non_bank_business
          - debt.equipment_and_auto_leasing
          - debt.mortgage
          - debt.personal_non_mortgage
          - debt.collections
          - debt.bank
          - invoice_factoring
          - fuel_provider
          - gambling_and_betting
          - null
          type:
          - string
          - 'null'
        heron_id:
          example: mrc_RTgUcM9od9w9fwU8YG6mjH
          readOnly: true
          type: string
        icon_url:
          format: url
          type:
          - string
          - 'null'
        is_priority:
          readOnly: true
          type: boolean
        logo_url:
          format: url
          type:
          - string
          - 'null'
        name:
          type: string
        url:
          format: url
          type: string
      required:
      - name
      - url
      type: object
  securitySchemes:
    ApiKeyAuth:
      in: header
      name: x-api-key
      type: apiKey
externalDocs:
  description: Read Tutorial
  url: https://docs.herondata.io/