Import - Lexoffice

if __name__ == "__main__": import_contacts("contacts.csv")

| Rule | Detail | |------|--------| | | UTF‑8 without BOM. Windows‑1252 will cause “invalid character” errors. | | Delimiter | Comma ( , ) – you can also use semicolon ( ; ) if you tick “Semicolon‑separated” in the import dialog. | | Header Row | Mandatory – column names must match Lexoffice’s field names (see the tables below). | | Date Format | ISO 8601 ( YYYY‑MM‑DD ). Lexoffice will auto‑detect DD.MM.YYYY but it’s slower. | | Decimal Separator | Dot ( . ). If you use a comma, enable the “European number format” toggle. | | Quote Handling | Enclose fields that contain commas, line‑breaks, or quotes in double quotes ( " ). |

| Step | Action | |------|--------| | | Prepare a CSV with the columns shown in Section 3.2. | | 2 | In Lexoffice → Customers → Import . | | 3 | Map the CSV columns. Ensure company or first_name + last_name is present – Lexoffice requires at least one name field. | | 4 | Validate and import. | | 5 | After import, go to Customers → List , enable the “External ID” column to verify that each record carries the original identifier. | lexoffice import

For the first time in his career, Felix Klein wasn't afraid of the 10th of the month.

def build_payload(row): return "companyName": row.get("company"), "firstName": row.get("first_name"), "lastName": row.get("last_name"), "emailAddress": row.get("email"), "address": "street": row.get("street"), "zip": row.get("zip"), "city": row.get("city"), "countryCode": row.get("country", "DE") , "taxNumber": row.get("tax_id") if __name__ == "__main__": import_contacts("contacts

The screen flickered. A tiny green robot icon spun.

The story of Emma's team highlights the importance of: | | Header Row | Mandatory – column

A minimal example to create a contact: