---
title: "Enrich transactions (sync)"
method: POST
path: "/api/transactions"
tags: ["Transactions"]
---

# Enrich transactions (sync)

`POST /api/transactions`

Enrich and categorize transactions and consume them in a sync response. For business lending and underwriting, please use "Create end user transactions" instead. Please send a maximum of 249 transactions per request.

## Request body

- TransactionsPostSyncSchema
  - `transactions` Transaction1[], required
    - `account_id` string, nullable — Your unique ID for account associated with transaction
    - `amount` number, required — 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.
    - `balance` number, nullable — The running balance of the account after transaction ocurred
    - `categories_default` string, nullable — Category of transaction that you may have received from other sources
    - `currency` string, nullable — ISO 4217 currency code
    - `date` string, date, nullable — The date of the transaction; 'timestamp' field takes priority over 'date'
    - `description` string, required — The text description for the transaction
    - `end_user_id` string, nullable — Your unique ID for end user associated with transaction
    - `heron_id` string — Unique ID of transaction; generated by Heron Data
    - `mcc_code` string, nullable — Merchant category code associated with transaction that you may have received from other sources
    - `order` integer, nullable — If sending a batch of transactions, the order in which the transaction occurs, where a higher value is equivalent to a more recent transaction
    - `reference_id` string, nullable — Your unique ID for transaction
    - `request_id` string, nullable — ID associated with request, e.g., all transactions in same POST request will have same request_id
    - `timestamp` string, date-time, nullable — The ISO 8601 timezone aware timestamp of the transaction; takes precedence over 'date'
    - `transaction_code` string, nullable — Code associated with transaction to indicate the type of transaction

## Response `200`

OK

- object
  - `_summary` object
    - `request_id` string — Unique UUID per request
  - `transactions` TransactionPostOutput[] — only returned for sync enrichment requests
    - `account_id` string, nullable — Your unique ID for account associated with transaction
    - `amount` number, required — 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.
    - `balance` number, nullable — The running balance of the account after transaction ocurred
    - `categories` TransactionAnnotation[] — The category associated with the transaction
      - `annotator` string — Annotator type
      - `confidence` number — The confidence associated with the category annotation
      - `heron_id` string — Unique ID of category; generated by Heron Data
      - `label` string — Label of category
      - `model_version` string — The model version that produced the categorisation
    - `currency` string, nullable — ISO 4217 currency code
    - `description` string, required — The text description for the transaction
    - `description_clean` string — The cleaned description of the transaction
    - `duplicate_of_id` string — Indicates that the transaction is a duplicate and gives the heron_id of the original
    - `end_user_id` string, nullable — Your unique ID for end user associated with transaction
    - `has_matching_transaction` boolean — Whether the transaction is a transfer; requires end_user_id and timestamp to be present
    - `is_potential_duplicate` boolean — Indicates whether the transaction has another transaction similar to it
    - `is_recurring` boolean — Whether the transaction is recurring or not; requires end_user_id and timestamp to be present
    - `mcc_code` string, nullable — Merchant category code associated with transaction that you may have received from other sources
    - `merchant` Merchant
      - `categories` MerchantCategory[]
        - `code` string, required
        - `description` string, nullable
        - `slug` string, nullable
      - `group_id` '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', nullable
      - `heron_id` string
      - `icon_url` string, url, nullable
      - `is_priority` boolean
      - `logo_url` string, url, nullable
      - `name` string, required
      - `url` string, url, required
    - `order` integer, nullable — If sending a batch of transactions, the order in which the transaction occurs, where a higher value is equivalent to a more recent transaction
    - `payment_processor` PaymentProcessor
      - `heron_id` string
      - `icon_url` string, url, nullable
      - `logo_url` string, url, nullable
      - `name` string, nullable
      - `url` string, url, nullable
    - `reference_id` string, nullable — Your unique ID for transaction
    - `request_id` string, nullable — ID associated with request, e.g., all transactions in same POST request will have same request_id
    - `timestamp` string, date-time, nullable — The ISO 8601 timezone aware timestamp of the transaction; takes precedence over 'date'
    - `transaction_code` string, nullable — Code associated with transaction to indicate the type of transaction

## Other responses

- `413` — Payload Too Large

---

[API](https://skmtc.dev/herondata/apis/heron-data-api.md) · [All operations](https://skmtc.dev/herondata/apis/heron-data-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/herondata/heron-data-api/revisions/f2e441edece2/schema)
