Canada

Hurdlr gladly supports Canadian use cases, including all of Hurdlr's APIs and embeddable user interfaces (SDKs). Whether your user base resides solely in Canada or you're looking at adding Canadian support to your future roadmap without dedicating development resources, Hurdlr has you covered.

Some of the key implementation differences for Canada are outlined in the sections below.

1. Embeddable user interfaces

If you want to get your Canadian-focused product up and running quickly with proven expense tracking, invoicing, financial reporting and more, then the Embeddable User Interface is your best bet.

Hurdlr's API team can quickly customize the UI to match your branding. Please follow the instructions on customizing the embedded UI to match your branding.

Some examples of customized experiences are shown below:

📘

SDK vs. API

Note: The SDK (embeddable user interface) uses the Hurdlr API behind the scenes, so both the SDK and API can be used interchangeably depending on the desired use cases, without users knowing the difference. For example, you could embed the Hurdlr SDK's tax dashboard UI into your app (in less than a day), and then display a more concise version of that data in your own custom home dashboard by pulling that tax data from the Hurdlr API.

2. Tax estimates

Canadian users have to pay quarterly installments to the CRA, and Hurdlr's Tax Calculations API makes it easy for you to provide your users with the income tax estimates needed to pay those installments.

Your users' tax profiles are formatted specifically for providing accurate Canadian estimates, including the following Canada-specific fields:

Field

Description

Format

federalFilingStatus

The marital status of the user

Must be one of the following: "SINGLE", "MARRIED"

taxState

Two-letter province abbreviation

String

annualW2Income

Estimate of the user's annual wage total (aka T4 Income), before any tax withholdings

Numeric, with 2 decimal places

spouseIncome

Estimate of the user's spouse's annual wage total (aka T4 Income), before any tax withholdings

Numeric, with 2 decimal places

numDependents

Number of dependents

Numeric

dependentIncome

Estimate of the user's dependents' income

Numeric, with 2 decimal places

vehicleBusinessPercent

The user's estimated percentage of driving that was for business purposes (measured in km)

Numeric, with 2 decimal places

autoSalesTax

Whether the user wants the Hurdlr API to automatically calculate sales tax, based on the province that each expense originated in. This is useful for calculating the input tax credit, which will be applied against any sales tax owed on business income.

Boolean

Additionally, the tax estimates themselves are returned with different attributes that are specific to how taxes are calculated in Canada. The response from GET /vitals contains a Canada-specific JSON object, with a vast amount of useful tax information as follows:

