Skip to main content
A tax ID is the registration number a tax authority issues to a business. You send it as a tax_id_type, such as eu_vat or gb_vat, and the number itself. You send tax IDs in two places. On an account, a tax ID also records that the business is registered for tax in that country. On a payment quote, the buyer’s tax ID prices a business purchase. This page covers the format each type expects, what Whop changes in a number you send, and what it rejects.
All EU member states share the eu_vat type. Whop works out the country from the first two letters of the number, so a VAT number from an EU country must start with its country code.

Add a tax ID to an account

Send each tax ID as a tax_id_type and tax_id_value. Whop stores DE 123.456.789 below as DE123456789.
An account holds one tax ID per tax_id_type. Sending a type the account already has replaces its value instead of adding a second tax ID. All EU countries share eu_vat, so an account holds one VAT number for the whole EU.

The eu_vat type

An eu_vat number starts with the two-letter code of the member state that issued it, followed by the national number.
  • Greece uses EL, not GR: EL123456789. On an account, a number sent with GR is stored with EL. On a payment quote, send EL yourself.
  • Northern Ireland uses XI with the eu_vat type: XI123456789. On an account, an XI number counts as the business’s registration in the UK, but checkout doesn’t use it for UK tax. Add a gb_vat number for that.
  • Spaces, dots, and dashes are removed. On an account, letters are also uppercased, so de 123.456.789 and DE-123-456-789 both become DE123456789.
A business outside the EU that’s registered under the non-Union One Stop Shop (OSS) scheme sends its OSS number as eu_oss_vat, for example EU123456789. On an account, one eu_oss_vat number counts as registered in every EU country. On an account, Whop checks an eu_vat number against its country’s format. The number has to start with an EU member state’s VAT prefix or XI, and the rest has to be the length and characters that country issues. For example, a Belgian number is BE followed by 10 digits starting with 0 or 1, so BE123456789 is rejected. Whop doesn’t add a missing prefix, because an eu_vat number doesn’t say which country it’s from. On a payment quote, Whop only rejects a number that doesn’t start with two letters followed by at least two letters or digits. Both endpoints respond with a 400. On an account, the error has a code you can match on:
On a payment quote, the message is tax_ids.value is not a valid eu_vat registration.

Other tax ID types

Every other type keeps the punctuation and letter case from its published format. A Swiss UID stays CHE-123.456.789, and a Brazilian CNPJ stays 12.345.678/0001-00. Send the number the way the tax authority prints it. On a payment quote, spaces are still removed, so CHE-123.456.789 MWST becomes CHE-123.456.789MWST. In Canada, a ca_gst_hst number counts as registered in every province. A provincial number, such as ca_qst or ca_pst_bc, counts only in its province, and a ca_bn business number on its own doesn’t count anywhere.

Examples by country

These match the examples shown in the Whop dashboard, which uses eu_vat for Poland and Northern Ireland. The Update Account reference lists the other accepted tax_id_type values. A payment quote also accepts pl_nip and xi_vat.

Next steps

Update an account

Set an account’s tax IDs and how it remits tax.

Quote a business purchase

Price a purchase with the buyer’s tax ID before charging it.