Skip to content

Tax

Your taxes counted for you, country by country.

Wajub finds your customer's country, applies that country's rate and records the tax on every payment in your ledger, refunds deducted. Your reports by country and currency are the starting point for your filings.

Standard rates for 184 countries · Ledger kept on every payment

DashboardWajubRates by countryCustomer in DoualaTax30 daysTax collectedXAF 2,253,734Taxable amountXAF 12,021,266Tax by countryCountryTaxTransactionsCameroon (CM)XAF 1,207,463498Côte d’Ivoire (CI)XAF 475,932208France (FR)XAF 115,0004619.25%18%20%9:41Sawa AcademyOnline course, 3 monthsXAF 15,000Pay withMTN MoMoOrange MoneyPay XAF 15,000

Why Wajub Tax

Sell across borders, without a tax spreadsheet.

Tax follows your customer, not your currency: Wajub applies their country's rate and records it in your ledger.

184 countries
TVA in Cameroon, Côte d'Ivoire and Senegal, VAT in Kenya or Nigeria, TVA in France: Wajub keeps each country's standard rate up to date.
The customer's country
On the hosted payment page, Wajub locates the customer at checkout: tax follows their country, not the currency. A customer in Paris paying in XAF counts for France, at 20%.
Tax-inclusive or exclusive
Your prices include tax: Wajub extracts the base. They exclude it: the API gives you the tax to add before you charge. Amounts are rounded to each currency's precision.
A ledger that keeps itself
One row per taxed payment, a negative row per refund, at the original payment's rate.
B2B reverse charge
For a business customer from another country with a verified tax ID, tax drops to zero. EU VAT numbers are checked against VIES.
Shown to the customer
On the hosted payment page, the summary shows the tax of the customer's country, with its name and rate.

Reports

Your tax figures, country by country.

The Dashboard and the API group tax collected, reversals and taxable base by country and currency, over the period you choose.

  • Net tax computed for you: collected minus reversed.
  • CSV export from the Dashboard, ready for Excel, with the total converted into your base currency.
  • Applied rates are frozen: last quarter's report stays accurate.

For developers

A customer's tax, in one call.

One call to /tax/calculate with the amount, currency and country returns the rate, the tax and the total. Successful payments then record themselves in the ledger, which you read through the API.

Follow the quickstartAPI reference

PUT /tax/settingsTurn Tax on
Tax-inclusive prices or not, default country and your tax ID: Tax will not turn on without it.
POST /tax/calculateAsk for the tax
The amount, currency and customer's country give the rate, the tax and the total, to show before payment.
POST /paymentsCharge
When the payment succeeds, its tax is recorded in the ledger, at the rate of the customer's country, or your default country if it is unknown.
GET /tax/reportsRead your reports
Tax collected, reversed and net, taxable base: by country and currency, over the period you choose.
import { Wajub } from '@wajub/node'

const wajub = new Wajub({ secretKey: process.env.WAJUB_SECRET_KEY! })

await wajub.tax.updateSettings({
  enabled: true,
  inclusive: true,
  default_country: 'CM',
  tax_id_type: 'cm.niu',
  registration_number: 'M123456789000L',
})

const tax = await wajub.tax.calculate({
  amount: 15000,
  currency: 'XAF',
  country: 'CI',
  tax_inclusive: true,
})
console.log(tax.tax_amount)

await wajub.payments.create({
  amount: 15000,
  currency: 'XAF',
  email: 'awa@example.com',
})

Response200 OK

{  "calculation": {    "amount": 15000,    "tax_amount": 2288,    "total": 15000,    "rate": 18,    "country_code": "CI"  }}

Report, 30 daysGET /tax/reports

{  "report": {    "summary": {      "total_tax_collected": 2253734,      "total_reversals": -4842,      "net_tax": 2248892    }  }}

Response200 OK

{  "calculation": {    "amount": 15000,    "tax_amount": 2288,    "total": 15000,    "rate": 18,    "country_code": "CI"  }}

Report, 30 daysGET /tax/reports

{  "report": {    "summary": {      "total_tax_collected": 2253734,      "total_reversals": -4842,      "net_tax": 2248892    }  }}

Frequently asked questions

Another question? Talk to sales

Does Wajub add tax to what my customer pays?
No: the amount collected is the one you create the payment with. If your prices exclude tax, ask for the tax with /tax/calculate, then create the payment for the total. The ledger records the tax on every successful payment once Tax is on.
Does Wajub file and remit tax for me?
No. Wajub computes rates and keeps your ledger; registration, filing and remitting to authorities stay with you. The reports are a starting point for your accountant.
Are reduced rates supported?
Not yet: Wajub applies the standard rate of the customer's country, whatever the product.
Which plans include Tax?
Tax is included in Growth, Scale and Enterprise, and available as an add-on on Pay as you go. It only runs in production: test payments never compute tax.
How is my customer's country determined?
On the hosted payment page, Wajub infers it automatically from the customer's details at checkout. For a payment created entirely from your server, your default country applies.

Get your taxes in order from the first payment.

Turn on Tax in the Dashboard with your tax ID: every collected payment feeds your ledger from that moment.