---
title: "Push bank transactions for a customer_api account"
method: POST
path: "/public/v2/bank-connections/accounts/{financial_account_id}/transactions/"
tags: ["Bank Connections"]
---

# Push bank transactions for a customer_api account

`POST /public/v2/bank-connections/accounts/{financial_account_id}/transactions/`

Batch upsert bank-feed transactions for a registered `customer_api` account
identified by DualEntry financial account id.

Idempotency key is transaction `external_trx_id` (stored as source_id) scoped to
the organization with `source_type=customer_api`. Each item must include
`account_id` matching the registered customer account key. One bad item does
not roll back other items; the response lists per-item outcomes.

Registration must be active (not unregistered). Max batch size is 250.

## Path parameters

- `financial_account_id` integer, required

## Headers

- `Idempotency-Key` string

## Request body

- PublicCustomerApiTransactionBatchIn
  - `transactions` PublicCustomerApiTransactionIn[], required — Batch of transactions to upsert. Max 250 items per request.
    - `external_trx_id` string, required — Customer idempotency key for this transaction (maps to source_id).
    - `account_id` string, required — Customer-supplied account key from registration; must match the path account.
    - `date` string, date-time, required — Pending/transaction date (required; used when posted_at is null).
    - `amount` union, required — Signed amount. Positive = debit (money in), negative = credit (money out).
      - number
      - string
    - `description` string, required — Transaction description. Empty string is allowed.
    - `is_posted` boolean, required — Whether the transaction is posted (true) or pending (false).
    - `posted_at` string, date-time, nullable — Posting date when known.
    - `counterparty` string, nullable — Payee/merchant name; mapped into Bank Match payee path.

## Response `200`

OK

- PublicCustomerApiTransactionBatchOut
  - `success` boolean, required
  - `results` PublicCustomerApiTransactionResultOut[], required
    - `external_trx_id` string, required
    - `status` string, required — created | updated | error
    - `id` integer, nullable
    - `error` object, nullable

## Other responses

- `404` — Not Found
- `409` — Conflict
- `422` — Unprocessable Content

---

[API](https://skmtc.net/dualentry/apis/dualentry-public-api.md) · [All operations](https://skmtc.net/dualentry/apis/dualentry-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/dualentry/dualentry-public-api/revisions/dcb8297898a2/schema)
