Embat website screenshot

Embat

Embat is a real-time treasury management platform for finance teams, founded in Madrid and backed by Creandum. Its REST/JSON API (OpenAPI 3.1, 103 operations across 21 resource areas) connects third-party applications and ERPs to Embat to manage bank connections, balances, transactions, payments and payment orders, cash-flow forecasting, scenarios, accounting entries and accounts, contacts, and bank reconciliation across multiple companies. Authentication is HTTP Bearer using a JWT idToken obtained from an email/password token endpoint (60-minute expiry, no refresh); every resource is scoped by a companyId path parameter and list endpoints paginate with limit + nextPageToken.

Embat publishes 22 APIs on the APIs.io network, including AccountingAccounts API, AccountingEntries API, Attributes API, and 19 more. Tagged areas include Company, Fintech, Treasury Management, Payments, and Cash Flow.

Embat’s developer surface includes documentation, API reference, authentication, sandbox, and 13 more developer resources.

30.9/100 thin ▬ flat Agent 45/100 agent ready Full breakdown ↓
scored 2026-08-10 · rubric v0.9.1
AccessSelf serve
22 APIs 1 MCP Servers
CompanyFintechTreasury ManagementPaymentsCash FlowBankingReconciliationForecasting

Kin Score

Kin Score Kin Score How this is scored →
scored 2026-08-10 · rubric v0.9.1
Composite quality — 30.9/100 · thin
Contract Quality 15.5 / 25
Developer Ergonomics 7.3 / 20
Commercial Clarity 2.6 / 20
Operational Transparency 0.0 / 13
Governance 1.4 / 12
Discoverability 5.7 / 10
Agent readiness — 45/100 · agent ready
Machine-Readable Contract 18 / 18
Agentic Access Contract 10 / 10
MCP Server 12 / 12
Machine-Readable Auth 10 / 10
Idempotency 0 / 9
Stable Error Semantics 8 / 8
Request/Response Examples 7 / 7
Rate-Limit Signaling 0 / 7
Typed Event Surface 0 / 6
Agent Skills 5 / 5
Well-Known Catalog 0 / 4
Consent & Bot Identity 0 / 3
A2A Agent Card 0 / 8
Dry-Run / Simulate Mode 0 / 4
Improve this rating by publishing the missing artifacts — every area above can be raised, and the full rubric is at apis.io/rating/. This rating is computed from github.com/api-evangelist/embat: open an issue to ask a question, or submit a pull request to add artifacts. Want it done for you? Prioritized profiling — $2,500 →

APIs 22

Individual APIs this provider publishes, each with its own machine-readable definition.

Embat AccountingAccounts API

`AccountingAccount` represents an account in the company's chart of accounts. `accountingCode` is the unique identifier of an account and is used as its ID; it also determines t...

Embat AccountingEntries API

`AccountingEntry` represents a single line of a company's general accounting journal — an outflow (`assetAmount`) or inflow (`liabilityAmount`) movement posted to a ledger accou...

Embat Attributes API

`Attribute` represents a custom field that you can define once and then use to tag records across Embat, such as an ERP dimension, a cost center or any other analytic field you ...

Embat Authentication API

`Authentication` provides the credentials Embat issues to access the rest of the public API. Every other endpoint requires a JWT `idToken` in the `Authorization: Bearer

Embat Balances API

`Balance` represents the end-of-day balance of a bank product (account) for a given calendar day. Embat records one balance per product per day, expressed both in the product's ...

Embat Banks API

`Bank` represents a banking relationship connected to your company in Embat — for example, an aggregated connection to a specific banking entity. Each bank relationship groups t...

Embat Categories API

`Category` represents a treasury or cashflow classification in Embat, used to group transactions, forecasts and operations for reporting (e.g. "Providers", "Payroll", "Subscript...

Embat Companies API

A `Company` represents a legal entity configured in your Embat workspace. Its `id` is the `companyId` used throughout this API: almost every other endpoint is scoped by `company...

Embat Contacts API

`Contact` represents a client or supplier your company transacts with. `customId` is the unique identifier of a contact: set your own value to use as your ERP contact ID, or let...

Embat DebtScheduleConfigs API

⚠️ Warning: This API section is in BETA. It might undergo ...

Embat Files API

`File` represents a banking file exchanged between Embat and a bank: either a file **received** from a bank (a reception, e.g. an account statement or a confirmation file) or a ...

Embat Forecasts API

