Case study  /  Finance automationFinance-Automation

E-commerce payout reconciliation in Dynamics 365

E-Commerce-Auszahlungen in Dynamics 365 abstimmen

VirtuDesk built a production-ready reconciliation and posting system that connects Shopify Payments, PayPal and other gateways with Microsoft Dynamics 365 Finance & Operations. It replaces roughly 80 hours of manual, error-prone work each month with transaction-level matching, automated controls and KPI reporting.

VirtuDesk entwickelte ein produktionsreifes System zur Abstimmung und Buchung von Auszahlungen aus Shopify Payments, PayPal und weiteren Anbietern in Microsoft Dynamics 365 Finance & Operations. Rund 80 Stunden manuelle, fehleranfällige Arbeit pro Monat wurden durch transaktionsgenaue Abstimmung, automatische Kontrollen und KPI-Reporting ersetzt.

  • 1:1 transaction matching1:1 Transaktionsabgleich
  • 0.01 tolerance0,01 Toleranz
  • Multi-company & multi-currencyMehrere Gesellschaften & Währungen
(01)  The business problemDas Geschäftsproblem

Manual payout reconciliation does not scale with e-commerce volume

Manuelle Payout-Abstimmung skaliert nicht mit E-Commerce-Volumen

Payouts aggregate hundreds or thousands of sales, refunds, fees, chargebacks and corrections. Finance then has to prove that every transaction exists in the accounting system, is posted once, carries the right VAT treatment and balances to zero.

Auszahlungen bündeln hunderte oder tausende Verkäufe, Rückerstattungen, Gebühren, Chargebacks und Korrekturen. Finance muss nachweisen, dass jede Transaktion im Buchhaltungssystem existiert, nur einmal gebucht wird, die korrekte Umsatzsteuerlogik trägt und am Ende auf null aufgeht.

What changed operationally

Was sich operativ verändert hat

Reconciliation moved from spreadsheet work into a controlled automation layer with deterministic matching, explicit exception paths and auditable posting logic.

Die Abstimmung wanderte aus Tabellenarbeit in eine kontrollierte Automatisierungsebene mit deterministischem Abgleich, klaren Ausnahmewegen und auditierbarer Buchungslogik.

Revenue leakage preventionVermeidung von UmsatzverlustenUnrecorded sales, missing ERP entries and unresolved payout corrections are surfaced instead of hidden inside aggregated payouts.Nicht erfasste Verkäufe, fehlende ERP-Einträge und offene Payout-Korrekturen werden sichtbar, statt in Sammelauszahlungen unterzugehen.
VAT and audit readinessUmsatzsteuer- und Audit-FähigkeitTransactions are classified into sales, refunds, credit notes, fees and FX differences with traceable source records.Transaktionen werden in Verkäufe, Rückerstattungen, Gutschriften, Gebühren und FX-Differenzen klassifiziert, mit nachvollziehbaren Quelldaten.
Quality KPIs for finance operationsQualitäts-KPIs für Finance OperationsThe dashboard tracks matching quality, exceptions, posting status, manual checks and reconciliation categories.Das Dashboard verfolgt Abgleichqualität, Ausnahmen, Buchungsstatus, manuelle Prüfungen und Abstimmungskategorien.
Time savingZeitersparnis 80h manual work removed from an error-prone finance processmanuelle Arbeit aus einem fehleranfälligen Prozess entfernt
n8n 45 workflows for ingestion, matching, posting and exceptionsWorkflows für Import, Abgleich, Buchung und Ausnahmen
MatchingAbgleich 1:1 transaction-level reconciliation with 0.01 toleranceTransaktionsabgleich mit 0,01 Toleranz
ROI paybackROI Amortisation 3 months3 Monate driven by unexpected VAT and revenue-leakage findingsdurch unerwartete USt.- und Umsatzverlust-Funde getrieben
ReportingReporting 40+ KPIs for quality, exceptions, leakage and posting readinessKPIs für Qualität, Ausnahmen, Leakage und Buchungsbereitschaft
(02)  Client contextKundenkontext
woom logo

One of Europe's leading children's bike brands, with finance complexity behind every ride

Eine der führenden Kinderfahrradmarken Europas, mit Finance-Komplexität hinter jeder Fahrt

woom is a major direct-to-consumer children's bike brand selling across countries, currencies and payment providers. The automation connects the customer-facing e-commerce operation with the accounting reality behind payouts, VAT, refunds, fees and ERP posting.

woom ist eine bedeutende Direct-to-Consumer-Marke für Kinderfahrräder und verkauft über Länder, Währungen und Zahlungsanbieter hinweg. Die Automatisierung verbindet den sichtbaren E-Commerce mit der buchhalterischen Realität hinter Payouts, Umsatzsteuer, Rückerstattungen, Gebühren und ERP-Buchungen.

DTCE-commerce scaleE-Commerce-Skalierung
ERPMicrosoft Dynamics 365
FinancePayout reconciliationPayout-Abstimmung
Children with woom bikes on outdoor steps
Official woom visualOffizielles woom Bild
Child standing beside a red woom bicycle
DTC brand contextDTC-Marken Kontext
Red woom children's balance bike
Product data meets finance dataProduktdaten treffen Finance-Daten
(03)  System architectureSystemarchitektur

A controlled bridge between payment platforms and Microsoft Dynamics 365

Eine kontrollierte Brücke zwischen Zahlungsplattformen und Microsoft Dynamics 365

The solution separates orchestration, data persistence, reconciliation logic, ERP posting and reporting – maintainable, but still able to handle real accounting edge cases.

Die Lösung trennt Orchestrierung, Datenhaltung, Abstimmungslogik, ERP-Buchung und Reporting – wartbar und trotzdem fähig, echte buchhalterische Sonderfälle abzubilden.

SRC

Payment sourcesZahlungsquellen

Shopify Payments, PayPal and other gateways provide payout, transaction and fee data through APIs.

Shopify Payments, PayPal und weitere Anbieter liefern Payout-, Transaktions- und Gebührendaten über APIs.

OAuth2Rate limits
n8n

OrchestrationOrchestrierung

45 workflows control ingestion, matching, exception routing, approvals and posting readiness.

45 Workflows steuern Import, Abgleich, Ausnahmewege, Freigaben und Buchungsbereitschaft.

45 flowsHuman gate
DB

Data layerDatenebene

PostgreSQL stores payouts, transactions, GL data, ERP voucher numbers and audit fields per company.

PostgreSQL speichert Payouts, Transaktionen, GL-Daten, ERP-Belege und Audit-Felder je Gesellschaft.

PostgreSQLAudit
ERP

Dynamics 365 postingDynamics 365 Buchung

A Python bot uses Selenium for UI-only operations and OData for pre-flight checks and GL sync.

Ein Python-Bot nutzt Selenium für UI-only Schritte und OData für Vorabprüfungen und GL-Sync.

SeleniumOData
KPI

Reporting layerReporting-Ebene

A web dashboard exposes reconciliation status, exception categories, trends and audit exports.

Ein Web-Dashboard zeigt Abstimmungsstatus, Ausnahmekategorien, Trends und Audit-Exporte.

40+ KPIsCSV export
Important engineering choiceWichtige technische Entscheidung

Dynamics 365 does not expose every required accounting operation through API. VirtuDesk combined UI automation for ERP-only tasks with OData checks where API access is safer and faster, including duplicate-posting prevention before the final posting action.

Dynamics 365 stellt nicht jede benötigte Buchungsoperation per API bereit. VirtuDesk kombinierte UI-Automatisierung für ERP-only Schritte mit OData-Prüfungen dort, wo API-Zugriff schneller und sicherer ist, inklusive Schutz vor Doppelbuchungen vor der finalen Buchung.

(04)  Reconciliation logicAbstimmungslogik

Every payout is reconciled at transaction level before it counts as closed

Jeder Payout wird auf Transaktionsebene abgestimmt, bevor er als geschlossen gilt

The system never forces a posting when something is unclear. Sales, refunds, fees, credit notes, partial refunds and FX differences each follow their own rule path. Unresolved items go to manual review with context.

Das System erzwingt keine Buchung, wenn ein Fall unklar ist. Verkäufe, Rückerstattungen, Gebühren, Gutschriften, Teilrückerstattungen und FX-Differenzen haben eigene Regelpfade. Offene Fälle gehen mit Kontext zur manuellen Prüfung.

ExceptionMissing sale in ERPFehlender Verkauf im ERP
ExceptionRefund without matchRückerstattung ohne Treffer
ExceptionCredit-note-only caseNur-Gutschrift-Fall
ExceptionManual accounting decisionManuelle Buchungsentscheidung
01

Fetch payout and transaction linesPayout und Transaktionszeilen abrufen

OAuth2, pagination, gateway-specific limits and timezone-aware periods.OAuth2, Paginierung, anbieterspezifische Limits und zeitzonengenaue Perioden.

API
02

Match sales and refunds to ERP entriesVerkäufe und Rückerstattungen mit ERP abgleichen

Oldest-first pools, 0.01 tolerance, no reused matches.Oldest-first Pools, 0,01 Toleranz, keine mehrfach genutzten Treffer.

1:1
03

Classify accounting casesBuchungsfälle klassifizieren

Fees, credit notes, partial refunds, FX and payout corrections.Gebühren, Gutschriften, Teilrückerstattungen, FX und Payout-Korrekturen.

Rules
04

Run the posting gateBuchungsgate ausführen

Pre-flight duplicate checks, amount validation and exception control.Dublettenprüfung, Betragsvalidierung und Kontrolle offener Ausnahmen.

Gate
05

Post and prove balance equals zeroBuchen und Saldo null nachweisen

A payout is closed only when the settlement balance reconciles to 0.00.Ein Payout wird erst geschlossen, wenn der Abrechnungssaldo 0,00 ergibt.

Closed
(05)  Controls and complianceKontrollen und Compliance

