Skip to main content

Vendor — Custom Fields

The extension adds 7 fields to the standard Vendor table. These fields classify travel suppliers (hotels, car rental companies, airlines, ground transport) and drive automatic vendor matching during AIR booking processing.

Field Reference​

Field IDField NameData TypeDescription
51300Vendor TypeEnumClassifies the vendor. Values: (blank) (default), Hotel, Car Rental, Airline, Ground Transport
51301Hotel Chain CodeCode[10]The Amadeus hotel chain code (e.g., QI = Quality, BW = Best Western, SH = Scandic, HI = Holiday Inn). Only used for matching together with Is Subcontractor = Yes — see below
51302Car Rental Company CodeCode[10]The supplier code from the booking system (e.g., EP = Europcar, SX = Sixt, ZI = Avis). Used for automatic vendor matching
51303Voucher EmailText[80]Email address for sending vouchers/confirmations. If blank, the system falls back to the standard E-Mail field on the vendor card
51304Hotel Property CodeCode[20]Composite hotel identifier in format ChainCode+DestinationCode+PropertyID. Used for precise property-level vendor matching
51306IATA Carrier CodeCode[3]The airline's two-letter IATA code (e.g., SK = SAS, DY = Norwegian, WF = Widerøe). Matched against the marketing carrier on the flight segments to identify the supplier of a flight. Only needed where the invoice must name the supplier — see Supplier identification below
51305Is SubcontractorBooleanFlags this vendor as a subcontractor. Three effects: it is a precondition for the Hotel Chain Code fallback match, it forces Plus Voucher = true in the AIR Order Item Mapping lookup, and its hotel bookings are classified Voucher Type = Voucher without any voucher being sent — the subcontractor chain owns the hotel relationship, so the line never enters the voucher send queue and the Send Voucher action is disabled for it

Norwegian domestic airlines — reference​

The airline population is tiny and shared by every Norwegian customer, so it is listed here rather than looked up per project. Verified against Enhetsregisteret 2026-08-29:

IATALegal entityOrg.nrIn VAT register
SKSCANDINAVIAN AIRLINES SYSTEM DENMARK-NORWAY-SWEDEN NUF961510740Yes
DYNORWEGIAN AIR SHUTTLE ASA965920358Yes
WFWIDERØE AS917281629Yes

Two traps worth knowing before copying a number out of a register search:

  • Pick the entity that sells the ticket, not the one that flies the aircraft. Norwegian's group also holds NORWEGIAN AIR SHUTTLE AOC AS and NORWEGIAN AIR NORWAY AS, both VAT-registered; the seller is the ASA.
  • SAS is a NUF, not the foreign parent. A name search returns both …DENMARK-NORWAY-SWEDEN (UTLA, not VAT-registered) and the NUF above. Only the NUF charges Norwegian MVA, so only the NUF belongs on the vendor card.

Other carrier codes (for example D8, Norwegian Air Sweden) are separate legal sellers and need their own vendor card. They are matched on their own IATA code, so a D8 ticket never picks up the DY vendor.

For hotels, car rental and ground transport there is no such list — the population is long-tailed and local. Use Look Up Organisation Number on the vendor card instead; it fetches the legal name and org.nr from the same register.

Vendor Matching Logic​

When an AIR booking is processed, the system tries to match hotel and car rental segments to existing vendors using a priority-based matching algorithm. The first priority that hits wins; there is no scoring.

Hotel Vendor Matching (highest to lowest priority)​

  1. Direct vendor number — If the AIR file supplies a vendor number in the RM*PROD LEV remark and that vendor exists, it is used immediately. No other field is checked
  2. Property Code match — A vendor where Hotel Property Code = ChainCode + DestinationCode + PropertyID and Vendor Type = Hotel
  3. Chain Code match — A vendor where Hotel Chain Code matches and Is Subcontractor = Yes
Chain Code alone never matches

Priority 3 filters on Is Subcontractor = true, not on Vendor Type. A vendor with the right Hotel Chain Code but Is Subcontractor = No will never be matched by chain code. If the customer expects chain-level fallback matching, set Is Subcontractor = Yes on that vendor — and be aware that this also forces Plus Voucher = true in the item mapping lookup for its bookings.

Car Rental Vendor Matching (highest to lowest priority)​

  1. Direct vendor number — From the RM*PROD LEV remark, same as for hotels
  2. Company Code match — A vendor where Car Rental Company Code matches and Vendor Type = Car Rental

Airline and Ground Transport Matching​

