{ "opencollection": "1.0.0", "info": { "name": "Embat AccountingAccounts AccountingEntries API", "version": "2.120.3" }, "items": [ { "info": { "name": "AccountingEntries", "type": "folder" }, "items": [ { "info": { "name": "List accounting entries", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/accountingentries/:companyId", "params": [ { "name": "companyId", "value": "", "type": "path" }, { "name": "reconciled", "value": "", "type": "query", "description": "Filter by reconciliation status. `false` also matches entries that are not yet reconciled or have no status set." }, { "name": "accountingCode", "value": "", "type": "query", "description": "Filter by ledger account code (`accountingCode`)." }, { "name": "accountingEntryCode", "value": "", "type": "query", "description": "Filter by `accountingEntryCode` (does not match `accountingEntryCodeId`)." }, { "name": "startDate", "value": "", "type": "query", "description": "Only return entries dated on or after this date (inclusive). The range cannot exceed 90 days: if `endDate` is also given, the span between the two cannot exceed 90 days; if `endDate` is omitted, `startDate` cannot be more than 90 days in the past." }, { "name": "endDate", "value": "", "type": "query", "description": "Only return entries dated before this date (exclusive). Combined with `startDate`, the range cannot exceed 90 days. If used without `startDate`, results start 90 days before this date." }, { "name": "startUpdatedAt", "value": "", "type": "query", "description": "Only return entries last modified on or after this timestamp (inclusive). The range cannot exceed 90 days: if `endUpdatedAt` is also given, the span between the two cannot exceed 90 days; if `endUpdatedAt` is omitted, `startUpdatedAt` cannot be more than 90 days in the past." }, { "name": "endUpdatedAt", "value": "", "type": "query", "description": "Only return entries last modified before this timestamp (exclusive). Combined with `startUpdatedAt`, the range cannot exceed 90 days. If used without `startUpdatedAt`, results start 90 days before this timestamp." }, { "name": "limit", "value": "", "type": "query", "description": "Maximum number of objects to return in the response. Default 500, maximum 2000." }, { "name": "nextPageToken", "value": "", "type": "query", "description": "Token to fetch the next page of results, taken from the `nextPageToken` returned by the previous request with the same filters. Omit it to fetch the first page. An invalid or malformed token is rejected with `404`." } ], "auth": { "type": "bearer", "token": "{{bearerToken}}" } }, "docs": "Returns the accounting entries of a company, ordered by accounting date (most recent first). Results are paginated: use `limit` to control page size and pass the returned `nextPageToken` to fetch the next page. `startDate`/`endDate` filter by accounting date, and `startUpdatedAt`/`endUpdatedAt` filter by last modification time, useful for incremental synchronization. `startDate`/`startUpdatedAt` are inclusive, `endDate`/`endUpdatedAt` are exclusive, and each date range spans at most 90 days. If " }, { "info": { "name": "Create accounting entry", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/accountingentries/:companyId", "params": [ { "name": "companyId", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" }, "auth": { "type": "bearer", "token": "{{bearerToken}}" } }, "docs": "Creates a single accounting entry (one line of a general ledger journal). If `customId` is omitted, Embat auto-generates one; if the `customId` already exists, the entry is updated instead of duplicated (upsert). An entry always carries both an outflow side (`assetAmount`, stored with its sign inverted so negative means money out) and an inflow side (`liabilityAmount`, stored as sent); if you only send one, the other defaults to 0. If `description` is omitted, Embat generates one from the entry'" }, { "info": { "name": "Update accounting entries in bulk", "type": "http" }, "http": { "method": "PATCH", "url": "{{baseUrl}}/accountingentries/:companyId", "params": [ { "name": "companyId", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" }, "auth": { "type": "bearer", "token": "{{bearerToken}}" } }, "docs": "Updates one or more fields of several accounting entries, identified by `customId`, following the same rules as the single-entry update endpoint — including the `description` reset-when-omitted behavior. Entries whose `customId` does not match any existing entry are silently skipped; the call still returns `200` for the whole batch." }, { "info": { "name": "Delete accounting entries in bulk", "type": "http" }, "http": { "method": "DELETE", "url": "{{baseUrl}}/accountingentries/:companyId", "params": [ { "name": "companyId", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" }, "auth": { "type": "bearer", "token": "{{bearerToken}}" } }, "docs": "Deletes several accounting entries in a single call, identified by `customId`. The call returns `200` immediately — even for `customId` values that do not match any existing entry — and entries may still briefly appear in `GET` results right after deletion." }, { "info": { "name": "Retrieve accounting entry", "type": "http" }, "http": { "method": "GET", "url": "{{baseUrl}}/accountingentries/:companyId/:customId", "params": [ { "name": "customId", "value": "", "type": "path" }, { "name": "companyId", "value": "", "type": "path" } ], "auth": { "type": "bearer", "token": "{{bearerToken}}" } }, "docs": "Returns a single accounting entry by `customId`." }, { "info": { "name": "Update accounting entry", "type": "http" }, "http": { "method": "PATCH", "url": "{{baseUrl}}/accountingentries/:companyId/:customId", "params": [ { "name": "customId", "value": "", "type": "path" }, { "name": "companyId", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" }, "auth": { "type": "bearer", "token": "{{bearerToken}}" } }, "docs": "Updates one or more fields of an accounting entry identified by `customId`. Only the fields you send are changed — except `description`: if it is omitted, Embat resets it to an auto-generated value derived from the entry's identifier, overwriting any previously set custom description; resend the current value to keep it unchanged. Updating a `customId` that does not match any existing entry is a no-op: the call still returns `200` without creating or changing anything, and no `404` is raised." }, { "info": { "name": "Delete accounting entry", "type": "http" }, "http": { "method": "DELETE", "url": "{{baseUrl}}/accountingentries/:companyId/:customId", "params": [ { "name": "customId", "value": "", "type": "path" }, { "name": "companyId", "value": "", "type": "path" } ], "auth": { "type": "bearer", "token": "{{bearerToken}}" } }, "docs": "Deletes an accounting entry by `customId`. The call returns `200` immediately — even if `customId` does not match any existing entry — and the entry may still briefly appear in `GET` results right after deletion." }, { "info": { "name": "Create accounting entries in bulk", "type": "http" }, "http": { "method": "POST", "url": "{{baseUrl}}/accountingentries/:companyId/bulk", "params": [ { "name": "companyId", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" }, "auth": { "type": "bearer", "token": "{{bearerToken}}" } }, "docs": "Creates several accounting entries in a single call, following the same rules as the single entry creation endpoint. Entries sharing the same `customId` within the request are deduplicated and only the first occurrence is processed." }, { "info": { "name": "Delete accounting entries in bulk by entry code", "type": "http" }, "http": { "method": "DELETE", "url": "{{baseUrl}}/accountingentries/accountingentrycode/:companyId", "params": [ { "name": "companyId", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" }, "auth": { "type": "bearer", "token": "{{bearerToken}}" } }, "docs": "Deletes every accounting entry whose `accountingEntryCode` or `accountingEntryCodeId` matches one of the given codes. The call returns `200` immediately; matching entries may still briefly appear in `GET` results right after deletion." } ] } ], "bundled": true }