> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developer.fortresstech.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer.fortresstech.io/_mcp/server.

# Incomes Overview

> Overview of the Incomes API endpoints and functionality

The Incomes API returns the income each applicant reported on the affordable income checklist of an application or certification: one record per income line, with its annual amount, pay rate and frequency, and, for jobs, the employer.

## Key Concepts

### One record per income line

Employment is reported as pay components: a job's base pay and its overtime are two `JOB` records, told apart by `payComponent` (`BASE_PAY`, `OVERTIME`, `TIPS`, `BONUSES`, `ANTICIPATED_PAY_INCREASE`). So the number of `JOB` records is not the number of jobs. Employment the applicant marked as self-employment or military pay is a `SELF_EMPLOYMENT` or `MILITARY_PAY` record. Social Security is one `SOCIAL_SECURITY` record. `lineNumber` is the position in the checklist list the line came from. `annualAmount` is the annual gross amount entered for the line.

### Per certification

Applicants re-report income at each certification, so the same income appears once per certification. Lines reported on an application before it has a certification have no `certificationId`; read them by `applicationId`. Filter by `certificationId` or `applicationId` to read one set, e.g. `GET /v1/incomes?filter=applicationId=<id>` or `GET /v1/applications/{applicationId}/incomes`.

### Employer details

The checklist does not store an employer per line. The applicant's current job is attached only where the match is unambiguous: to the one base-pay `JOB` line when the checklist has exactly one (an Ohio employment-type line counts as base pay), or to a legacy employment total. Overtime, tips, bonuses, anticipated-increase and untyped lines, and the `JOB` lines of a checklist with several base-pay lines, have no employer details. The applicant's previous job is a `RECENTLY_ENDED_JOB` record with `startDate` and `endDate` and no amount.

### Not yet available

* `militaryBranch` and `payer` are declared but empty: Fortress keeps them only in the raw portal answers.
* Income of minors is not included.

## Available Endpoints

| Endpoint                                                    | Summary      | Method |
| ----------------------------------------------------------- | ------------ | :----: |
| [`/incomes`](/api-reference/incomes/list-incomes)           | List Incomes |   GET  |
| [`/incomes/{incomeId}`](/api-reference/incomes/read-income) | Read Income  |   GET  |