Skip to main content
Two separate things are branded, at two different levels. They are easy to confuse, and setting one expecting the other is the most common mistake.

Issuer branding

Your issuer display is the identity holders see attached to every credential you issue: a display name and an optional logo. It is read by the didx:me wallet and by third-party wallets, which fetch it from your published issuer metadata.
logoUrl is restricted to https because the platform fetches it server-side to publish your issuer metadata. Plain http, localhost and other schemes are rejected at the boundary.
displayName is required when your tenant is provisioned, and for good reason: without it the platform falls back to the internal project name, so you would issue as something like acme-me-creds. Third-party wallets read that from your metadata, and credentials already in holders’ wallets keep showing whatever name was current when they were issued.

Changing your issuer branding

There is currently no self-service endpoint for this — issuer branding is applied during tenant provisioning and changed by DIDx on request. To change your display name, logo, or alt text, ask in the DIDx Slack with:
  • your tenant alias,
  • the new displayName, and/or
  • a public https URL for the new logo, plus its alt text.
The change applies to your issuer metadata going forward. Credentials already issued keep the branding they were issued with until the holder’s wallet refreshes them.
A self-service endpoint for issuer branding is on the roadmap. Until it ships, treat your display name as something you set once, carefully, at onboarding.

Credential card branding

Each credential preset or template can carry a branding block that controls how that credential’s card renders in the wallet. All three are optional. Omit the block entirely and the wallet falls back to its default card styling.
The same branding block is accepted on credential templates, for the custom template path.

Colours must be 6-digit hex

backgroundColor and textColor accept #RRGGBB and nothing else. Named colours (red), functional forms (rgb(0,102,204)), and 3- or 8-digit hex are all rejected with a 400. This is deliberate rather than an oversight: the wallet derives tinted accents from your colours by appending an alpha byte to the value, which only produces a valid colour when the input is exactly six hex digits.

Branding is fixed at creation

There is no update endpoint for credential presets or credential templates, so the branding you supply at creation is the branding that credential keeps.
  • Presets are immutable and cannot be deleted. To change a preset’s branding, publish a new preset (for example acme:membership-v2) and issue against that instead.
  • Templates you created yourself can be deleted and recreated, so long as you are willing to lose the template id.
  • Preset-managed templates cannot be deleted. The template the platform materialized from a preset refuses deletion with a 400 — Template '<id>' is managed by a preset and cannot be deleted. Publish a new preset instead.
Either way, credentials already issued keep the branding they were issued with. Get the colours right before you issue at volume.

What the holder sees

Both layers arrive together in the wallet. For each credential a holder opens, the wallet renders: So a well-branded credential needs both: your organisation set up correctly at onboarding, and a branding block on the preset.