Import accounting data
curl --request POST \
--url https://api.entendre.finance/v1/connections/{connection_id}/imports \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--header 'X-API-Key: <api-key>' \
--data '
{
"resource_types": [
"legal_entities",
"tags",
"ledger_accounts"
]
}
'const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
'X-API-Key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({resource_types: ['legal_entities', 'tags', 'ledger_accounts']})
};
fetch('https://api.entendre.finance/v1/connections/{connection_id}/imports', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.entendre.finance/v1/connections/{connection_id}/imports"
payload = { "resource_types": ["legal_entities", "tags", "ledger_accounts"] }
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": {
"job_id": "glc_507f1f77bcf86cd799439011",
"integration_type": "quickbooks",
"realm_id": "9130350000000000"
},
"message": "QuickBooks import job queued"
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid path, query or request body.",
"request_id": "req_example"
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Authentication is required.",
"request_id": "req_example"
}
}{
"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"
}
}Connections
Import accounting data
Imports accounting data from a connected general ledger.
POST
/
v1
/
connections
/
{connection_id}
/
imports
Import accounting data
curl --request POST \
--url https://api.entendre.finance/v1/connections/{connection_id}/imports \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--header 'X-API-Key: <api-key>' \
--data '
{
"resource_types": [
"legal_entities",
"tags",
"ledger_accounts"
]
}
'const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
'X-API-Key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({resource_types: ['legal_entities', 'tags', 'ledger_accounts']})
};
fetch('https://api.entendre.finance/v1/connections/{connection_id}/imports', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.entendre.finance/v1/connections/{connection_id}/imports"
payload = { "resource_types": ["legal_entities", "tags", "ledger_accounts"] }
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": {
"job_id": "glc_507f1f77bcf86cd799439011",
"integration_type": "quickbooks",
"realm_id": "9130350000000000"
},
"message": "QuickBooks import job queued"
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid path, query or request body.",
"request_id": "req_example"
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Authentication is required.",
"request_id": "req_example"
}
}{
"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"
}
}| Provider | Imports |
|---|---|
| QuickBooks, Xero | Legal entities, chart of accounts, and customer and vendor tags |
| Campfire | Customer and vendor tags. The accounts and entities come from the connection setup. |
| NetSuite | Not supported |
legal_entity_id for one assigned entity. The import needs one provider configuration and one authorized provider company. Several configurations return HTTP 409. Requires write:gl, a user-associated API key and an active connection.
The import runs in the background. The HTTP 202 response returns the job ID. Check the status with List accounting imports. To send journals from Entendre, use Sync journals.Authorizations
Your organization API key. Some operations also need a key that is associated with a user; their pages say so.
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 - 255Path Parameters
ID of the connection.
Minimum string length:
1Body
application/json
Optional scope for the import.
The legal entity to import into. Required only when the connection is assigned to more than one legal entity; otherwise the single assigned entity is used.
Example:
"le_507f1f77bcf86cd799439011"