DEV Community

Severin Komander
Severin Komander

Posted on

How I built a Lexware Office integration for Medusa v2

I run a flower shop in Munich and recently migrated my entire e-commerce setup to Medusa v2. The shop, the
subscription service, the dashboard - everything runs on Medusa now.

One thing that was completely missing: a connection to Lexware Office, which is the most popular accounting software
for small businesses in Germany. Every order meant manually creating an invoice. With 5-10 orders a day, that gets old
fast.

So I built LexBridge - an open-source Medusa v2 plugin that automates the entire invoicing workflow.

What it does

When a customer places an order, the plugin:

  1. Looks up the customer in Lexware (or creates a new contact)
  2. Creates an invoice with all line items, tax rates, and payment terms
  3. Downloads the finalized PDF from Lexware
  4. Stores the invoice reference in the database

Everything is configurable through the Medusa Admin UI - no code changes needed after installation.

The tricky parts

German tax rates - Germany has 7% for food/flowers and 19% for everything else. A single order can contain items with
different tax rates. The plugin supports a taxRateOverride callback so you can define your own logic per line item.

Payment terms per payment method - A customer paying with PayPal should get "due immediately", while a B2B customer
paying on invoice gets "14 days". The plugin lets you configure this per payment provider.

Lexware API quirks - The API has a rate limit of 2 requests per second and returns 503 errors more often than you'd
like. The plugin handles this with exponential backoff and automatic retries.

Idempotency - Medusa can fire order.placed events multiple times. A unique constraint on order_id ensures only one
invoice is created per order.

Free and Pro

The core features are completely free and open-source (MIT license). I added a Pro tier for advanced features like
credit notes, dry-run mode, webhook sync, and email notifications. It's a small way to fund ongoing development while
keeping the essential functionality free for everyone.

Tech stack

  • Medusa v2 module with custom service, subscribers, and admin UI
  • TypeScript end to end
  • AES-256-GCM encryption for API keys stored in the database
  • Nodemailer for SMTP email delivery
  • Admin UI built with Medusa's native UI components

Try it

npm install medusa-lexbridge

If you're running a Medusa shop in Germany/DACH and dealing with Lexware, this might save you a lot of manual work.
Feedback and contributions are welcome!

Top comments (0)