curl --request GET \
--url https://api.app.lastaccountingcompany.com/portal/filings/upcoming \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.app.lastaccountingcompany.com/portal/filings/upcoming"
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/filings/upcoming', 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/filings/upcoming",
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/filings/upcoming"
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/filings/upcoming")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.app.lastaccountingcompany.com/portal/filings/upcoming")
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>",
"actor": {
"kind": "lac_internal",
"realm": "<string>",
"subject": "<string>",
"tenant_id": "<string>"
},
"actions": [
{
"operation": {
"id": "<string>",
"version": 2
},
"role_eligible": true
}
],
"upcoming": {
"period": "<string>",
"period_label": "<string>",
"period_start": "2023-12-25",
"period_end": "2023-12-25",
"due_date": "2023-12-25",
"state": "<string>",
"draft_id": "<string>",
"draft_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"payload_hash": "<string>",
"updated_at": "2023-11-07T05:31:56Z",
"summary": {
"title": "<string>",
"period_label": "<string>",
"lines": [
{
"label": "<string>",
"amount_cents": 0
}
],
"total": {
"label": "<string>",
"amount_cents": 0
},
"due_date": "2023-12-25"
}
},
"preview": {
"basis": "saved_draft",
"legal_name": "<string>",
"business_id": "<string>",
"books_fingerprint": "<string>",
"matches_books": true,
"fields": [
{
"code": "<string>",
"label": "<string>",
"kind": "tax",
"amount_cents": 0,
"transactions_match": true,
"transaction_count": 1,
"transactions_offset": 1,
"transactions": [
{
"vat_cents": 0,
"journal_entry_id": "<string>",
"date": "<string>",
"name": "<string>",
"description": "<string>",
"account": "<string>",
"net_cents": 123
}
]
}
],
"input_revision": "<string>",
"schema_fingerprint": "<string>",
"ready_for_approval": true,
"notice": "<string>",
"draft_resource": {
"uri": "<string>",
"revision": "<string>"
},
"approval_unavailable": "<string>",
"declarations": {
"no_activity": true,
"correction_reason": "<string>"
}
}
}{
"error": "<string>",
"detail": "<string>"
}{
"error": "<string>",
"detail": "<string>"
}Read the next assigned VAT return and its exact draft
Active full customers with LAC books and an assigned VAT responsibility see the earliest assigned unfiled obligation, retained after its deadline until its exact production filing completes. Cadence, takeover, statutory due dates and completed production returns are canonical. Preview reads saved statutory amounts, current supporting entries and readiness. Unprepared periods show a live books draft. Reads never approve, file or request agent work. Approval uses the named-human filing.approve_and_file operation and its signed preview.
curl --request GET \
--url https://api.app.lastaccountingcompany.com/portal/filings/upcoming \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.app.lastaccountingcompany.com/portal/filings/upcoming"
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/filings/upcoming', 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/filings/upcoming",
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/filings/upcoming"
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/filings/upcoming")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.app.lastaccountingcompany.com/portal/filings/upcoming")
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>",
"actor": {
"kind": "lac_internal",
"realm": "<string>",
"subject": "<string>",
"tenant_id": "<string>"
},
"actions": [
{
"operation": {
"id": "<string>",
"version": 2
},
"role_eligible": true
}
],
"upcoming": {
"period": "<string>",
"period_label": "<string>",
"period_start": "2023-12-25",
"period_end": "2023-12-25",
"due_date": "2023-12-25",
"state": "<string>",
"draft_id": "<string>",
"draft_uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"payload_hash": "<string>",
"updated_at": "2023-11-07T05:31:56Z",
"summary": {
"title": "<string>",
"period_label": "<string>",
"lines": [
{
"label": "<string>",
"amount_cents": 0
}
],
"total": {
"label": "<string>",
"amount_cents": 0
},
"due_date": "2023-12-25"
}
},
"preview": {
"basis": "saved_draft",
"legal_name": "<string>",
"business_id": "<string>",
"books_fingerprint": "<string>",
"matches_books": true,
"fields": [
{
"code": "<string>",
"label": "<string>",
"kind": "tax",
"amount_cents": 0,
"transactions_match": true,
"transaction_count": 1,
"transactions_offset": 1,
"transactions": [
{
"vat_cents": 0,
"journal_entry_id": "<string>",
"date": "<string>",
"name": "<string>",
"description": "<string>",
"account": "<string>",
"net_cents": 123
}
]
}
],
"input_revision": "<string>",
"schema_fingerprint": "<string>",
"ready_for_approval": true,
"notice": "<string>",
"draft_resource": {
"uri": "<string>",
"revision": "<string>"
},
"approval_unavailable": "<string>",
"declarations": {
"no_activity": true,
"correction_reason": "<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.
Refuse a changed next period.
VAT field to page.
^(30[1-7]|309|31[0-9]|320)$0 <= x <= 1000000Refuse changed books when paging.
Refuse a changed saved draft when paging.