Choose the billing arrangement
Includeinvoice_recipient only when Bahn should invoice the end business. Without it, normal account billing applies, including on enabled platforms.
Omit ordered_for, which assigns the order to another Bahn customer. Read Platform ordering for that arrangement. Naming an invoice recipient does not grant order access.
Recipients must be VAT-registered businesses established in EU countries outside Finland. Their VAT number and invoice address must identify the same country. Bahn validates VAT registration through VIES in production.
Create the order
Use your ordering-channel credential. Add this object to Create an order. The reference defines every field and includes a complete Enabled platform: invoice the end business request. For a price check, omit bothordered_for and invoice_recipient to use the platform’s pricing.
business_id is the national company-registration identifier. vat_id is the separate EU VAT number, including its country prefix. German businesses supply their USt-IdNr. The example VAT number is for sandbox testing.
Supply the registered company name, responsible contact, postal address, and invoice email. Optional e_invoicing supplies both the Finvoice address and operator code. Bahn creates a separate English invoice for each order, with zero VAT under EU service reverse charge.
Read billing progress
Creation and Get an order returninvoicing with the accepted recipient and current progress. Normal account billing returns invoicing: null.
invoice_exported_at is null until an export is confirmed. language is EN and vat_treatment is eu_reverse_charge.
Accepted details are fixed for that order. Later orders do not redirect earlier invoices. Contact Bahn for corrections.
Recover from a failure
Customer setup or export failure never makes the platform the payer. Do not remove
invoice_recipient or use a new key to recover an unknown result. Read Errors and retries for general recovery rules.
Test the arrangement
The sandbox enforces the same permissions and request rules. VAT checks are simulated: valid syntax passes, except all-zero numbers such asDE000000000.
Test with and without invoice_recipient, invalid registration, and a retry with the original key. Sandbox billing data stays separate. Simulated VAT checks do not prove production registration.