Tax Remittance

Pay Canadian federal and provincial business taxes programmatically — payroll source deductions, GST/HST, corporate tax, and more — with a single API call.

Overview

VoPay's Tax Remittance capability lets you remit business taxes to Canadian federal and provincial tax authorities directly from your VoPay account. One endpoint creates the remittance; VoPay handles submission to the tax authority through its banking partner's government remittance service, and reports the outcome back through transaction statuses and webhooks.

Supported tax programs span four authorities:

  • Canada Revenue Agency (CRA) — payroll source deductions, corporate income tax, GST/HST returns
  • Revenu Québec — payroll source deductions, combined GST/HST–QST returns, corporate income tax, support payments
  • Ontario — Employer Health Tax, Family Responsibility Office payments
  • Nova Scotia — Workers' Compensation Board premiums
📘

Availability

Tax remittance is available to Canadian accounts, in CAD, and must be enabled on your account. Contact your VoPay integration specialist to activate it.

How It Works

  1. Create the remittance. Call POST /remittance/create with the tax type, amount, tax account number, and the type-specific filing details. VoPay validates your available balance — initiating a pre-funding transaction first if your account is configured for it.
  2. Approval, if configured. If your account uses transaction approval workflows, the remittance waits in pending approval and your designated approvers are notified by email.
  3. Daily submission. Once per business day, pending remittances are collected into a batch and submitted to the tax authority through VoPay's banking partner. Your transaction moves to in progress.
  4. Result. The authority's response is processed the same business day: accepted remittances become successful; rejected ones become failed, with the authority's error code and description attached. Status webhooks fire at every step.

Creating a Tax Remittance

POST /api/v2/remittance/createAPI reference

Request Parameters

ParameterDescription
AccountID, Key, SignatureRequiredStandard authentication — see the Authentication Guidelines.
TaxRemittanceTypeRequiredThe tax program to remit to — one of the codes in the table below.
AmountRequiredThe total amount of the remittance payment, in CAD.
TaxAccountNumberRequiredYour account number with the tax authority (e.g. a CRA program account such as 123456789RP0001).
PayerNameRequiredThe legal name of the payer.
TaxPeriodEndDateRequiredThe end date of the tax period being remitted for (YYYY-MM-DD).
DetailsRequired*A JSON-formatted string with the filing details for the tax type — see Filing Details by Tax Type below. *Required for most tax types; two types need none.
ClientAccountIDOptionalThe client account the remittance is made on behalf of. Defaults to your primary client account.
WalletIDOptionalThe client account wallet to fund from. Defaults to the primary CAD wallet.
IdempotencyKeyOptionalA unique key so retries of the same request are recognized and rejected.
ClientReferenceNumberOptionalYour reference number for the transaction.
NotesOptionalA note to associate with the transaction.
GLCodeOptionalA general ledger code for your reconciliation.

Example Request

curl -X POST 'https://earthnode.vopay.com/api/v2/remittance/create' \
  -d 'AccountID=YOUR_ACCOUNT_ID' \
  -d 'Key=YOUR_API_KEY' \
  -d 'Signature=YOUR_GENERATED_SIGNATURE' \
  -d 'TaxRemittanceType=FED_GST_HST_RETURN' \
  -d 'Amount=8450.00' \
  -d 'TaxAccountNumber=123456789RT0001' \
  -d 'PayerName=Acme Widgets Inc.' \
  -d 'TaxPeriodEndDate=2026-06-30' \
  -d 'ClientReferenceNumber=GST-Q2-2026' \
  -d 'Details={"ReportingPeriodFrom":"2026-04-01","101_SalesAndOtherRevenue":"250000.00","105_TotalGstHstAndAdjustments":"12500.00","108_TotalItcsAndAdjustments":"4050.00","110_InstalmentsAndPayments":"0.00","111_Rebates":"0.00","205_GstHstOnRealProperty":"0.00","405_OtherGstHstSelfAssessed":"0.00","135_TotalNewHousingRebates":"0.00","136_DeductionForPensionRebate":"0.00"}'

Example Response

{
  "Success": true,
  "ErrorMessage": "",
  "TransactionID": "1234567"
}
🚧

Flagged transactions

If the transaction trips a fraud or duplicate check, the response includes a Flagged field explaining why. Flagged transactions must be confirmed via the /account/transaction/confirm endpoint before they proceed.

Supported Tax Types

CodeAuthorityPayment
FED_PAYROLL_THRESHOLD_1CRAPayroll source deductions — accelerated remitter, Threshold 1
FED_PAYROLL_THRESHOLD_2CRAPayroll source deductions — accelerated remitter, Threshold 2
FED_PAYROLL_REGULAR_OR_QUARTERLYCRAPayroll source deductions — regular or quarterly remitter
FED_CORPORATE_TAXCRACorporation income tax
FED_GST_HST_RETURNCRAGST/HST return with payment
ON_EMPLOYER_HEALTH_TAXOntarioEmployer Health Tax
ON_FAMILY_RESPONSIBILITY_OFFICEOntarioFamily Responsibility Office payment
QC_PAYROLL_WEEKLYRevenu QuébecPayroll source deductions — weekly remitter
QC_PAYROLL_TWICE_MONTHLYRevenu QuébecPayroll source deductions — twice-monthly remitter
QC_PAYROLL_MONTHLYRevenu QuébecPayroll source deductions — monthly remitter
QC_PAYROLL_QUARTERLYRevenu QuébecPayroll source deductions — quarterly remitter
QC_GST_HST_QST_COMBINED_RETURNRevenu QuébecCombined GST/HST and QST return with payment
QC_CORP_INCOME_TAX_REMITTANCERevenu QuébecCorporate income tax remittance
QC_SUPPORT_PAYMENTS_COLLECTIONRevenu QuébecSupport payments collection
WCB_NOVA_SCOTIA_PREMIUMNova ScotiaWorkers' Compensation Board premium