The automation is designed to stop risky accounting, not hide it

Die Automatisierung soll riskante Buchungen stoppen, nicht verstecken

Reconciliation quality dashboardDashboard für Abstimmungsqualität

D365 / Shopify / PayPal
Matching rateMatching-Rate98.7%
Matching trendMatching-TrendUpwardSteigend
ROI paybackROI Amortisation3 months3 Monate
VAT + leakageUSt. + LeakageFoundEntdeckt
Baselinelower
Rulesrising
Controlsstable
Current98.7%

The ROI was visible within 3 months: beyond the 80 hours of manual work removed, the quality layer surfaced unexpected VAT inconsistencies and revenue-leakage risks that were hard to detect inside aggregated payouts.

Der ROI war innerhalb von 3 Monaten sichtbar: Neben den 80 eingesparten Stunden machte die Qualitätsebene unerwartete USt.-Abweichungen und Umsatzverlust-Risiken sichtbar, die in Sammelauszahlungen schwer zu erkennen waren.

No double postingKeine DoppelbuchungOData pre-flight checks and source keys prevent repeated ERP postings after retries.OData-Vorabprüfungen und Quellschlüssel verhindern wiederholte ERP-Buchungen nach Retries.
Balance must reconcile to zeroSaldo muss auf null aufgehenA payout is not reconciled until the settlement balance reaches 0.00.Ein Payout gilt erst als abgestimmt, wenn der Saldo 0,00 erreicht.
ROI within 3 monthsROI innerhalb von 3 MonatenVAT findings, unrecorded transactions and leakage signals accelerated payback beyond time savings.USt.-Funde, nicht erfasste Transaktionen und Leakage-Signale beschleunigten die Amortisation.
Audit trail by designAudit Trail by DesignPosting timestamps, user markers, logs, screenshots and CSV exports support later review.Buchungszeitpunkte, User-Marker, Logs, Screenshots und CSV-Exporte unterstützen Prüfungen.
(06)  Technology stackTechnologie-Stack

Built as a maintainable finance automation product, not a one-off script

Gebaut wie ein wartbares Finance-Automation-Produkt, nicht wie ein Einmalskript

The implementation combines workflow orchestration, resilient API handling, ERP-aware posting automation and a reporting layer that gives finance users daily visibility.

Die Umsetzung kombiniert Workflow-Orchestrierung, robuste API-Verarbeitung, ERP-bewusste Buchungsautomatisierung und ein Reporting mit täglicher Transparenz.

OrchestrationOrchestrierung

n8n

45 workflows, batching, polling, approvals and exception routing.

45 Workflows, Batching, Polling, Freigaben und Ausnahmewege.

AutomationAutomatisierung

Python + Selenium

Headless posting bot with retry strategy, MFA-aware profile and screenshots.

Headless-Buchungsbot mit Retry-Strategie, MFA-fähigem Profil und Screenshots.

ERP integrationERP-Integration

Dynamics 365

Dual-path integration: UI automation for missing API actions and OData for checks.

Zwei Wege: UI-Automation für fehlende API-Aktionen und OData für Prüfungen.

Data

PostgreSQL

Company-specific schemas, migrations, audit columns and GL synchronization.

Gesellschaftsspezifische Schemas, Migrationen, Audit-Spalten und GL-Sync.

Source APIsQuell-APIs

Shopify + PayPal

OAuth2, full pagination, timezone handling and provider-specific rate limits.

OAuth2, vollständige Paginierung, Zeitzonenlogik und anbieterspezifisches Rate-Limiting.

Reporting

SvelteKit + Chart.js

8 views, 40+ KPIs, reconciliation categories, CSV export and responsive access.

8 Ansichten, 40+ KPIs, Abstimmungskategorien, CSV-Export und responsive Nutzung.

Operations

REST API + service

Task queue, job history, timeouts, logs and controlled background execution.

Task-Queue, Job-Historie, Timeouts, Logs und kontrollierte Hintergrundausführung.

Scale patternSkalierungsmuster

Multi-companyMulti-Company

Repeatable rollout for additional entities, currencies and payment sources.

Wiederholbares Rollout für weitere Gesellschaften, Währungen und Zahlungsquellen.

(07)  VirtuDesk automationVirtuDesk Automation

Turn finance reconciliation into a measurable, auditable process

Machen Sie Finance-Abstimmung messbar und auditierbar

This case study shows how VirtuDesk connects existing systems instead of replacing them: payment platforms, ERP records, workflow automation and reporting working together as one controlled operating model.

Diese Case Study zeigt, wie VirtuDesk bestehende Systeme verbindet, statt sie zu ersetzen: Zahlungsplattformen, ERP-Daten, Workflow-Automation und Reporting als ein kontrolliertes Betriebsmodell.

Best fitIdeal geeignet High-volume finance processes with repetitive rules, ERP steps and audit pressure. Finanzprozesse mit hohem Volumen, wiederholbaren Regeln, ERP-Schritten und Audit-Druck. Discuss a processProzess besprechen