Personal Income (W-2)

Many individuals, including self-employed individuals, receive incomes from various streams, including W-2 or salary income. That income is not considered "business" income, and is treated differently with respect to taxes, since taxes are already withheld prior to the income being disbursed.

For folks with multiple streams of income, the W-2 income has a major impact on the tax that the individual will pay on their business income. And for folks with only a single W-2 income source, the W-2 withholding is often not an accurate indicator of what the individual will actually owe.

In both of the above cases, the Hurdlr Income Streams API has you covered.

1. How it works

The Hurdlr API is able to ingest data from many different income streams, enabling you to easily provide your users with accurate tax calculations, tax filing, and other accounting functionality.

If you are not using Hurdlr's Plaid integration, in order for the Hurdlr API to ingest your user's non-business income data, you can simply push each income record, as it is earned, to the Hurdlr API. The Hurdlr API will take care of the rest.

2. Adding non-business income

If you are leveraging the Plaid integration for tracking income, please see the instructions on how to classify income transactions as personal income.

For any other income streams from sources outside of the Plaid integration, you can simply add that income by making a POST call to the Hurdlr API.

You should update the following fields on a new JSON object when adding business income:

Field

Description

Format

date

Date that the revenue was deposited

yyyy-MM-dd or yyyy-MM-dd'T'HH:mm:ss.SSSZ

amount

Total value of the income

Numeric, with 2 decimal places

type

Whether the transaction was classified as Business or Personal

Must be one of the following: "PENDING", "BUSINESS", "NOT_BUSINESS"

description

Description of the income. Optional.

Any string

To add the income, simply POST the income's JSON object to the /revenue endpoint:

curl \
  --request POST \
  --url https://sandbox.hurdlr.com/rest/v5/revenue/revenue \
  --header 'Authorization: Bearer ${access_token}' \
  --header 'Content-Type: application/json' \
  --data '{
    "revenue": {
      "date": "2021-07-30",
      "amount": 500.00,
      "type": "NOT_BUSINESS",
      "description": "Design implementation"
    }
  }'

3. Getting personal or non-business income

All business or non-business income can be accessed in the list of revenues, via the /revenues endpoint:

curl \
  --request GET \
  --url https://sandbox.hurdlr.com/rest/v5/revenue/revenues?lastUpdatedDate=1970-01-01 \
  --header 'Authorization: Bearer ${access_token}' \
  --header 'Content-Type: application/json' \

The response from GET /revenues contains an array of the user's revenues:

{
  "data": [
    {
      "id": 760731,
      "type": "NOT_BUSINESS",
      "date": "2021-07-30T20:58:19.000Z",
      "amount": 500.00,
      "description": "Payment from full-time job",
      "lastUpdatedDate": "2021-09-17T19:35:12.000Z"
    }
  ],
  "lastUpdatedDate": "2021-09-17T19:25:19.236Z"
}

On each revenue, you may find the following attributes to be of particular interest, especially the type field:

Field

Description

Format

id

Id of the revenue record

Numeric

type

Whether the transaction was classified as Business or Personal

Must be one of the following: "BUSINESS", "NOT_BUSINESS"

date

Date that the revenue was earned

yyyy-MM-dd'T'HH:mm:ss.SSSZ

amount

Total value of the deposit

Numeric, with 2 decimal places

description

Description of the income

Any string

pendingRevenueId

Id of the associated pending revenue

Numeric

To look at only the personal income records, you will want to filter the response to only records with type equal to "PERSONAL".

4. Next steps

Once you have pushed your user's non-business income into the Hurdlr API, you are ready to start pulling tax estimates or process a tax filing!