curl --request GET \
--url https://api.app.lastaccountingcompany.com/portal/lens/booking \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.app.lastaccountingcompany.com/portal/lens/booking"
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/lens/booking', 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/lens/booking",
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/lens/booking"
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/lens/booking")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.app.lastaccountingcompany.com/portal/lens/booking")
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>",
"row_id": "<string>",
"posted": true,
"currency": "<string>",
"rows": [
{
"line_id": "<string>",
"line_no": 2,
"account": "<string>",
"account_name": "<string>",
"debit_cents": 123,
"credit_cents": 123,
"journal_entry_id": "<string>",
"description": "<string>",
"vat": {
"code": "<string>",
"name": "<string>",
"rate_percent": 123
},
"account_type": "<string>",
"dimension_allocations": [
{
"axis_id": "<string>",
"axis_name": "<string>",
"value_id": "<string>",
"value_code": "<string>",
"value_name": "<string>",
"amount_cents": 2,
"provenance": "local",
"provider": "<string>",
"source_ref": "<string>"
}
]
}
],
"total_debit_cents": 123,
"total_credit_cents": 123,
"evidence": [
{
"document_id": "<string>",
"filename": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"document_type": "<string>",
"receipt_adequacy": "<string>",
"original_available": true,
"resource_ref": {
"uri": "<string>",
"revision": "<string>"
}
}
],
"journal_entry_id": "<string>",
"journal_entry_ids": [
"<string>"
],
"journal_resource_refs": {},
"entry_date": "2023-12-25",
"description": "<string>"
}{
"error": "<string>",
"detail": "<string>"
}{
"error": "<string>",
"detail": "<string>"
}Get how one row was booked
The exact stable journal lines behind one transactions-window row (account, name, debit, credit, VAT, dimensions, footed totals) plus its evidence documents. Document bytes are served by the existing attachment and upload endpoints; this read returns references only. The server-authored resource URI and revision own identity; row_id is display context. Omit the resource pair only for a derived payslip row.
curl --request GET \
--url https://api.app.lastaccountingcompany.com/portal/lens/booking \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.app.lastaccountingcompany.com/portal/lens/booking"
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/lens/booking', 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/lens/booking",
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/lens/booking"
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/lens/booking")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.app.lastaccountingcompany.com/portal/lens/booking")
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>",
"row_id": "<string>",
"posted": true,
"currency": "<string>",
"rows": [
{
"line_id": "<string>",
"line_no": 2,
"account": "<string>",
"account_name": "<string>",
"debit_cents": 123,
"credit_cents": 123,
"journal_entry_id": "<string>",
"description": "<string>",
"vat": {
"code": "<string>",
"name": "<string>",
"rate_percent": 123
},
"account_type": "<string>",
"dimension_allocations": [
{
"axis_id": "<string>",
"axis_name": "<string>",
"value_id": "<string>",
"value_code": "<string>",
"value_name": "<string>",
"amount_cents": 2,
"provenance": "local",
"provider": "<string>",
"source_ref": "<string>"
}
]
}
],
"total_debit_cents": 123,
"total_credit_cents": 123,
"evidence": [
{
"document_id": "<string>",
"filename": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"document_type": "<string>",
"receipt_adequacy": "<string>",
"original_available": true,
"resource_ref": {
"uri": "<string>",
"revision": "<string>"
}
}
],
"journal_entry_id": "<string>",
"journal_entry_ids": [
"<string>"
],
"journal_resource_refs": {},
"entry_date": "2023-12-25",
"description": "<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
Display context from a served row; never canonical identity.
Server-authored resource_ref.uri from the selected row. Required with resource_revision for canonical bank and journal rows; omit both only for a derived payslip row.
Server-authored resource_ref.revision from the selected row. Required with resource_uri for canonical bank and journal rows.
Response
The booking view. posted=false serves no lines, honestly.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Exact current revision of each posted journal behind the row, by journal id.
Show child attributes
Show child attributes