Sales purchases
26 operations. All areas
- POST /v1/contacts
- GET /v1/contacts
- GET /v1/contacts/{id}
- POST /v1/contacts/{id}/update
- POST /v1/items
- GET /v1/items
- POST /v1/invoices
- POST /v1/credit-memos
- POST /v1/bills
- POST /v1/vendor-credits
- GET /v1/documents
- GET /v1/documents/{id}
- POST /v1/documents/{id}/void
- POST /v1/documents/{id}/apply
- POST /v1/payments/received
- POST /v1/payments/made
- GET /v1/payments
- GET /v1/payments/{id}
- POST /v1/payments/{id}/void
- POST /v1/sales-receipts
- POST /v1/payments/{id}/apply
- POST /v1/refunds
- GET /v1/documents/{id}/pdf
- POST /v1/vendor-refunds
- GET /v1/items/{id}
- POST /v1/items/{id}/update
POST/v1/contacts
Add a customer or vendor
- Operation
createContact - Scope: propose
- Write: needs Idempotency-Key (or dry_run)
- Request body
kind"customer" | "vendor", requirednamestring, requiredemailstringterms_daysintegeris_1099boolean Vendors only: this vendor gets a 1099tax_idstring The vendor's SSN or EIN (9 digits; dashes allowed). Write-only: Evenbead keeps only the last four digits and never returns the number.
- Responses
201Created (object)- Errors
400,401,403,409,422,429,500(Error:error.type,message)
GET/v1/contacts
Customers and vendors with open and overdue balances
- Operation
listContacts - Scope: read
- Read
- Parameters
kindquery, "customer" | "vendor"include_inactivequery, booleanas_ofquery, string
- Responses
200Contacts (object)- Errors
400,401,403,429,500(Error:error.type,message)
GET/v1/contacts/{id}
A customer or vendor with their documents and payments
- Operation
getContact - Scope: read
- Read
- Parameters
idpath, string, requiredas_ofquery, string
- Responses
200Contact (object)- Errors
400,401,403,404,429,500(Error:error.type,message)
POST/v1/contacts/{id}/update
Rename, change email or terms, or (de)activate a customer or vendor; for vendors, the 1099 flag and the tax ID (only its last four digits are kept)
- Operation
updateContact - Scope: admin
- Write: needs Idempotency-Key (or dry_run)
- Parameters
idpath, string, required
- Request body
namestringemailstring | nullterms_daysintegeractivebooleanis_1099boolean Vendors only: this vendor gets a 1099tax_idstring | null The vendor's SSN or EIN (9 digits; dashes allowed). Write-only: Evenbead keeps only the last four digits and never returns the number. null forgets it.
- Responses
200Updated (object)- Errors
400,401,403,404,409,422,429,500(Error:error.type,message)
POST/v1/items
Add a product or service with default accounts and prices
- Operation
createItem - Scope: admin
- Write: needs Idempotency-Key (or dry_run)
- Request body
namestring, requiredkind"service" | "non_inventory", requireddescriptionstringsales_price_centsinteger Integer cents (100 = $1.00). Never a float.purchase_cost_centsinteger Integer cents (100 = $1.00). Never a float.income_accountstringexpense_accountstringtaxableboolean Lines with this item are taxable by default
- Responses
201Created (object)- Errors
400,401,403,409,422,429,500(Error:error.type,message)
GET/v1/items
Products and services
- Operation
listItems - Scope: read
- Read
- Parameters
include_inactivequery, boolean
- Responses
200Items (object)- Errors
400,401,403,429,500(Error:error.type,message)
POST/v1/invoices
Create and post an invoice (Dr AR, Cr income per line). Agents: auto-posts within policy, otherwise queues for approval. dry_run previews.
- Operation
createInvoice - Scope: propose
- Write: needs Idempotency-Key (or dry_run)
- Request body
contact_idstring, required The customernumberstring Optional; assigned (INV-0001, CM-, BILL-, VC-) when omitteddoc_datestring, required Calendar date, YYYY-MM-DD.due_datestring Calendar date, YYYY-MM-DD.terms_daysintegerreferencestring Vendor invoice no., PO no.memostringcontrol_accountstring AR/AP control account (default: the first active one)tax_rate_idstring Sales-tax rate for the taxable lines (adds a tax line on the rate's payable account)linesarray of DocumentLineInput, requireddry_runbooleanconfidencenumbersoft_lock_override_reasonstring
- Responses
200Dry run: the document, its number, the exact entry, policy verdict; nothing written (DocumentResult)201Posted (DocumentResult)202Queued for approval (DocumentResult)- Errors
400,401,403,409,422,429,500(Error:error.type,message)
POST/v1/credit-memos
Create and post a credit memo for a customer (Dr income, Cr AR); apply it to invoices with /v1/documents/{id}/apply
- Operation
createCreditMemo - Scope: propose
- Write: needs Idempotency-Key (or dry_run)
- Request body
contact_idstring, required The customernumberstring Optional; assigned (INV-0001, CM-, BILL-, VC-) when omitteddoc_datestring, required Calendar date, YYYY-MM-DD.due_datestring Calendar date, YYYY-MM-DD.terms_daysintegerreferencestring Vendor invoice no., PO no.memostringcontrol_accountstring AR/AP control account (default: the first active one)tax_rate_idstring Sales-tax rate for the taxable lines (adds a tax line on the rate's payable account)linesarray of DocumentLineInput, requireddry_runbooleanconfidencenumbersoft_lock_override_reasonstring
- Responses
200Dry run: the document, its number, the exact entry, policy verdict; nothing written (DocumentResult)201Posted (DocumentResult)202Queued for approval (DocumentResult)- Errors
400,401,403,409,422,429,500(Error:error.type,message)
POST/v1/bills
Record and post a vendor bill (Dr expense per line, Cr AP). Same governance as invoices; dry_run previews.
- Operation
createBill - Scope: propose
- Write: needs Idempotency-Key (or dry_run)
- Request body
contact_idstring, required The vendornumberstring Optional; assigned (INV-0001, CM-, BILL-, VC-) when omitteddoc_datestring, required Calendar date, YYYY-MM-DD.due_datestring Calendar date, YYYY-MM-DD.terms_daysintegerreferencestring Vendor invoice no., PO no.memostringcontrol_accountstring AR/AP control account (default: the first active one)linesarray of DocumentLineInput, requireddry_runbooleanconfidencenumbersoft_lock_override_reasonstring
- Responses
200Dry run: the document, its number, the exact entry, policy verdict; nothing written (DocumentResult)201Posted (DocumentResult)202Queued for approval (DocumentResult)- Errors
400,401,403,409,422,429,500(Error:error.type,message)
POST/v1/vendor-credits
Record a vendor credit (Dr AP, Cr expense); apply it to bills with /v1/documents/{id}/apply
- Operation
createVendorCredit - Scope: propose
- Write: needs Idempotency-Key (or dry_run)
- Request body
contact_idstring, required The vendornumberstring Optional; assigned (INV-0001, CM-, BILL-, VC-) when omitteddoc_datestring, required Calendar date, YYYY-MM-DD.due_datestring Calendar date, YYYY-MM-DD.terms_daysintegerreferencestring Vendor invoice no., PO no.memostringcontrol_accountstring AR/AP control account (default: the first active one)linesarray of DocumentLineInput, requireddry_runbooleanconfidencenumbersoft_lock_override_reasonstring
- Responses
200Dry run: the document, its number, the exact entry, policy verdict; nothing written (DocumentResult)201Posted (DocumentResult)202Queued for approval (DocumentResult)- Errors
400,401,403,409,422,429,500(Error:error.type,message)
GET/v1/documents
Invoices, credit memos, bills, vendor credits, sales receipts, refunds, expenses, checks and transfers with open balance and status
- Operation
listDocuments - Scope: read
- Read
- Parameters
kindquery, "invoice" | "credit_memo" | "bill" | "vendor_credit" | "sales_receipt" | "refund" | "vendor_refund" | "expense" | "check" | "transfer"sidequery, "sales" | "purchases" | "spending"statusquery, "open" | "partial" | "paid" | "applied" | "void" | "overdue" | "unpaid"contact_idquery, stringfromquery, stringtoquery, stringas_ofquery, stringlimitquery, integer
- Responses
200Documents, newest first (object)- Errors
400,401,403,429,500(Error:error.type,message)
GET/v1/documents/{id}
One document with its lines and the payments and credits applied to (or from) it
- Operation
getDocument - Scope: read
- Read
- Parameters
idpath, string, required
- Responses
200Document (object)- Errors
400,401,403,404,429,500(Error:error.type,message)
POST/v1/documents/{id}/void
Void a document by posting the exact reversal of its entry. Invoices/bills need any payments or credits voided first.
- Operation
voidDocument - Scope: approve
- Write: needs Idempotency-Key (or dry_run)
- Parameters
idpath, string, required
- Request body
reasonstring, requiredvoid_datestring Calendar date, YYYY-MM-DD.soft_lock_override_reasonstringdry_runboolean
- Responses
200Voided (or the dry-run preview) (object)- Errors
400,401,403,404,409,422,429,500(Error:error.type,message)
POST/v1/documents/{id}/apply
Apply a credit memo or vendor credit to open invoices or bills of the same customer or vendor
- Operation
applyCredit - Scope: propose
- Write: needs Idempotency-Key (or dry_run)
- Parameters
idpath, string, required
- Request body
applicationsarray of object, requiredapplied_onstring Calendar date, YYYY-MM-DD.dry_runboolean
- Responses
200Applied (or the dry-run preview) (object)- Errors
400,401,403,404,409,422,429,500(Error:error.type,message)
POST/v1/payments/received
Record a customer payment applied to invoices (Dr bank, Cr AR), optionally from an unmatched bank deposit line (bank_line_id), which it categorizes. Same governance as propose.
- Operation
receivePayment - Scope: propose
- Write: needs Idempotency-Key (or dry_run)
- Request body
contact_idstring, requiredpayment_datestring Defaults to the bank line's dateaccountstring Bank, cash, undeposited-funds or card account (defaults to the bank line's account)amount_centsinteger The whole payment (default: the applications). Anything above the applications stays unapplied: credit on account (deposit, overpayment), applied later or refunded.applicationsarray of objectcontrol_accountstring AR/AP control account for a payment with no applications (default: the first active one)bank_line_idstring An unmatched bank line this payment is (same amount; deposit for received, withdrawal/charge for made)numberstringreferencestring Check no., remittance idmemostringdry_runbooleanconfidencenumbersoft_lock_override_reasonstring
- Responses
200Dry run (DocumentResult)201Recorded (and the bank line categorized) (DocumentResult)202Queued for approval (the bank line is 'proposed' until decided) (DocumentResult)- Errors
400,401,403,409,422,429,500(Error:error.type,message)
POST/v1/payments/made
Pay vendor bills (Dr AP, Cr bank or card), optionally from an unmatched bank or card line (bank_line_id). Same governance as propose.
- Operation
payBills - Scope: propose
- Write: needs Idempotency-Key (or dry_run)
- Request body
contact_idstring, requiredpayment_datestring Defaults to the bank line's dateaccountstring Bank, cash, undeposited-funds or card account (defaults to the bank line's account)amount_centsinteger The whole payment (default: the applications). Anything above the applications stays unapplied: credit on account (deposit, overpayment), applied later or refunded.applicationsarray of objectcontrol_accountstring AR/AP control account for a payment with no applications (default: the first active one)bank_line_idstring An unmatched bank line this payment is (same amount; deposit for received, withdrawal/charge for made)numberstringreferencestring Check no., remittance idmemostringdry_runbooleanconfidencenumbersoft_lock_override_reasonstring
- Responses
200Dry run (DocumentResult)201Recorded (and the bank line categorized) (DocumentResult)202Queued for approval (the bank line is 'proposed' until decided) (DocumentResult)- Errors
400,401,403,409,422,429,500(Error:error.type,message)
GET/v1/payments
Payments received and made, newest first (unapplied=true: only those with credit on account)
- Operation
listPayments - Scope: read
- Read
- Parameters
kindquery, "received" | "made"contact_idquery, stringlimitquery, integerunappliedquery, boolean
- Responses
200Payments (object)- Errors
400,401,403,429,500(Error:error.type,message)
GET/v1/payments/{id}
One payment with its applications
- Operation
getPayment - Scope: read
- Read
- Parameters
idpath, string, required
- Responses
200Payment (object)- Errors
400,401,403,404,429,500(Error:error.type,message)
POST/v1/payments/{id}/void
Void a payment: posts the exact reversal, releases its applications (documents reopen) and its bank line
- Operation
voidPayment - Scope: approve
- Write: needs Idempotency-Key (or dry_run)
- Parameters
idpath, string, required
- Request body
reasonstring, requiredvoid_datestring Calendar date, YYYY-MM-DD.soft_lock_override_reasonstringdry_runboolean
- Responses
200Voided (or the dry-run preview) (object)- Errors
400,401,403,404,409,422,429,500(Error:error.type,message)
POST/v1/sales-receipts
Record a sale paid on the spot (Dr the deposit account, Cr income per line, plus sales tax). Never open, not in AR. Same governance as invoices; dry_run previews.
- Operation
createSalesReceipt - Scope: propose
- Write: needs Idempotency-Key (or dry_run)
- Request body
contact_idstring, required The customernumberstring Optional; assigned (SR-0001) when omitteddoc_datestring, required Calendar date, YYYY-MM-DD.deposit_accountstring, required Bank, cash or undeposited-funds account the money went toreferencestringmemostringtax_rate_idstringlinesarray of DocumentLineInput, requireddry_runbooleanconfidencenumbersoft_lock_override_reasonstring
- Responses
200Dry run (DocumentResult)201Posted (DocumentResult)202Queued for approval (DocumentResult)- Errors
400,401,403,409,422,429,500(Error:error.type,message)
POST/v1/payments/{id}/apply
Apply a payment's unapplied amount (credit on account, deposit, prepayment) to open invoices or bills of the same customer or vendor
- Operation
applyPayment - Scope: propose
- Write: needs Idempotency-Key (or dry_run)
- Parameters
idpath, string, required
- Request body
applicationsarray of object, requiredapplied_onstring Calendar date, YYYY-MM-DD.dry_runboolean
- Responses
200Applied (or the dry-run preview) (object)- Errors
400,401,403,404,409,422,429,500(Error:error.type,message)
POST/v1/refunds
Refund a customer from the unapplied part of a payment (deposit, overpayment) or a credit memo: a refund document (Dr AR, Cr bank) paid at once by its source. Same governance as invoices; dry_run previews.
- Operation
createRefund - Scope: propose
- Write: needs Idempotency-Key (or dry_run)
- Request body
payment_idstring Refund from this payment received (give this or credit_id)credit_idstring Refund from this credit memorefund_datestring, required Calendar date, YYYY-MM-DD.accountstring, required Bank, cash or card account the money leavesamount_centsinteger Default: everything left on the sourcenumberstring Optional; assigned (RF-0001) when omittedreferencestring Check no.memostringdry_runbooleanconfidencenumbersoft_lock_override_reasonstring
- Responses
200Dry run (DocumentResult)201Refunded (DocumentResult)202Queued for approval (DocumentResult)- Errors
400,401,403,409,422,429,500(Error:error.type,message)
GET/v1/documents/{id}/pdf
Render an invoice, credit memo or sales receipt as a PDF (server-side, Plus Jakarta Sans embedded; nothing is sent anywhere)
- Operation
renderDocumentPdf - Scope: read
- Read
- Parameters
idpath, string, requiredformatquery, "pdf" | "base64"
- Responses
200The PDF (or with format=base64, JSON) (PdfFile)- Errors
400,401,403,404,429,500(Error:error.type,message)
POST/v1/vendor-refunds
Record money a vendor paid back, from the unapplied part of a payment made (a prepayment, an overpaid bill) or a vendor credit: a vendor refund document (Cr AP, Dr the bank account) paid at once by its source. Same governance as bills; dry_run previews.
- Operation
createVendorRefund - Scope: propose
- Write: needs Idempotency-Key (or dry_run)
- Request body
payment_idstring Refund of this payment made (give this or credit_id)credit_idstring Refund of this vendor creditrefund_datestring, required Calendar date, YYYY-MM-DD.accountstring, required Bank, cash or card account the money arrives inamount_centsinteger Default: everything left on the sourcenumberstring Optional; assigned (VRF-0001) when omittedreferencestring Deposit or check no.memostringdry_runbooleanconfidencenumbersoft_lock_override_reasonstring
- Responses
200Dry run (DocumentResult)201Refunded (DocumentResult)202Queued for approval (DocumentResult)- Errors
400,401,403,409,422,429,500(Error:error.type,message)
GET/v1/items/{id}
One product or service
- Operation
getItem - Scope: read
- Read
- Parameters
idpath, string, required
- Responses
200Item (object)- Errors
400,401,403,404,429,500(Error:error.type,message)
POST/v1/items/{id}/update
Edit a product or service (name, kind, description, sales price, income account, purchase cost and account, taxable) or deactivate/reactivate it. Documents keep what they posted. Audited; dry_run previews.
- Operation
updateItem - Scope: admin
- Write: needs Idempotency-Key (or dry_run)
- Parameters
idpath, string, required
- Request body
namestringkind"service" | "non_inventory"descriptionstringsales_price_centsinteger | null Integer cents (100 = $1.00). Never a float.purchase_cost_centsinteger | null Integer cents (100 = $1.00). Never a float.income_accountstring | null An income account (selling); null removes itexpense_accountstring | null An expense or inventory-asset account (buying); null removes ittaxablebooleanactivebooleandry_runboolean
- Responses
200Updated (or, with dry_run, what it would be) (object)- Errors
400,401,403,404,409,422,429,500(Error:error.type,message)