Guides
Each sample is a public repository under github.com/FinBaze/. Each has a deploy configuration, a README and an end-to-end script that sets up the demo company, does what the app does, and checks the result against the sandbox. The scripts run every night in CI; a failure opens an issue.
| Repository | Stack | Shows | Deploy |
|---|---|---|---|
neobank-demo | Next.js | Bank feed push, booking-chip, camera receipts, VAT paid from the account (onPaymentRequested), step-up mock. See Banks. | Vercel button, Docker |
pos-demo | Next.js | Z-report to bookings with a flow template, VAT return, purchase inbox. See Point of sale. | Vercel button, Docker |
tms-demo | Next.js, Node | Shipment to invoice with a flow template, carrier invoices, ICP and OSS. See Logistics. | Render blueprint, Docker |
headless-demo | Node, React | A headless session and hooks with your own UI. See Headless hooks. | Render blueprint, Docker |
webhook-receivers | Node, Python, PHP | Signature verification, idempotent handling, replay. See Webhook events. | Docker per language, Render |
finbaze-embed-examples | Vanilla, React, Vue, Svelte | Every component with appearance variants. | StackBlitz links |
One click#
- Open
https://developers.finbaze.com/keys/new?sample=<repository>(for example?sample=pos-demo) and sign in. The page sets up your sandbox for that sample with one call,bootstrapSampleApp. - Click the deploy button in the README and paste the keys it asks for.
- Add your deployment's URL under Embedding → Allowed origins in the portal.
- Run the sample's setup script once (
npm run setup:sandbox).
What bootstrapSampleApp does#
mutation Bootstrap($webhookUrl: String) {
bootstrapSampleApp(sample: "pos-demo", webhookUrl: $webhookUrl) {
secretKey
publishableKey
webhookSecret
companyId
}
}
- Sandbox only. Anywhere else it answers
SANDBOX_ONLY. Portal sign-in only: a key cannot call it, so a leaked key cannot mint more keys. - What it creates. A restricted test key (
fb_rk_test_…) with the scopes the sample needs, the publishable key, a webhook endpoint atwebhookUrlsubscribed to every event (when you give a URL; otherwisewebhookSecretisnull), and the sample's demo company (Demo companies): the hospitality sole trader forpos-demo, the logistics B.V. fortms-demo, a services sole trader for the others. Seeding is idempotent, so the same company comes back. - Shown once.
secretKeyandwebhookSecretare not shown again; run it again for new ones. A new bootstrap of the same sample revokes that sample's earlier keys and endpoint, so keys and endpoints do not pile up. - Limit. At most 5 a day per developer (
RATE_LIMITED).
Samples: neobank-demo, pos-demo, tms-demo, headless-demo, webhook-receivers, finbaze-embed-examples. Any other name is refused with a 400 that lists them.
Run them against your own sandbox#
Every e2e script reads FINBAZE_SECRET_KEY and FINBAZE_COMPANY_ID (and optionally FINBAZE_API_URL). They use a 40-line GraphQL client and no SDK, so you can read each call. Each README shows the file layout and which file shows what.
Offline#
In the FinBaze repository, node samples/scripts/run-offline.mjs runs every sample's e2e against a mock sandbox that validates each operation against the real schema. It proves the samples send valid operations; the nightly run against the sandbox proves the behaviour.