Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/declararfacil-com:declararfacil-com-invoices-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Declararfacil Com Invoices API
version: 1.0.0
description: 'Operations tagged Invoices across 2 of this provider''s published API definitions: declararfacil-com-agent-openapi.json, declararfacil-com-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://declararfacil.com
tags:
- name: Invoices
paths:
/api/invoices:
get:
summary: List stored invoices
security:
- linkToken: []
responses:
'200':
description: OK
'401':
description: 'invalid_token: unknown or replaced token; start a new connection with POST /api/agent/v1/connect'
'402':
description: 'subscription_required: no active subscription; the body carries subscribe_url, steps, next_step and tell_the_user'
parameters:
- name: year
in: query
schema:
type: integer
- name: quarter
in: query
schema:
type: integer
minimum: 1
maximum: 4
tags:
- Invoices
operationId: getApiInvoices
x-operation-id-source: derived
post:
summary: Create one invoice (same validation as the web form)
security:
- linkToken: []
responses:
'200':
description: OK
'401':
description: 'invalid_token: unknown or replaced token; start a new connection with POST /api/agent/v1/connect'
'402':
description: 'subscription_required: no active subscription; the body carries subscribe_url, steps, next_step and tell_the_user'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/InvoiceInput'
tags:
- Invoices
operationId: postApiInvoices
x-operation-id-source: derived
servers:
- url: https://declararfacil.com
/api/invoices/{id}:
get:
summary: One invoice
security:
- linkToken: []
responses:
'200':
description: OK
'401':
description: 'invalid_token: unknown or replaced token; start a new connection with POST /api/agent/v1/connect'
'402':
description: 'subscription_required: no active subscription; the body carries subscribe_url, steps, next_step and tell_the_user'
parameters:
- name: id
in: path
required: true
schema:
type: string
tags:
- Invoices
operationId: getApiInvoicesById
x-operation-id-source: derived
put:
summary: Update an invoice
security:
- linkToken: []
responses:
'200':
description: OK
'401':
description: 'invalid_token: unknown or replaced token; start a new connection with POST /api/agent/v1/connect'
'402':
description: 'subscription_required: no active subscription; the body carries subscribe_url, steps, next_step and tell_the_user'
parameters:
- name: id
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/InvoiceUpdateInput'
tags:
- Invoices
operationId: putApiInvoicesById
x-operation-id-source: derived
delete:
summary: Delete an invoice
security:
- linkToken: []
responses:
'200':
description: OK
'401':
description: 'invalid_token: unknown or replaced token; start a new connection with POST /api/agent/v1/connect'
'402':
description: 'subscription_required: no active subscription; the body carries subscribe_url, steps, next_step and tell_the_user'
parameters:
- name: id
in: path
required: true
schema:
type: string
tags:
- Invoices
operationId: deleteApiInvoicesById
x-operation-id-source: derived
servers:
- url: https://declararfacil.com
components:
schemas:
InvoiceUpdateInput:
type: object
required: []
properties:
tipo:
type: string
enum:
- EMITIDA
- RECIBIDA
description: EMITIDA = the user issued it (income). RECIBIDA = the user received it (expense).
numeroFactura:
type:
- string
- 'null'
fechaFactura:
type: string
description: YYYY-MM-DD
fechaOperacion:
type:
- string
- 'null'
description: YYYY-MM-DD when it differs from fechaFactura
nombreClienteProveedor:
type: string
description: The other party (client for EMITIDA, supplier for RECIBIDA)
nifClienteProveedor:
type:
- string
- 'null'
description: NIF/CIF/NIE or EU VAT number, as printed
direccionCliente:
type:
- string
- 'null'
paisProveedor:
type:
- string
- 'null'
description: ISO 3166-1 alpha-2, e.g. ES, DE, US
tipoOperacion:
type: string
enum:
- NACIONAL
- INTRACOMUNITARIA
- EXTRACOMUNITARIA
default: NACIONAL
operacionB2B:
type: boolean
default: true
esAdquisicionIntracomunitaria:
type: boolean
default: false
esServicioNoSujeto:
type: boolean
default: false
baseImponible:
type: number
description: Taxable base in EUR (sum of all bases if several rates; then tipoIVA is the main rate)
tipoIVA:
type: number
description: 'IVA rate in percent: 21, 10, 4 or 0'
cuotaIVA:
type: number
description: Printed invoice VAT amount in EUR; keep printed zero for reverse charge
tipoIVAAutorrepercutido:
type:
- number
- 'null'
minimum: 0
maximum: 100
description: Applicable Spanish self-assessment rate, separately confirmed from the printed invoice rate. Never infer from printed 0%.
fuenteTipoIVAAutorrepercutido:
type:
- string
- 'null'
description: Basis for the applicable rate, e.g. confirmed tax classification and AEAT rule. Missing basis requires review.
porcentajeDeduccionIVA:
type:
- number
- 'null'
minimum: 0
maximum: 100
description: Independently confirmed VAT deduction percentage based on business use, valid evidence and applicable deduction rules. 0 means no deduction; null means unresolved. Independent of income-tax esDeducible.
ivaAutorrepercutido:
type:
- number
- 'null'
readOnly: true
description: 'Server result: base * self-assessment rate / 100, rounded per invoice to EUR cents; never added to the printed invoice total'
tipoRetencion:
type:
- number
- 'null'
description: IRPF withholding rate in percent, if the invoice shows one (e.g. 15 or 7)
cuotaRetencion:
type:
- number
- 'null'
description: IRPF withholding amount in EUR
suplidos:
type:
- number
- 'null'
default: 0
tipoRecargoEquivalencia:
type:
- number
- 'null'
cuotaRecargoEquivalencia:
type:
- number
- 'null'
claveRegimenEspecial:
type:
- string
- 'null'
descripcionOperacion:
type:
- string
- 'null'
description: 'One line: what was sold or bought'
esFacturaRectificativa:
type: boolean
default: false
numeroFacturaRectificada:
type:
- string
- 'null'
totalFactura:
type: number
description: Total to pay in EUR (base + IVA - retención + suplidos + recargo)
categoria:
type:
- string
- 'null'
description: Expense category for RECIBIDA (e.g. SOFTWARE, ALQUILER, SUMINISTROS, MATERIAL, SERVICIOS_PROFESIONALES, TRANSPORTE, OTROS)
esDeducible:
type: boolean
default: true
notas:
type:
- string
- 'null'
confianzaOCR:
type:
- number
- 'null'
description: Your own confidence 0..1 that every amount is read correctly
source_file:
type:
- string
- 'null'
description: Local file name, for the user's report only (never stored as a document)
description: Partial update of an existing invoice. Omitted properties stay unchanged. Assessment fields update VAT without adding ledger entries.
InvoiceInput:
type: object
required:
- tipo
- fechaFactura
- nombreClienteProveedor
- baseImponible
- tipoIVA
- cuotaIVA
- totalFactura
properties:
tipo:
type: string
enum:
- EMITIDA
- RECIBIDA
description: EMITIDA = the user issued it (income). RECIBIDA = the user received it (expense).
numeroFactura:
type:
- string
- 'null'
fechaFactura:
type: string
description: YYYY-MM-DD
fechaOperacion:
type:
- string
- 'null'
description: YYYY-MM-DD when it differs from fechaFactura
nombreClienteProveedor:
type: string
description: The other party (client for EMITIDA, supplier for RECIBIDA)
nifClienteProveedor:
type:
- string
- 'null'
description: NIF/CIF/NIE or EU VAT number, as printed
direccionCliente:
type:
- string
- 'null'
paisProveedor:
type:
- string
- 'null'
description: ISO 3166-1 alpha-2, e.g. ES, DE, US
tipoOperacion:
type: string
enum:
- NACIONAL
- INTRACOMUNITARIA
- EXTRACOMUNITARIA
default: NACIONAL
operacionB2B:
type: boolean
default: true
esAdquisicionIntracomunitaria:
type: boolean
default: false
esServicioNoSujeto:
type: boolean
default: false
baseImponible:
type: number
description: Taxable base in EUR (sum of all bases if several rates; then tipoIVA is the main rate)
tipoIVA:
type: number
description: 'IVA rate in percent: 21, 10, 4 or 0'
cuotaIVA:
type: number
description: Printed invoice VAT amount in EUR; keep printed zero for reverse charge
tipoIVAAutorrepercutido:
type:
- number
- 'null'
minimum: 0
maximum: 100
description: Applicable Spanish self-assessment rate, separately confirmed from the printed invoice rate. Never infer from printed 0%.
fuenteTipoIVAAutorrepercutido:
type:
- string
- 'null'
description: Basis for the applicable rate, e.g. confirmed tax classification and AEAT rule. Missing basis requires review.
porcentajeDeduccionIVA:
type:
- number
- 'null'
minimum: 0
maximum: 100
description: Independently confirmed VAT deduction percentage based on business use, valid evidence and applicable deduction rules. 0 means no deduction; null means unresolved. Independent of income-tax esDeducible.
ivaAutorrepercutido:
type:
- number
- 'null'
readOnly: true
description: 'Server result: base * self-assessment rate / 100, rounded per invoice to EUR cents; never added to the printed invoice total'
tipoRetencion:
type:
- number
- 'null'
description: IRPF withholding rate in percent, if the invoice shows one (e.g. 15 or 7)
cuotaRetencion:
type:
- number
- 'null'
description: IRPF withholding amount in EUR
suplidos:
type:
- number
- 'null'
default: 0
tipoRecargoEquivalencia:
type:
- number
- 'null'
cuotaRecargoEquivalencia:
type:
- number
- 'null'
claveRegimenEspecial:
type:
- string
- 'null'
descripcionOperacion:
type:
- string
- 'null'
description: 'One line: what was sold or bought'
esFacturaRectificativa:
type: boolean
default: false
numeroFacturaRectificada:
type:
- string
- 'null'
totalFactura:
type: number
description: Total to pay in EUR (base + IVA - retención + suplidos + recargo)
categoria:
type:
- string
- 'null'
description: Expense category for RECIBIDA (e.g. SOFTWARE, ALQUILER, SUMINISTROS, MATERIAL, SERVICIOS_PROFESIONALES, TRANSPORTE, OTROS)
esDeducible:
type: boolean
default: true
notas:
type:
- string
- 'null'
confianzaOCR:
type:
- number
- 'null'
description: Your own confidence 0..1 that every amount is read correctly
source_file:
type:
- string
- 'null'
description: Local file name, for the user's report only (never stored as a document)
securitySchemes:
linkToken:
type: http
scheme: bearer
description: The df_ token handed out by the connect poll, or the last segment of the user's personal link (/agente/<token>).
x-refined-from:
- declararfacil-com-agent-openapi.json
- declararfacil-com-openapi.json