curl --request GET \
--url https://api.app.lastaccountingcompany.com/portal/invoices \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.app.lastaccountingcompany.com/portal/invoices"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.app.lastaccountingcompany.com/portal/invoices', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.app.lastaccountingcompany.com/portal/invoices",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.app.lastaccountingcompany.com/portal/invoices"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.app.lastaccountingcompany.com/portal/invoices")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.app.lastaccountingcompany.com/portal/invoices")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"customer_id": "<string>",
"payment_accounts": [
{
"iban": "<string>",
"bank_name": "<string>",
"name": "<string>",
"currency": "<string>"
}
],
"seller": {
"display_name": "<string>",
"legal_name": "<string>",
"business_id": "<string>"
},
"summary": {
"outstanding_cents": 123,
"overdue_cents": 123,
"paid_cents": 123,
"sent_cents": 123,
"purchase_total_cents": 123,
"purchase_due_cents": 123,
"purchase_approved_cents": 123,
"purchase_paid_cents": 123,
"sales_invoice_count": 123,
"sales_receipt_count": 123,
"sales_outstanding_count": 123,
"sales_overdue_count": 123,
"purchase_bill_count": 123,
"purchase_approved_count": 123,
"purchase_payment_count": 123,
"currency": "<string>",
"customer_credit_cents": 123
},
"approval_policy": "off",
"purchase_approval_policy": "off",
"purchase_flow": {
"policy": "off",
"verifiers": [
{
"email": "jsmith@example.com",
"first_name": "<string>",
"last_name": "<string>"
}
],
"approvers": [
{
"email": "jsmith@example.com",
"first_name": "<string>",
"last_name": "<string>"
}
],
"payers": [
{
"email": "jsmith@example.com",
"first_name": "<string>",
"last_name": "<string>"
}
]
},
"can_verify_purchases": true,
"can_approve_purchases": true,
"can_read_purchase_payments": true,
"can_prepare_purchase_payments": true,
"can_approve": true,
"can_manage_sales": true,
"agent_runs": [
{
"id": "<string>",
"name": "<string>",
"status": "active",
"scope": "<string>",
"current_work": "<string>",
"trigger": "<string>",
"agent_work": "<string>",
"return_condition": "<string>",
"reasoning": "<string>",
"progress_current": 1,
"progress_total": 1,
"progress_label": "<string>",
"outcome": "<string>",
"context_prompt": "<string>"
}
],
"automation_candidates": [
{
"id": "<string>",
"name": "<string>",
"evidence": "<string>",
"trigger": "<string>",
"agent_work": "<string>",
"return_condition": "<string>",
"reasoning": "<string>",
"context_prompt": "<string>"
}
],
"invoices": [
{
"id": "<string>",
"status": "<string>",
"draft_saved_at": "<string>",
"delivery_channel": "<string>",
"document_type": "invoice",
"original_invoice_id": "<string>",
"original_invoice_number": "<string>",
"original_invoice_date": "2023-12-25",
"correction_reason": "<string>",
"credited_cents": 123,
"paid_cents": 123,
"open_cents": 123,
"can_cancel_before_sending": true,
"seller_name": "<string>",
"seller_legal_name": "<string>",
"seller_business_id": "<string>",
"seller_iban": "<string>",
"payment_reference_issue": "<string>",
"seller_profile_id": "<string>",
"posts_ledger": true,
"partner_copy_status": "not_required",
"partner_copy_error": "<string>",
"pdf_available": true,
"pdf_document_id": "<string>",
"pdf_sha256": "<string>",
"pdf_size_bytes": 123,
"approval_status": "none",
"approval_requested_by": "<string>",
"approval_request_id": "<string>",
"approval_decided_by": "<string>",
"approval_reason": "<string>",
"approval_created_by": "<string>",
"approval_revision": "<string>",
"approval_returned_revision": "<string>",
"review_revision": "<string>",
"payment_claimed_by_batch": true,
"review_next_action": "verify",
"review_stale_reasons": [
"payment_reference_added"
],
"review_can_decide": true,
"review_owners": [
{
"email": "jsmith@example.com",
"first_name": "<string>",
"last_name": "<string>"
}
],
"agent_review": {
"result": "valid",
"reason_code": "<string>",
"explanation": "<string>",
"source": "<string>",
"engine_version": "<string>",
"recommended_action": "<string>",
"checked_evidence": [
"<string>"
]
},
"review_history": [
{}
],
"review_evidence": [
{
"document_id": "<string>",
"document_type": "<string>",
"name": "<string>",
"content_type": "<string>"
}
],
"has_original": true,
"customer": {
"name": "<string>",
"id": "<string>",
"business_id": "<string>",
"vat_number": "<string>",
"address_line1": "<string>",
"postal_code": "<string>",
"city": "<string>",
"country_code": "<string>",
"email": "<string>",
"einvoice_address": "<string>",
"einvoice_operator": "<string>",
"default_payment_terms_days": 123,
"default_vat_code": "<string>",
"default_vat_rate_basis_points": 123,
"default_invoice_language": "<string>"
},
"lines": [
{
"description": "<string>",
"quantity": "<string>",
"unit_price_cents": 123,
"net_cents": 123,
"vat_cents": 123,
"gross_cents": 123,
"unit_price_gross_cents": 4503599627370496,
"vat_rate_basis_points": 123,
"vat_code": "<string>"
}
]
}
]
}{
"error": "<string>",
"detail": "<string>"
}{
"error": "<string>",
"detail": "<string>"
}List sales invoices
Lists the company’s sales invoices and drafts with their statuses.
curl --request GET \
--url https://api.app.lastaccountingcompany.com/portal/invoices \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.app.lastaccountingcompany.com/portal/invoices"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.app.lastaccountingcompany.com/portal/invoices', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.app.lastaccountingcompany.com/portal/invoices",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.app.lastaccountingcompany.com/portal/invoices"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.app.lastaccountingcompany.com/portal/invoices")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.app.lastaccountingcompany.com/portal/invoices")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"customer_id": "<string>",
"payment_accounts": [
{
"iban": "<string>",
"bank_name": "<string>",
"name": "<string>",
"currency": "<string>"
}
],
"seller": {
"display_name": "<string>",
"legal_name": "<string>",
"business_id": "<string>"
},
"summary": {
"outstanding_cents": 123,
"overdue_cents": 123,
"paid_cents": 123,
"sent_cents": 123,
"purchase_total_cents": 123,
"purchase_due_cents": 123,
"purchase_approved_cents": 123,
"purchase_paid_cents": 123,
"sales_invoice_count": 123,
"sales_receipt_count": 123,
"sales_outstanding_count": 123,
"sales_overdue_count": 123,
"purchase_bill_count": 123,
"purchase_approved_count": 123,
"purchase_payment_count": 123,
"currency": "<string>",
"customer_credit_cents": 123
},
"approval_policy": "off",
"purchase_approval_policy": "off",
"purchase_flow": {
"policy": "off",
"verifiers": [
{
"email": "jsmith@example.com",
"first_name": "<string>",
"last_name": "<string>"
}
],
"approvers": [
{
"email": "jsmith@example.com",
"first_name": "<string>",
"last_name": "<string>"
}
],
"payers": [
{
"email": "jsmith@example.com",
"first_name": "<string>",
"last_name": "<string>"
}
]
},
"can_verify_purchases": true,
"can_approve_purchases": true,
"can_read_purchase_payments": true,
"can_prepare_purchase_payments": true,
"can_approve": true,
"can_manage_sales": true,
"agent_runs": [
{
"id": "<string>",
"name": "<string>",
"status": "active",
"scope": "<string>",
"current_work": "<string>",
"trigger": "<string>",
"agent_work": "<string>",
"return_condition": "<string>",
"reasoning": "<string>",
"progress_current": 1,
"progress_total": 1,
"progress_label": "<string>",
"outcome": "<string>",
"context_prompt": "<string>"
}
],
"automation_candidates": [
{
"id": "<string>",
"name": "<string>",
"evidence": "<string>",
"trigger": "<string>",
"agent_work": "<string>",
"return_condition": "<string>",
"reasoning": "<string>",
"context_prompt": "<string>"
}
],
"invoices": [
{
"id": "<string>",
"status": "<string>",
"draft_saved_at": "<string>",
"delivery_channel": "<string>",
"document_type": "invoice",
"original_invoice_id": "<string>",
"original_invoice_number": "<string>",
"original_invoice_date": "2023-12-25",
"correction_reason": "<string>",
"credited_cents": 123,
"paid_cents": 123,
"open_cents": 123,
"can_cancel_before_sending": true,
"seller_name": "<string>",
"seller_legal_name": "<string>",
"seller_business_id": "<string>",
"seller_iban": "<string>",
"payment_reference_issue": "<string>",
"seller_profile_id": "<string>",
"posts_ledger": true,
"partner_copy_status": "not_required",
"partner_copy_error": "<string>",
"pdf_available": true,
"pdf_document_id": "<string>",
"pdf_sha256": "<string>",
"pdf_size_bytes": 123,
"approval_status": "none",
"approval_requested_by": "<string>",
"approval_request_id": "<string>",
"approval_decided_by": "<string>",
"approval_reason": "<string>",
"approval_created_by": "<string>",
"approval_revision": "<string>",
"approval_returned_revision": "<string>",
"review_revision": "<string>",
"payment_claimed_by_batch": true,
"review_next_action": "verify",
"review_stale_reasons": [
"payment_reference_added"
],
"review_can_decide": true,
"review_owners": [
{
"email": "jsmith@example.com",
"first_name": "<string>",
"last_name": "<string>"
}
],
"agent_review": {
"result": "valid",
"reason_code": "<string>",
"explanation": "<string>",
"source": "<string>",
"engine_version": "<string>",
"recommended_action": "<string>",
"checked_evidence": [
"<string>"
]
},
"review_history": [
{}
],
"review_evidence": [
{
"document_id": "<string>",
"document_type": "<string>",
"name": "<string>",
"content_type": "<string>"
}
],
"has_original": true,
"customer": {
"name": "<string>",
"id": "<string>",
"business_id": "<string>",
"vat_number": "<string>",
"address_line1": "<string>",
"postal_code": "<string>",
"city": "<string>",
"country_code": "<string>",
"email": "<string>",
"einvoice_address": "<string>",
"einvoice_operator": "<string>",
"default_payment_terms_days": 123,
"default_vat_code": "<string>",
"default_vat_rate_basis_points": 123,
"default_invoice_language": "<string>"
},
"lines": [
{
"description": "<string>",
"quantity": "<string>",
"unit_price_cents": 123,
"net_cents": 123,
"vat_cents": 123,
"gross_cents": 123,
"unit_price_gross_cents": 4503599627370496,
"vat_rate_basis_points": 123,
"vat_code": "<string>"
}
]
}
]
}{
"error": "<string>",
"detail": "<string>"
}{
"error": "<string>",
"detail": "<string>"
}Authorizations
Portal API key minted in portal Settings → API access. Scope read or write; pinned to one company. Send as Authorization: Bearer lac_sk_....
Query Parameters
Target company. Optional — API keys are pinned to one company, and single-company sessions default to it.
Response
Invoices payload.
Invoice list payload.
Open company cash accounts in the invoice currency, from primary feeds and company-owned connections and selected scopes where the provider has an account catalogue. Only returned to interactive sales-invoice editors; other callers receive an empty array. Excludes closed, superseded, excluded and invalid-IBAN accounts. Contains no provider identifiers or balances.
Show child attributes
Show child attributes
Current canonical seller identity used for new drafts.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
required means a draft needs an approver before it can be sent or finalized.
off, required off, approval, verify_and_approve The purchase flow as people, from the same facts as the rows: the active members holding each review capability and the members with payment release authority. Absent when the membership ledger or the release grants could not be read.
Show child attributes
Show child attributes
Whether this interactive caller may inspect source-bound purchase payments.
Whether this caller can start a payment with the configured company paying account.
Whether THIS caller may approve or send back a draft. False for API keys: deciding needs an interactive person with sales invoice approval.
Whether this caller may create, edit, issue, or correct sales invoices.
Read-only explanations of the invoice checks Björn can perform from the canonical invoice, review, reminder, and payment facts in this response.
Show child attributes
Show child attributes
Evidence-backed process suggestions inferred from current invoice outcomes. These are discussion prompts, not activated automations.
Show child attributes
Show child attributes
Show child attributes
Show child attributes