Wallet
Portal
Branding & Theme

Portal — Branding & Theme

Who calls these endpoints?External API (s2s)
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, permission wallet: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

FieldDescription
displayNameProgram name shown to users
logoUrlLogo address
primaryColorPrimary colour
secondaryColorSecondary colour
supportEmailSupport email
supportPhoneSupport phone
receiptFooterNoteNote 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      # s2s

Do 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:

PlaceSource
Your app UIYour design + program branding fields
ReceiptsProgram 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

SymptomCauseFix
Branding changed but the app looks oldValues are hard-codedRead and cache the program
No support details on receiptsFields are emptyFill in supportEmail / supportPhone
User looking at the wrong balanceThe multi-program split is not shownIndicate the active program in the UI