We’ve launched NetiRails: infrastructure for stablecoin-based cross-border paymentsExplore NetiRails

Alvarum: building an in-house payment platform for Europe's charity fundraising leader

Alvarum set out to own its payment layer. Neti designed and built Alvarum Payment from scratch: its own ledger, KYC/KYB with UBO checks, per-charity fees and SEPA payouts. It went live on the planned day, with no production bug on the first event.

Shortly

Industry
Charity | Fundraising
Technologies
Java | Web Development
Tags
FinTech | Finance | Payments | Blockchain

Key takeaways

  • Alvarum replaced a third-party processing setup with Alvarum Payment, its own payment platform, designed and built from scratch by Neti.
  • The platform tracks every donation from donor to charity on a transaction ledger Neti wrote on the database, at a time when off-the-shelf ledgers did not exist.
  • Neti designed the data model and a transaction-by-transaction migration of €56M in balances, with tooling that verified every migrated record.
  • Real donations flowed from day one, and the first live event ran without a single production bug.
  • Alvarum Payment became the core that Alvarum's other products plug into. 

When your business moves other people's money to good causes, trust is the product. Alvarum, the Paris-based leader in online charity fundraising, set itself a demanding goal: stop renting its payment layer and own it, with its own ledger, its own KYC/KYB, its own fee model and a full audit trail for every donated euro. Neti designed and built that platform, Alvarum Payment, and migrated the live business onto it without interrupting fundraising.

The client

Alvarum has run online fundraising for charities for more than ten years. According to Alvarum, over 2,000 charities and 150,000 fundraisers use the platform. Its model is well known in the charity sector: a runner signs up for an event such as the Course des Héros in Paris, sets a fundraising goal for a charity, and friends and family donate towards it. Partners have included the French Red Cross, WWF Germany, the Schneider Electric Marathon de Paris and the Berlin Marathon.

Neti worked with Alvarum for five years on five products: an event registration system, an online events platform, a back office, the fundraising platform and Alvarum Payment. Alvarum Payment is the core that ties the others together.

Payment infrastructure at Neti since 2018

Alvarum Payment shows how long Neti has been building payment infrastructure. In 2018, before off-the-shelf ledgers and payment orchestration platforms were common, Neti designed a complete payment platform end to end: a transaction ledger, KYC/KYB with UBO capture, a fee engine, automated payouts, PSD2 and 3-D Secure compliance, and a migration of live balances. That is still the core of what Neti does today. Payment infrastructure is now Neti's largest practice, and the same work has extended to payment orchestration across rails, stablecoin payments and settlement, reconciliation and audit, and confidential transactions for fintechs, payment institutions and banks.

Why does a fundraising platform need its own payment system?

Because processing a card payment and knowing whose money it is are two different problems. A payment provider gives you one pooled technical account, backed by a bank. Alvarum had tens of thousands of donations from tens of thousands of donors, on behalf of hundreds of charities, all landing in that one account.

Alvarum's leadership set four requirements:

  • Lower processing costs. Fees on every donation cap the economics of the whole model. Moving to a cheaper acquiring provider only pays off if you own the layer above it.
  • Accountability for public money. Charities, donors and regulators expect every euro to be traceable from payment to payout. That means reconciliation and an audit trail, not just a list of card transactions. At the time, payment institutions in France were under close scrutiny over anti-money-laundering controls, and Alvarum intended to stay well clear of that risk.
  • Control of verification and fees. Charity accounts need KYC/KYB and Ultimate Beneficial Owner (UBO) checks before a payout can proceed, and each charity may need its own fee model. Both had to be Alvarum's to run.
  • One core for many products. Alvarum's long-term roadmap already assumed more applications would take payments. Building a generic payment service once was cheaper than bolting payments onto each product.

How did Neti learn the payments domain before writing code?

By spending the first two months on the domain, not on code. Alvarum's CEO came from a banking payments background, and the Neti architect spent roughly 300 hours in working sessions with him: how payment institutions work from the inside, technical wallets, fund segregation, security architecture, and which payment types and integrations the system would support. Those sessions produced the functional and non-functional requirements.

In parallel, Neti analysed the existing payment routing module, including reverse engineering where documentation was not available. The conclusion was clear: the new platform would be designed from scratch, with nothing carried over.

How do you migrate €56M of live balances to a new payment platform?

One transaction at a time, with proof. The project ran in three phases: design the new system, design the migration, implement. Neti designed the data model first, because the migration had to target it. The migration design alone took about four weeks. Every historical transaction had to be mapped into the new model, and Neti built dedicated tooling that checked, for each one, whether it had migrated correctly. In total, €56M in balances moved to the new platform.

What Neti built: Alvarum Payment

