Skip to main content
Every screen you build on the API carries only your brand. A handful of steps run on pages and emails outside your product, and each one shows Stableyard, a verification provider, or both. Plan your flows around them rather than discover them in production.

Two things you can brand

When an account has a display profile, hosted checkout names the account as the recipient and your app as the presenter: “Northwind via Your App”. Without one, it shows your app branding alone. Unset app fields fall back to your app’s name and a default colour.
  • expectedVersion guards concurrent edits. Send 0 the first time, then the current account.displayProfile.version.
  • reason is required, 10 to 500 characters, for the audit record.
  • logoUrl must be public HTTPS with no embedded credentials, up to 2,048 characters. displayName is up to 120.
  • Changes reach future payments only. Each payment keeps the recipientDisplay captured when it was created.

Surfaces that are not yours

The hosted pages and emails use your app’s name as Stableyard has it on file, not your checkout branding. Neither carries your logo. There is no custom domain for hosted pages.
Tell customers before each hand-off that the next page or email comes from Stableyard or a verification provider, and bring them back to a screen that reads the result. Hosted verification pages do not redirect to you, so that screen polls the resource or reacts to a webhook.

Keep hosted checkout optional

You do not have to use hosted checkout. Create payments from your backend and render your own screens, either with the payment’s client secret or with a client session. See Build your own checkout.

Run calls from your customer’s browser

Your app secret never leaves your backend. A browser or mobile app gets a short-lived client session bound to one account instead.
1

Your backend creates the session

Send accountId or externalUserId, not both. The account must already exist. expiresInSeconds runs from 60 to 3,600, default 600. Omitted permissions default to account:read.
2

Hand over the session token

Pass clientSessionToken to the browser. It can be exchanged once.
3

The browser exchanges it

POST /v2/client/auth/exchange with { "clientSessionToken": "…" } returns an accessToken and the effective permissions.
4

The browser calls with the access token

Authorization: Bearer <accessToken> on /v2/client/*. An expired token returns 401 client_token_expired: ask your backend for a new session.
Verification, bank accounts and on-ramp accounts have no client routes. Email confirmation, KYC sessions, capability activation, bank linking, on-ramp issuance and deposit instructions all run from your backend. Your screen collects input and shows results; your backend makes the call. Full rules for credentials and permissions are on Authentication.

Next: Going live

What Stableyard enables, and what changes between staging and production.