AIS is available on request. Ask your account representative to activate it for your tenant — see
Get access.
What is an account check?
An account check confirms that a shopper owns a given bank account by fetching data directly from their bank in real time. The shopper authenticates with their bank inside the flow and consents; in return you receive a verified record containing the account holder’s name, the account identifiers (IBAN and related details), and — in some markets — identity data. The whole process typically takes under a minute and produces a point-in-time snapshot, not an ongoing data feed. Account checks are built on PSD2 account-information rails. Common uses are setting up direct debit without micro-deposit verification and confirming a payout account before disbursing funds.From the shopper’s perspective
Start the check
On your checkout, the shopper begins account verification. The Web SDK redirects them to their
bank.
Log in and consent
The shopper selects their bank, logs in, and consents to share their account details. They
complete Strong Customer Authentication (SCA) — in Germany this is typically app-to-app via
their banking app (for example pushTAN or photoTAN).
Return to your checkout
The shopper is redirected back to your
success or failure page. The browser never receives
the account data.Get access
AIS is activated per tenant on request — there is no separate account to create.- Ask your account representative to activate AIS on your existing platform tenant.
- Obtain AIS-scoped service credentials through the platform’s credential issuance. These are the bearer token the session API authenticates.
- Prepare two redirect URLs —
successandfailure— where the shopper lands after the bank step. They must be HTTPS and are validated against your allowed origins. - Register a notification endpoint — a public HTTPS URL that receives the outcome. You register it once and store the signing secret (see Notifications).
- Embed the Web SDK (
@starfish-codes/hellgate) in your shopper-facing page.
How it works
Three actors share the flow: your frontend embeds the Web SDK, your backend creates the session and receives the record, and Hellgate drives the bank interaction behind the scenes.1. Create a session
Your backend creates a session by calling the API with your AIS-scoped bearer token. The service is selected by the request path — there is notype field.
id is a short-lived, shareable secret that also pins the market and the redirect
destinations. Hand it to your frontend.
account_identifier is optional: if you already know the shopper’s account (for example their
IBAN), pass it to pre-bind the bank so the shopper can skip ahead. Omit it and the shopper picks
their bank in the normal flow.
See Create session for the full
request and response.
2. Initialize the Web SDK
Initialize the Web SDK with the session ID and nothing else. The SDK redirects the shopper to their bank automatically — there is no separate start or process call.success or
failure URL — the page load is your frontend signal. The verified record arrives on your
backend, never in the browser.
Bank login is the bank’s own SCA, not a form Hellgate controls. In many markets it is app-to-app
(for example German pushTAN or Nordic BankID): the shopper leaves the browser for their banking
app, which cannot happen inside an iframe. The SDK therefore performs a full-window redirect.
3. Handle the return
After the shopper completes (or abandons) the bank step, Hellgate redirects the browser to thesuccess or failure URL you supplied when creating the session. Both are validated against your
allowed origins, so AIS cannot be used as an open redirect.
The redirect is a frontend signal only. The authoritative outcome and the record come through the
notification and the read API on your backend.
Notifications
Hellgate delivers events to your registered webhook endpoint. Webhook delivery is a platform-wide mechanism with a shared event envelope —id, created_at, type, reason, and a
related_object you can fetch for the detail; the events on this page are the Account Information
Service’s ais.* events. When a session reaches a terminal state, the matching ais.* event is
pushed to your endpoint. This is the primary signal; the read API is the backstop. Branch on
type, then fetch the referenced resource through related_object when you need the detail.
On success, the event references the account information record:
type carries the outcome and related_object references the session:
x-hmac-signature (HMAC-SHA256 over the raw body, keyed by your
signing_secret). Verify the signature before trusting the payload. Deliveries are retried
with backoff and dead-lettered on exhaustion; dead-lettered events hold references only, never the
record.
The record
Onais.completed, read the verified record from your backend using the related_object.id:
user_identity (date of birth, social security number)
and the identifier shape (IBAN for SEPA markets) vary by country. See
Get account information for
the full schema.
Outcomes
Every session resolves to one of four event types.| Event type | What it means | What to do |
|---|---|---|
ais.completed | The account was verified. | Read the record. |
ais.user_cancelled | The shopper abandoned or declined consent. | Offer a retry — not a hard error. |
ais.authentication_error | Bank authentication or SCA failed. | Offer a retry. |
ais.technical_error | A provider, bank, timeout, expiry, or internal failure. | Offer a retry or fall back. |
technical_error; start a fresh
session.
Data handling
- The record is personal data (not card data) and never reaches the browser — the data path is backend-only.
- The record is available for your tenant’s configured retention window — 15 days by default — via the notification and the read API, then redacted to attempt metadata. AIS is not a long-term store of record.
- If you need the data beyond the retention window, pull the record and persist it on your side.
- Under the data processing agreement, you are the controller and Hellgate the processor.
Testing
On the Test tier, the bank step is simulated by a Demo Bank — no real credentials. The full happy path is: create a session, let the SDK redirect to Demo Bank (Open Banking → password → 4-digit OTP), pick a test account, return to yoursuccess URL, and receive the record
at your endpoint. Test users map to scenarios such as the happy path, cancellation, and error.
Next steps
API Reference
Create sessions, read records, and register webhooks.
Authentication
Obtain the AIS-scoped access token the session API requires.
Web SDK
Embed the SDK and initialize it with the session ID.
Composable Payment Architecture
How AIS composes with other Hellgate services.