This document is work in progress. Please talk with your accountant to make sure that your implementation complies with your local regulations.
Taxable Memberships for Professional Associations
In Canada, memberships can be taxable (not always, depends on many criteria).
The membership is usually taxed with the tax rate of the main address (home) of the person. From a technical tax perspective, the place of supply for online services is the location where the member would typically access the services. If it was a business's membership in an association, then it would be the organization's address. If the membership services were for offline things like swimming and yoga at a community centre, then the place of supply would be the community centre, and the tax jurisdiction would be based on its address rather the member's (who may live in a different province when cities straddle provincial borders like Ottawa-Hull).
Example: an organization in Ontario has members from all provinces in Canada. For members from Ontario, they will charge 13% HST, for members from PEI they will charge 15% HST, for members in Quebec or Saskatchewan they will charge 5% GST, and for members in Manitoba they would charge 5% GST and 8% PST.
If the organization is based in Quebec, they will charge 13.975% GST+PST to Quebec members, 13% HST to Ontario members, etc.
There is a catch: CiviCRM only allows having one tax rate per Financial Type. Therefore, if using the default features of CiviCRM, you must have one Financial Type per tax-rule (one for each HST rate, then one for provinces having only GST).
TODO: document various strategies (webform, pre-form asking for the province, cdntaxcalculator)
Misc limitations to document
Home address, vs Office address, vs Billing address
Individuals: the tax should be applied based on the Home address of the person, not the billing address.
Organizations: the tax should be applied based on the location of the office/branch responsible for billing. Ex: if an organization has a main office in Ottawa, but also has an office in Montreal. The Montreal branch might pay the Quebec tax rate, but if the membership is for the entire organization, then they should pay the Ontario tax rate.
Tax names are not multi-lingual
When displaying tax rates, you must make sure to display the tax name in the language of the user. Ex: HST in English, TVH in French.
Some accountants don't mind having all the taxes in the same account, others need a GST/HST/PST breakdown.
Move some of this documentation under 'dev/financial'
Events: Taxes can also apply to Events. For online events, the discussion above regarding memberships sets things out nicely. For in person events, the event location determines the taxes that apply.
Other payments: ex: invoicing for ads in a newsletter, a booth at a congress, selling t-shirts...