Authentication model
X-Client-ID identifies one of three credential owners. The credential owner determines which operations are allowed and whether an account target is required.
USER credential
For an account-level operation, send bothX-ISPB and X-Account-Number. The target account must be active and belong to the authenticated user. Do not send the pair for user-owned managed-account operations.
ACCOUNT credential
The credential-bound account is used when the target pair is absent. If the pair is sent, both values must exactly match the bound account.PLATFORM credential
Platform credentials are limited to platform-level operations. Account-level endpoints reject them, and platform operations do not accept account-target headers.Conditional account-target headers
X-ISPB— target bank ISPB.X-Account-Number— target account number.
Request signing
Every request is signed with HMAC-SHA256. Always sendContent-Type, X-Client-ID, X-Timestamp, X-Nonce, and X-Signature. X-Content-Hash is optional.
StringToSign
Join the following values with a line feed (\n) in this order:
- Uppercase HTTP method
- Request path
- Canonical query string
- Canonical headers
- Content hash
- Timestamp
- Nonce
Canonical query
Parse all query parameters, sort keys lexically, apply URL query escaping to every key and value, and join pairs askey=value&key2=value2.
Canonical headers
Always include these lowercase names:content-typex-client-idx-noncex-timestamp
x-content-hash only when a non-empty X-Content-Hash header is sent. When the account-target pair is sent, also include x-account-number and x-ispb.
Trim every value, sort the included lowercase header names lexically, and join the lines as key:value with a line feed between lines. The canonical values must exactly match the headers received by the server.
Content hash
IfX-Content-Hash is supplied, use that value in the signature and ensure it equals the lowercase SHA-256 hex digest of the exact raw request body. If the header is omitted, the server computes the body hash; do not include x-content-hash in canonical headers.
Validation requirements
- Use a unique nonce for each client request.
- Send the timestamp as Unix milliseconds within the accepted clock-skew window.
- Call from an IP address in the configured allowlist.
- Sign the exact path, query, headers, and raw body that are transmitted.