Integrate

Put Kovrell in front of your payment run.

Kovrell sits between a bank-detail change and the payment it affects. Five HTTP calls connect it to whatever sees those changes today. These examples run against this sandbox and its sample ledger.

Sandbox requests use sample data and can be reset at any time. Don't send production vendor or banking information.

00

Sync the vendor and its paid invoices

Your ERP sends the vendor master record: the contact of record, the bank on file, and recent paid invoices. The ledger questions are drawn from these invoices. You can also do this by hand on the Set up page.

curl -X POST https://kovrell.midelabs.xyz/api/vendors \
  -H "content-type: application/json" \
  -d '{"name":"Pine Ridge Lumber","contact_name":"Alex Morgan",
       "contact_phone":"+1 503 555 0164","bank_name":"U.S. Bank",
       "account_last4":"3907","number_on_file_days":540,
       "invoices":[{"number":"PRL-1182","amount_cents":1824000,"paid_on":"2026-07-25"},
                   {"number":"PRL-1207","amount_cents":2291550,"paid_on":"2026-08-23"}],
       "payment_amount_cents":3140000}'
01

Send bank-detail changes to Kovrell

When your AP inbox, vendor portal, or ERP sees a request to change a vendor's bank details, post it. Kovrell holds the vendor's next payment.

curl -X POST https://kovrell.midelabs.xyz/api/requests \
  -H "content-type: application/json" \
  -d '{"vendor_id":"v_halden","channel":"email",
       "new_bank_name":"Metro Commerce Bank",
       "new_account_last4":"7712",
       "callback_contact":"+1 646 555 0173",
       "webhook_url":"https://erp.example.com/kovrell"}'
# 201 returns the request and, with a webhook, its signing secret (shown once)
02

Start a verification run

Kovrell checks provenance first. If the number of record is new or recently changed, it refuses with 423 and a reason. Otherwise it rings the contact of record.

curl -X POST https://kovrell.midelabs.xyz/api/requests/req_halden/runs
03

Get the verdict

Kovrell posts verification.completed to your webhook when the call ends: verdict, payment status, and evidence links. Check the kovrell-signature header (HMAC-SHA256 of "<t>.<body>" with your secret) before acting on it. You can also poll the run or watch it live.

# kovrell-signature: t=1790540000,v1=<hex>
expected = hmac_sha256(secret, f"{t}.{raw_body}")
curl https://kovrell.midelabs.xyz/api/runs/<run id>
# live events: wss://kovrell.midelabs.xyz/ws/watch/<run id>
04

Keep the evidence

Every run ends with a sealed record: recording, transcript, tool calls, expected versus heard answers, and a sha256 over all of it. The PDF report is the readable copy an auditor files.

curl -o record.json "https://kovrell.midelabs.xyz/api/runs/<run id>/evidence?download=1"
curl -o report.pdf "https://kovrell.midelabs.xyz/api/runs/<run id>/pdf"   # PDF for the audit file

Where it runs

  • The agent runs on the AssemblyAI Voice Agent API, held by the Kovrell server. The vendor's device only carries audio.
  • The agent never receives expected answers. Checks and the verdict run in Kovrell's code, not in the model.
  • Today the vendor answers on a secure call link. The same interface carries a phone line to the number of record.
  • The ledger here is a sample. In production this is your vendor master and payment schedule.