Inspiration
For millions of families, sending money across borders is only half the journey.
Our friends have sent remittances to relatives living in developing countries such as India. The transfer went through successfully—but when their relatives went to collect the money, the cash-out agent did not have enough physical cash available.
That experience exposed a simple but overlooked problem:
Money can arrive digitally without being accessible physically.
For someone who depends on cash, this can mean a wasted trip, additional transportation costs, or waiting another day for money they may urgently need.
We built CashDibs around one simple idea:
If your money is ready, your cash should be too.
What it does
CashDibs is a cash-pickup reservation layer for remittances.
Instead of travelling to a cash-out location and hoping there is enough money available, recipients can call "dibs" on their cash before leaving home.
The flow is simple:
- A remittance payout is funded.
- The recipient finds a participating cash-out agent and requests a specific amount.
- The agent checks its available physical cash and accepts or rejects the request.
- If accepted, CashDibs reserves that amount and provides a pickup confirmation and one-time code.
- The recipient travels to the agent knowing the requested cash has been set aside.
- After the simulated cash handover is confirmed and authorized, the corresponding digital payment is settled through Stellar.
Our prototype supports XLM and USDC on Stellar Testnet for digital settlement, while the physical cash collection is simulated.
How we built it
CashDibs separates the problem into two layers: physical cash reservation and digital settlement.
Off-chain, each participating agent reports its available physical cash. When an agent accepts a reservation, that amount is immediately placed on hold.
$$
\text{Available Cash}
\text{Cash on Hand}
\text{Reserved Cash}
\text{Safety Buffer} $$
Our reservation logic prevents two recipients from reserving the same physical cash at the same time.
At pickup, the recipient receives a one-time code linked to the reservation. The agent verifies the code and confirms the simulated cash handover.
On-chain, Stellar handles the digital settlement. The payout is funded before collection. Once pickup is confirmed and authorized, the corresponding XLM or USDC payment can be released through our Stellar implementation.
This allows us to use blockchain where it provides real value—programmable and verifiable digital settlement—while keeping physical cash management off-chain.
Challenges we ran into
The hardest challenge was connecting a digital financial transaction with a physical event.
A blockchain can verify that digital funds moved, but it cannot know how many banknotes are sitting inside a cash-out agent's drawer or independently prove that those banknotes were handed to a recipient.
We therefore had to carefully separate what CashDibs can verify digitally from what must be confirmed by real-world participants.
We also had to solve practical issues such as preventing cash from being double-reserved, handling expired reservations, securely verifying pickups, and ensuring a digital payout cannot be released twice.
Another major challenge was scope. Remittances involve KYC, foreign exchange, regulation, fraud prevention, cash logistics, and many other complexities. Instead of trying to rebuild the entire remittance ecosystem, we focused on solving one specific last-mile failure well.
Accomplishments that we're proud of
We're proud that CashDibs evolved from a broad idea about improving agent liquidity into a much simpler product centered around the recipient.
Rather than merely predicting whether an agent might have enough cash, CashDibs creates an explicit reservation between the recipient and the participating cash-out agent.
We're also proud of designing the system so that the physical and digital sides remain clearly separated. Cash reservations are managed off-chain, while Stellar provides the digital settlement layer.
Most importantly, we built around a very human outcome:
A recipient should not have to travel just to find out whether their money is actually available.
What we learned
Our biggest lesson was that:
Moving money and accessing money are two different problems.
Initially, we explored predicting when cash-out agents might run low. But a prediction that an agent will probably have enough money still leaves uncertainty for the recipient.
So we changed the question from:
"Which agent is likely to have cash?"
to:
"Which agent has explicitly agreed to reserve my cash?"
That shift became the foundation of CashDibs.
We also learned an important lesson about blockchain: not everything needs to be on-chain.
Stellar cannot verify physical banknotes. What it can provide is fast, programmable, and verifiable digital settlement around the real-world cash pickup process.
What's next for CashDibs
CashDibs is currently a prototype using fictional participating agents, simulated physical cash collection, and Stellar Testnet transactions.
Our next step would be to work with an existing remittance provider or cash-out network to integrate real agent availability and test whether cash reservations reduce failed pickup trips in practice.
From there, CashDibs could evolve into an API that existing remittance wallets and payout networks integrate directly into their cash-out experience.
Our long-term vision is simple:
A remittance isn't successful when the money crosses the border. It's successful when the person on the other side can actually access it.
With CashDibs, recipients can call dibs on their cash before they make the journey.
Built With
- next.js
- postgresql
- prisma
- rust
- soroban
- stellar
- stellar-sdk
- tailwind-css
- typescript
- usdc
- vercel
- xlm
- zod