---
title: "Confirm Income Sources"
method: POST
path: "/api/income/confirm"
tags: ["Income"]
---

# Confirm Income Sources

`POST /api/income/confirm`

## Request

- Base URL: `https://api.earmarkiq.app` (the document declares no server; this is the origin it was published from)
- URL: `https://api.earmarkiq.app/api/income/confirm`
- Auth: HTTP bearer

Save user-confirmed income sources. Replaces any existing confirmed sources.

Stores at most one primary. Shipped App Store clients pre-tick every
salary candidate, so a payload with several flagged rows is normal
traffic, not an error: the highest amount keeps the flag (payload order
on a tie), the rest are stored un-flagged, and the response shows what
was stored.

## Request body

- IncomeConfirmRequest
  - `sources` IncomeSourceCreate[], required
    - `label` string, required
    - `income_type` string, required
    - `amount` union, required
      - number
      - string
    - `source_description` string, nullable
    - `account_id` string, nullable
    - `frequency` string
    - `is_primary_salary` boolean

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/earmarkiq/apis/earmark-api.md) · [All operations](https://skmtc.dev/earmarkiq/apis/earmark-api/llms.txt) · [OpenAPI document](https://skmtc.dev/earmarkiq/apis/earmark-api/revisions/4a2c41907105?raw)
