curl --request POST \
--url https://sandbox.layerfi.com/v1/businesses/{businessId}/closing/retained-earnings \
--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"
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', 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",
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"
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")
.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")
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": {
"closing_actions": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"business_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"ledger_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"closing_date": "2023-12-25",
"created_at": "2023-11-07T05:31:56Z",
"type": "Api_Retained_Earnings_Closing_Action",
"memo": "<string>",
"metadata": {
"custom_field": "value",
"any valid json": "below 1kb",
"nested": {
"meaning of life": 42,
"array": []
}
},
"reference_number": "<string>",
"ledger_activity_start_timestamp": "2023-11-07T05:31:56Z",
"retained_earnings_target_account": {
"type": "AccountId",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"transaction_tags": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"key": "ExampleTagKey",
"value": "ExampleTagValue",
"dimension_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"definition_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"dimension_display_name": "<string>",
"value_display_name": "<string>",
"archived_at": "2023-11-07T05:31:56Z"
}
],
"updated_at": "2023-11-07T05:31:56Z",
"archived_at": "2023-11-07T05:31:56Z"
}
]
}
}Retained earnings
Create a retained earnings adjustment.
curl --request POST \
--url https://sandbox.layerfi.com/v1/businesses/{businessId}/closing/retained-earnings \
--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"
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', 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",
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"
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")
.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")
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": {
"closing_actions": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"business_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"ledger_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"closing_date": "2023-12-25",
"created_at": "2023-11-07T05:31:56Z",
"type": "Api_Retained_Earnings_Closing_Action",
"memo": "<string>",
"metadata": {
"custom_field": "value",
"any valid json": "below 1kb",
"nested": {
"meaning of life": 42,
"array": []
}
},
"reference_number": "<string>",
"ledger_activity_start_timestamp": "2023-11-07T05:31:56Z",
"retained_earnings_target_account": {
"type": "AccountId",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"transaction_tags": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"key": "ExampleTagKey",
"value": "ExampleTagValue",
"dimension_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"definition_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"dimension_display_name": "<string>",
"value_display_name": "<string>",
"archived_at": "2023-11-07T05:31:56Z"
}
],
"updated_at": "2023-11-07T05:31:56Z",
"archived_at": "2023-11-07T05:31:56Z"
}
]
}
}year for an annual retained earnings close. Alternatively, use effective_date to choose a specific date.
Preview retained earnings to see the adjustment without creating it.
Cash and accrual reporting
Cash and accrual reports use different retained earnings adjustments.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
Retained earnings closing actions created.
Show child attributes
Show child attributes