Portal — Branding & Theme
- Base path
/api/v1/wallet/programs/me- Identity
- Ed25519 request signature —
X-Key-Id,X-Date,X-Nonce,Digest(when there is a body),X-Signature. ±5 min clock window, single-use nonce, optional per-key IP allow-list. - Authorization
- The key must carry the wallet product and the wallet permission the call requires; a call without it gets
403 WALLET_INSUFFICIENT_SCOPE. Permissions per endpoint: Key permissions. - Cross-surface
- Branding fields are READ-ONLY over s2s. Writing is panel-only:
PATCH /api/panel/v1/wallet/programs/:id, permissionwallet:program:manage. You cannot change branding with a signing key.
The wallet is white-label: the user sees your brand. Branding lives on the program and is used both by your app and by platform-generated documents (receipts, notifications).
Branding fields
| Field | Description |
|---|---|
displayName | Program name shown to users |
logoUrl | Logo address |
primaryColor | Primary colour |
secondaryColor | Secondary colour |
supportEmail | Support email |
supportPhone | Support phone |
receiptFooterNote | Note printed at the bottom of receipts |
Programs and branding are edited in the merchant panel: Panel — Programs.
Reading the program
Your app can read the program's branding at start-up and build its UI from it:
GET /api/v1/wallet/programs/me # s2sDo not hard-code branding values into your app. If you want panel changes to reach the app, read the program and cache it — otherwise every branding change requires a new app release.
Consistency rules
Branding appears in three places and must match across all of them:
| Place | Source |
|---|---|
| Your app UI | Your design + program branding fields |
| Receipts | Program branding (displayName, logoUrl, receiptFooterNote) |
| Notifications (OTP, transactions) | Program branding |
Fill in supportEmail and supportPhone. They are shown to users on receipts and notifications; left empty, a user with a problem has no channel to reach you and goes to their payment provider or bank instead.
Receipt footer
receiptFooterNote is free text printed at the bottom of receipts. Typical uses: a legal notice, a refund-policy summary or a support channel.
Keep it short. Long text hurts receipt readability; link to a page in your app for detail.
Multiple programs
If you run several programs (for example "Employee Wallet" and "Customer Wallet"), each can carry its own branding. Your app knows which program the session belongs to and applies that program's branding.
A user can belong to two programs at once. Make the active program obvious in your UI — otherwise users confuse balances and report "my money disappeared".
Common mistakes
| Symptom | Cause | Fix |
|---|---|---|
| Branding changed but the app looks old | Values are hard-coded | Read and cache the program |
| No support details on receipts | Fields are empty | Fill in supportEmail / supportPhone |
| User looking at the wrong balance | The multi-program split is not shown | Indicate the active program in the UI |