For software publishers.
Add accounting AI to your software in a few lines of code, without building or training a single model.
// npm install @kokonut/wave
import { Wave } from '@kokonut/wave';
const wave = new Wave({ url: 'https://wave.local' });
// Un lot de pièces pour un dossier client ;
// Wave a déjà son Kokonut Drop File
const batch = await wave.batches.create({
clientFile: 'exemple-sa',
documents: ['facture-0412.pdf', 'quittance-0413.pdf'],
});
const entries = await batch.entries();
// composer require kokonut/wave
// .env : KOKONUT_WAVE_URL=https://wave.local
use Kokonut\Wave\Facades\Wave;
// Un lot de pièces pour un dossier client ;
// Wave a déjà son Kokonut Drop File
$batch = Wave::batches()->create(
clientFile: 'exemple-sa',
documents: ['facture-0412.pdf', 'quittance-0413.pdf'],
);
$entries = $batch->entries();
# pip install kokonut-wave
from kokonut_wave import Wave
wave = Wave(url="https://wave.local")
# Un lot de pièces pour un dossier client ;
# Wave a déjà son Kokonut Drop File
batch = wave.batches.create(
client_file="exemple-sa",
documents=["facture-0412.pdf", "quittance-0413.pdf"],
)
entries = batch.entries()
// dotnet add package Kokonut.Wave
using Kokonut.Wave;
var wave = new WaveClient(url: "https://wave.local");
// Un lot de pièces pour un dossier client ;
// Wave a déjà son Kokonut Drop File
var batch = await wave.Batches.CreateAsync(
clientFile: "exemple-sa",
documents: ["facture-0412.pdf", "quittance-0413.pdf"]
);
var entries = await batch.EntriesAsync();
# Un lot de pièces pour un dossier client ;
# Wave a déjà son Kokonut Drop File
curl -X POST https://wave.local/v1/batches \
-F client_file=exemple-sa \
-F documents[]=@facture-0412.pdf \
-F documents[]=@quittance-0413.pdf
Example: create a batch, provisional API
Your software, with any AI.
At your client's or in the cloud: they choose the AI, Kokonut Wave does the rest.
The AIs on the market, your choice
- ChatGPT
- Claude
- Gemini
- Mistral AI
- FYSK.ai
- Infomaniak
What your software receives.
One complete entry per document or bank transaction: the client file, the document, the accounts and the VAT.
- Documents as PDF or photo
- Entries always balanced
- One VAT line per rate
- Entries to check flagged
- Bank statements too, as CAMT, CSV or JSON
{
"client_file": "exemple-sa",
"document": "facture-0412.pdf",
"to_check": false,
"entry": {
"date": "2026-10-14",
"label": "Internet et téléphonie, octobre 2026",
"currency": "CHF",
"lines": [
{ "account": "6510", "debit": 229.97 },
{ "account": "1170", "debit": 18.63, "vat_rate": 8.1 },
{ "account": "2000", "credit": 248.60 }
]
}
}
Only the drop is billed.
The accounting firm creates it for each client file, in Kokonut Fid or with Kokonut Drop, and pays for it when created, then at each update.
-
Kokonut Wave
For your software and for your clients.
- Use
- Free
- AI call
- 0 CHF with Kokonut Station Depends on the cloud provider
-
Kokonut Drop
The client file's accounting profile, for AI.
- At creation
- CHF 70
- Per update
- CHF 50
Frequently asked questions
When will the SDKs be available?
They are coming soon. Write to us and we will let you know when they are out.
Does the profile of the client file have to be sent?
No. Kokonut Wave already has it: your software names the client file and sends its documents.
Are the package names final?
No. @kokonut/wave, kokonut/wave, kokonut-wave and Kokonut.Wave are provisional, as is the Kokonut Wave address in the examples.
And bank statements?
They are booked the same way: CAMT files (ISO 20022) from the bank, CSV exports or transactions sent as JSON by your software. Each transaction comes back as an entry, ready to approve.
Let's talk about your software.
Do you publish accounting software? Tell us what it does: together, we will see how to connect it to Kokonut Wave.
The SDKs
-
JS
npm install @kokonut/waveComing soon -
Laravel
composer require kokonut/waveComing soon -
Python
pip install kokonut-waveComing soon -
.NET
dotnet add package Kokonut.WaveComing soon -
cURL
curl https://wave.local/v1/batchesComing soon