curl --request POST \
--url https://sandbox.layerfi.com/v1/businesses/{businessId}/closing/retained-earnings/preview \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"year": 2024,
"memo": "Close 2024 earnings"
}
'import requests
url = "https://sandbox.layerfi.com/v1/businesses/{businessId}/closing/retained-earnings/preview"
payload = {
"year": 2024,
"memo": "Close 2024 earnings"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({year: 2024, memo: 'Close 2024 earnings'})
};
fetch('https://sandbox.layerfi.com/v1/businesses/{businessId}/closing/retained-earnings/preview', 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://sandbox.layerfi.com/v1/businesses/{businessId}/closing/retained-earnings/preview",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'year' => 2024,
'memo' => 'Close 2024 earnings'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sandbox.layerfi.com/v1/businesses/{businessId}/closing/retained-earnings/preview"
payload := strings.NewReader("{\n \"year\": 2024,\n \"memo\": \"Close 2024 earnings\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://sandbox.layerfi.com/v1/businesses/{businessId}/closing/retained-earnings/preview")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"year\": 2024,\n \"memo\": \"Close 2024 earnings\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.layerfi.com/v1/businesses/{businessId}/closing/retained-earnings/preview")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"year\": 2024,\n \"memo\": \"Close 2024 earnings\"\n}"
response = http.request(request)
puts response.read_body{
"data": [
{
"template_closing_action_id": null,
"closing_action": {
"year": 2024,
"memo": "Close 2024 earnings"
},
"primary_entry": {
"entry_type": "CLOSING_ACTION_RETAINED_EARNINGS"
},
"secondary_entries": []
}
]
}Preview retained earnings
Dry-run a retained earnings adjustment without creating it.
curl --request POST \
--url https://sandbox.layerfi.com/v1/businesses/{businessId}/closing/retained-earnings/preview \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"year": 2024,
"memo": "Close 2024 earnings"
}
'import requests
url = "https://sandbox.layerfi.com/v1/businesses/{businessId}/closing/retained-earnings/preview"
payload = {
"year": 2024,
"memo": "Close 2024 earnings"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({year: 2024, memo: 'Close 2024 earnings'})
};
fetch('https://sandbox.layerfi.com/v1/businesses/{businessId}/closing/retained-earnings/preview', 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://sandbox.layerfi.com/v1/businesses/{businessId}/closing/retained-earnings/preview",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'year' => 2024,
'memo' => 'Close 2024 earnings'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sandbox.layerfi.com/v1/businesses/{businessId}/closing/retained-earnings/preview"
payload := strings.NewReader("{\n \"year\": 2024,\n \"memo\": \"Close 2024 earnings\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://sandbox.layerfi.com/v1/businesses/{businessId}/closing/retained-earnings/preview")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"year\": 2024,\n \"memo\": \"Close 2024 earnings\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.layerfi.com/v1/businesses/{businessId}/closing/retained-earnings/preview")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"year\": 2024,\n \"memo\": \"Close 2024 earnings\"\n}"
response = http.request(request)
puts response.read_body{
"data": [
{
"template_closing_action_id": null,
"closing_action": {
"year": 2024,
"memo": "Close 2024 earnings"
},
"primary_entry": {
"entry_type": "CLOSING_ACTION_RETAINED_EARNINGS"
},
"secondary_entries": []
}
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Body
- Option 1
- Option 2
Provide exactly one of year or effective_date.
Year for the annual retained earnings close.
Specific date in YYYY-MM-DD format. Use instead of year.
Arbitrary JSON data defined by the caller, with a 1KB size constraint.
{
"custom_field": "value",
"any valid json": "below 1kb",
"nested": { "meaning of life": 42, "array": [] }
}
Optional start of ledger activity to include. Defaults to the business activation timestamp.
Account to receive net income. Defaults to the retained earnings account.
- Account ID
- Account Stable Name
Show child attributes
Show child attributes
Tag set to close instead of the business default. Omitting this field uses the default strategy, which may create separate closing actions per entity.
Show child attributes
Show child attributes
Response
Preview closing actions and their proposed journal entries.
Show child attributes
Show child attributes