Choose Your Path
Every integration starts with the same Quickstart: sign up, create one entity, generate a sandbox key, and issue one sandbox invoice. This page helps you choose what to build on top of that.
Compare The Four Paths
| JavaScript SDK | Embed SDK | React UI | Direct REST API | |
|---|---|---|---|---|
| Best for | Backend workflows you control | Working invoicing screens in an existing app | React teams that want to own the UI code | Any language, or teams writing their own client |
| What you build | Your own UI, or none | A container element on your page | Screens, from components you copy into your app | HTTP requests and client code |
| Key | Account or entity key, on your server | Entity key (ek_*) | Account or entity key, on your server | Account or entity key, on your server |
| Backend needed | Yes | Usually | Yes | Yes |
| Typical time to first invoice | Half a day to 2 days | A few hours | 1 to 3 days | 1 to 3 days |
| Start here | JavaScript SDK quickstart | Embed SDK quickstart | React UI getting started | Authentication, then the Create Invoice API |
Pick The JavaScript SDK If
- you want typed backend workflows for invoices, customers, items, payments, or exports
- you need your own UI, or no UI at all
- you want the shortest route from a sandbox proof of concept to production
Initialize once on the server, then create an invoice in your entity:
import SpaceInvoices from "@spaceinvoices/js-sdk/sdk";
const sdk = new SpaceInvoices("YOUR_API_KEY");const invoice = await sdk.invoices.create({
customer: {
name: "Acme Corporation",
email: "billing@acme.com",
},
items: [
{
name: "Consulting",
quantity: 10,
price: 150,
},
],
}, { entity_id: "YOUR_ENTITY_ID" });Not ideal if you want a ready-made invoicing interface this week.
Next: JavaScript SDK quickstart and the Quickstart.
Pick The Embed SDK If
- you want invoicing screens in your app without owning frontend component code
- you need the shortest path to a working embedded UI
- an iframe-based integration boundary is acceptable
Add a container, then open the invoice list inside it:
import { SpaceInvoices } from "@spaceinvoices/embed-sdk";
const si = new SpaceInvoices({
apiKey: "ek_live_your_entity_api_key",
entityId: "ent_123",
onAction: (_action) => {},
});
// Open invoice list in the container
si.open("invoices", { container: "#space-invoices-embed" });Not ideal if you need deep DOM-level customization or want the components to follow your own design system. Choose the React UI for that.
Next: Embed SDK quickstart and User Access.
Pick The React UI If
- you already ship React
- you want copy-paste components you own and can change
- you need more flexibility than an embed, without building every screen from scratch
Add the kit with its installer, then pick the screens you need:
npx @spaceinvoices/react-ui@latest initnpx @spaceinvoices/react-ui@latest add invoices/create-invoice-screenNot ideal if your team is not on React or you want a UI that needs no maintenance.
Next: React UI getting started and Providers.
Pick The Direct REST API If
- your backend is not JavaScript
- you want raw HTTP without SDK abstractions
- you need full control over transport, auth, and client generation
Create an invoice in one entity. The x-entity-id header selects the entity:
curl -X POST "https://eu.spaceinvoices.com/invoices" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "x-entity-id: YOUR_ENTITY_ID" \ -H "Content-Type: application/json" \ -d '{ "items": [ { "name": "Consulting", "quantity": 10, "price": 150 } ] }'Next: Authentication to choose your key type, then the API reference.
Zapier, If You Do Not Write Code
Zapier creates invoices or estimates from CRM, forms, or spreadsheets with no backend work. It does not offer embedded UI or custom backend logic. See Zapier.
Choose By Product Shape
| If your product looks like this | Start here |
|---|---|
| One business, one issuing entity | Quickstart |
| One platform, many customer businesses | Multi-Tenancy |
| You need end-user dashboard access | User Access |
| You want the docs mapped to your market | Use Cases |
Sandbox And Production
Sandbox and production are separate environments with separate keys and data. Sandbox is free for building and testing. Production is billed.
| Sandbox | Production | |
|---|---|---|
| Cost | Free, with no time limit | €49/month platform fee |
| Entities | Sandbox entities | The first entity has no per-entity charge; each additional entity is €3/month |
| Documents | Test data only | 100 documents per entity per month are included, then billed per document |
| Keys | sk_sandbox_*, ek_sandbox_* | sk_live_*, ek_live_* |
| Sandbox send limits apply, see Email | Live delivery to your customers |
Current rates are on spaceinvoices.com/pricing.
What The First Week Usually Looks Like
- Sign up and create a sandbox entity.
- Generate the key type that matches your path.
- Issue one sandbox invoice.
- Confirm rendering, tax behavior, and the delivery flow.
- Decide how your end users will access invoicing, if applicable.
Next Steps
- Introduction: confirm the product model
- Quickstart: create the first invoice
- Use Cases: match the docs to your architecture