Why partial refunds break reconciliation

The core problem: your accounting software, your processor dashboard, and the CRA each track this transaction differently. When you issue a partial refund in your processor dashboard, it shows up as a credit on the payment record. Your accounting software may or may not pull that through correctly depending on integration quality. And the tax entry โ€” if it was already recorded on the original invoice โ€” may not adjust automatically.

The result: your GST/HST collected figure is wrong. You either over-remit (because you refunded tax but did not record the adjustment) or under-remit (because you refunded the item price but left the tax entry untouched).

The partial capture window is short

If you authorized a card but have not captured yet, you have the cleanest possible correction path. Cancel the authorization entirely and re-run it for the correct amount, or partially capture only what was actually fulfilled. No refund fee, no processing cost on the uncaptured portion, no negative balance risk.

This window is typically 7 days on Visa and up to 30 days on some Mastercard categories. After that, the auth auto-captures or expires, and you are dealing with refunds instead.

Helcim and Stripe both let you do partial captures via dashboard or API. Shopify Payments supports partial capture when you fulfill a subset of line items. Moneris supports pre-auth completion for a reduced amount โ€” confirm timing with your account team.

How Canadian processors handle partial refund fees

Stripe Canada: On a partial refund, Stripe returns the interchange-rate portion but keeps the flat $0.30 fee โ€” even on full refunds. A partial refund on a $150 charge returns (refund_amount / original_amount ร— interchange_rate) of the fee. On a $50 partial refund of a $150 charge at 2.9%: you get back approximately $0.97 in interchange. The $0.30 flat fee is gone permanently.

Helcim: Interchange-plus pricing means refunds also follow interchange. The markup is not returned on refunds, but because Helcim's markup is lower, the loss is proportionally smaller. No flat fee on most transactions.

Shopify Payments: Same economics as Stripe under the hood (Stripe-powered). Partial refunds return interchange-proportional fees but not flat fees. Refunds are processed from your Shopify Payments balance โ€” if your balance is low, it may pull from your bank account or queue.

Moneris: Refund fee structure varies by merchant agreement. Some Moneris accounts have a per-refund fee of $0.10โ€“$0.25. Check your statement or merchant services agreement.

Square: Square does not charge a refund fee, but the original processing fee is not returned on partial or full refunds. The math is the same: you lose the original fee regardless of refund amount.

Province-specific tax issues to know

Ontario, Atlantic Canada (HST provinces): HST is a single combined tax collected and remitted federally. On a partial refund, the tax adjustment is straightforward: refund the HST-inclusive portion. Your ITC (input tax credit) claim on the purchase side adjusts when you file. If already remitted, file an adjustment with a corrected GST/HST return (Form GST/HST 189 for non-registrants, or a line 104 adjustment on your next return).

British Columbia (PST separate from GST): BC PST refunds are handled separately. If you collected PST and are refunding part of the sale, you must issue a credit note and reduce your PST remittance accordingly. The process for correcting an already-remitted period involves a PST Voluntary Disclosure or amended return to the BC Ministry of Finance โ€” not CRA.

Quebec (QST separate from GST): QST is administered by Revenu Quรฉbec, not CRA. On partial refunds, you issue a credit note that adjusts both the GST and QST amounts. If you have already remitted, the adjustment is claimed on the next QST return as a deduction. Do not merge the two โ€” GST and QST adjustments go to different agencies.

Alberta, NWT, Nunavut, Yukon (GST only): Simplest case. Refund the GST-proportional amount. Adjust on your next GST return.

Where the accounting software usually fails

Most integrations (Shopify โ†’ QuickBooks, Stripe โ†’ Xero) sync refunds as a reversal of the original transaction. If the original transaction included tax on the full amount, the sync may not calculate the partial-refund tax amount correctly โ€” especially if the refund is for shipping only (which may be zero-rated or differently taxed) rather than the product.

Always check: after the refund syncs, is the GST/HST collected figure on your balance sheet what you actually collected? If not, the reconciliation is already broken and needs a manual journal entry before you file.

Bottom line

The correction path that seems easiest โ€” issue a quick partial refund and move on โ€” is almost always the one that creates a tax reconciliation problem six months later. Take 10 minutes to verify the tax impact before clicking refund. It is significantly cheaper than an amended return or a bookkeeper cleaning up a year of mis-matched tax entries.