Integrations
Integrations in the sidebar is the store: browse by category (Payments, E-commerce, Reviews, …), open one, fill in its credentials and you're connected. You can connect the same integration more than once with different credentials.
Check whether a connection still works
Open any connection and use Test connection. Voltane asks the other side there and then, and tells you what came back — the shop it reached, or the payment methods that are live. No data is imported and nothing changes on their side.
Use it whenever something looks quiet. A connection rarely announces that it has stopped working: an access key gets revoked, a payment key turns out to be a test key. In both cases the imports simply go quiet, which looks the same as a slow week. The check tells the two apart in a second, and it remembers — you'll see when the connection last worked, and the reason it last failed.
Each integration is checked in the way that suits it:
- Shopify — names your shop and lists the permissions your access token carries, so a missing one (orders, products) is visible before it costs you an import.
- Mollie — shows the profile, whether it is a live or a test key, and which payment methods your customers can actually use.
- Google Reviews — follows the review link your invoices carry and confirms it reaches your own review page.
- Website forms — confirms submissions would be accepted right now, and shows how many have come in and when the last one arrived.
Payments — Mollie
Connect Mollie and your invoices carry a pay now link in the portal. Payments are matched to invoices automatically and the team is notified when money comes in.
The link is made when you send an invoice, for the amount still open. If that amount changes — your customer pays part of it by bank transfer, for instance — the old link is closed and the next email or reminder carries a new one for the rest, so nobody pays the wrong amount. Offers, credit notes and drafts never get a link.
What Mollie keeps per payment shows on the invoice too, under Cost of this payment, once Mollie has paid it out to you.
E-commerce — Shopify
Orders in your Shopify store become invoices in Voltane, marked with their origin so your dashboard shows exactly how much revenue the store brings in. The invoice line keeps the product, variant and any details your customer entered for that item — such as a measurement, engraving or length — together in its description.
Keep the shop's VAT settings in step with your registration. The rate is set in your shop at checkout, and that decides what your customer pays. But whether a sale to another EU country is taxed there or at home depends on your total turnover across everything you sell, which your shop cannot see and we can. If the two ever disagree and your shop's prices include VAT, the invoice states the rate you actually owe: your customer still pays exactly what they were charged, and only the split between price and VAT moves. If your prices exclude VAT, or there's no clear equivalent rate, the invoice stays as charged. Either way we tell you on the first order it happens to, and the Integrations page keeps the count.
A product you sell without VAT is a used good. When a product in your shop doesn't charge VAT, we treat it as sold under the margin scheme: the invoice shows a dash instead of a VAT rate and states that it concerns used goods. When everything in an order is a used good, the shipping you charge counts as part of that sale too. A refund of a used good is credited the same way.
Unless it's a deposit or a gift card. Gift cards from your shop are recognised by themselves and aren't taxed when sold: the VAT comes when they're spent. For a deposit, give the product the tag statiegeld or deposit in Shopify. From its very first order it's booked as a deposit — not taxed, and its refund the same way. Removing the tag doesn't undo it: change the product's VAT treatment in Voltane as well. If your shop does charge VAT on a deposit, we let you know, just as with a rate that doesn't match.
Shipping arrives split the way your shop split it. When an order has goods at different VAT rates, Shopify divides the shipping over those rates, and the invoice gets one shipping line per rate, adding up to what your customer paid.
A refund becomes a credit note for that order. When you refund an order in Shopify, we make the same credit note you would make with Credit on its invoice: the refunded items at the price and VAT rate they were sold at, the refunded shipping, and the order's customer details. The invoice then shows Partially credited, or Cancelled once everything has gone back. If you kept part of the money, for damage say, the item is credited for what you actually refunded and the line says why. A refund without items, like a gesture of goodwill, is spread over the order's VAT rates. Did your customer pay in another currency? The credit note uses the order's exchange rate, and the difference with the day of the refund is booked as a correction, so the credit note still shows as Refunded. Your stock follows Shopify: whether a refunded item goes back on the shelf is up to your shop.
Review where an EU order was dispatched from. Voltane reads completed Shopify fulfilments to record the country each parcel left. An order still awaiting fulfilment, a partially fulfilled order, or parcels leaving from several countries may need tax review before the dispatch country can be settled. A missing or conflicting origin is shown for review too. When a later fulfilment adds evidence to an issued invoice, the invoice keeps the VAT treatment it had when issued; check the finding before making any correction.
If an imported order is missing its original currency, use Resync integration on its invoice to fetch the order details from Shopify. Check the source amount and currency before using them in a VAT report. A converted total cannot tell you which currency the order used.
See what your payment provider kept. Shopify Payments pays your orders out in batches, with its fees already taken off. Every night we read the payouts that have reached your bank, and each order's invoice shows what the provider kept under Cost of this payment. It sits beside the invoice, not in it: your customer paid the full amount.
Linking your Shopify emails to the invoice
Shopify sends your customer its own emails, such as the order confirmation and the shipping update. Add this link to them and it opens the invoice for that order in your customer's portal — no account, no password:
https://voltane.nl/billing?s={{ order.id }}&e={{ order.email }}
In Shopify, go to Settings → Notifications, open a template such as Order confirmation, and place the link where you want it: a "View your invoice" button, or a line in the footer. Shopify fills in the order and the email address for each customer.
- The email address has to match. The link opens the invoice only when the address on the order is the one on the customer's profile in Voltane. If it isn't, your customer is asked for their email address and gets a link to their portal instead.
- The order has to be in Voltane first. Orders usually arrive within moments of being placed. A customer who clicks before that is asked for their email address too; the link opens the invoice once the order is in.
Google Reviews
Link your Google Business profile to show and track your reviews.
Website forms
Website forms is how your own site talks to Voltane. Point your contact or signup form at the form endpoint and every submission becomes (or updates) a customer and notifies the team, with everything the form carried — no manual typing at all.
Connect it like any other integration: create a connection, give it a name you'll
recognise ("Contact form", "Quote request"), and save. The connection gets its
own id, and that id is what your form sends along in a field called credential.
Use Test connection afterwards to confirm submissions are being accepted and
to see how many have come in.
Make one per form. A contact form and a quote form each get their own, so every submission carries where it came from. And don't delete one while a form still points at it — those submissions stop being accepted.
The REST API
Separate from the above. The REST API uses personal access tokens, which you create under your own account settings — creating one doesn't create a website form connection, and vice versa. A token that hasn't been used for 12 months is removed automatically. Developers can find the full reference at /docs/api.
Connecting Shopify: which permissions to grant
You connect Shopify with an access token you create in your own shop: Settings → Apps and sales channels → Develop apps → Create an app, then pick the Admin API scopes below and install it.
Voltane only reads from your shop. It asks for no write permissions at all, so nothing it does can change your products, orders or stock in Shopify.
Required — without these, parts of Voltane stay empty:
| Permission | What it gives you |
|---|---|
read_orders |
Shop orders arrive here as invoices |
read_customers |
The buyer on each order |
read_products |
The items and variants on order lines |
read_inventory |
Stock per variant |
read_fulfillments |
Proof the goods went out, and tracking |
read_shopify_payments_payouts |
Payouts, and the fees inside them |
Worth adding:
| Permission | What it gives you |
|---|---|
read_all_orders |
Orders older than 60 days — needed if you want your existing history imported |
read_returns |
The returns behind refunds |
read_locations |
Which location stock sits at |
The same list is shown on the connect screen while you paste the token, so you don't have to come back here.
If you miss one, the connection still succeeds — Shopify happily hands out a working token with fewer permissions. Voltane checks what was actually granted and names anything missing, because the alternative is a sync that quietly imports nothing and looks like a broken product. Add the scope in Shopify, issue a new token, and paste it in.
Made webhooks by hand in Shopify? Webhooks you create yourself under Settings → Notifications → Webhooks are signed with the key shown on that screen, not with your app's secret. Paste it into the connection's optional Webhook signing secret field, so we can tell those deliveries really come from your shop. Leave it empty otherwise.
Importing a whole catalogue at once
To bring your shop's catalogue over — on a first connection that can be hundreds of products — open the connection under Integrations → your Shopify connection and press Start import.
You choose two things:
- Which ones — active products only, drafts only, archived only, or everything. This is filtered at the shop, so only what you ask for is fetched.
- How many — leave it at 0 to bring everything over, or set a number to take a big catalogue in pieces. Fill in Start after and the next run picks up exactly where the last one stopped: 0 and 200 first, then 200 and 200.
It runs in the background. A full catalogue can take several minutes. You can close the screen and come back — the results appear on that same page, under Recent imports, with how many were added, how many were linked to something you already had, and how many were left alone. While it's still going, the list refreshes on its own.
What it will and won't do
- Products you already have are never added twice. If we already know the shop's ID for a product, it's recognised and refreshed rather than copied.
- Products matching on SKU are linked, not duplicated.
- Products matching only on name are left for you. They're recorded in the results, so you can join them yourself — see Merging two products by hand below.
- New products arrive as a name first, then fill in. Options, variants, prices, photos and stock settings are fetched from the shop straight after, one product at a time. So a product may briefly show with no variants — give it a minute.
Merging two products by hand
Sometimes the shop's product and one you typed yourself are the same article under different names — the shop calls it Riwax Inside Clean – Interieur- & Cabriokap Reiniger met Citrusgeur, you called it Riwax Inside Clean. The import can't know that, and it won't guess.
You can join them yourself: open the one you want to get rid of and use Merge into another product. See Merging two products in the Products chapter.