FinBaze for Platforms

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.

RepositoryStackShowsDeploy
neobank-demoNext.jsBank feed push, booking-chip, camera receipts, VAT paid from the account (onPaymentRequested), step-up mock. See Banks.Vercel button, Docker
pos-demoNext.jsZ-report to bookings with a flow template, VAT return, purchase inbox. See Point of sale.Vercel button, Docker
tms-demoNext.js, NodeShipment to invoice with a flow template, carrier invoices, ICP and OSS. See Logistics.Render blueprint, Docker
headless-demoNode, ReactA headless session and hooks with your own UI. See Headless hooks.Render blueprint, Docker
webhook-receiversNode, Python, PHPSignature verification, idempotent handling, replay. See Webhook events.Docker per language, Render
finbaze-embed-examplesVanilla, React, Vue, SvelteEvery component with appearance variants.StackBlitz links

One click#

  1. 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.
  2. Click the deploy button in the README and paste the keys it asks for.
  3. Add your deployment's URL under Embedding → Allowed origins in the portal.
  4. 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 at webhookUrl subscribed to every event (when you give a URL; otherwise webhookSecret is null), and the sample's demo company (Demo companies): the hospitality sole trader for pos-demo, the logistics B.V. for tms-demo, a services sole trader for the others. Seeding is idempotent, so the same company comes back.
  • Shown once. secretKey and webhookSecret are 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.