Developer guide
Migrate to Ondes PRO from another tool, with the API and AI
Switching business software usually stalls on one thing: getting the data across. This guide shows how to import your catalogue, customers and open invoices into Ondes PRO through the REST API, handing the tedious part — reading the export, mapping columns, checking every row — to your AI assistant connected over MCP, and only writing for real after a clean dry run.
Type your workspace name: the configurations on this page adapt. It is remembered in this browser only.
What can be imported into Ondes PRO, and in what order?
Anything with a writable API v1 resource can be imported: store categories and products (shop/categories, shop/produits, then shop/images-produit for galleries), inventory components (inventory/composants), billed customers (billing/clients), prospect records (crm/fiches), quotes and invoices (billing/devis, billing/lignes-devis, billing/factures). Order matters because objects reference each other: a category before its products, a customer before their quotes, a quote before its invoice.
In Ondes PRO, an invoice is born from a quote and is never deleted — that is the legal retention requirement. An import mistake on an invoice cannot be undone with one click, which is why the dry run below matters. For invoices already settled, filing the old tool’s PDFs in the Drive is often enough; importing unpaid invoices, on the other hand, lets payment reminders go out from Ondes PRO.
Import your data into Ondes PRO, step by step
Running example: Atelier Lumen is bringing over 412 products, 1,380 customers and 37 invoices awaiting payment.
Export from the old tool
Get one CSV file per object type: products, customers, open invoices with their lines. Keep the original identifiers in a column: they become your idempotency keys and your mapping table.
Connect your assistant to your workspace
Connect Claude Code, Cursor or another MCP client to your workspace’s server through OAuth (see compatible clients). For an unattended script, create a dedicated key with
shop:writeandbilling:writeinstead, and revoke it once the migration is done.bashclaude mcp add --transport http ondes https://your-workspace.ondes.pro/mcp/Have the column mapping drafted
Hand the export to the assistant. It reads each resource sheet with
ondes_ressource— required fields, types, accepted values — and drafts a mapping: “Label” toname, “Net price” toprice, “Ref.” tosku. Review it: this is the one moment a human really has to decide.Dry-run a sample
Ask the assistant to validate a dozen rows with
simuler: true: the server checks each body and answers as it would for a real creation, without saving anything. Bad formats (prices with a currency symbol, VAT written “20 %”, country names spelled out) surface here, field by field.Import in batches of 100
POST /api/v1/<resource>/lot/writes up to 100 objects in one transaction: if a single row is rejected, the whole batch rolls back and the response points to the row and the reason. Add anIdempotency-Keyderived from the batch’s original identifiers, so re-running after a dropped connection creates no duplicates.Bring billing over last
Create quotes and their lines first (a quote’s
numerois optional: left empty, it takes the company’s sequence), then one invoice per quote. Dry-run each invoice before the real write: once created, it can no longer be deleted.Check the result
Compare totals: number of products, number of customers, amount of open invoices. The
?search=filter onshop/produits(name or SKU) andbilling/clients(name or email) quickly finds a missing row. The assistant can produce this reconciliation report itself.
The assistant reads the export and dry-runs before writing
A customer batch body
Each operation carries its method and its data; an id is only required to update or delete an existing object.
curl -X POST https://your-workspace.ondes.pro/api/v1/billing/clients/lot/ \
-H "Authorization: ApiKey opk_…" \
-H "Idempotency-Key: customer-import-batch-001" \
-H "Content-Type: application/json" \
-d '{
"operations": [
{"methode": "POST", "donnees": {"nom": "Brasserie La Canopée", "email": "accounts@lacanopee.com", "ville": "Nantes"}},
{"methode": "POST", "donnees": {"nom": "Galerie Ressac", "societe": "Ressac SAS", "siret": "…", "ville": "Biarritz"}}
]
}'A hundred operations per batch at most. One rejection, and nothing is written.
Classic data-migration traps
- Duplicate customers: the same customer entered twice in the old tool. De-duplicate on email or company registration number before importing; the assistant can do it on the CSV.
- Gross amounts mistaken for net: Ondes PRO prices and lines are entered excluding VAT, with a VAT rate per line. Check on two or three invoices that the recomputed totals match.
- Images: they are uploaded separately, as multipart, to
shop/images-produitonce products exist. A batch does not carry files. - Companies: if your workspace holds subsidiaries, each object belongs to the company of the call. Import company by company, without mixing files.
- The forgotten key: revoke the migration key at the end. An OAuth connection is cut by name from the MCP tab.
What if I don’t have a developer?
Without a developer, the same path works from Claude Desktop or claude.ai: you drop the export into the conversation, the assistant connected to your workspace drafts the mapping, dry-runs, then imports once you agree. Every real write is labelled as such in its response.
For large volumes or a multi-company migration, onboarding support is available as an add-on (see pricing). And if you would rather see the product with realistic data first, the demo stays open for 72 hours.
Going further
- Online storeOrders, catalogue, promo codes and shipments handled by your assistant, in test mode by default.Read
- InvoicingQuotes, invoices, reminders and credit notes prepared by your assistant, within invoicing rules.Read
- Inventory managementStock levels, deliveries, bills of materials and production orders read and prepared by your assistant.Read
- CRMCustomer records, follow-up notes, pipeline and reminders kept up to date by your assistant.Read
Frequently asked questions
Can I import a product catalogue through the API?
Yes. Categories go through shop/categories, products through shop/produits (name and price required, SKU optional) and galleries through shop/images-produit. The lot/ endpoint writes up to 100 of them per transaction.
Can I bring over invoices from my old software?
Yes, but an Ondes PRO invoice is born from a quote and is never deleted. You create the customer, the quote and its lines, then the invoice, dry-running first. Many businesses only import unpaid invoices and archive the rest as PDFs.
How do I avoid creating the same data twice if the import stops halfway?
Send an Idempotency-Key derived from the original identifiers on every write or batch. Replayed with the same body, the call returns the response it already got without creating anything again.
Does the AI write straight into my data?
Only when you ask it to. It starts by reading the resource sheets and dry-running writes with simuler: true, which saves nothing. Every response states whether the write was a dry run, a test-mode attempt or real.
What happens if one row in a batch is invalid?
The whole batch is rolled back, nothing is written, and the response says which operation failed and why. You fix the row and re-run the batch under a new idempotency key: a changed body under the same key would get a 409.
Do I need a specific plan to migrate through the API?
No. The REST API, the batch endpoint and the MCP server are included in every Ondes PRO plan. For a large migration, onboarding support is available as an add-on.
Plug your AI into your business
The MCP server is included in every plan, with no add-on or extra fee.
Read next
- Connect your websiteShow the catalogue and take Stripe payments from a site that is already live, without rebuilding it.Read
- Build an integrationScoped keys, signed webhooks, idempotency and test mode for a back office that never creates duplicates.Read
- Automate with AIReminders, reports and automations described in one sentence, always reviewed before anything runs.Read