Filing Details by Tax Type

Most tax types require filing details alongside the payment — the same figures you would report on the corresponding paper or online filing. Pass them in the Details parameter as a JSON-formatted string. All listed fields are required for their tax type, and unexpected fields are rejected.

CRA payroll source deductions

Applies to FED_PAYROLL_THRESHOLD_1, FED_PAYROLL_THRESHOLD_2, and FED_PAYROLL_REGULAR_OR_QUARTERLY:

FieldTypeDescription
GrossPeriodPayrollAmountGross payroll for the remitting period.
NumberOfEmployeesStringNumber of employees in the last pay period.

CRA corporation income tax — FED_CORPORATE_TAX

FieldTypeDescription
AmountOwingAmountPayment on an existing balance owing.
InterimAmountInterim (instalment) payment.
PaymentOnFilingAmountPayment on filing.

CRA GST/HST return — FED_GST_HST_RETURN

Field names are prefixed with the corresponding GST/HST return line number:

FieldTypeDescription
ReportingPeriodFromStringStart date of the reporting period (YYYY-MM-DD). The end date is taken from TaxPeriodEndDate.
101_SalesAndOtherRevenueAmountLine 101 — sales and other revenue.
105_TotalGstHstAndAdjustmentsAmountLine 105 — total GST/HST and adjustments for the period.
108_TotalItcsAndAdjustmentsAmountLine 108 — total ITCs and adjustments.
110_InstalmentsAndPaymentsAmountLine 110 — instalments and other annual filer payments.
111_RebatesAmountLine 111 — rebates.
205_GstHstOnRealPropertyAmountLine 205 — GST/HST due on the purchase of real property.
405_OtherGstHstSelfAssessedAmountLine 405 — other GST/HST to be self-assessed.
135_TotalNewHousingRebatesAmountLine 135 — total new housing rebates.
136_DeductionForPensionRebateAmountLine 136 — deduction for pension entity rebate.

Ontario Employer Health Tax — ON_EMPLOYER_HEALTH_TAX

FieldTypeDescription
TaxableOntarioRemunerationAmountTaxable Ontario remuneration for the period.
TaxRateAmountApplicable tax rate.
TaxDueAmountTax due for the period.

Revenu Québec payroll source deductions

Applies to QC_PAYROLL_WEEKLY, QC_PAYROLL_TWICE_MONTHLY, QC_PAYROLL_MONTHLY, and QC_PAYROLL_QUARTERLY:

FieldTypeDescription
IncomeTaxWithheldAmountQuébec income tax withheld.
QppContributionAmountQPP contributions.
HealthServiceFundAmountHealth services fund contribution.
QpipContributionAmountQPIP premiums.
CnesstContributionAmountCNESST contribution.

Revenu Québec combined GST/HST–QST return — QC_GST_HST_QST_COMBINED_RETURN

FieldTypeDescription
GstAccountNumberStringGST account number (the QST account number goes in TaxAccountNumber).
GstPeriodFromStringStart date of the GST reporting period (YYYY-MM-DD).
GstPeriodToStringEnd date of the GST reporting period (YYYY-MM-DD).
QstPeriodFromStringStart date of the QST reporting period (YYYY-MM-DD).
101_SalesAndOtherRevenueAmountLine 101 — sales and other revenue.
105_TotalGstHstAndAdjustmentsAmountLine 105 — total GST/HST and adjustments.
108_TotalItcsAndAdjustmentsAmountLine 108 — total ITCs and adjustments.
110_InstalmentsAndPaymentsAmountLine 110 — instalments and payments.
111_RebatesAmountLine 111 — rebates.
205_GstHstOnRealPropertyAmountLine 205 — GST/HST on real property.
208_ItrsPayableAndAdjustmentsAmountLine 208 — ITRs payable and adjustments.
210_QstInstalmentsAmountLine 210 — QST instalments.
211_OtherQstRebatesAmountLine 211 — other QST rebates.
135_TotalNewHousingRebatesAmountLine 135 — total new housing rebates.

Revenu Québec corporate income tax — QC_CORP_INCOME_TAX_REMITTANCE

FieldTypeDescription
FiscalYearBeginDateStringStart date of the fiscal year (YYYY-MM-DD). The end date is taken from TaxPeriodEndDate.

WCB Nova Scotia premium — WCB_NOVA_SCOTIA_PREMIUM

FieldTypeDescription
TotalAssessablePayrollAmountTotal assessable payroll for the period.
NumberOfEmployeesStringNumber of employees.
PaymentFrequencyStringPayment frequency.

No filing details required

QC_SUPPORT_PAYMENTS_COLLECTION and ON_FAMILY_RESPONSIBILITY_OFFICE require no Details parameter — the payment, tax account number, and period are sufficient.

Statuses, Timing & Webhooks

Transaction Statuses

StatusMeaning
pending approvalWaiting on your internal approvers (only if approval workflows are configured).
waitingWaiting on the pre-funding transaction to settle.
pendingAccepted and queued for the next daily submission.
in progressBatched and submitted to the tax authority.
successfulAccepted by the tax authority.
failedRejected by the tax authority — the failure reason includes the authority's error code and description.

Timing

Pending remittances are batched and submitted once per business day (afternoon, Pacific Time), and the authority's responses are processed the same business day. Remittances created after the daily cutoff are included in the next business day's batch.

Webhooks

Every status change fires a transaction status webhook to your configured endpoint — the same mechanism used across the VoPay platform. See the webhook documentation for payloads and retry behaviour.


Did this page help you?