Setup
Integrations
Architectural sketch — how predictions flow into your ERP
Sketch only.None of these integrations are wired up in the reference implementation. They show the surface where you'd plug in your ERP. The shared mechanism is theprediction_logtable — every field decision (predicted, accepted, overridden) is recorded with provenance, ready to feed an outbound webhook.
NetSuiteERP
Post each predicted invoice to NetSuite as a draft VendorBill via SOAP/REST. Use the prediction_log row's predicted_value as the proposed Account; let the user confirm in the NetSuite UI.
POST https://<account>.suitetalk.api.netsuite.com/services/rest/record/v1/vendorBill
{
  "entity":   { "internalid": "<vendor_id>" },
  "tranDate": "2026-04-25",
  "memo":     "Auto-coded by Aito (CUST-0000) — prediction_log id LOG-abc",
  "expense": [{
    "category": { "internalid": "<gl_4400_id>" },
    "amount":   4220.00
  }]
}
Microsoft Dynamics 365 FinanceERP
Use the OData /VendorInvoiceHeaders endpoint to create the header, /VendorInvoiceLines for each line. Aito's predicted GL goes into MainAccount; predicted approver routes via the workflow assignment.
POST /data/VendorInvoiceHeaders
{
  "DataAreaId": "DAT",
  "InvoiceAccount": "<vendor_id>",
  "InvoiceDate": "2026-04-25",
  "PurchaseOrder": "",
  "InvoiceId": "INV-CUST-0000-001"
}
Procountor (Finnish AP)ERP
Procountor's REST API is well-suited because its account / dimension structure matches the predicted fields here directly. Each prediction maps cleanly to a single API call.
POST https://api.procountor.com/api/purchaseinvoices
{
  "supplier":    { "businessId": "0223640-4" },
  "invoiceDate": "2026-04-25",
  "totalSum":    4220.00,
  "rows": [{
    "accountNumber": "4400",
    "dimensions":    [{ "name": "Cost centre", "value": "CC-210" }],
    "totalSum":      4220.00
  }]
}
Generic outbound webhookGeneric
If your ERP isn't listed, point an HTTPS endpoint at the prediction_log table and consume new rows on a schedule. Aito predictions and human overrides both end up here, so your ERP gets a single feed with provenance.
POST <your_endpoint>
{
  "log_id":          "LOG-abc",
  "customer_id":     "CUST-0000",
  "field":           "gl_code",
  "predicted_value": "4400",
  "user_value":      "4400",
  "source":          "predicted",
  "confidence":      0.91,
  "accepted":        true,
  "timestamp":       1714060800
}