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 ID | Field Name | Data Type | Description |
|---|---|---|---|
| 51300 | Vendor Type | Enum | Classifies the vendor. Values: (blank) (default), Hotel, Car Rental, Airline, Ground Transport |
| 51301 | Hotel Chain Code | Code[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 |
| 51302 | Car Rental Company Code | Code[10] | The supplier code from the booking system (e.g., EP = Europcar, SX = Sixt, ZI = Avis). Used for automatic vendor matching |
| 51303 | Voucher Email | Text[80] | Email address for sending vouchers/confirmations. If blank, the system falls back to the standard E-Mail field on the vendor card |
| 51304 | Hotel Property Code | Code[20] | Composite hotel identifier in format ChainCode+DestinationCode+PropertyID. Used for precise property-level vendor matching |
| 51306 | IATA Carrier Code | Code[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 |
| 51305 | Is Subcontractor | Boolean | Flags 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:
| IATA | Legal entity | Org.nr | In VAT register |
|---|---|---|---|
| SK | SCANDINAVIAN AIRLINES SYSTEM DENMARK-NORWAY-SWEDEN NUF | 961510740 | Yes |
| DY | NORWEGIAN AIR SHUTTLE ASA | 965920358 | Yes |
| WF | WIDERØE AS | 917281629 | Yes |
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 ASandNORWEGIAN 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)
- Direct vendor number — If the AIR file supplies a vendor number in the
RM*PROD LEVremark and that vendor exists, it is used immediately. No other field is checked - Property Code match — A vendor where Hotel Property Code =
ChainCode + DestinationCode + PropertyIDand Vendor Type = Hotel - Chain Code match — A vendor where Hotel Chain Code matches and Is Subcontractor = Yes
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)
- Direct vendor number — From the
RM*PROD LEVremark, same as for hotels - 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.
EPis 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.
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 Package | Field ID | Notes |
|---|---|---|
| Yes | 51300 | Must be set for all hotel and car rental vendors |
| Yes | 51301 | Get chain codes from Amadeus documentation. Only effective together with 51305 = Yes |
| Yes | 51302 | Required for car rental vendors — get codes from booking system. Requires 51300 = Car Rental |
| Yes | 51303 | Optional — only needed if voucher email differs from standard email |
| Yes | 51304 | The primary hotel matching key. Requires 51300 = Hotel |
| Yes | 51305 | Set 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:
| Code | Chain |
|---|---|
| QI | Quality |
| BW | Best Western |
| SH | Scandic Hotels |
| HI | Holiday Inn |
| HY | Hyatt |
| MC | Marriott |
| SI | Sheraton |
| RT | Radisson |
| CI | Comfort Inn |
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
| Code | Company |
|---|---|
| EP | Europcar |
| SX | Sixt |
| ZI | Avis |
| ZE | Hertz |
| ET | Enterprise |
| ZR | Budget |
| ZT | Thrifty |
| AL | Alamo |
Get the actual codes from the customer's existing booking data or Amadeus documentation to ensure correct matching.