---
title: "Payouts to the bank in a window"
method: POST
path: "/finance/payments"
tags: ["Finance"]
---

# Payouts to the bank in a window

`POST /finance/payments`

Payments TikTok made to the shop's bank account, newest first, with the settled amount before exchange, the amount that reached the bank after exchange, and the rate between them. Windowed by payment creation date (UTC). Not available for shops in Southeast Asian markets.

## Request body

- FinancePaymentsRequest — POST /finance/payments request body — payouts in a window.
  - `start_date` string, date, nullable — Inclusive payout-creation window start (UTC). Defaults to 29 days before ``end_date``.
  - `end_date` string, date, nullable — Inclusive window end (UTC). Defaults to yesterday.
  - `status` 'PAID' | 'PROCESSING' | 'FAILED', nullable
  - `limit` integer — Page size.
  - `offset` integer — Page offset; narrow the window instead of paging deeper.

## Response `200`

Successful Response

- FinancePaymentsResponse — Payouts for one shop in a window, newest first.
  - `shop_id` integer, required
  - `tts_shop_id` string, required
  - `start_date` string, required
  - `end_date` string, required
  - `pagination` PublicApiCorePaginationPaginationMeta, required — Pagination metadata returned in responses.
    - `total_count` integer, required
    - `page` integer, required
    - `page_size` integer, required
    - `total_pages` integer, required
  - `data` FinancePaymentOut[], required
    - `payment_id` string, required
    - `create_time` string, required
    - `paid_time` string, nullable
    - `status` union
      - 'PAID' | 'PROCESSING' | 'FAILED'
      - string
    - `amount` number, nullable — What reached the bank, after exchange.
    - `currency` string, nullable
    - `settlement_amount` number, nullable — What was settled, before exchange.
    - `settlement_currency` string, nullable
    - `exchange_rate` number, nullable — settlement -> amount; 1 when no exchange.
    - `bank_account_tail` string, nullable — Last characters of the masked account.
  - `data_status` FinanceDataStatus, required — Freshness and reachability of this shop's finance statements. ``scope_missing`` means the shop's TikTok grant refused the finance scope on the last sync; the fix is to re-authorize, not to retry.
    - `state` union, required — Latest statements-sync status: never_run | ok | empty | partial | scope_missing | unsupported | failed.
      - 'never_run' | 'ok' | 'empty' | 'partial' | 'scope_missing' | 'unsupported' | 'failed'
      - string
    - `last_synced_at` string, nullable — ISO timestamp of the last completed statements window.
    - `covered_from` string, nullable — ISO timestamp where the unbroken run of synced windows begins; nothing before it is known.
    - `covered_until` string, nullable — ISO timestamp up to which data is known to be complete (exclusive); the end of that same unbroken run.
    - `transactions_backlog` integer — Statements whose line items have not fully landed yet.

## Other responses

- `422` — Validation Error

## Changes

> 29 revisions in range; 1 not diffed.

- **2026-09-24** `8640294d0f3d` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/reacherapp/apis/reacher-data-api/changes/finance/payments/post.md)

---

[API](https://skmtc.dev/reacherapp/apis/reacher-data-api.md) · [All operations](https://skmtc.dev/reacherapp/apis/reacher-data-api/llms.txt) · [OpenAPI document](https://skmtc.dev/reacherapp/apis/reacher-data-api/revisions/881910053958?raw)