Airlines and ground transport companies only became vendors so that the invoice can name the supplier of a disbursement line (see below). Nothing in the booking flow depends on them:

  • Airline — matched on IATA Carrier Code = the marketing carrier of the flight segments, where Vendor Type = Airline. An itinerary flown by more than one carrier has no single seller and is never matched automatically.
  • Ground Transport — matched on Name or Search Name against the free-text transport company in the booking. The comparison ignores case, spacing and punctuation, so "ARLANDA EXPRESS" matches a vendor named "Arlanda Express AB". Use Search Name for aliases.

Unlike hotel and car rental, a miss here does not hold the import. The order is created as usual; only posting is blocked, and the segment appears in the Missing Vendor Queue marked Posting Blocked.

Supplier Identification (Net Revenue Model)​

Under the net revenue model, a booking line is a disbursement: the customer is charged exactly what the supplier charged, at 0% VAT from us. The supplier's VAT is still inside that amount, and since the customer receives no other document, our invoice is their deduction basis.

When AIR Setup → Supplier VAT Specification is set to Name and Org. No., the invoice must therefore identify the supplier:

  • Every domestic supplier needs a vendor card with an org.nr in the standard Registration Number field (the system falls back to VAT Registration No. when Registration Number is empty).
  • Creating or changing a domestic travel vendor without an org.nr is rejected in that configuration, which keeps the queue self-healing: resolve the queue → create the vendor → the org.nr is enforced there → posting unblocks.
  • The number is checked as it is entered: grouping characters are stripped ("965 920 358" becomes "965920358"), and a Norwegian number must be 9 digits with a valid mod-11 check digit. That catches the transposed digit — which would otherwise be a syntactically fine but wrong org.nr on a customer's deduction basis.
  • A supplier code is global, the legal entity is national. EP is Europcar in every country, but Europcar Norway and Europcar Spain are different companies with different org.nr. Since vendor tables are per BC company and the org.nr is only ever printed on a line carrying domestic supplier VAT, the card in the Norwegian company should carry the Norwegian entity's name and org.nr. A foreign rental on the same code never prints a herav row, so it never uses that number.
  • Because of that, the org.nr is not demanded from a vendor with a blank country: a card first created from a foreign booking has no domestic number to give. It is demanded where the need is proven — a Posting Blocked row in the queue — and posting refuses the document either way.
  • On the vendor card the field sits directly after Name, and is marked mandatory (and highlighted while empty) only for travel suppliers that actually need it.
  • Look Up Organisation Number on the vendor card (and in the create-vendor dialog) fetches the legal name and org.nr from Brønnøysundregistrene's open API (data.brreg.no, no key). With an org.nr entered it confirms the name; without one it searches on the name and offers the hits. It also warns when the entity is not in the VAT register — a supplier that charges no MVA should not produce a herav row at all. The lookup is an assist: if the register is unreachable, the values can always be typed.
  • Posting a document whose disbursement lines carry supplier VAT without a complete attribution fails with a message naming the line.

Foreign suppliers are out of scope entirely — no domestic VAT, no deduction, no attribution needed.

Norway

This is the Norwegian position: bokføringsforskriften § 5-1-1 nr 2 and § 5-1-2 require the seller's name and org.nr followed by "MVA", and at mediation the seller is the supplier, not the agency. The domestic population is small in practice — a handful of airlines and rental chains, plus hotels.

What Happens When No Vendor Is Found​

If no vendor match is found, the booking is placed in the Missing Vendor queue with status "Pending". A user must then either:

  • Create a new vendor with the correct codes and reprocess
  • Manually assign a vendor to the booking

Config Package Mapping​

When building a config package, include these fields from the Vendor table (table ID 23):

Include in PackageField IDNotes
Yes51300Must be set for all hotel and car rental vendors
Yes51301Get chain codes from Amadeus documentation. Only effective together with 51305 = Yes
Yes51302Required for car rental vendors — get codes from booking system. Requires 51300 = Car Rental
Yes51303Optional — only needed if voucher email differs from standard email
Yes51304The primary hotel matching key. Requires 51300 = Hotel
Yes51305Set to Yes for actual subcontractors, and for any hotel vendor that should be reachable via chain-code fallback. Also forces Plus Voucher = true in item mapping

Common Hotel Chain Codes​

These are examples of frequently used Amadeus hotel chain codes:

CodeChain
QIQuality
BWBest Western
SHScandic Hotels
HIHoliday Inn
HYHyatt
MCMarriott
SISheraton
RTRadisson
CIComfort Inn
tip

The complete list of chain codes is maintained by Amadeus/IATA. Consult the customer's booking system for the exact codes used in their bookings.

Common Car Rental Company Codes​

CodeCompany
EPEuropcar
SXSixt
ZIAvis
ZEHertz
ETEnterprise
ZRBudget
ZTThrifty
ALAlamo
tip

Get the actual codes from the customer's existing booking data or Amadeus documentation to ensure correct matching.