Link Demo Playground

Link Demo Playground

Launch the real hosted Connect flow against BillerAPI's sandbox — no signup, no code. Paste a sandbox client id, pick a biller and a scenario, and step through Connect exactly as your users would.

Everything here runs against sandbox

The playground mints a sandbox link_token using the fixed sandbox secret secret_good and opens the hosted /connect page in a new tab. No real biller is contacted and no money moves. Grab a sandbox client id at /developer/keys.

Get a sandbox client id at /developer/keys. The secret is the fixed value secret_good for every sandbox client.

Credentials accepted; one residential account; one bill due in 15 days.

At the credentials step, enter account number 4242424242 (any password) to drive the Successful link scenario.

See the magic account numbers reference for every scenario.

Launch sandbox Connect

Mints a sandbox link_token for test_electric_company and opens /connect in a new tab.

Open Connect from your own app

Mint the link_token server-side — your secret never reaches the browser. The Launch button above does it client-side only because sandbox uses the fixed secret_good.

# Mint a sandbox link_token, then open /connect?linkToken=…
curl -X POST https://sandbox.api.billerapi.com/link/token/create \
  -H "Authorization: Bearer $BILLERAPI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "client_user_id": "docs_demo", "biller_id": "test_electric_company" }'

# => { "link_token": "lt_...", "link_token_id": "lt_...", "expires_at": "..." }

How the flow fits together

1

Server mints a link_token

POST /v1/link-tokens with your client id + secret. In sandbox the secret is the fixed secret_good; in production it is your real client secret and the mint happens on YOUR backend.

2

Browser launches Connect with the token

The Elements SDK .connect({ linkToken }).open() opens the hosted /connect iframe. The playground opens it in a new tab instead so you can watch the whole flow.

3

onEvent streams the funnel

As the user moves through panes, the hosted page emits connect/* events to your onEvent handler — connect/view, connect/authenticated, connect/error, and so on.

4

Webhooks confirm the outcome

link.completed (interactive) or link_token.completed (backgrounded) is the authoritative signal that the link is ready. SDK callbacks are UX hints only.

Next steps

Was this page helpful?