Post accrual entries
curl --request POST \
--url https://api.entendre.finance/v1/accruals \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--header 'X-API-Key: <api-key>' \
--data '
{
"accruals": [
{
"vendor_id": "vnd_507f1f77bcf86cd799439011",
"vendor_name": "Example Software",
"amount": 1,
"period": "2026-08",
"reason": "Correct the selected accounting records.",
"confidence": 1,
"expected_bill_id": "ref_507f1f77bcf86cd799439011",
"notes": "September subscription",
"legal_entity_id": "le_507f1f77bcf86cd799439011",
"legal_entity_name": "Example Company"
}
]
}
'const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
'X-API-Key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
accruals: [
{
vendor_id: 'vnd_507f1f77bcf86cd799439011',
vendor_name: 'Example Software',
amount: 1,
period: '2026-08',
reason: 'Correct the selected accounting records.',
confidence: 1,
expected_bill_id: 'ref_507f1f77bcf86cd799439011',
notes: 'September subscription',
legal_entity_id: 'le_507f1f77bcf86cd799439011',
legal_entity_name: 'Example Company'
}
]
})
};
fetch('https://api.entendre.finance/v1/accruals', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.entendre.finance/v1/accruals"
payload = { "accruals": [
{
"vendor_id": "vnd_507f1f77bcf86cd799439011",
"vendor_name": "Example Software",
"amount": 1,
"period": "2026-08",
"reason": "Correct the selected accounting records.",
"confidence": 1,
"expected_bill_id": "ref_507f1f77bcf86cd799439011",
"notes": "September subscription",
"legal_entity_id": "le_507f1f77bcf86cd799439011",
"legal_entity_name": "Example Company"
}
] }
headers = {
"Idempotency-Key": "<idempotency-key>",
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"data": {
"accruals_created": 1,
"accruals_failed": 0,
"total_amount": "100.00",
"reversal_date": "2026-09-01",
"created": [
{
"accrual_id": "acc_507f1f77bcf86cd799439011",
"journal_entry_id": "je_507f1f77bcf86cd799439011",
"journal_sequence_number": "JE-42",
"vendor_id": "vnd_507f1f77bcf86cd799439011",
"vendor_name": "Example Supplier",
"amount": 100,
"period": "2026-08",
"reversal_date": "2026-09-01",
"confidence": null
}
],
"failed": []
}
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid path, query or request body.",
"request_id": "req_example"
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid or expired API Key",
"request_id": "req_example",
"suggested_action": "Send an API key in X-API-Key, or an OAuth access token as Authorization: Bearer. Refresh an expired access token.",
"documentation_url": "https://entendre.ai/docs/get-started/authentication"
}
}{
"error": {
"code": "FORBIDDEN",
"message": "Insufficient access to organization",
"request_id": "req_example"
}
}{
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Resource not found",
"request_id": "req_example"
}
}{
"error": {
"code": "CONFLICT",
"message": "The resource state does not allow this operation.",
"request_id": "req_example"
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded. Retry after 30s.",
"request_id": "req_example"
}
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "Internal server error",
"request_id": "req_example"
}
}{
"error": {
"code": "SERVICE_UNAVAILABLE",
"message": "Service unavailable.",
"request_id": "req_example"
}
}Accruals
Post accrual entries
Creates and posts journals for one or more vendor accruals.
POST
/
v1
/
accruals
Post accrual entries
curl --request POST \
--url https://api.entendre.finance/v1/accruals \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--header 'X-API-Key: <api-key>' \
--data '
{
"accruals": [
{
"vendor_id": "vnd_507f1f77bcf86cd799439011",
"vendor_name": "Example Software",
"amount": 1,
"period": "2026-08",
"reason": "Correct the selected accounting records.",
"confidence": 1,
"expected_bill_id": "ref_507f1f77bcf86cd799439011",
"notes": "September subscription",
"legal_entity_id": "le_507f1f77bcf86cd799439011",
"legal_entity_name": "Example Company"
}
]
}
'const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
'X-API-Key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
accruals: [
{
vendor_id: 'vnd_507f1f77bcf86cd799439011',
vendor_name: 'Example Software',
amount: 1,
period: '2026-08',
reason: 'Correct the selected accounting records.',
confidence: 1,
expected_bill_id: 'ref_507f1f77bcf86cd799439011',
notes: 'September subscription',
legal_entity_id: 'le_507f1f77bcf86cd799439011',
legal_entity_name: 'Example Company'
}
]
})
};
fetch('https://api.entendre.finance/v1/accruals', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.entendre.finance/v1/accruals"
payload = { "accruals": [
{
"vendor_id": "vnd_507f1f77bcf86cd799439011",
"vendor_name": "Example Software",
"amount": 1,
"period": "2026-08",
"reason": "Correct the selected accounting records.",
"confidence": 1,
"expected_bill_id": "ref_507f1f77bcf86cd799439011",
"notes": "September subscription",
"legal_entity_id": "le_507f1f77bcf86cd799439011",
"legal_entity_name": "Example Company"
}
] }
headers = {
"Idempotency-Key": "<idempotency-key>",
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"data": {
"accruals_created": 1,
"accruals_failed": 0,
"total_amount": "100.00",
"reversal_date": "2026-09-01",
"created": [
{
"accrual_id": "acc_507f1f77bcf86cd799439011",
"journal_entry_id": "je_507f1f77bcf86cd799439011",
"journal_sequence_number": "JE-42",
"vendor_id": "vnd_507f1f77bcf86cd799439011",
"vendor_name": "Example Supplier",
"amount": 100,
"period": "2026-08",
"reversal_date": "2026-09-01",
"confidence": null
}
],
"failed": []
}
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid path, query or request body.",
"request_id": "req_example"
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid or expired API Key",
"request_id": "req_example",
"suggested_action": "Send an API key in X-API-Key, or an OAuth access token as Authorization: Bearer. Refresh an expired access token.",
"documentation_url": "https://entendre.ai/docs/get-started/authentication"
}
}{
"error": {
"code": "FORBIDDEN",
"message": "Insufficient access to organization",
"request_id": "req_example"
}
}{
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Resource not found",
"request_id": "req_example"
}
}{
"error": {
"code": "CONFLICT",
"message": "The resource state does not allow this operation.",
"request_id": "req_example"
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded. Retry after 30s.",
"request_id": "req_example"
}
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "Internal server error",
"request_id": "req_example"
}
}{
"error": {
"code": "SERVICE_UNAVAILABLE",
"message": "Service unavailable.",
"request_id": "req_example"
}
}Vendor mappings, accounting-period checks and automatic reversal settings apply. To check vendor readiness, use Find vendors for accruals. Resolve missing mappings in the dashboard.
A failed item does not undo the entries that were already posted. Check
failed for the items that were not posted.Authorizations
Your organization API key. See Authentication.
Headers
Unique key for this operation. Retry with the same key and request body after a timeout. Keys are retained for at least 24 hours.
Required string length:
1 - 255Body
application/json
Response
Batch processed. Inspect created and failed items; HTTP 200 does not mean every item succeeded.
Per-entry create result. created/failed partition the requested accruals.
Show child attributes
Show child attributes