Back to work
Case study · Nonprofit Fintech · Extended engagement

GivApp

A giving platform that turns donations into deposits.

Brief

Technical leadership and backend engineering on a donor-to-nonprofit giving platform — payments, bank connectivity, and the reporting that ties it all together.

GivApp helps nonprofits raise money the way modern donors actually give — recurring gifts, online campaigns, and in-person point of sale — and then gets that money into the organization’s bank account without the usual friction. We joined as contract technical lead, owning the backend and the integrations that make the money move.

Tech Lead
Engagement role
Backend + Tools
Primary ownership
Stripe · Plaid
Payments & banking
React · Node · Mongo
Stack
GivApp organization dashboard showing donations, payouts, campaigns, and point-of-sale
The org dashboard — donations, recurring revenue, payouts, and campaigns in one view.

What we owned

The brief was equal parts engineering and judgment: build new capability, keep the existing system fast as it grew, and help steer what got built next.

  • Backend services — the Node API behind donations, donors, campaigns, and recurring giving, plus the reporting and account-management tooling that organizations live in day to day.
  • Payments & banking integration — Stripe for card processing, payouts, and recurring charges; Plaid for linking and verifying the bank accounts those payouts land in.
  • Performance — profiling and reworking the slow paths in the reporting and dashboard queries as data volume climbed.
  • Product input — bringing new feature ideas and untangling the genuinely hard integration problems, not just implementing tickets.

How the money moves

Donation → deposit
Donor Web, recurring, or POS
React app Giving + admin UI
Node API Donations, donors, reporting
Stripe + Plaid Process · verify · pay out
Nonprofit Funds in the bank

React client and Node API over MongoDB; Stripe handles processing and payouts, Plaid verifies the destination accounts.

The hard parts

Money makes everything stricter. A donation isn’t done when the card clears — it’s done when the right amount reaches the right nonprofit’s verified account, the recurring schedule is intact, and every cent reconciles in reporting.

That meant treating Stripe and Plaid as systems of record to be kept in sync, not endpoints to be called: webhook-driven state, idempotent handling of retries and duplicates, and reporting that has to agree with the processor down to the penny. The account-management and reporting tools were where that rigor became something an organization could actually see and trust.

Where it landed

A giving platform where nonprofits can take a donation any way a donor wants to give it, watch it flow through in real time, and see it settle into their account — backed by integrations solid enough that the finance side is boring, which, for payments, is exactly the goal.

What's next

Have a similar problem worth solving?

We work with a small number of teams at a time. If you've got a system to build, audit, or automate, let's talk.