{"openapi":"3.1.0","info":{"title":"EU Late Payment Interest API","version":"0.1.0","description":"EU Late Payment Interest applies the EU minimum rules of Directive 2011/7/EU to an overdue business invoice. statutory_rate gives the half-year rate: the ECB main refinancing operations rate in force on 1 January or 1 July plus 8 percentage points (H2 2026: 2.40% + 8 = 10.40%). list_rate_history lists every half-year since H2 2023 with the ECB decision behind it. compute_late_interest adds simple...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://eu-late-interest.connectorbay.com/mcp.\n\nDisclaimer: General information only, not legal, tax, accounting or payment advice. EU Late Payment Interest is an independent tool: it is not affiliated with, endorsed by or operated by any government body, central bank, standards body or scheme operator. Rates, thresholds and rules change; check the cited official source and confirm with a qualified professional before you rely on a result.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/eu-late-interest/docs"},"termsOfService":"https://connectorbay.com/eu-late-interest/terms"},"servers":[{"url":"https://eu-late-interest.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/eu-late-interest/docs"},"security":[{},{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/statutory_rate":{"post":{"operationId":"statutory_rate","summary":"EU-minimum statutory late-payment rate for a half-year: the ECB main refinancing rate in force on 1 January or 1 July pl","description":"EU-minimum statutory late-payment rate for a half-year: the ECB main refinancing rate in force on 1 January or 1 July plus 8 percentage points (Directive 2011/7/EU). Use for \"What is the EU minimum statutory late-payment interest rate for the second half of 2026?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"half_year":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Half-year as YYYY-H1 or YYYY-H2, for example 2026-H2","title":"Half Year"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"ISO date YYYY-MM-DD whose half-year is used instead of half_year; default today (UTC) when neither is given","title":"On Date"}},"title":"statutory_rateArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_rate_history":{"post":{"operationId":"list_rate_history","summary":"Half-year EU-minimum rates since H2 2023 with the ECB decision behind each, and the ECB rate changes in the table. Use f","description":"Half-year EU-minimum rates since H2 2023 with the ECB decision behind each, and the ECB rate changes in the table. Use for \"List the EU statutory late-payment rate for each half-year since 2023\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"from_year":{"default":2023,"description":"First year to list, 2023 to the current year; default 2023","maximum":2100,"minimum":2023,"title":"From Year","type":"integer"},"on_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"ISO date YYYY-MM-DD used as today for the last half-year listed; default today (UTC)","title":"On Date"}},"title":"list_rate_historyArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/compute_late_interest":{"post":{"operationId":"compute_late_interest","summary":"Simple late-payment interest on a principal from the day after the due date to a payment or claim date, half-year by hal","description":"Simple late-payment interest on a principal from the day after the due date to a payment or claim date, half-year by half-year at the EU-minimum rate, actual/365. Use for \"A customer owes EUR 10,000 due on 15 May 2026: what interest has built up to 29 September 2026 on the EU minimum basis?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"principal":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"}],"description":"Amount in EUR as a plain decimal string such as 10000.00 (digits and one '.'; no symbol or thousands separator)","title":"Principal"},"due_date":{"description":"ISO date YYYY-MM-DD, for example 2026-05-15","title":"Due Date","type":"string"},"paid_or_claim_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Date paid or the date to calculate to, ISO YYYY-MM-DD; default today (UTC)","title":"Paid Or Claim Date"}},"required":["principal","due_date"],"title":"compute_late_interestArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/fixed_recovery_fee":{"post":{"operationId":"fixed_recovery_fee","summary":"The EUR 40 minimum fixed compensation for recovery costs under Article 6 of Directive 2011/7/EU and the limits of what t","description":"The EUR 40 minimum fixed compensation for recovery costs under Article 6 of Directive 2011/7/EU and the limits of what the EU minimum says. Use for \"What is the fixed compensation for a late B2B payment in the EU?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"fixed_recovery_feeArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/payment_due_date":{"post":{"operationId":"payment_due_date","summary":"Due date from a contract date or term, or the 30-calendar-day default from invoice receipt, goods receipt or acceptance,","description":"Due date from a contract date or term, or the 30-calendar-day default from invoice receipt, goods receipt or acceptance, with 60-day (business) and 30-day (public authority) term flags. Use for \"When does an invoice received on 3 March and goods received on 10 March with no agreed date become late?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"invoice_received_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Date the debtor received the invoice or equivalent request for payment, ISO YYYY-MM-DD","title":"Invoice Received Date"},"goods_received_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Date the debtor received the goods or services, ISO YYYY-MM-DD","title":"Goods Received Date"},"acceptance_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Date of acceptance or verification where the law or contract provides for it, ISO YYYY-MM-DD","title":"Acceptance Date"},"agreed_payment_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Payment date fixed in the contract, ISO YYYY-MM-DD","title":"Agreed Payment Date"},"agreed_term_days":{"anyOf":[{"maximum":1000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Payment term in calendar days fixed in the contract (needs term_starts_on)","title":"Agreed Term Days"},"term_starts_on":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Date from which the contract counts the term, ISO YYYY-MM-DD","title":"Term Starts On"},"debtor_type":{"default":"business","description":"business (default) or public_authority","title":"Debtor Type","type":"string"}},"title":"payment_due_dateArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/term_check":{"post":{"operationId":"term_check","summary":"Test an agreed payment term in calendar days against the 60-day business and 30-day public-authority limits of Directive","description":"Test an agreed payment term in calendar days against the 60-day business and 30-day public-authority limits of Directive 2011/7/EU. Use for \"Is a 90-day payment term in a B2B contract allowed under the EU Late Payment Directive?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"term_days":{"description":"Agreed payment term in calendar days","maximum":1000,"minimum":0,"title":"Term Days","type":"integer"},"debtor_type":{"default":"business","description":"business (default) or public_authority","title":"Debtor Type","type":"string"}},"required":["term_days"],"title":"term_checkArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/revision_status":{"post":{"operationId":"revision_status","summary":"Where the proposed Late Payment Regulation (COM(2023) 533) stands, and that Directive 2011/7/EU remains the rule in forc","description":"Where the proposed Late Payment Regulation (COM(2023) 533) stands, and that Directive 2011/7/EU remains the rule in force. Use for \"Has the EU adopted the new Late Payment Regulation yet?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"revision_statusArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/draft_reminder":{"post":{"operationId":"draft_reminder","summary":"Draft payment reminder citing the EU-minimum interest and the EUR 40 fixed sum, for the owner to review; it is never sen","description":"Draft payment reminder citing the EU-minimum interest and the EUR 40 fixed sum, for the owner to review; it is never sent. Use for \"Draft a payment reminder for invoice 2026-118 that cites the EU-minimum interest and fixed sum\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"supplier_name":{"description":"Name of the business sending the reminder","maxLength":120,"minLength":1,"title":"Supplier Name","type":"string"},"customer_name":{"description":"Name of the business that owes the money","maxLength":120,"minLength":1,"title":"Customer Name","type":"string"},"invoice_reference":{"description":"Invoice number or reference","maxLength":60,"minLength":1,"title":"Invoice Reference","type":"string"},"principal":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"}],"description":"Amount in EUR as a plain decimal string such as 10000.00 (digits and one '.'; no symbol or thousands separator)","title":"Principal"},"due_date":{"description":"ISO date YYYY-MM-DD, for example 2026-05-15","title":"Due Date","type":"string"},"letter_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Date shown on the reminder and used to calculate to, ISO YYYY-MM-DD; default today (UTC)","title":"Letter Date"},"days_to_pay":{"default":7,"description":"Days from the letter date that the draft allows for payment, 1 to 60","maximum":60,"minimum":1,"title":"Days To Pay","type":"integer"}},"required":["supplier_name","customer_name","invoice_reference","principal","due_date"],"title":"draft_reminderArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}