---
title: "Payer soft signal that a bank transfer was sent (unauthenticated)"
method: POST
path: "/public/invoices/{token}/bank-transfer-initiated"
tags: ["Public"]
---

# Payer soft signal that a bank transfer was sent (unauthenticated)

`POST /public/invoices/{token}/bank-transfer-initiated`

## Request

- Base URL: `https://api.medianfi.com/api/v1`
- URL: `https://api.medianfi.com/api/v1/public/invoices/{token}/bank-transfer-initiated`
- Auth: none required

AR charge rail (Stage 5). UNAUTHENTICATED; rate-limited per-IP and per-token. Records ONE durable ach/pending invoice_payments row (amount = outstanding at signal time; repeated clicks are a no-op) so the merchant can see the claim. It NEVER marks the invoice paid and NEVER changes lifecycle status — the merchant reconciles the real deposit. The response is identical whether or not a row was written. Same uniform-404 token gate as the GET.

## Response `200`

{ acknowledged: true }

## Other responses

- `404`: Uniform not-found (same semantics as GET)
- `429`: Rate limited (per-IP or per-token)

---

[API](https://skmtc.dev/medianfi/apis/median-api.md) · [All operations](https://skmtc.dev/medianfi/apis/median-api/llms.txt) · [OpenAPI document](https://skmtc.dev/medianfi/apis/median-api/revisions/20090ea32b0d?raw)