{
  "year": 2021,
  "t4Income": 100000,
  "t4FederalMarginalTaxRate": 26,
  "t4StateMarginalTaxRate": 10,
  "spouseIncome": 0,
  "dependentIncome": 0,
  "cppContributionAmount": 1546.35,
  "cppDeductionAmount": 773.17,
  "qppContributionAmount": 0,
  "qppDeductionAmount": 0,
  "businessIncome": 31873.34,
  "expenses": 21015,
  "deductibleNonMileageExpenses": 20014.27,
  "deductibleVehicleExpenses": 0,
  "taxableNetIncome": 10744.41,
  "overallTax": 3865.94,
  "overallTaxSavings": 7505.55,
  "overallTaxUnpaid": 0,
  "federalTaxUnpaid": 0,
  "stateTaxUnpaid": 0,
  "annualPaymentDueDate": "2022-06-15 00:00:00.000",
  "afterTaxIncome": 6992.4,
  "federalTax": {
    "taxableIncome": 10744.41,
    "marginalTaxRate": 26,
    "taxCredit": 115.98,
    "taxAmountWithoutTaxCredit": 2793.55,
    "preCreditEffectiveTaxRate": 26,
    "effectiveTaxRateBeforeWithholding": 24.92,
    "taxBeforeWithholding": 2677.57,
    "withholdingAppliedToTax": 0,
    "taxAmount": 2677.57,
    "effectiveTaxRate": 24.92
  },
  "stateTax": {
    "taxableIncome": 10744.41,
    "marginalTaxRate": 10,
    "taxCredit": 0,
    "taxAmountWithoutTaxCredit": 1074.44,
    "preCreditEffectiveTaxRate": 10,
    "effectiveTaxRateBeforeWithholding": 10,
    "taxBeforeWithholding": 1074.44,
    "withholdingAppliedToTax": 0,
    "taxAmount": 1074.44,
    "effectiveTaxRate": 10
  },
  "salesTax": {
    "revenueSalesTax": 1114.66,
    "expenseSalesTax": 1000.73,
    "netSalesTax": 113.93
  },
  "quarterlyEstimates": {
    "q1": {
      "dueDate": "2021-03-15 00:00:00.000",
      "federalTax": {
        "taxOwed": 669.39,
        "taxPaid": 800,
        "paymentsAllocatedFromPast": 0,
        "paymentsRolledOverToFuture": true,
        "paymentsBalance": -130.61
      },
      "stateTax": {
        "taxOwed": 268.61,
        "taxPaid": 50,
        "paymentsAllocatedFromPast": 0,
        "paymentsRolledOverToFuture": true,
        "paymentsBalance": 218.61
      }
    },
    "q2": {
      "dueDate": "2021-06-15 00:00:00.000",
      "federalTax": {
        "taxOwed": 446.35,
        "taxPaid": 500,
        "paymentsAllocatedFromPast": -130.61,
        "paymentsRolledOverToFuture": true,
        "paymentsBalance": -184.26
      },
      "stateTax": {
        "taxOwed": 179.11,
        "taxPaid": 0,
        "paymentsAllocatedFromPast": 218.61,
        "paymentsRolledOverToFuture": false,
        "paymentsBalance": 397.72
      }
    },
    "q3": {
      "dueDate": "2021-09-15 00:00:00.000",
      "federalTax": {
        "taxOwed": 669.39,
        "taxPaid": 200,
        "paymentsAllocatedFromPast": -184.26,
        "paymentsRolledOverToFuture": true,
        "paymentsBalance": 285.13
      },
      "stateTax": {
        "taxOwed": 268.61,
        "taxPaid": 0,
        "paymentsAllocatedFromPast": 0,
        "paymentsRolledOverToFuture": false,
        "paymentsBalance": 268.61
      }
    },
    "q4": {
      "dueDate": "2021-12-15 00:00:00.000",
      "federalTax": {
        "taxOwed": 892.44,
        "taxPaid": 332,
        "paymentsAllocatedFromPast": 285.13,
        "paymentsRolledOverToFuture": false,
        "paymentsBalance": 845.57
      },
      "stateTax": {
        "taxOwed": 358.11,
        "taxPaid": 0,
        "paymentsAllocatedFromPast": 0,
        "paymentsRolledOverToFuture": false,
        "paymentsBalance": 358.11
      }
    }
  }
}

📘

Deciding what information to display

The art of building great FinTech apps includes figuring out how to display complex financial data in a way that a given user base can easily digest it. Hurdlr has iterated its tax UX through its own apps, with over 30 versions displayed to 700k+ users. Our team is willing and excited to share our proven UX learnings with you, fast forwarding you through your iteration process and ensuring that your first tax UX is a solid one.

Reach out to our API team at [email protected], and our team will advise you on which attributes to display and how to do so clearly/concisely.

3. Tax reporting

The T2125 is generally the most complex portion of any Canadian self-employed individual's tax filing, but Hurdlr makes generating this form a breeze. A T2125 has to be filed for each sole proprietorship (line of business) that the user has participated in. Take a look at our Canada Tax Reporting docs to learn how to easily generate this tax report for each of your users' businesses.

4. Accounting

As explained in our Accounting docs, Hurdlr's "Invisible" Double-Entry Accounting is enabled in the background, tracking the proper accrual basis transactions in each user's General Ledger. It's up to you whether you want to display this to your users.

Notably, for Canadian users, the Chart of Accounts includes an asset account for "Sales Tax Credit" as well as a liability account for "Sales Tax Payable". These accounts are used to store the sales tax paid on expenses as well as the sales tax owed on income, respectively. Tracking these values allows Hurdlr's tax estimates to include the input tax credits that the CRA extends to businesses.

And, if you use the autoSalesTax flag when setting up the user's tax profile, that tracking will occur automatically.