---
title: "Confirm a bank-match"
method: POST
path: "/public/v2/bank-match/matches/"
tags: ["Bank Match"]
---

# Confirm a bank-match

`POST /public/v2/bank-match/matches/`

Record that bank-feed row(s) correspond to DualEntry transaction(s)/entry(s).
On success each row's `matching_status` flips to `matched`, the pairing shows
up in the DualEntry reconciliation view, and the response returns the
`match_group_id`.

Pass singular fields for a 1:1 match, or `financial_transaction_ids` plus
`transaction_ids`/`entry_ids` for an M:N match.

Constraints (validated server-side and reported as 400 on failure):

- All bank-feed rows must be on the same financial account as the DualEntry
  targets' bank/credit-card entries.
- Amounts must reconcile (sum of bank amounts equals net entry amount) in a
  single currency.
- All bank-feed rows must share the same sign; balance alone is not enough.
- No item may already be part of another match (call `/unmatches/` first
  to redo a pairing).

This endpoint kicks a fresh suggestion run for the org after a successful match
so future suggestions reflect the new state.

## Request body

- PublicBankMatchCreateSchemaIn — Body for `POST /matches/`. Pair bank-feed row(s) with DualEntry target(s). Use the singular fields for a 1:1 match, or the plural fields (`financial_transaction_ids` + `transaction_ids`/`entry_ids`) for an M:N match. Don't mix a singular field with its plural counterpart.
  - `financial_transaction_id` integer, nullable — ID of the bank-feed row to match (from `/bank-transactions/`).
  - `transaction_id` integer, nullable — DualEntry transaction id to match against. Pass this **or** `entry_id`, not both.
  - `entry_id` integer, nullable — DualEntry entry id to match against (use for partial matches like a single line of a journal entry). Pass this **or** `transaction_id`.
  - `financial_transaction_ids` integer[], nullable — M:N: bank-feed row ids to match as one group. Same account and same sign.
  - `transaction_ids` integer[], nullable — M:N: DualEntry transaction ids for the group. May be combined with `entry_ids`.
  - `entry_ids` integer[], nullable — M:N: DualEntry entry ids for the group. May be combined with `transaction_ids`.

## Response `200`

OK

- PublicBankMatchSuccessSchema
  - `success` true
  - `errors` object
  - `match_group_id` integer, nullable

## Other responses

- `400` — Bad Request
- `404` — Not Found

---

[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/versions/525a590a98f8/schema)