Alvarum Payment is a generic payment service that any of Alvarum's applications can plug into, rather than a feature inside one product.

  • A ledger, written by hand. In 2018 there were no off-the-shelf ledger products like the ones payment teams use today. Neti built double-entry-style transaction tracking directly on the database. Every payment carries an explicit status, origin and destination, from the moment a balance is credited to the moment a charity withdraws it.
  • Account verification Alvarum owns. A semi-automated KYC/KYB flow with UBO capture: charity documents go to a trusted verification institution, and on approval the result syncs back and the account activates.
  • Fees on Alvarum's terms. A configurable fee engine with a distinct fee model per charity, managed from an admin interface.
  • Payouts without manual work. Automated withdrawals with SEPA transfers and internal transfers between charity accounts.
  • Compliance built in. PSD2 and 3-D Secure for card payments, GDPR, deposit and withdrawal reporting, working chargebacks and refunds, and donation receipts flagged for France's Coluche and TEPA tax-relief regimes.
  • Hardened for payment failure modes. An asynchronous, multi-client architecture with idempotent transaction handling, so a donor's double click never becomes a double charge.

The team was deliberately small and senior: three Java engineers (one also the solution architect), a frontend engineer and a UX/UI designer on Neti's side, working with Alvarum's CTO, who also ran DevOps. Delivery ran in sprints with planning, demos, versioned releases and strict code review.

Planning a payment platform of your own? Book a 45-minute payment architecture review: we map your money flows, ledger and reconciliation needs, and compliance surface before any code is written.

The results

  • Live on the planned day. Development started in early August 2018. Production went live on 20 April 2019, as scheduled. It was not a dry run: donors started paying immediately, because registrations and fundraising open weeks before an event.
  • No production bug on the first event. The first event on the new platform, the Course des Héros in Paris in June 2019, ran without a single production bug.
  • Lower processing costs. The move to a cheaper acquiring provider, which the engagement was set up to enable, was achieved.
  • Full money-flow visibility. Complete reporting on every transaction, no lost funds, and chargebacks that work.
  • A foundation for the roadmap. In the following six months Neti added recurring payments, extended the fee model and payment options, and built integrations. Later, when another fundraising platform began routing payments through Alvarum Payment, Neti wrote the OpenAPI specification it integrated against.

What we would tell the next team

Three things, honestly.

First, domain before code. Two months and roughly 300 hours went into how payment institutions work before the first line was written. That preparation is why the platform went live on the planned day, instead of being built twice.

Second, scope discipline matters as much as engineering. Alvarum knew what it needed and had little patience for ideas outside it. That was the right call. The job was to solve the client's problem, not invent new ones.

Third, what was left out. Alvarum Payment supported card payments and SEPA transfers. Newer payment methods were on the roadmap but were not built during the engagement.

Why this matters

Payment systems are unforgiving: every edge case is somebody's money. The hard part is rarely the card payment. It is the ledger above it, the reconciliation against the provider's pooled account, the migration of live balances, and the verification and fee rules that make payouts lawful. Alvarum Payment is where Neti's payments practice started, and the same discipline of domain first, code second runs through Neti's payment infrastructure work for fintechs and payment institutions today.

Facing a similar challenge?

  • You process payments on behalf of many recipients and need to know whose money is where, at every moment.
  • You want to own KYC/KYB, fees and payouts instead of renting them from a provider.
  • You need to migrate live balances to a new platform without stopping the business.
  • Your provider's limits are becoming your limits at peak load.

About Neti

Neti is a senior engineering partner for payment and digital asset infrastructure, based in Rzeszów, Poland. We design, build and run payment orchestration, reconciliation and audit, stablecoin settlement and ledger systems for fintechs, payment institutions and banks.

Start where Alvarum started. Book a 45-minute payment architecture review: we map your money flows, ledger and reconciliation needs, and compliance surface before any code is written.

Technology

Alvarum Payment: Java 8 · Spring · Spring Data REST · Gradle · Angular · MySQL · Docker · Docker Swarm · Sematext

Online Events Platform: Node.js · Vue · Vuetify · MySQL · Zoom API · YouTube API · Vimeo API · Bitbucket Pipelines


FAQs

Neti built Alvarum Payment, an in-house payment platform that replaced Alvarum's third-party processing setup. It covers transaction ledger tracking, KYC/KYB with UBO capture, a per-charity fee engine, automated SEPA payouts, PSD2 and 3-D Secure, chargebacks and financial reporting. 

Development started in early August 2018 and the platform went live in production on 20 April 2019, on the planned date. The first two months went into requirements and domain work with Alvarum's CEO. After launch, Neti spent about six more months adding recurring payments, fee model options and integrations.

Design the target data model first, then map every historical transaction into it and verify each one. For Alvarum, the migration design took about four weeks, and Neti built dedicated tooling that confirmed each transaction migrated correctly before €56M in balances moved to the new platform.

A payment provider gives you one pooled account. It does not tell you which donor's money belongs to which of hundreds of recipients. A ledger above the provider tracks status, origin and destination for every transaction, which makes reconciliation, payouts and audits possible.

Through a semi-automated flow. Charity documents go to a trusted verification institution, and on approval the result syncs back to Alvarum Payment and the account activates, including Ultimate Beneficial Owner (UBO) data.

Alvarum Payment: Java 8, Spring and Spring Data REST, Gradle, Angular, MySQL, Docker and Docker Swarm, Sematext. Online Events Platform: Node.js, Vue with Vuetify, MySQL, Zoom, YouTube and Vimeo APIs, Bitbucket Pipelines.