Instruction
Beheer > Integraties > Bexio
This section only applies if the module Export is active.

The Bexio integration pushes customers and invoices from i-Reserve to Bexio: the customer becomes a contact, the invoice a sales invoice with invoice lines. The integration uses OAuth2 and is outbound — changes you make in Bexio do not come back to i-Reserve.

The Bexio integration at a glance i-Reserve Booking, customer & invoice Source of the invoice bexio Bexio Contact + sales invoice Accounting (Switzerland) 1. Customer → contact (person or company) 2. Invoice finalised → invoice + lines OAuth2 · auth.bexio.com · api.bexio.com No sync back from Bexio VAT mapping required; i-Reserve remains the source of the invoice

To reach Management > Integrations you need the menu_confmod_integrations right.

1. On the Bexio side (one-time)

  1. Register an OAuth app in the Bexio developer portal and note the Client ID and Client Secret.
  2. Add the redirect URL shown by i-Reserve to that app's allowed list.
  3. The app needs permissions on contacts (read and write), sales invoices (read and write) and articles; i-Reserve requests those on the consent screen itself.
  4. Configure the VAT rates in Bexio — you need them for the mapping in step 5.

2. Authentication tab

FieldWhat to enter
Client IDClient id from the Bexio developer portal. Required.
Client SecretClient secret from the Bexio developer portal. Required.
Redirect URLProposed by i-Reserve and must be listed in the Bexio app exactly like that.

Then run Step 1 – application consent (you are redirected to Bexio to allow the integration) and Step 2 – connect to Bexio (i-Reserve exchanges the consent code for an access and refresh token). The access token is refreshed automatically from then on. If consent does expire, run steps 1 and 2 again; nothing else needs reconfiguring.

3. Details tab

FieldWhat it does
Invoice field / Customer fieldRead-only. External ids are kept in a dedicated reference table; these fields only show the previous storage column and will disappear in a future version.
Customer number prefix(Optional) prefix in front of the contact number in Bexio.
Customer number length(Optional) zero-pads the contact number to this length, e.g. 6 → 000123.
Finalise invoiceYes = i-Reserve issues the invoice in Bexio right away. No = the invoice stays a draft in Bexio.
Send email from BexioOnly when finalising: yes = Bexio emails the invoice to the customer's email address. No = you send it yourself.

4. Fields: which customer data is sent?

On the integration's field card you decide, per Bexio field, which i-Reserve field fills it. By default the following is sent:

BexioDefault from i-Reserve
Name 1 / Name 2Company name, or last name + first name — depending on the contact type (see below)
StreetThe customer's address
Postcode / CityPostcode and city
CountryCountry; i-Reserve looks up the Bexio country by ISO country code
EmailThe customer's email address
Phone fixed / mobileLandline and mobile number
Contact numberThe customer number, with the prefix and length from the Details tab. Only set when creating a contact.
RemarksFree field, empty by default

Besides a regular customer or company field you can also pick a composed value: full name, informal name, address or company address.

Contact type. If a company is attached to the customer, i-Reserve creates a company in Bexio (name 1 = company name, name 2 = last name). Without a company it becomes a person (name 1 = last name, name 2 = first name). That is the Bexio convention and is not configurable.

i-Reserve looks for an existing contact by the stored Bexio id first. If there is none, or that contact no longer exists, it searches by contact number. If nothing is found, i-Reserve creates a new contact.

5. VAT mapping (required)

  • On the mapping card, link every i-Reserve VAT rate in use to a Bexio tax code. i-Reserve fetches the active tax codes live from Bexio, so you pick them from a list.
  • If the mapping for a rate on the invoice is missing, the invoice is not created and i-Reserve reports that there is no VAT code for that rate.
  • The other mapping types (article, payment condition) are not used by the Bexio integration.

6. When does it synchronise?

  • Invoice finalised — as soon as an invoice is finalised in i-Reserve, first the contact and then the invoice with its lines go to Bexio.
  • Sending the invoice — with "send email from Bexio" enabled, Bexio takes care of the invoice email on finalising.
  • Manually — from the customer and invoice screen the Bexio button pushes the customer or invoice on request. See Bexio: comparing invoice lines and syncing manually.

For an invoice that already exists in Bexio, i-Reserve updates it: the existing lines are deleted and recreated, after which the invoice data is updated. Bexio does not accept lines when the invoice itself is updated.

7. Testing and checking

8. Activate & checklist

  • ☐ OAuth app created in Bexio; Client ID and Client Secret noted; redirect URL allowed.
  • ☐ VAT rates configured in Bexio.
  • ☐ Authentication tab filled; step 1 and step 2 succeeded.
  • ☐ Details tab: customer number prefix/length, finalising and email deliberately set.
  • ☐ VAT mapping complete for all rates in use.
  • ☐ Field card checked; contact type (person or company) matches what you expect in Bexio.
  • ☐ Test invoice pushed and checked in Bexio: contact, lines, quantities and VAT.
  • ☐ Integration set to active; rollback known (setting it inactive stops new synchronisations).

VAT mapping is mandatory: every i-Reserve VAT rate in use must be linked to a Bexio tax code, otherwise the invoice is not created.

The integration is outbound. If you change a contact or invoice in Bexio, it does not come back to i-Reserve; i-Reserve remains the source of the invoice.

With "finalise invoice" enabled the invoice is final in Bexio immediately and the lines can no longer be updated from i-Reserve. When in doubt, push it as a draft first.

The Bexio integration requires the Export/Administration module in the licence.

The following right may be necessary in order to use this functionality.