---
title: "Retrieve annual contribution tally"
method: GET
path: "/users/{userID}/annual-contribution-tally"
tags: ["Contribution Limits"]
---

# Retrieve annual contribution tally

`GET /users/{userID}/annual-contribution-tally`

## Request

- Base URL: `https://bo-api.drivewealth.io/back-office`
- URL: `https://bo-api.drivewealth.io/back-office/users/{userID}/annual-contribution-tally`
- Auth: HTTP bearer

Retrieves a user's contributions to date against the applicable tax-year limits, across all Traditional IRA, Roth IRA, and Trump Accounts they hold with DriveWealth.

## Path parameters

- `userID` string, required

## Query parameters

- `taxYear` integer

## Response `200`

Retrieving the contribution tally was successful.

- AnnualContributionTallyResponse: A user's contributions to date against the applicable tax-year limits. Both `ira` and `trumpAccount` are optional and either, or both, may be present depending on the accounts the user holds.
  - `userID` string: ![sensitive](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4NSIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDg1IDIwIj48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9ImdyYWQtU0VOU0lUSVZFIiB4MT0iMCIgeTE9IjAiIHgyPSIwIiB5Mj0iMSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2I0NTMwOSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzkyNDAwZSIvPjwvbGluZWFyR3JhZGllbnQ+PGZpbHRlciBpZD0iZ2xvdy1TRU5TSVRJVkUiIHg9Ii02MCUiIHk9Ii02MCUiIHdpZHRoPSIyMjAlIiBoZWlnaHQ9IjIyMCUiPjxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjIuMiIvPjwvZmlsdGVyPjwvZGVmcz48cmVjdCB4PSIxIiB5PSIxIiB3aWR0aD0iODMiIGhlaWdodD0iMTgiIHJ4PSI5IiBmaWxsPSIjOTI0MDBlIiBmaWx0ZXI9InVybCgjZ2xvdy1TRU5TSVRJVkUpIiBvcGFjaXR5PSIwLjU1Ii8+PHJlY3QgeD0iMC41IiB5PSIwLjUiIHdpZHRoPSI4NCIgaGVpZ2h0PSIxOSIgcng9IjEwIiBmaWxsPSJ1cmwoI2dyYWQtU0VOU0lUSVZFKSIgc3Ryb2tlPSIjOTI0MDBlIiBzdHJva2Utd2lkdGg9IjEiLz48cGF0aCBkPSJNMTAgNC44TDE0IDYuMlYxMEMxNCAxMi43IDEyLjMgMTQuNCAxMCAxNS40QzcuNyAxNC40IDYgMTIuNyA2IDEwVjYuMloiIGZpbGw9IiNmZmZmZmYiIGZpbHRlcj0idXJsKCNnbG93LVNFTlNJVElWRSkiIG9wYWNpdHk9IjAuNSIvPjxwYXRoIGQ9Ik0xMCA0LjhMMTQgNi4yVjEwQzE0IDEyLjcgMTIuMyAxNC40IDEwIDE1LjRDNy43IDE0LjQgNiAxMi43IDYgMTBWNi4yWiIgZmlsbD0iI2ZmZmZmZiIvPjx0ZXh0IHg9IjE4IiB5PSIxMy41IiBmb250LWZhbWlseT0iSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMCIgZm9udC13ZWlnaHQ9IjcwMCIgbGV0dGVyLXNwYWNpbmc9IjAuNiIgZmlsbD0iI2ZmZmZmZiI+U0VOU0lUSVZFPC90ZXh0Pjwvc3ZnPg==) The user the tally was computed for.
  - `taxYear` integer: The tax year the tally covers.
  - `ira` IraContributionTally: Combined rollup across all Traditional and Roth IRAs held with DriveWealth. The IRS enforces the limit on this combined total, not per account. Present only if the user holds an IRA.
    - `limitApplied` number: Ceiling in force, including the catch-up allowance if the user is 50 or over.
    - `cumulativeAmount` number: Total contributed across all IRAs for the tax year.
    - `remainingAllowance` number: Headroom left. Negative on an excess contribution.
    - `isLimitReached` boolean: Whether the combined ceiling has been met or exceeded.
    - `accounts` IraContributionAccountObj[]: Per-account breakdown of the rollup.
      - `accountID` string: ![sensitive](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4NSIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDg1IDIwIj48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9ImdyYWQtU0VOU0lUSVZFIiB4MT0iMCIgeTE9IjAiIHgyPSIwIiB5Mj0iMSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2I0NTMwOSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzkyNDAwZSIvPjwvbGluZWFyR3JhZGllbnQ+PGZpbHRlciBpZD0iZ2xvdy1TRU5TSVRJVkUiIHg9Ii02MCUiIHk9Ii02MCUiIHdpZHRoPSIyMjAlIiBoZWlnaHQ9IjIyMCUiPjxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjIuMiIvPjwvZmlsdGVyPjwvZGVmcz48cmVjdCB4PSIxIiB5PSIxIiB3aWR0aD0iODMiIGhlaWdodD0iMTgiIHJ4PSI5IiBmaWxsPSIjOTI0MDBlIiBmaWx0ZXI9InVybCgjZ2xvdy1TRU5TSVRJVkUpIiBvcGFjaXR5PSIwLjU1Ii8+PHJlY3QgeD0iMC41IiB5PSIwLjUiIHdpZHRoPSI4NCIgaGVpZ2h0PSIxOSIgcng9IjEwIiBmaWxsPSJ1cmwoI2dyYWQtU0VOU0lUSVZFKSIgc3Ryb2tlPSIjOTI0MDBlIiBzdHJva2Utd2lkdGg9IjEiLz48cGF0aCBkPSJNMTAgNC44TDE0IDYuMlYxMEMxNCAxMi43IDEyLjMgMTQuNCAxMCAxNS40QzcuNyAxNC40IDYgMTIuNyA2IDEwVjYuMloiIGZpbGw9IiNmZmZmZmYiIGZpbHRlcj0idXJsKCNnbG93LVNFTlNJVElWRSkiIG9wYWNpdHk9IjAuNSIvPjxwYXRoIGQ9Ik0xMCA0LjhMMTQgNi4yVjEwQzE0IDEyLjcgMTIuMyAxNC40IDEwIDE1LjRDNy43IDE0LjQgNiAxMi43IDYgMTBWNi4yWiIgZmlsbD0iI2ZmZmZmZiIvPjx0ZXh0IHg9IjE4IiB5PSIxMy41IiBmb250LWZhbWlseT0iSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMCIgZm9udC13ZWlnaHQ9IjcwMCIgbGV0dGVyLXNwYWNpbmc9IjAuNiIgZmlsbD0iI2ZmZmZmZiI+U0VOU0lUSVZFPC90ZXh0Pjwvc3ZnPg==) Identifier for the individual IRA.
      - `accountType` 'TRADITIONAL_IRA' | 'ROTH_IRA': TRADITIONAL_IRA or ROTH_IRA.
      - `amount` number: Contributed to this account for the tax year.
  - `trumpAccount` TrumpAccountContributionTally: Single Trump Account entry. No rollup, as a beneficiary may hold only one. Present only if the user holds one.
    - `accountID` string: ![sensitive](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4NSIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDg1IDIwIj48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9ImdyYWQtU0VOU0lUSVZFIiB4MT0iMCIgeTE9IjAiIHgyPSIwIiB5Mj0iMSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2I0NTMwOSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzkyNDAwZSIvPjwvbGluZWFyR3JhZGllbnQ+PGZpbHRlciBpZD0iZ2xvdy1TRU5TSVRJVkUiIHg9Ii02MCUiIHk9Ii02MCUiIHdpZHRoPSIyMjAlIiBoZWlnaHQ9IjIyMCUiPjxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjIuMiIvPjwvZmlsdGVyPjwvZGVmcz48cmVjdCB4PSIxIiB5PSIxIiB3aWR0aD0iODMiIGhlaWdodD0iMTgiIHJ4PSI5IiBmaWxsPSIjOTI0MDBlIiBmaWx0ZXI9InVybCgjZ2xvdy1TRU5TSVRJVkUpIiBvcGFjaXR5PSIwLjU1Ii8+PHJlY3QgeD0iMC41IiB5PSIwLjUiIHdpZHRoPSI4NCIgaGVpZ2h0PSIxOSIgcng9IjEwIiBmaWxsPSJ1cmwoI2dyYWQtU0VOU0lUSVZFKSIgc3Ryb2tlPSIjOTI0MDBlIiBzdHJva2Utd2lkdGg9IjEiLz48cGF0aCBkPSJNMTAgNC44TDE0IDYuMlYxMEMxNCAxMi43IDEyLjMgMTQuNCAxMCAxNS40QzcuNyAxNC40IDYgMTIuNyA2IDEwVjYuMloiIGZpbGw9IiNmZmZmZmYiIGZpbHRlcj0idXJsKCNnbG93LVNFTlNJVElWRSkiIG9wYWNpdHk9IjAuNSIvPjxwYXRoIGQ9Ik0xMCA0LjhMMTQgNi4yVjEwQzE0IDEyLjcgMTIuMyAxNC40IDEwIDE1LjRDNy43IDE0LjQgNiAxMi43IDYgMTBWNi4yWiIgZmlsbD0iI2ZmZmZmZiIvPjx0ZXh0IHg9IjE4IiB5PSIxMy41IiBmb250LWZhbWlseT0iSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZiIgZm9udC1zaXplPSIxMCIgZm9udC13ZWlnaHQ9IjcwMCIgbGV0dGVyLXNwYWNpbmc9IjAuNiIgZmlsbD0iI2ZmZmZmZiI+U0VOU0lUSVZFPC90ZXh0Pjwvc3ZnPg==) Identifier for the Trump Account.
    - `limitApplied` number: Ceiling in force for the tax year.
    - `cumulativeAmount` number: Total from counting sources only. Exempt sources are excluded.
    - `remainingAllowance` number: Headroom left against the account ceiling.
    - `isLimitReached` boolean: Whether the account ceiling has been met or exceeded.
    - `contributions` TrumpContributionLineItem[]: Every funding source with a nonzero amount, including exempt ones. Listed for transparency; exempt sources do not move `cumulativeAmount`.
      - `contributionType` 'CURRENT_YEAR' | 'PRIOR_YEAR' | 'POSTPONED_CONTRIBUTION' | 'REPAYMENT' | 'SEC_128_EMPLOYER' | 'OTHER_SOURCE' | 'QUALIFIED_ROLLOVER' | 'PILOT_PROGRAM' | 'QUALIFIED_GENERAL' | 'PROMOTIONAL_EARNING' | 'CORRECTIVE_DEPOSIT': The type of contribution deposit for retirement accounts. Note: Trump accounts have their own enums. Click [here](https://developer.drivewealth.com/apis/v1.82.0/reference/enums?isFramePreview=true#trump-contribution-types) for more details.
      - `amount` number: Contributed from this source for the tax year.
      - `countsTowardLimit` boolean: Whether this amount is included in `cumulativeAmount`.

## Other responses

- `400`: Bad request

---

[API](https://skmtc.dev/drivewealth/apis/money-movement-apis.md) - [All operations](https://skmtc.dev/drivewealth/apis/money-movement-apis/llms.txt) - [OpenAPI document](https://skmtc.dev/drivewealth/apis/money-movement-apis/revisions/c94fbd154054?raw)
