Create multiple accounts in a single request
curl --request POST \
--url https://external.pleo.io/v1/chart-of-accounts/batch \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json;charset=UTF-8' \
--data '
{
"companyId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"items": [
{
"archived": true,
"externalId": "<string>",
"name": "<string>",
"code": "<string>",
"metadata": {},
"taxCodeExternalId": "<string>"
}
]
}
'import requests
url = "https://external.pleo.io/v1/chart-of-accounts/batch"
payload = {
"companyId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"items": [
{
"archived": True,
"externalId": "<string>",
"name": "<string>",
"code": "<string>",
"metadata": {},
"taxCodeExternalId": "<string>"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json;charset=UTF-8"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
Authorization: 'Bearer <token>',
'Content-Type': 'application/json;charset=UTF-8'
},
body: JSON.stringify({
companyId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
items: [
{
archived: true,
externalId: '<string>',
name: '<string>',
code: '<string>',
metadata: {},
taxCodeExternalId: '<string>'
}
]
})
};
fetch('https://external.pleo.io/v1/chart-of-accounts/batch', 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://external.pleo.io/v1/chart-of-accounts/batch",
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([
'companyId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'items' => [
[
'archived' => true,
'externalId' => '<string>',
'name' => '<string>',
'code' => '<string>',
'metadata' => [
],
'taxCodeExternalId' => '<string>'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json;charset=UTF-8"
],
]);
$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://external.pleo.io/v1/chart-of-accounts/batch"
payload := strings.NewReader("{\n \"companyId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"items\": [\n {\n \"archived\": true,\n \"externalId\": \"<string>\",\n \"name\": \"<string>\",\n \"code\": \"<string>\",\n \"metadata\": {},\n \"taxCodeExternalId\": \"<string>\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json;charset=UTF-8")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://external.pleo.io/v1/chart-of-accounts/batch")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json;charset=UTF-8")
.body("{\n \"companyId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"items\": [\n {\n \"archived\": true,\n \"externalId\": \"<string>\",\n \"name\": \"<string>\",\n \"code\": \"<string>\",\n \"metadata\": {},\n \"taxCodeExternalId\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://external.pleo.io/v1/chart-of-accounts/batch")
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;charset=UTF-8'
request.body = "{\n \"companyId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"items\": [\n {\n \"archived\": true,\n \"externalId\": \"<string>\",\n \"name\": \"<string>\",\n \"code\": \"<string>\",\n \"metadata\": {},\n \"taxCodeExternalId\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"created": [
{
"archived": false,
"code": "2001",
"companyId": "123e4567-e89b-12d3-a456-426614174006",
"externalId": "ext-001",
"id": "123e4567-e89b-12d3-a456-426614174005",
"name": "Bank Charges",
"taxCodeExternalId": "IVA 20"
},
{
"archived": false,
"code": "2002",
"companyId": "123e4567-e89b-12d3-a456-426614174006",
"externalId": "ext-002",
"id": "123e4567-e89b-12d3-a456-426614174007",
"name": "Office Supplies",
"taxCodeExternalId": "IVA 20"
}
],
"failed": [
{
"reasons": [
"EXTERNAL_ID_ALREADY_EXISTS",
"NAME_EMPTY"
],
"request": {
"archived": false,
"code": "2003",
"externalId": "ext-duplicate",
"name": "",
"taxCodeExternalId": "IVA 20"
}
}
]
}
}Accounts
Create multiple accounts in a single request
Creates multiple bookkeeping accounts in a single batch operation. This endpoint validates each account in the batch and returns both successfully created accounts and failed items with their failure reasons. Accounts that pass validation will be created, while invalid accounts will be returned in the failed list.
POST
/
v1
/
chart-of-accounts
/
batch
Create multiple accounts in a single request
curl --request POST \
--url https://external.pleo.io/v1/chart-of-accounts/batch \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json;charset=UTF-8' \
--data '
{
"companyId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"items": [
{
"archived": true,
"externalId": "<string>",
"name": "<string>",
"code": "<string>",
"metadata": {},
"taxCodeExternalId": "<string>"
}
]
}
'import requests
url = "https://external.pleo.io/v1/chart-of-accounts/batch"
payload = {
"companyId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"items": [
{
"archived": True,
"externalId": "<string>",
"name": "<string>",
"code": "<string>",
"metadata": {},
"taxCodeExternalId": "<string>"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json;charset=UTF-8"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
Authorization: 'Bearer <token>',
'Content-Type': 'application/json;charset=UTF-8'
},
body: JSON.stringify({
companyId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
items: [
{
archived: true,
externalId: '<string>',
name: '<string>',
code: '<string>',
metadata: {},
taxCodeExternalId: '<string>'
}
]
})
};
fetch('https://external.pleo.io/v1/chart-of-accounts/batch', 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://external.pleo.io/v1/chart-of-accounts/batch",
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([
'companyId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'items' => [
[
'archived' => true,
'externalId' => '<string>',
'name' => '<string>',
'code' => '<string>',
'metadata' => [
],
'taxCodeExternalId' => '<string>'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json;charset=UTF-8"
],
]);
$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://external.pleo.io/v1/chart-of-accounts/batch"
payload := strings.NewReader("{\n \"companyId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"items\": [\n {\n \"archived\": true,\n \"externalId\": \"<string>\",\n \"name\": \"<string>\",\n \"code\": \"<string>\",\n \"metadata\": {},\n \"taxCodeExternalId\": \"<string>\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json;charset=UTF-8")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://external.pleo.io/v1/chart-of-accounts/batch")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json;charset=UTF-8")
.body("{\n \"companyId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"items\": [\n {\n \"archived\": true,\n \"externalId\": \"<string>\",\n \"name\": \"<string>\",\n \"code\": \"<string>\",\n \"metadata\": {},\n \"taxCodeExternalId\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://external.pleo.io/v1/chart-of-accounts/batch")
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;charset=UTF-8'
request.body = "{\n \"companyId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"items\": [\n {\n \"archived\": true,\n \"externalId\": \"<string>\",\n \"name\": \"<string>\",\n \"code\": \"<string>\",\n \"metadata\": {},\n \"taxCodeExternalId\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"created": [
{
"archived": false,
"code": "2001",
"companyId": "123e4567-e89b-12d3-a456-426614174006",
"externalId": "ext-001",
"id": "123e4567-e89b-12d3-a456-426614174005",
"name": "Bank Charges",
"taxCodeExternalId": "IVA 20"
},
{
"archived": false,
"code": "2002",
"companyId": "123e4567-e89b-12d3-a456-426614174006",
"externalId": "ext-002",
"id": "123e4567-e89b-12d3-a456-426614174007",
"name": "Office Supplies",
"taxCodeExternalId": "IVA 20"
}
],
"failed": [
{
"reasons": [
"EXTERNAL_ID_ALREADY_EXISTS",
"NAME_EMPTY"
],
"request": {
"archived": false,
"code": "2003",
"externalId": "ext-duplicate",
"name": "",
"taxCodeExternalId": "IVA 20"
}
}
]
}
}Authorizations
bearerAuthbasicAuth
JWT Bearer token authentication. Include the token in the Authorization header as: Bearer <token>
Body
application/json;charset=UTF-8
Response
Batch creation completed. Check the response for created and failed items.
Response for batch account creation operation.
Show child attributes
Show child attributes
Was this page helpful?
⌘I