Set business read-only status
curl --request PUT \
--url https://sandbox.layerfi.com/v1/businesses/{businessId}/readonly-status \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"readonly": true
}
'import requests
url = "https://sandbox.layerfi.com/v1/businesses/{businessId}/readonly-status"
payload = { "readonly": True }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({readonly: true})
};
fetch('https://sandbox.layerfi.com/v1/businesses/{businessId}/readonly-status', 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}/readonly-status",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'readonly' => true
]),
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}/readonly-status"
payload := strings.NewReader("{\n \"readonly\": true\n}")
req, _ := http.NewRequest("PUT", 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.put("https://sandbox.layerfi.com/v1/businesses/{businessId}/readonly-status")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"readonly\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.layerfi.com/v1/businesses/{businessId}/readonly-status")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"readonly\": true\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "Business",
"external_id": "test-acme-id",
"legal_name": "ACME LLC",
"tin": "<string>",
"us_state": "CA",
"country": "US",
"entity_type": "LLC",
"industry": "<string>",
"phone_number": "+16504651359",
"naics_code": "484110",
"sms_enabled": true,
"sms_stopped": true,
"readonly_at": "2023-11-07T05:31:56Z",
"sms_categorization_start_date": "2023-11-07T05:31:56Z",
"activation_at": "2023-11-07T05:31:56Z",
"imported_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"archived_at": "2023-11-07T05:31:56Z",
"unit_accounts": [
{
"id": "111111",
"importedAt": "2023-11-07T05:31:56Z"
}
],
"plaid_items": [
{
"layer_item_id": "550e8400-e29b-41d4-a716-446655440000",
"accessToken": "access-sandbox-a67d0be8-abcd-1234-5678-14fc7bc65366",
"institution": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"layer_id": "550e8400-e29b-41d4-a716-446655440000",
"plaid_institution_id": "ins_1",
"name": "Bank of America",
"logo": "iVBORw0KGgoAAAANSUhEUgAAAJgAAACYCAMAAAAvHNATAAAA6lBMVEUAAAD////////////////////////////////////////////////////////////////////////////////qUmn74ubnNVD4xc398fLlJkT1qLTf4+zpRFzrYHb509rvfY7xjJuAkLTzmqfxi5vzmai/x9lBWY7v8fXtb4LjGDftboIhPXwBIWkRL3P3t8D2t8HsYHbvfo7P1ePzmqigrMeQnr3oRF1RZphhdaGQnb0xS4Wfq8dgdKHuboL609lwgqtgdaFwgqqvutCfrMevudCQnr5BWY/pQ11RZpeQnb70qLRRZ5f98fO30r7oAAAAFHRSTlMA3yDvv0AQn2DPcFCAoJAwf4+vXxXsOc8AAAYDSURBVHhe7ZwHcus4EESZo5L9h1nROfvnvDmn+19nvevvoqimQAKgRFTtvguwa7pnIEIgNFmM0DtwLV/X6V903bLcQWCPtR4ZB65v0jZ8N7B7EGUHFmhCTCvYZ+kc+8Ck1uhuqO0FUNWM6e7cVGdikhC6Z+yyWK5J4ri7kmZbJIllKyILsbo21ABZShjqTKhDJo7WEaFOnaJ73ZTrkAAV/AxNAhQomnNAO+JAKmmGTjtDl7DzmUk7xBS2c0I7ZiIWL5d2jiuiy6c94BuqxB5bQBVdqEwVXahMFV2oTA1diN52EfBpz/jtlLm0d1zhea/AGuBRLzxrDL5JvWA2tKYDDalIax5QbxwoEjAkVGOyIqajxgRDDhUxEgmbOlKxzpxQ7wxqk08KYKiRfMRSpGCIDcIsIiVLZpMkWfEyn13eZ9Il67Rg6Sq6+kJ0+o1cybpM2PN5frVG8jKVKVm3LZku31W0XQprcztvybiIqnWL5ddyT6hIUXSabnbAfF1bVMSS418nXrLVY6zyFxsPz6p1E7DUlJgVacQqTFwk65Zyl80WjX4cXW0yO61qS6/XhXMOkJH2hMmf88cBAXWDsuWXRSYc/5BESK+TTW0v7quGz09SEsEGJ6W1JZcxyTPi6smLn89qtZWeNvVhlhYxT1+OW8k6uru9vfvzzZSAItrshJiQ7DTK/5Edt/cyoEam390+8Qtqo3jd0vwE0x6Xi3wraQH8sNgmq+T8jOp4Gl3RaVZTq2oOV3G7nxhms4koC3kePchKGbMYpbFDZgvKQtK0duFC8uWC2IybIrYu6+anqr93H6ZtFi5UBfqRgD3Fzm5KWXdHNbH7UDqLyXpXp+pF2nrv098q6/y25Oii4m9ZxjeEoIfYGWz8B2HbwlVpxSnErpT2QztZaCE7/ePmzN9UDPvx0d/S4ovtsmC6AenxtldyuzlcF+Avr6worVf18sHwpCCEwrqmnJ5vdfHb2wrvp+KystVTd/waE+BpA9C13cWPpb8w1kAWe1FPK298uEyNtCG6WPL9ulGvNlx8C8sSyMJH1q/76KdbrpTo1aczcBE14zhFWWg3klT9tDaEfYKKQCHBYngPwGyhLCSKq4NMpwqfz1uE/u4InyYpa3NF0PGVcvoVs1yl5pI0QWeYspqHnK4RMj16zyrXW3QRn8QpC9GITXO5XqM5y4xTFrcwbMbNci2iduEqEoYsAWGvNprxFVVZoTHHzC0FlCUk7CN7di1mOLkyAuI5pywUhh3Kml0rVi9iuDCILJredqe/QeqhGZnPSpPmcYrgHEM+30Dq65txtmBuDGF/sIX51MjRDaQ+wwc+ji5Uj+QFMYC1ksH09wv0p7lc6azWRch8vbAh8bPEdBGQLTnCBbjaiHjB3CQpM/TYts0M+Des0xybkV0udLGZQAtlbczv25YrWvBsKhpCNmJmsFy4VnEw5twZjq9hSLQs1zwjHvhPixVJQ5aXQqHHLQKYFxxFizL0esaxLrI3VQLi5fhLXx4zRj13uXAbakzcxEm9O9lcoly4O2wSPyfQjZB6KBcHpvi/zjEBK9FmRCz2djrvhEPyP0iIQPYAAdtGsJtnvAqFrKWNxySIrj0yIkmyOhuTheSxWHkvF3U2fp3JnyNz5Lx8ncuu2DgsuvAylbcRnezEyyKRtxHHfhd9GSdS3Yg9WTIgOU5gDZLA00qE44/7wrO40+OAQwLE7Fxm3Z7tt0mWv67hdVwMAw+2SQctv+/+LKBN8jyPSR5b3cOTWDJFTugqWTJX4SPNyIB6Z6D0sXkkpJ7xtC0cKpV85lquyueMoSJGIiPqjZHSn5ip/1Ee4ikSMGSgyMhHhrR3hkp87I/4GsBozf8/FNcN9T/5V/+SBPWvlUAMv5eP/RWZZ0NHE2HQ47xn4/V8PY76Fwohzoh2xMjR5PD0ndgYatIYO+jOQyiXEkXTQ60jnE4HxwDK1Z+f6t8LaNn/mQse0VC1bhI1RDvUhMh3jj00uVWNbG0vhEOdS5Wj7Y9xy6t9e7p3eOhv1+S7Qb9XNdvBwLWs8vpo33JHXig9Rv8G+MxS+LqktYUAAAAASUVORK5CYII="
},
"itemId": "V3jvONy9xbroJVaRnm6oiAqVMv5Qz3TrNyLdL",
"syncTransactions": true
}
],
"plaid_processor_tokens": [
{
"layer_processor_token_id": "550e8400-e29b-41d4-a716-446655440000",
"processor_token": "processor-sandbox-d8e791d1-1234-9876-a207-69acca316045"
}
],
"previously_imported": true,
"stripe_connect_accounts": [
{}
],
"default_reporting_basis": "CASH",
"default_locale": "en-US",
"free_trial_ends_at": "2023-11-07T05:31:56Z"
}
}{
"errors": [
{
"type": "InvalidState",
"description": "Business is readonly",
"error_enum": "ReadOnlyBusiness"
}
]
}{
"type": "InvalidParameters",
"description": "<string>",
"error_enum": "InvalidPayload",
"meta": {}
}Business
Set business read-only status
Sets or clears the business’s read-only mode.
PUT
/
v1
/
businesses
/
{businessId}
/
readonly-status
Set business read-only status
curl --request PUT \
--url https://sandbox.layerfi.com/v1/businesses/{businessId}/readonly-status \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"readonly": true
}
'import requests
url = "https://sandbox.layerfi.com/v1/businesses/{businessId}/readonly-status"
payload = { "readonly": True }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({readonly: true})
};
fetch('https://sandbox.layerfi.com/v1/businesses/{businessId}/readonly-status', 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}/readonly-status",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'readonly' => true
]),
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}/readonly-status"
payload := strings.NewReader("{\n \"readonly\": true\n}")
req, _ := http.NewRequest("PUT", 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.put("https://sandbox.layerfi.com/v1/businesses/{businessId}/readonly-status")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"readonly\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.layerfi.com/v1/businesses/{businessId}/readonly-status")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"readonly\": true\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "Business",
"external_id": "test-acme-id",
"legal_name": "ACME LLC",
"tin": "<string>",
"us_state": "CA",
"country": "US",
"entity_type": "LLC",
"industry": "<string>",
"phone_number": "+16504651359",
"naics_code": "484110",
"sms_enabled": true,
"sms_stopped": true,
"readonly_at": "2023-11-07T05:31:56Z",
"sms_categorization_start_date": "2023-11-07T05:31:56Z",
"activation_at": "2023-11-07T05:31:56Z",
"imported_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"archived_at": "2023-11-07T05:31:56Z",
"unit_accounts": [
{
"id": "111111",
"importedAt": "2023-11-07T05:31:56Z"
}
],
"plaid_items": [
{
"layer_item_id": "550e8400-e29b-41d4-a716-446655440000",
"accessToken": "access-sandbox-a67d0be8-abcd-1234-5678-14fc7bc65366",
"institution": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"layer_id": "550e8400-e29b-41d4-a716-446655440000",
"plaid_institution_id": "ins_1",
"name": "Bank of America",
"logo": "iVBORw0KGgoAAAANSUhEUgAAAJgAAACYCAMAAAAvHNATAAAA6lBMVEUAAAD////////////////////////////////////////////////////////////////////////////////qUmn74ubnNVD4xc398fLlJkT1qLTf4+zpRFzrYHb509rvfY7xjJuAkLTzmqfxi5vzmai/x9lBWY7v8fXtb4LjGDftboIhPXwBIWkRL3P3t8D2t8HsYHbvfo7P1ePzmqigrMeQnr3oRF1RZphhdaGQnb0xS4Wfq8dgdKHuboL609lwgqtgdaFwgqqvutCfrMevudCQnr5BWY/pQ11RZpeQnb70qLRRZ5f98fO30r7oAAAAFHRSTlMA3yDvv0AQn2DPcFCAoJAwf4+vXxXsOc8AAAYDSURBVHhe7ZwHcus4EESZo5L9h1nROfvnvDmn+19nvevvoqimQAKgRFTtvguwa7pnIEIgNFmM0DtwLV/X6V903bLcQWCPtR4ZB65v0jZ8N7B7EGUHFmhCTCvYZ+kc+8Ck1uhuqO0FUNWM6e7cVGdikhC6Z+yyWK5J4ri7kmZbJIllKyILsbo21ABZShjqTKhDJo7WEaFOnaJ73ZTrkAAV/AxNAhQomnNAO+JAKmmGTjtDl7DzmUk7xBS2c0I7ZiIWL5d2jiuiy6c94BuqxB5bQBVdqEwVXahMFV2oTA1diN52EfBpz/jtlLm0d1zhea/AGuBRLzxrDL5JvWA2tKYDDalIax5QbxwoEjAkVGOyIqajxgRDDhUxEgmbOlKxzpxQ7wxqk08KYKiRfMRSpGCIDcIsIiVLZpMkWfEyn13eZ9Il67Rg6Sq6+kJ0+o1cybpM2PN5frVG8jKVKVm3LZku31W0XQprcztvybiIqnWL5ddyT6hIUXSabnbAfF1bVMSS418nXrLVY6zyFxsPz6p1E7DUlJgVacQqTFwk65Zyl80WjX4cXW0yO61qS6/XhXMOkJH2hMmf88cBAXWDsuWXRSYc/5BESK+TTW0v7quGz09SEsEGJ6W1JZcxyTPi6smLn89qtZWeNvVhlhYxT1+OW8k6uru9vfvzzZSAItrshJiQ7DTK/5Edt/cyoEam390+8Qtqo3jd0vwE0x6Xi3wraQH8sNgmq+T8jOp4Gl3RaVZTq2oOV3G7nxhms4koC3kePchKGbMYpbFDZgvKQtK0duFC8uWC2IybIrYu6+anqr93H6ZtFi5UBfqRgD3Fzm5KWXdHNbH7UDqLyXpXp+pF2nrv098q6/y25Oii4m9ZxjeEoIfYGWz8B2HbwlVpxSnErpT2QztZaCE7/ePmzN9UDPvx0d/S4ovtsmC6AenxtldyuzlcF+Avr6worVf18sHwpCCEwrqmnJ5vdfHb2wrvp+KystVTd/waE+BpA9C13cWPpb8w1kAWe1FPK298uEyNtCG6WPL9ulGvNlx8C8sSyMJH1q/76KdbrpTo1aczcBE14zhFWWg3klT9tDaEfYKKQCHBYngPwGyhLCSKq4NMpwqfz1uE/u4InyYpa3NF0PGVcvoVs1yl5pI0QWeYspqHnK4RMj16zyrXW3QRn8QpC9GITXO5XqM5y4xTFrcwbMbNci2iduEqEoYsAWGvNprxFVVZoTHHzC0FlCUk7CN7di1mOLkyAuI5pywUhh3Kml0rVi9iuDCILJredqe/QeqhGZnPSpPmcYrgHEM+30Dq65txtmBuDGF/sIX51MjRDaQ+wwc+ji5Uj+QFMYC1ksH09wv0p7lc6azWRch8vbAh8bPEdBGQLTnCBbjaiHjB3CQpM/TYts0M+Des0xybkV0udLGZQAtlbczv25YrWvBsKhpCNmJmsFy4VnEw5twZjq9hSLQs1zwjHvhPixVJQ5aXQqHHLQKYFxxFizL0esaxLrI3VQLi5fhLXx4zRj13uXAbakzcxEm9O9lcoly4O2wSPyfQjZB6KBcHpvi/zjEBK9FmRCz2djrvhEPyP0iIQPYAAdtGsJtnvAqFrKWNxySIrj0yIkmyOhuTheSxWHkvF3U2fp3JnyNz5Lx8ncuu2DgsuvAylbcRnezEyyKRtxHHfhd9GSdS3Yg9WTIgOU5gDZLA00qE44/7wrO40+OAQwLE7Fxm3Z7tt0mWv67hdVwMAw+2SQctv+/+LKBN8jyPSR5b3cOTWDJFTugqWTJX4SPNyIB6Z6D0sXkkpJ7xtC0cKpV85lquyueMoSJGIiPqjZHSn5ip/1Ee4ikSMGSgyMhHhrR3hkp87I/4GsBozf8/FNcN9T/5V/+SBPWvlUAMv5eP/RWZZ0NHE2HQ47xn4/V8PY76Fwohzoh2xMjR5PD0ndgYatIYO+jOQyiXEkXTQ60jnE4HxwDK1Z+f6t8LaNn/mQse0VC1bhI1RDvUhMh3jj00uVWNbG0vhEOdS5Wj7Y9xy6t9e7p3eOhv1+S7Qb9XNdvBwLWs8vpo33JHXig9Rv8G+MxS+LqktYUAAAAASUVORK5CYII="
},
"itemId": "V3jvONy9xbroJVaRnm6oiAqVMv5Qz3TrNyLdL",
"syncTransactions": true
}
],
"plaid_processor_tokens": [
{
"layer_processor_token_id": "550e8400-e29b-41d4-a716-446655440000",
"processor_token": "processor-sandbox-d8e791d1-1234-9876-a207-69acca316045"
}
],
"previously_imported": true,
"stripe_connect_accounts": [
{}
],
"default_reporting_basis": "CASH",
"default_locale": "en-US",
"free_trial_ends_at": "2023-11-07T05:31:56Z"
}
}{
"errors": [
{
"type": "InvalidState",
"description": "Business is readonly",
"error_enum": "ReadOnlyBusiness"
}
]
}{
"type": "InvalidParameters",
"description": "<string>",
"error_enum": "InvalidPayload",
"meta": {}
}While a business is on read-only mode, any mutating request (POST, PUT, PATCH, DELETE) under
This PUT endpoint is exempt from that rejection. You can always call it to set or clear the flag, including while the business is read-only. Read (GET) requests are unaffected.
/v1/businesses/{businessId} is rejected with an HTTP 403 response.
{
"errors":[
{
"type":"InvalidState",
"description":"Business is readonly",
"error_enum":"ReadOnlyBusiness"
}
]
}
Bank connections and reversibility
Enabling read-only mode disconnects the business’s bank connections that are linked through Plaid (the business’splaid_items) as part of the same request. Clearing the flag restores writes, but it does not reconnect them.
Disconnecting bank connections is irreversible. Clearing read-only mode does not reconnect them.
Response
A successful request returns the full, updated business indata, the same representation returned by Fetch a business. Its readonly field reflects the resulting read-only state.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
Content-Type must be set to application/json.
Path Parameters
The UUID of the business to update.
Body
application/json
Set to true to enable read-only mode for the business, or false to clear it.
Response
The updated business, reflecting the resulting read-only status.
Show child attributes
Show child attributes