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:

FieldDescriptionFormat
dateDate that the revenue was depositedyyyy-MM-dd or yyyy-MM-dd'T'HH:mm:ss.SSSZ
amountTotal value of the incomeNumeric, with 2 decimal places
typeWhether the transaction was classified as Business or PersonalMust be one of the following: "PENDING", "BUSINESS", "NOT_BUSINESS"
descriptionDescription 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:

FieldDescriptionFormat
idId of the revenue recordNumeric
typeWhether the transaction was classified as Business or PersonalMust be one of the following: "BUSINESS", "NOT_BUSINESS"
dateDate that the revenue was earnedyyyy-MM-dd'T'HH:mm:ss.SSSZ
amountTotal value of the depositNumeric, with 2 decimal places
descriptionDescription of the incomeAny string
pendingRevenueIdId of the associated pending revenueNumeric

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!