Integration example
A realistic walkthrough of building a wallet on Core.
This page walks through building a consumer wallet on Core end-to-end: a product where end users hold a balance, top it up, send money to other users, and spend it through a virtual card. It is the canonical example for understanding how Core's services compose into a real product.
A wallet is the most common use case for Core. If you are building something else — a corporate-card program, a marketplace seller balance, a treasury system — the patterns here transfer directly; only the entity names change.
This page is an integration-example scaffold. The full version will include a complete narrative, code snippets per step, and a reference architecture diagram.
What you will build
A wallet that supports:
- Onboarding — a user signs up and gets a ledger account.
- Top-up — the user adds funds via PSE (Banking handles this; Core records the credit).
- Card issuing — the user requests a virtual card spending against their ledger account.
- Spending — the card is authorized in real time against the user's balance and limits.
- W2W transfer — the user sends money to another wallet user.
- Payout — the user withdraws to a Colombian bank account (Banking handles the rail; Core debits the ledger).
Architecture
The wallet sits on three Core services and one Banking service:
| Layer | Service | Role |
|---|---|---|
| Money in | Banking — PSE collections | Payer-initiated top-up |
| Balance | Core — Ledger | Per-user account, every cent recorded |
| Spending | Core — Cards + Spending Controls | Card issuing + real-time authorization |
| Money out | Core — Payouts → Banking | Withdrawal to external bank |
Walkthrough
The full walkthrough — onboarding code, top-up handling, card issuing, real-time authorization, W2W transfer, and payout — will be added here.
Next steps
- Ledger — the data model that anchors the wallet.
- Cards — issuing and lifecycle.
- Best practices — production considerations.