`Forecast` represents a treasury cash flow projection generated by Embat for a given date, classified under a `Category` and grouped into a `Scenario` (e.g. a base case or a str...

Embat ForeignExchangeRates API

`ForeignExchangeRate` records the daily exchange rates Embat uses to convert amounts between currencies for accounting purposes. Each record captures the rates observed on a giv...

Embat Logs API

`Logs` let your integration report execution events, warnings or errors observed while interacting with the Embat API, so Embat's support team can diagnose integration issues. L...

Embat Operations API

`Operation` represents an accounting operation with a pending amount to settle — typically an invoice or bill due from or to a `Contact` (client or supplier). An invoice with se...

Embat PaymentOrders API

⚠️ Warning: This API section is in BETA. It might undergo ...

Embat Payments API

`Payment` represents money moving between a bank transaction and the operations (invoices, bills) or accounting entries it settles. `customId` is the unique identifier of a paym...

Embat Products API

`Product` represents a bank account, credit line, card or wallet held by the company — either aggregated automatically from a bank connection, or added manually in Embat. A prod...

Embat ReconcilingItems API

⚠️ Warning: This API section is in BETA. It might undergo ...

Embat ReconcilingSources API

⚠️ Warning: This API section is in BETA. It might undergo ...

Embat Scenarios API

A `Scenario` represents a forecasting hypothesis in Embat's treasury forecast: a named, currency-denominated projection covering a defined horizon (`startPeriod` to `endPeriod`)...

Embat Transactions API

`Transaction` represents a movement recorded on one of your bank accounts (`Product`). Each transaction reports the balance of its product immediately after the movement, and ca...

Scroll for all 22

MCP Servers 1

Model Context Protocol servers that expose these APIs to AI agents.

embat-mcp.yml

MCP SERVER

Security Posture 2

Authentication, domain security, vulnerability disclosure, and trust-center signals.

Embat Authentication

http · 1 scheme

SECURITY

Embat Domain Security

TLSv1.3 · DMARC

SECURITY

Agentic Access 1

Recommended x-agentic-access execution contracts for AI agents.

Embat Agentic Access

103 operations · 61 acting

103 operations · 61 acting

AGENTIC

Resources

Get Started 2

Portal, sign-up, and the first successful call

Documentation 2

Reference material describing how the API behaves

Agent Surfaces 4

MCP servers, agent skills, and machine-readable catalogs

Access & Security 2

Authentication, authorization, and security posture

Company 1

The organization behind the API

Other 1

Properties that don't map to a standard resource type

Source (apis.yml)

apis.yml Raw ↑
aid: embat
name: Embat
description: Embat is a real-time treasury management platform for finance teams, founded in Madrid and backed by Creandum.
  Its REST/JSON API (OpenAPI 3.1, 103 operations across 21 resource areas) connects third-party applications and ERPs to Embat
  to manage bank connections, balances, transactions, payments and payment orders, cash-flow forecasting, scenarios, accounting
  entries and accounts, contacts, and bank reconciliation across multiple companies. Authentication is HTTP Bearer using a
  JWT idToken obtained from an email/password token endpoint (60-minute expiry, no refresh); every resource is scoped by a
  companyId path parameter and list endpoints paginate with limit + nextPageToken.
url: https://raw.githubusercontent.com/api-evangelist/embat/refs/heads/main/apis.yml
x-type: company
x-source: vc-portfolio
x-backed-by:
- creandum
x-tier: stub
x-tier-reason: portfolio-lead
accessModel:
  pricing: unknown
  onboarding: self-serve
  trial: false
  try_now: false
  public: false
  label: Self-serve signup
  confidence: medium
  source:
  - authentication
  generated: '2026-07-22'
  method: derived
specificationVersion: '0.20'
created: '2026-07-17'
modified: '2026-07-19'
image: https://storage.googleapis.com/embat-production.appspot.com/assets/favicon.ico
tags:
- Company
- Fintech
- Treasury Management
- Payments
- Cash Flow
- Banking
- Reconciliation
- Forecasting
apis:
- aid: embat:embat-accountingaccounts-api
  name: Embat AccountingAccounts API
  description: '`AccountingAccount` represents an account in the company''s chart of accounts. `accountingCode` is the unique
    identifier of an account and is used as its ID; it also determines the account''s default classification (`type`) when
    none is sent.


    Accounting accounts are the backbone Embat uses to classify money movements: `Payments` and accounting entries reference
    an account by `accountingCode` to record where a transaction is posted, and `Transactions` are reconciled against the
    account''s `balance`.


    **Typical flow:** notify Embat of the accounts that exist in your ERP so that payments and reconciliations can reference
    them.


    1. **Create or update accounts.** Send each account from your chart of accounts with `POST /accountingaccounts/{companyId}`
    (or the bulk variant `POST /accountingaccounts/{companyId}/bulk`). Sending an `accountingCode` that already exists updates
    that account instead of creating a duplicate.

    2. **Keep accounts in sync.** As accounts change in your ERP (renamed, deactivated, reclassified), reflect those changes
    with `PATCH /accountingaccounts/{companyId}/{accountingCode}` (or the bulk variant `PATCH /accountingaccounts/{companyId}`),
    or simply resend the account with `POST` — creation is an upsert, so an existing `accountingCode` is updated instead of
    duplicated. Note that `type` can only be changed via `PATCH`.

    3. **Read accounts.** Use `GET /accountingaccounts/{companyId}` to list all accounts, or `GET /accountingaccounts/{companyId}/{accountingCode}`
    to retrieve a single one, including its current `balance`.

    4. **Delete accounts.** `DELETE /accountingaccounts/{companyId}/{accountingCode}` (or the bulk variant) deactivates an
    account rather than permanently removing it; deactivated accounts still appear in list/retrieve responses with `active:
    false`.'
  humanURL: https://api.embat.io/docs
  baseURL: https://api.embat.io
  tags:
  - AccountingAccounts
  properties:
  - type: OpenAPI
    url: openapi/embat-accountingaccounts-api-openapi.yml
  - type: Documentation
    url: https://api.embat.io/docs
  - type: APIReference
    url: https://api.embat.io/docs
- aid: embat:embat-accountingentries-api
  name: Embat AccountingEntries API
  description: "`AccountingEntry` represents a single line of a company's general accounting journal — an outflow (`assetAmount`)\
    \ or inflow (`liabilityAmount`) movement posted to a ledger account (`accountingCode`). `customId` is the unique identifier\
    \ of an entry: set your own value to use as your ERP accounting entry ID, or let Embat auto-generate one. Entries that\
    \ belong to the same journal document (e.g. all the lines of one invoice posting) can share the same `accountingEntryCode`.\n\
    \nAccounting entries are the accounting side of Embat's reconciliation process with `Transactions` (bank movements): Embat\
    \ matches entries against transactions and exposes the outcome here through `reconciled` and `reconciliationsIds`. An\
    \ entry can also reference a `Contact` (client/supplier, via `contactCustomId`, when `accountingCode` is a contacts account),\
    \ a `Payment` it relates to (`paymentId`), or a source document (`documentId`).\n\n**Typical flow:** accounting entries\
    \ synchronize your general ledger in both directions between your ERP and Embat.\n\n1. **Notify Embat of entries posted\
    \ in your ERP.** When a journal line is recorded in your ERP, create it in Embat with `POST /accountingentries/{companyId}`\
    \ (or the bulk variant):\n\n```json\nPOST /accountingentries/{companyId}\n{\n  \"customId\": \"erp-entry-2024-001\",\n\
    \  \"accountingEntryCode\": \"invoice-2024-001\",\n  \"accountingCode\": \"4300001\",\n  \"accountingName\": \"Trade debtors\"\
    ,\n  \"date\": \"2024-01-15T00:00:00Z\",\n  \"assetAmount\": 1250.50,\n  \"liabilityAmount\": 0,\n  \"currency\": \"EUR\"\
    \n}\n```\n\n2. **Read entries and their reconciliation status.** Use `GET /accountingentries/{companyId}` with the `reconciled`\
    \ filter and `startUpdatedAt`/`endUpdatedAt` for incremental reads since your last poll, or `GET /accountingentries/{companyId}/{customId}`\
    \ to retrieve a single entry.\n3. **Correct or remove entries as your ledger changes.** Use `PATCH /accountingentries/{companyId}/{customId}`\
    \ (or the bulk variant) to update fields — resend the current `description` if you want to keep it, since omitting it\
    \ resets it to an auto-generated value. You can also resend the full entry with `POST`: creation is an upsert, so an existing\
    \ `customId` is updated instead of duplicated. Use `DELETE` to remove entries individually or in bulk, by `customId` or\
    \ by `accountingEntryCode`/`accountingEntryCodeId`."
  humanURL: https://api.embat.io/docs
  baseURL: https://api.embat.io
  tags:
  - AccountingEntries
  properties:
  - type: OpenAPI
    url: openapi/embat-accountingentries-api-openapi.yml
  - type: Documentation
    url: https://api.embat.io/docs
  - type: APIReference
    url: https://api.embat.io/docs
- aid: embat:embat-attributes-api
  name: Embat Attributes API
  description: "`Attribute` represents a custom field that you can define once and then use to tag records across Embat, such\
    \ as an ERP dimension, a cost center or any other analytic field you want available as a filter in tables, charts and\
    \ reports. `customId` is the unique identifier of an attribute: set your own value to use as your ERP dimension ID, or\
    \ let Embat auto-generate one.\n\nAn attribute has a `type` — `list` (a fixed set of `values` to choose from), `string`\
    \ or `number` (free-form value) — and can optionally be nested under a parent attribute via `parentCustomId` to model\
    \ hierarchies (e.g. a \"City\" attribute whose values are nested under a \"Country\" attribute's values).\n\nAttribute\
    \ values are attached to other entities — `Payments`, `Contacts`, `Operations`, `Transactions` and `AccountingEntries`\
    \ — by sending the attribute's `customId` together with the chosen `value`/`valueCustomId` in that entity's `attributes`\
    \ field.\n\n**Typical flow:**\n\n1. **Create the attribute** with `POST /attributes/{companyId}`, defining its `type`\
    \ and, for `list` attributes, its `values`:\n\n```json\nPOST /attributes/{companyId}\n{\n  \"customId\": \"cost-center\"\
    ,\n  \"source\": \"erp\",\n  \"name\": \"Cost Center\",\n  \"type\": \"list\",\n  \"values\": [\n    { \"customId\": \"\
    marketing\", \"name\": \"Marketing\" },\n    { \"customId\": \"sales\", \"name\": \"Sales\" }\n  ]\n}\n```\n\n2. **Tag\
    \ other entities with the attribute.** When creating or updating a payment, contact, operation, transaction or accounting\
    \ entry, reference the attribute in its `attributes` field:\n\n```json\n{\n  \"customId\": \"marketing\",\n  \"value\"\
    : \"Marketing\"\n}\n```\n\n3. **Maintain the value list** with `POST /attributes/{companyId}/{customId}/values/bulk` to\
    \ add values without touching the rest of the attribute, or update the attribute directly to replace its full value list."
  humanURL: https://api.embat.io/docs
  baseURL: https://api.embat.io
  tags:
  - Attributes
  properties:
  - type: OpenAPI
    url: openapi/embat-attributes-api-openapi.yml
  - type: Documentation
    url: https://api.embat.io/docs
  - type: APIReference
    url: https://api.embat.io/docs
- aid: embat:embat-authentication-api
  name: Embat Authentication API
  description: "`Authentication` provides the credentials Embat issues to access the rest of the public API. Every other endpoint\
    \ requires a JWT `idToken` in the `Authorization: Bearer <idToken>` header; requests with no token, or with an invalid\
    \ or expired one, are rejected with `401`.\n\nAn `email`/`password` pair identifies a service user with access to a group\
    \ of companies in Embat. Keep these credentials secret: never commit them to a repository, embed them in client-side code,\
    \ or expose them in publicly accessible logs.\n\n**Typical flow:**\n\n1. Exchange your `email`/`password` for a bearer\
    \ token:\n\n```json\nPOST /authentication/token\n{\n  \"email\": \"erp-integration@acme-corp.com\",\n  \"password\": \"\
    your-service-password\"\n}\n```\n\nwhich returns:\n\n```json\n{ \"idToken\": \"eyJhbGciOiJSUzI1NiIsImtpZCI6IjE5YzY4In0...\"\
    \ }\n```\n\n2. Send that token as `Authorization: Bearer <idToken>` on every subsequent request.\n3. The token expires\
    \ **60 minutes** after issuance. Call `/authentication/token` again with the same credentials to get a new one; there\
    \ is no separate refresh endpoint.\n4. Accounts with multi-factor authentication enabled cannot authenticate through this\
    \ endpoint.\n5. If `email` or `password` is missing or malformed, the validation error response never echoes back the\
    \ submitted values, so credentials are never reflected in error output.\n\nAll requests must be made over **HTTPS**."
  humanURL: https://api.embat.io/docs
  baseURL: https://api.embat.io
  tags:
  - Authentication
  properties:
  - type: OpenAPI
    url: openapi/embat-authentication-api-openapi.yml
  - type: Documentation
    url: https://api.embat.io/docs
  - type: APIReference
    url: https://api.embat.io/docs
- aid: embat:embat-balances-api
  name: Embat Balances API
  description: '`Balance` represents the end-of-day balance of a bank product (account) for a given calendar day. Embat records
    one balance per product per day, expressed both in the product''s own currency (`balance`) and, when available, in the
    company accounting currency (`accountingBalance`, converted using the exchange rate as of that day).


    Each balance is linked to a `Product` (a bank account, credit line, card...) held at one of the company''s connected `Banks`.
    Balances whose linked product no longer exists in Embat are not returned.


    **Typical flow:** use `GET /balances/{companyId}` to read the daily balance history of a company''s bank products, filtering
    by `productId` and by date range, or `GET /balances/{companyId}/{id}` to retrieve a single balance you already know the
    `id` of — for example after obtaining it from a previous list call.'
  humanURL: https://api.embat.io/docs
  baseURL: https://api.embat.io
  tags:
  - Balances
  properties:
  - type: OpenAPI
    url: openapi/embat-balances-api-openapi.yml
  - type: Documentation
    url: https://api.embat.io/docs
  - type: APIReference
    url: https://api.embat.io/docs
- aid: embat:embat-banks-api
  name: Embat Banks API
  description: '`Bank` represents a banking relationship connected to your company in Embat — for example, an aggregated connection
    to a specific banking entity. Each bank relationship groups the `bankProducts` (checking accounts, credit lines, cards...)
    held at that entity, together with the oldest successful aggregation timestamp among them.


    `GET /banks/{companyId}` only returns relationships that have at least one product, and each relationship''s `bankProducts`
    only lists its currently active products. Use `GET /banks/{companyId}/{id}` to retrieve a single relationship by its Embat
    `id` regardless of whether it currently has active products.


    To read balances and transactions for a specific account, use the `id` of an entry in `bankProducts` with the `Products`
    and `Transactions` endpoints.'
  humanURL: https://api.embat.io/docs
  baseURL: https://api.embat.io
  tags:
  - Banks
  properties:
  - type: OpenAPI
    url: openapi/embat-banks-api-openapi.yml
  - type: Documentation
    url: https://api.embat.io/docs
  - type: APIReference
    url: https://api.embat.io/docs
- aid: embat:embat-categories-api
  name: Embat Categories API
  description: "`Category` represents a treasury or cashflow classification in Embat, used to group transactions, forecasts\
    \ and operations for reporting (e.g. \"Providers\", \"Payroll\", \"Subscriptions\"). Categories are created and managed\
    \ in the Embat application; this API only lists and retrieves them. `parentId` is the Embat ID of the parent category,\
    \ letting you build a category tree such as:\n\n- Payments\n    - Providers\n        - Europe\n        - Latam\n    -\
    \ Payroll\n\n- Collections\n    - Subscriptions\n\nA category has no `parentId` when it is a top-level category.\n\nCategories\
    \ are referenced by `categoryId` on `Transactions`, `Forecasts` and `Operations` to classify each movement. In the Embat\
    \ application you can also map an ERP ledger account to a category, so operations posted against that account are categorized\
    \ automatically.\n\n**Typical flow:** look up the categories configured for a company with `GET /categories/{companyId}`\
    \ (or a single one with `GET /categories/{companyId}/{id}`) and use their `id` as the `categoryId` when creating or reading\
    \ transactions, forecasts or operations through the corresponding endpoints."
  humanURL: https://api.embat.io/docs
  baseURL: https://api.embat.io
  tags:
  - Categories
  properties:
  - type: OpenAPI
    url: openapi/embat-categories-api-openapi.yml
  - type: Documentation
    url: https://api.embat.io/docs
  - type: APIReference
    url: https://api.embat.io/docs
- aid: embat:embat-companies-api
  name: Embat Companies API
  description: 'A `Company` represents a legal entity configured in your Embat workspace. Its `id` is the `companyId` used
    throughout this API: almost every other endpoint is scoped by `companyId` and requires it as a path parameter.


    `Company` is the parent entity of the API: it has no dependency on any other entity, while every other entity (Payments,
    Operations, Transactions, Contacts, Accounting Accounts, etc.) belongs to one. A company also has `Users` with access
    to it, retrievable with `GET /companies/{companyId}/users`.


    **Typical flow:**


    1. **Resolve the `companyId`.** Call `GET /companies` to list the companies your credentials have access to and pick the
    `id` of the one you want to work with.

    2. **Use it everywhere.** Pass that `id` as `companyId` in the path of any other endpoint in this API.

    3. **Optionally inspect the company.** `GET /companies/{companyId}` returns its legal name, administrative contact, tags
    and configuration (e.g. accounting currency).'
  humanURL: https://api.embat.io/docs
  baseURL: https://api.embat.io
  tags:
  - Companies
  properties:
  - type: OpenAPI
    url: openapi/embat-companies-api-openapi.yml
  - type: Documentation
    url: https://api.embat.io/docs
  - type: APIReference
    url: https://api.embat.io/docs
- aid: embat:embat-contacts-api
  name: Embat Contacts API
  description: "`Contact` represents a client or supplier your company transacts with. `customId` is the unique identifier\
    \ of a contact: set your own value to use as your ERP contact ID, or let Embat auto-generate one.\n\nA contact is referenced\
    \ from other entities to identify who is involved in a transaction: `Operations` (invoices/bills) are billed to or from\
    \ a contact, `Payments` can record a collection or payment made to a contact, and `AccountingEntries` can be linked to\
    \ a contact for reconciliation. A contact also carries the bank account details (`accounts`, `paymentsAccounts`) Embat\
    \ uses to execute payments to it.\n\n**Typical flow:** contacts are usually kept in sync from your ERP, since they are\
    \ the master data referenced when creating operations and payments.\n\n1. **Create or update a contact from your ERP.**\
    \ Whenever a client or supplier is created or edited in your ERP, upsert it in Embat with its identification and, if relevant,\
    \ bank account details:\n\n```json\nPOST /contacts/{companyId}\n{\n  \"customId\": \"erp-contact-001\",\n  \"legalName\"\
    : \"Acme Supplies S.L.\",\n  \"taxId\": \"B12345678\",\n  \"type\": \"supplier\",\n  \"paymentsAccounts\": [\n    { \"\
    currency\": \"EUR\", \"default\": true, \"details\": { \"iban\": \"ES9121000418450200051332\" } }\n  ]\n}\n```\n\n2. **Reference\
    \ the contact by `customId`.** Use the same `customId` in `Operations` and `Payments` to link them to this contact.\n\
    3. **Keep it up to date.** Sending `POST /contacts/{companyId}` again with the same `customId` updates the existing contact\
    \ instead of creating a duplicate; use `PATCH /contacts/{companyId}/{customId}` (or the bulk variant) to update specific\
    \ fields only."
  humanURL: https://api.embat.io/docs
  baseURL: https://api.embat.io
  tags:
  - Contacts
  properties:
  - type: OpenAPI
    url: openapi/embat-contacts-api-openapi.yml
  - type: Documentation
    url: https://api.embat.io/docs
  - type: APIReference
    url: https://api.embat.io/docs
- aid: embat:embat-debtscheduleconfigs-api
  name: Embat DebtScheduleConfigs API
  description: '<div style="background-color:#fff3cd; color:#856404; padding: 10px; border-left: 6px solid #ffeeba;">

    <strong>⚠️ Warning:</strong> This API section is in BETA. It might undergo significant changes and may not be stable.

    </div>


    <code>Debt Schedule Config</code> represents the amortization schedule configured for a debt product: payment frequency,
    interest rate, outstanding and granted balances, and the full calendar of scheduled payments broken down into principal,
    interest and tax components.


    A debt schedule config is linked to the `Bank` relationship the debt is held with (`bankId`) and to two `Products`: the
    `debtProductId` being amortized and the product used to pay each installment (`settlementAccountId`, returned as `settlementProductId`).


    **Typical flow:** debt schedule configurations are read-only from this API — they are set up in Embat and exposed here
    for consumption.


    1. **List configurations** with `GET /debtscheduleconfigs/{companyId}`, optionally filtering by `startUpdatedAt`/`endUpdatedAt`
    to read only what changed since your last poll.

    2. **Retrieve a single configuration** with `GET /debtscheduleconfigs/{companyId}/{id}` to get its full payment calendar
    (`debtSchedulePaymentsCalendar`).'
  humanURL: https://api.embat.io/docs
  baseURL: https://api.embat.io
  tags:
  - DebtScheduleConfigs
  properties:
  - type: OpenAPI
    url: openapi/embat-debtscheduleconfigs-api-openapi.yml
  - type: Documentation
    url: https://api.embat.io/docs
  - type: APIReference
    url: https://api.embat.io/docs
- aid: embat:embat-files-api
  name: Embat Files API
  description: '`File` represents a banking file exchanged between Embat and a bank: either a file **received** from a bank
    (a reception, e.g. an account statement or a confirmation file) or a file **submitted** to a bank (an emission, e.g. a
    payment order file). Files are identified by an Embat-generated `id` and, when the bank could be identified, carry the
    related `Bank`.


    Files list endpoints are not scoped by `companyId`: they return the files across every company accessible to the authenticated
    user. `companyId` is only used when creating a file emission.


    **Typical flow:**


    1. **Discover new receptions.** Poll `GET /files/receptions` periodically; each entry reports whether it has already been
    `downloaded`. Use `nextPageToken` to page through results.

    2. **Download a reception''s content.** Once you have identified a file of interest, fetch its raw content with `GET /files/receptions/{fileId}`.

    3. **Submit a file to a bank.** To send a file to a bank on behalf of a company (e.g. a payment order), call `POST /files/{companyId}/{bankId}`
    with the file content and its format.

    4. **Track emissions.** List the files you have submitted, and any submitted on your behalf, with `GET /files/emissions`.'
  humanURL: https://api.embat.io/docs
  baseURL: https://api.embat.io
  tags:
  - Files
  properties:
  - type: OpenAPI
    url: openapi/embat-files-api-openapi.yml
  - type: Documentation
    url: https://api.embat.io/docs
  - type: APIReference
    url: https://api.embat.io/docs
- aid: embat:embat-forecasts-api
  name: Embat Forecasts API
  description: "`Forecast` represents a treasury cash flow projection generated by Embat for a given date, classified under\
    \ a `Category` and grouped into a `Scenario` (e.g. a base case or a stress scenario). Each scenario has its own currency\
    \ and periodicity — `daily`, `weekly`, `monthly` or `yearly` — that determines how forecasted periods are spaced.\n\n\
    Forecasts are generated in Embat; this API does not support creating or deleting them. Use it to read forecasted cash\
    \ flows and, optionally, to mark them as synchronized with your own systems.\n\n**Typical flow:**\n\n1. **Read forecasts.**\
    \ Pull the forecasted amounts for a company with `GET /forecasts/{companyId}`, optionally filtered by `scenarioId`, a\
    \ date range, or synchronization status (`sync`).\n2. **Confirm them as synchronized.** Once you have processed a forecast\
    \ on your side, mark it as synchronized with `PATCH /forecasts/{companyId}/{id}` (or the bulk variant `PATCH /forecasts/{companyId}`):\n\
    \n```json\nPATCH /forecasts/{companyId}/{id}\n{\n  \"sync\": true\n}\n```"
  humanURL: https://api.embat.io/docs
  baseURL: https://api.embat.io
  tags:
  - Forecasts
  properties:
  - type: OpenAPI
    url: openapi/embat-forecasts-api-openapi.yml
  - type: Documentation
    url: https://api.embat.io/docs
  - type: APIReference
    url: https://api.embat.io/docs
- aid: embat:embat-foreignexchangerates-api
  name: Embat ForeignExchangeRates API
  description: '`ForeignExchangeRate` records the daily exchange rates Embat uses to convert amounts between currencies for
    accounting purposes. Each record captures the rates observed on a given `date` for a set of currencies against a `baseCurrency`
    (EUR as stored).


    These are the same rates Embat applies internally when it computes exchange rates and accounting amounts on entities such
    as `Payment`, `Balance` and `Transaction`. Foreign exchange rates are read-only reference data: this API does not support
    creating, updating or deleting them.


    **Typical flow:** look up the rate for a given day to reproduce or audit a currency conversion made elsewhere in Embat.


    1. List the rates for a date range, optionally expressed against a currency other than EUR:


    ```

    GET /foreignexchangerates?baseCurrency=USD&startDate=2024-01-01&endDate=2024-01-31

    ```


    2. Or retrieve a single record you already know the `id` of, always expressed against EUR:


    ```

    GET /foreignexchangerates/{id}

    ```'
  humanURL: https://api.embat.io/docs
  baseURL: https://api.embat.io
  tags:
  - ForeignExchangeRates
  properties:
  - type: OpenAPI
    url: openapi/embat-foreignexchangerates-api-openapi.yml
  - type: Documentation
    url: https://api.embat.io/docs
  - type: APIReference
    url: https://api.embat.io/docs
- aid: embat:embat-logs-api
  name: Embat Logs API
  description: "`Logs` let your integration report execution events, warnings or errors observed while interacting with the\
    \ Embat API, so Embat's support team can diagnose integration issues.\n\nLogs are write-only: there is no endpoint to\
    \ list or retrieve the logs you send. Use `code` to classify the event by severity and, where available, by the entity\
    \ it relates to (for example `PAYMENTS_ERROR` for an issue involving `Payments`, or `AUTHORIZATION_WARNING` for an authentication\
    \ issue). Use the generic `INFO`, `WARNING` or `ERROR` codes for events not tied to one of those entities.\n\n**Typical\
    \ flow:** report a log whenever your integration completes, skips or fails a step of its synchronization with Embat, for\
    \ example after `POST /payments/{companyId}` returns an error:\n\n```json\nPOST /logs/{companyId}\n{\n  \"erp\": \"netsuite\"\
    ,\n  \"erpVersion\": \"2024.1\",\n  \"connectorVersion\": \"1.4.2\",\n  \"level\": \"ERROR\",\n  \"code\": \"PAYMENTS_ERROR\"\
    ,\n  \"message\": \"Failed to post payment: missing accounting account\"\n}\n```\n\nLog delivery is best-effort: both\
    \ endpoints return `204` as soon as the request is accepted, and any failure while recording a log afterwards is not reported\
    \ back to the caller. To send several logs at once, use `POST /logs/{companyId}/bulk`."
  humanURL: https://api.embat.io/docs
  baseURL: https://api.embat.io
  tags:
  - Logs
  properties:
  - type: OpenAPI
    url: openapi/embat-logs-api-openapi.yml
  - type: Documentation
    url: https://api.embat.io/docs
  - type: APIReference
    url: https://api.embat.io/docs
- aid: embat:embat-operations-api
  name: Embat Operations API
  description: "`Operation` represents an accounting operation with a pending amount to settle — typically an invoice or bill\
    \ due from or to a `Contact` (client or supplier). An invoice with several due dates is modeled as several operations,\
    \ one per due date. `customId` is the unique identifier of an operation: set your own value to use as your ERP operation\
    \ ID, or let Embat auto-generate one.\n\nOperations are the counterpart of `Payment`s: each payment created against an\
    \ operation reduces its `pendingAmount`, and once the full amount is settled the operation's `status` automatically becomes\
    \ `paid`. Operations can also be grouped into an invoice group or remittance (see `operationsCustomIds`), reference a\
    \ `Contact`, be classified with a `Category`, and carry custom `attributes`.\n\n**Typical flow:**\n\n1. **Notify Embat\
    \ of invoices/bills issued in your ERP.** Create the operation with its due date and amount:\n\n```json\nPOST /operations/{companyId}\n\
    {\n  \"customId\": \"invoice-2024-001\",\n  \"issuanceDate\": \"2024-01-01T00:00:00Z\",\n  \"dueDate\": \"2024-01-31T00:00:00Z\"\
    ,\n  \"currency\": \"EUR\",\n  \"concept\": \"Consulting services January\",\n  \"amount\": 1250.50\n}\n```\n\n2. **Track\
    \ settlement.** As payments are recorded against the operation (see `Payments`), its `pendingAmount` decreases and `status`\
    \ moves from `pending`/`overdue` to `paid`. Once an operation already has a payment recorded against it in Embat, most\
    \ of its fields can no longer be updated — see the create/update endpoint descriptions for the exact rules.\n3. **Keep\
    \ dates and status in sync.** Use `PATCH /operations/{companyId}/{customId}` (or the bulk variant) to correct `dueDate`/`paymentDate`,\
    \ update `status`, or attach `attributes` — or resend the full operation with `POST`, since sending a `customId` that\
    \ already exists updates the operation instead of duplicating it.\n4. **Group operations into a remittance (invoice group).**\
    \ Create the individual operations as usual. When your ERP later groups and pays them together, send one more operation\
    \ representing the remittance — `documentType: invoiceGroup`, the grouped total as `amount`, and the grouped operations'\
    \ IDs in `operationsCustomIds`:\n\n```json\nPOST /operations/{companyId}\n{\n  \"customId\": \"remittance-2024-07\",\n\
    \  \"documentType\": \"invoiceGroup\",\n  \"amount\": 3750.0,\n  \"issuanceDate\": \"2024-07-01T00:00:00Z\",\n  \"dueDate\"\
    : \"2024-07-31T00:00:00Z\",\n  \"paymentDate\": \"2024-07-31T00:00:00Z\",\n  \"operationsCustomIds\": [\"invoice-2024-001\"\
    , \"invoice-2024-002\", \"invoice-2024-003\"]\n}\n```\n\nEmbat marks every grouped operation as `paid` with `pendingAmount:\
    \ 0` and links it to the remittance. From then on, the grouped operations' lifecycle is managed through the remittance:\
    \ updating them directly has no effect, and resending the remittance without some of them releases those operations back\
    \ to `pending` with their full pending amount. Use `DELETE /operations/{companyId}/{customId}` to cancel an operation\
    \ that no longer applies."
  humanURL: https://api.embat.io/docs
  baseURL: https://api.embat.io
  tags:
  - Operations
  properties:
  - type: OpenAPI
    url: openapi/embat-operations-api-openapi.yml
  - type: Documentation
    url: https://api.embat.io/docs
  - type: APIReference
    url: https://api.embat.io/docs
- aid: embat:embat-paymentorders-api
  name: Embat PaymentOrders API
  description: '<div style="background-color:#fff3cd; color:#856404; padding: 10px; border-left: 6px solid #ffeeba;">

    <strong>⚠️ Warning:</strong> This API section is in BETA. It might undergo significant changes and may not be stable.

    </div>


    A <code>PaymentOrder</code> represents a payment executed through Embat, such as a wire transfer or SEPA payment sent
    to a bank on behalf of a company. It can reference a `documentId` identifying the invoice or operation it settles, a <code>Product</code>
    used to fund it, and the <code>Bank</code> it was executed through.


    **Typical flow:** poll `GET /paymentorders/{companyId}` to track the payment orders created in Embat and their execution
    `status` (`IN_PROGRESS`, `COMPLETED`, `REJECTED`, `ON_HOLD`). Once a payment order is executed, download its signed receipt
    with `GET /paymentorders/{id}/receipt`.'
  humanURL: https://api.embat.io/docs
  baseURL: https://api.embat.io
  tags:
  - PaymentOrders
  properties:
  - type: OpenAPI
    url: openapi/embat-paymentorders-api-openapi.yml
  - type: Documentation
    url: https://api.embat.io/docs
  - type: APIReference
    url: https://api.embat.io/docs
- aid: embat:embat-payments-api
  name: Embat Payments API
  description: "`Payment` represents money moving between a bank transaction and the operations (invoices, bills) or accounting\
    \ entries it settles. `customId` is the unique identifier of a payment: set your own value to use as your ERP payment\
    \ ID, or let Embat auto-generate one.\n\nA payment links the bank world and the accounting world in Embat: it can represent\
    \ the relationship between a `Transaction` (the bank movement) and one or more `Operations` (the invoices/bills being\
    \ paid), a cash movement posted directly to an accounting account, or a movement involving a `Contact` (client or supplier).\
    \ Payments can also reference a `Product` to resolve the accounting code used for classification, and a `Category` for\
    \ reporting.\n\n**Typical flow:** payments synchronize accounting in both directions between your ERP and Embat.\n\n1.\
    \ **Notify Embat of payments posted in your ERP.** When a payment is recorded in your ERP, create it in Embat with the\
    \ operations it settles — each settled amount reduces the pending amount of the corresponding operation (invoice/bill)\
    \ in Embat:\n\n```json\nPOST /payments/{companyId}\n{\n  \"customId\": \"erp-payment-001\",\n  \"date\": \"2024-01-15T00:00:00Z\"\
    ,\n  \"amount\": 1250.50,\n  \"currency\": \"EUR\",\n  \"operations\": [\n    { \"customId\": \"invoice-2024-001\", \"\
    amount\": 1250.50 }\n  ]\n}\n```\n\n2. **Read payments created from Embat.** Periodically pull the payments generated\
    \ in Embat that are pending on your side, using `GET /payments

# --- truncated at 32 KB (43 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/embat/refs/heads/main/apis.yml