Advisoa Achieves Zero-Error, Durable Fintech Workflows with Restate
Advisoa, a Danish fintech, specializes in negotiating optimal payment solutions for webshops. One of the core functions of their digital platform, Paypilot, is to load, unify, and balance data from various siloed systems (webshops, payment providers, etc.) and accurately export it to bookkeeping software. Paypilot also delivers critical services like intelligent payment error handling, helping merchants minimize losses from failed charges or missing payouts, and providing comprehensive financial insights.
To power Paypilot's most critical, error-sensitive systems - such as onboarding and bookkeeping workflows - Advisoa relies on Restate. They are now even extending Restate's capabilities to run AI agents that provide even more advanced monitoring of their books as well as cross-service data analysis within Paypilot.
Everyone here was shocked at how easy it was to get up and running with Restate. In a couple of hours, we successfully implemented Restate as the orchestrator of a pipeline that was very error prone and not durable at all, causing a lot of stress.
-- Sebastian Hindhede, CTO, Advisoa
- Website: https://www.advisoa.dk/
- Product: Paypilot
- Industry: Payment Solutions/Fintech
- Location: Copenhagen, Denmark
- Use Case: Onboarding, error-free data sync & bookkeeping workflows, AI agents.
- Tech Stack: TypeScript, Node.js
Before Restate: Architecture & Challenges
Advisoa's business requires absolute data integrity because Paypilot is responsible for creating a unified and balanced financial record, for both analytics that help drive business decisions and automate their customers' bookkeeping. To meet this high bar for correctness, Advisoa initially implemented a complex, custom-built architecture based on Node.js and BullMQ.
This system was an attempt to solve durability in-house, but it involved multiple interconnected services, creating an operational and development overhead that became unsustainable:
- Intricate State Management: To handle state across microservices, they required a custom stack: a Remote Key Value Store (a gRPC server on BadgerDB), Redis for transient caching, and Transactional Outbox Patterns for reliable messaging.
- High Complexity, High Risk: While the components addressed parts of the problem, the number of moving parts made the system inherently fragile. It was easy for developers to accidentally introduce bugs, especially when dealing with failure cases or flaky networks, leading to partially executed flows and it was hard to test things locally.
- Costly Errors in Production: The high complexity meant failures were hard to debug. When errors occurred - such as missing or duplicate transactions in the unified data, failed jobs, pipelines getting stuck, maintenance causing jobs to fail - they resulted in massive operational costs and missed deadlines.
We can't have missing sales, we can't have missing transactions, we can't have duplicates. There's no room for error in any way anywhere. It's going to cost thousands if we mess up a customer's books... imagine being a developer in that climate, right? There would be code that you just can't touch.
-- Sebastian Hindhede, CTO, Advisoa
Why Restate?
They evaluated multiple solutions from message brokers to stream processing solutions and workflow orchestrators. Advisoa decided to go with Restate because of the following benefits:
- Strong durability and idempotency: Advisoa’s payment platform requires very high correctness guarantees that were hardly achievable by an in-house solution.
- Programming model: Restate’s programming model was compatible with their business logic and required almost no changes. They migrated their first job pipelines within hours. Services still run the same way as before, not on workflow workers.
- Lightweight deployment: Restate Server runs as a single binary without additional databases or complex setup. Spinning up multiple servers gives you a highly available setup with snapshotting to S3.
- Great local development experience
It's a great developer experience to fire up the Restate Server locally. It's a binary. You launch it, you're good. -- Sebastian Hindhede, CTO, Advisoa
The Results: Simplified Code, Guaranteed Data Integrity
Advisoa rapidly integrated Restate into their TypeScript services using the SDK. By leveraging Restate's built-in features for onboarding and data workflows, they dramatically improved stability and simplified their codebase by replacing multiple custom components with a single orchestrator. Already on day one, they started benefiting from:
- Durable execution: Ensuring multi-step processes complete, automatically recovering after failures and preventing cascading failures.
- Idempotency: Avoiding duplicate execution for retries of requests and workflows.
- State Management: Restate’s stateful entities, Virtual Objects, let them store K/V state, making external K/V stores redundant. They use Virtual Objects to both model intelligent, stateful data connections and increase job throughput for better hardware utilization.
- Timers: Provides built-in scheduling capabilities to automate recurring logic, such as period data sync jobs, credential expiration checks, automated reports, error monitoring.
The headaches it's saving us from is just massive. You just need to code the happy paths.
-- Sebastian Hindhede, CTO, Advisoa
The Future: Stateful AI Agents
Advisoa is now building AI agents powered by Restate within Paypilot. These agents allow customers to ask complex questions about their unified data across various payment providers. Restate ensures the agents can sleep when inactive and wake with full memory, consuming resources only when actively needed.