Skip to content

Tax Reports

The Tax Report object

object

Attributes

idstring
Other attributes
entity_idstring
date_fromstring
date_tostring
amountnumber
currency_codestring
payment_datestring
referencestringnullable
notestringnullable
deleted_atstring<date-time>nullable
created_atstring<date-time>
updated_atstring<date-time>

Record a tax authority payment

POST/tax-reports/payments

Record a positive payment made to a tax authority for an immutable tax period. An omitted or null payment type defaults to bank_transfer. Tax payments do not change invoice, expense, or accounts-payable balances.

Header parameters

entity_idstringoptional

Entity ID on which the request is made. Auto-selected when only one entity exists, required when multiple entities exist.

Body parameters

date_fromstring<date>required

Tax period start date in YYYY-MM-DD format.

date_tostring<date>required

Tax period end date in YYYY-MM-DD format.

amountnumberrequired

Amount paid to the tax authority.

Other parameters
import SpaceInvoices from '@spaceinvoices/js-sdk/sdk';

const sdk = new SpaceInvoices('YOUR_API_KEY');

const response = await sdk.taxReports.create({
  date_from: "2026-01-01",
  date_to: "2026-03-31",
  amount: 1200,
  currency_code: "EUR",
  payment_date: "2026-04-20",
  type: "bank_transfer",
  reference: "VAT-Q1-2026",
  note: "Paid Q1 VAT estimate.",
  metadata: {
    filing_id: "VAT-Q1-2026"
  }
}, {
  entity_id: "YOUR_ENTITY_ID"
});

console.log(response);
Example:

Returns

idstring
Other parameters
entity_idstring
date_fromstring
date_tostring
amountnumber
currency_codestring
payment_datestring
referencestringnullable
notestringnullable
deleted_atstring<date-time>nullable
created_atstring<date-time>
updated_atstring<date-time>
json
{
  "id": "id",
  "entity_id": "entity-id",
  "date_from": "date-from",
  "date_to": "date-to",
  "amount": 0,
  "currency_code": "currency-code",
  "payment_date": "payment-date",
  "type": "bank_transfer",
  "reference": "reference",
  "note": "note",
  "liability_snapshot": {
    "date_from": "date-from",
    "date_to": "date-to",
    "output_tax": 0,
    "input_tax": 0,
    "net_tax_due": 0,
    "paid": 0,
    "remaining": 0,
    "currency_code": "currency-code"
  },
  "metadata": {
    "external_id": "123",
    "source": "shopify"
  },
  "deleted_at": "2025-01-15T10:30:00.000Z",
  "created_at": "2025-01-15T10:30:00.000Z",
  "updated_at": "2025-01-15T10:30:00.000Z"
}

Generate combined KIR/KPR VAT ledgers

POST/tax-reports/kir


Generate one combined FURS filing containing KIR (Evidenca obračunanega DDV) and KPR
(Evidenca odbitka DDV).

The ZIP contains exactly one DDV_KIR_KPR.xml file. KIR includes applicable finalized issued invoices,
outgoing advance invoices, credit notes, and self-assessed VAT from applicable received invoices. KPR includes finalized,
non-voided received invoices from the expense register. Both ledger containers are present even
when a period has no applicable records, as required for a joint eDavki submission.

Period Selection:
- Use month for monthly exports (e.g., month=1 for January)
- Use quarter for quarterly exports (e.g., quarter=1 for Q1)
- Cannot use both month and quarter

Transaction Type Mapping:
- Domestic sales → KIR P7 + P14/P15/P16, or P8 for supplier-side domestic reverse charge
- Intra-EU B2B sales → KIR P10
- Intra-EU B2C lines using issuer-country VAT → KIR P7 + P14/P15/P16; lines carrying the server-owned destination-VAT country marker → KIR P27 with foreign VAT excluded from P14/P15/P16
- Goods exported from Slovenia → KIR P7
- Third-country services / supplies whose place is outside Slovenia → KIR P27
- Domestic purchases → KPR P8, or P9 for domestic reverse charge
- Intra-EU goods/services → KPR P10/P11 plus self-assessed KIR VAT
- Deductible input VAT → KPR P18/P19/P20; non-deductible VAT → KPR P17

Credit Notes:
- Included with negative amounts as per FURS specification
- Same field mapping as invoices, but amounts are negated

Important:
- KIR/KPR is available only to entities whose country code is SI
- Draft and deleted documents and voided credit notes are excluded. A voided invoice is excluded together with the credit note created when it was voided if both fall in the same period. If that credit note falls in another period, the invoice is reported in its own period and the credit note in its own. A voided invoice without such a credit note is excluded
- Domestic outgoing advances are included as separate KIR rows and their allocated net/VAT amounts are subtracted from the linked final invoice. For intra-EU B2B supplies, goods prepayments are omitted and not deducted; only the classified service component is reported in P10 and deducted from the final invoice. A fully prepaid reportable service still emits the final reconciliation row with P10 empty/zero
- Third-country outgoing documents use the persisted item tax treatment: bases with an explicit 0% tax row map to P7, while no-tax net amounts (including unrated summary bases) map to P27. Mixed documents are split between both fields. Product/service classification and customer geography are not substitutes for tax treatment; the legacy export transaction type remains an explicit goods-export marker and maps to P7
- Domestic and intra-EU B2C outgoing documents fail closed when any net base is 0%, no-tax, unrated, or does not reconcile to the explicit tax summaries; an exemption semantic is required before those amounts can be placed safely
- The selected month or quarter includes the complete final calendar day
- Customer identity fields P5/P6/P6DS are omitted for end consumers
- KIR P2/P4 are the issued-document date. An invoice issued before 2026-11-01 is selected by its issue date. An invoice issued from 2026-11-01 is selected by its VAT tax point: the end of the service period (date_service_to, else date_service, else date), or the payment date when one payment received before the service covers the whole total. A part prepayment keeps the default tax point and is returned as a warning by the VAT return preview. An invoice issued after the KIR cut-off of its tax-point period is selected by its issue date, and the preview warns when it charges VAT. Credit notes and advance invoices are selected by their issue date
- KPR uses the receipt date (falling back to supplier-document date) for period selection and P2/P4, while P5 remains the supplier-document date. Dedicated reporting state and post-export locking are deferred
- An included AP document must have its own supplier-document date for KPR P5; receipt date is never substituted into P5
- Reportable intra-EU AP purchases require both the supplier VAT number and an EU supplier country code so KPR P7/P7DS can be emitted together
- P6/P6DS (KIR) and P7/P7DS (KPR) are reported as a pair. The country is the address country; an EU VAT ID prefix that differs from it takes precedence, and P6DS/P7DS is the ID without its prefix. A third-country VAT ID is reported whole in P6DS/P7DS with the country field empty. Greek EL prefixes are normalized to FURS country code GR
- Without an EU prefix on the VAT ID, P6 is emitted only for a customer with a tax number and an explicit VAT-identified semantic (or an intra-EU B2B transaction); an EU customer with neither is reported without P6 and P6DS
- An intra-EU B2B document that charges Slovenian VAT is rejected with HTTP 422 instead of being reported in P10 without the VAT
- The canonical slovenia.vat_profile controls standard, special-VAT-identified, and non-VAT-subject behavior. An ambiguous legacy is_tax_subject=false state must be configured before export
- Special VAT-identified persons report only applicable EU B2B service supplies in outgoing KIR; cross-border self-assessments use KPR P17 because input VAT cannot be deducted. Non-VAT subjects cannot generate this filing
- ODBDELEZ comes only from the explicit calculates_deduction_ratio profile setting and is not inferred from line-level deductibility
- Domestic suppliers require explicit VAT-subject status; domestic small-taxpayer purchases are excluded. Every included expense requires the supplier's own document number for KPR P3
- An explicit 0% tax row with a non-zero base is an exempt purchase and maps to KPR P14 for a standard taxpayer. No tax rows are not equivalent to 0%: non-VAT-supplier purchases are excluded, while an otherwise reportable expense without tax metadata fails validation
- Cross-border supplier-charged foreign VAT is excluded. Mixing it with Slovenian-reportable reverse-charge VAT is rejected as ambiguous
- Customs imports and fixed-asset KPR columns P12/P13/P15/P16 are not currently supported; the exporter does not infer either treatment from supplier geography, item descriptions, or financial categories
- Ambiguous domestic outgoing 0% supplies, unknown transaction types, unsupported tax rates, missing EUR conversions, and amounts outside the FURS XSD bounds are rejected with HTTP 422 instead of producing an unsafe filing
- A 422 caused by document data lists the affected documents in cause.documents (number, type, reason), up to 100, with the full count in cause.total_documents
- Entity must have a valid 8-digit Slovenian tax number (SI prefix is automatically removed)

Header parameters

entity_idstringoptional

Entity ID on which the request is made. Auto-selected when only one entity exists, required when multiple entities exist.

Query parameters

yearstringrequired

Year for the combined KIR/KPR export (e.g., 2025)

monthstringoptional

Month for monthly export (1-12). Cannot be used with quarter.

quarterstringoptional

Quarter for quarterly export (1-4). Cannot be used with month.

import SpaceInvoices from '@spaceinvoices/js-sdk/sdk';

const sdk = new SpaceInvoices('YOUR_API_KEY');

const blob = await sdk.taxReports.generateKirExport({
  year: "2025"
}, {
  entity_id: "YOUR_ENTITY_ID"
});

const arrayBuffer = await blob.arrayBuffer();
const { writeFile } = await import('node:fs/promises');
await writeFile('download.bin', Buffer.from(arrayBuffer));
console.log('Saved download.bin');

Review yearly Slovenia normirani filing

POST/tax-reports/si/yearly/normirani/review

Build a review draft for the yearly Slovenia DDD-DDD filing for the supported resident normirani s.p. path.

Header parameters

entity_idstringoptional

Entity ID on which the request is made. Auto-selected when only one entity exists, required when multiple entities exist.

Body parameters

yearintegerrequired

Tax year for the yearly Slovenia eDavki filing.

import SpaceInvoices from '@spaceinvoices/js-sdk/sdk';

const sdk = new SpaceInvoices('YOUR_API_KEY');

const response = await sdk.taxReports.reviewSloveniaYearlyNormiraniReport({
  year: 2025
}, {
  entity_id: "YOUR_ENTITY_ID"
});

console.log(response);

Returns

entity_idstring
json
{
  "entity_id": "entity-id",
  "year": 2025,
  "filing_kind": "regular_annual",
  "profile": {
    "business_form": "sp",
    "income_tax_regime": "normirani",
    "vat_profile": "standard",
    "calculates_deduction_ratio": true,
    "tax_residency": "resident",
    "yearly_reporting": {
      "activity_codes": [
        "62.010",
        "47.910"
      ],
      "registration_number": "1234567",
      "accounting_type": "records",
      "normiranec_insurance_basis": "full_time_self_employed",
      "default_withholding_tax_amount": 0,
      "default_foreign_tax_credit_amount": 0
    },
    "accounting_exports": {
      "preferred_format": "vod_xml",
      "konto_mappings": {
        "receivables": "receivables",
        "payables": "payables",
        "advances_received": "advances-received",
        "advances_paid": "advances-paid",
        "sales_vat_22": "sales-vat-22",
        "sales_vat_95": "sales-vat-95",
        "sales_vat_5": "sales-vat-5",
        "purchase_vat_recoverable_22": "purchase-vat-recoverable-22",
        "purchase_vat_recoverable_95": "purchase-vat-recoverable-95",
        "purchase_vat_recoverable_5": "purchase-vat-recoverable-5",
        "sales_revenue_22": "sales-revenue-22",
        "sales_revenue_95": "sales-revenue-95",
        "sales_revenue_5": "sales-revenue-5",
        "sales_revenue_exempt": "sales-revenue-exempt",
        "sales_revenue_eu_goods": "sales-revenue-eu-goods",
        "sales_revenue_eu_services": "sales-revenue-eu-services",
        "sales_revenue_reverse_charge": "sales-revenue-reverse-charge",
        "sales_revenue_third_country_goods": "sales-revenue-third-country-goods",
        "sales_revenue_third_country_services": "sales-revenue-third-country-services",
        "purchase_expense_22": "purchase-expense-22",
        "purchase_expense_95": "purchase-expense-95",
        "purchase_expense_5": "purchase-expense-5",
        "purchase_expense_exempt": "purchase-expense-exempt",
        "purchase_expense_eu_goods": "purchase-expense-eu-goods",
        "purchase_expense_eu_services": "purchase-expense-eu-services",
        "purchase_expense_reverse_charge": "purchase-expense-reverse-charge",
        "purchase_expense_third_country_goods": "purchase-expense-third-country-goods",
        "purchase_expense_third_country_services": "purchase-expense-third-country-services"
      }
    },
    "business_form_source": "stored",
    "inferred_business_form": "sp",
    "supported_exports": {
      "yearly_normirani": true,
      "vod_xml": true,
      "vasco_xml": true,
      "minimax_xml": true
    },
    "unsupported_reason": "unsupported-reason"
  },
  "auto_values": {
    "total_invoice_revenue": 0,
    "total_credit_note_reduction": 0,
    "computed_revenue": 0,
    "adjusted_revenue": 0,
    "normative_expense_rate": 0,
    "normative_expenses": 0,
    "tax_base": 0,
    "income_tax_rate": 0,
    "income_tax_amount": 0,
    "advance_tax_amount": 0,
    "monthly_installment_amount": 0,
    "quarterly_installment_amount": 0
  },
  "manual_values": {
    "withholding_tax_amount": 0,
    "foreign_tax_credit_amount": 0,
    "prior_advance_income_tax_amount": 0,
    "revenue_adjustment_decrease": 0,
    "revenue_adjustment_increase": 0
  },
  "derived_flags": {
    "has_foreign_customers": true,
    "has_foreign_tax_numbers": true,
    "has_non_eur_documents": true
  },
  "warnings": [
    {
      "code": "code",
      "message": "message",
      "severity": "info"
    }
  ],
  "issue_details": [
    {
      "code": "code",
      "title": "title",
      "summary": "summary",
      "explanation": "explanation",
      "action": "action",
      "severity": "info",
      "official_sources": [
        {
          "label": "label",
          "url": "https://example.com",
          "issuer": "FURS"
        }
      ],
      "affected_documents": [
        {
          "id": "id",
          "type": "invoice",
          "number": "number",
          "date": "date",
          "customer_name": "customer-name",
          "customer_country_code": "customer-country-code",
          "customer_tax_number": "customer-tax-number",
          "currency_code": "currency-code",
          "total": 0,
          "total_converted": 0,
          "reason": "reason",
          "document_path": "document-path"
        }
      ]
    }
  ],
  "rule_summary": {
    "normative_expense_rule": "normative-expense-rule",
    "income_tax_rule": "income-tax-rule",
    "advance_rule": "advance-rule"
  }
}

Export yearly Slovenia normirani XML

POST/tax-reports/si/yearly/normirani/export

Generate a DDD-DDD XML file for the supported resident normirani s.p. path after the yearly review values are confirmed.

Header parameters

entity_idstringoptional

Entity ID on which the request is made. Auto-selected when only one entity exists, required when multiple entities exist.

Body parameters

yearintegerrequired

Tax year for the yearly Slovenia eDavki filing.

manual_valuesobjectrequired
import SpaceInvoices from '@spaceinvoices/js-sdk/sdk';

const sdk = new SpaceInvoices('YOUR_API_KEY');

const blob = await sdk.taxReports.exportSloveniaYearlyNormiraniReport({
  year: 2025,
  manual_values: {
    withholding_tax_amount: 0,
    foreign_tax_credit_amount: 0,
    prior_advance_income_tax_amount: 0,
    revenue_adjustment_decrease: 0,
    revenue_adjustment_increase: 0
  }
}, {
  entity_id: "YOUR_ENTITY_ID"
});

const arrayBuffer = await blob.arrayBuffer();
const { writeFile } = await import('node:fs/promises');
await writeFile('download.bin', Buffer.from(arrayBuffer));
console.log('Saved download.bin');
Example:

Export Slovenia VOD XML ZIP

POST/tax-reports/si/accounting/vod/export

Generate a legacy-compatible Slovenian VOD ZIP export for issued documents. The first release contains only VOD_izdani.xml.

Header parameters

entity_idstringoptional

Entity ID on which the request is made. Auto-selected when only one entity exists, required when multiple entities exist.

Body parameters

date_fromstring<date>required

Inclusive document date in YYYY-MM-DD format.

date_tostring<date>required

Inclusive document date in YYYY-MM-DD format.

import SpaceInvoices from '@spaceinvoices/js-sdk/sdk';

const sdk = new SpaceInvoices('YOUR_API_KEY');

const blob = await sdk.taxReports.exportSloveniaVodXml({
  date_from: "2025-01-01",
  date_to: "2025-01-31"
}, {
  entity_id: "YOUR_ENTITY_ID"
});

const arrayBuffer = await blob.arrayBuffer();
const { writeFile } = await import('node:fs/promises');
await writeFile('download.bin', Buffer.from(arrayBuffer));
console.log('Saved download.bin');
Example:

Export Slovenia miniMAX accounting XML

POST/tax-reports/si/accounting/minimax/export

Download miniMAX XML for finalized, non-voided issued and received invoices, credit notes and advance invoices in an inclusive document-date range. Advances carry VAT records; linked final invoices reconcile previously reported VAT and settle the configured advance account. Bank/cash payments are booked separately. Source data must contain product/service classifications and reconcilable tax and EUR amounts. Invalid or unsupported accounting data rejects the entire export with an actionable 422 error. Re-importing the same date range may duplicate entries in miniMAX; import each document once.

Header parameters

entity_idstringoptional

Entity ID on which the request is made. Auto-selected when only one entity exists, required when multiple entities exist.

Body parameters

date_fromstring<date>required

Inclusive document date in YYYY-MM-DD format.

date_tostring<date>required

Inclusive document date in YYYY-MM-DD format.

import SpaceInvoices from '@spaceinvoices/js-sdk/sdk';

const sdk = new SpaceInvoices('YOUR_API_KEY');

const blob = await sdk.taxReports.exportSloveniaMinimaxXml({
  date_from: "2025-01-01",
  date_to: "2025-01-31"
}, {
  entity_id: "YOUR_ENTITY_ID"
});

const arrayBuffer = await blob.arrayBuffer();
const { writeFile } = await import('node:fs/promises');
await writeFile('download.bin', Buffer.from(arrayBuffer));
console.log('Saved download.bin');
Example:

Export Slovenia VASCO accounting XML

POST/tax-reports/si/accounting/vasco/export

Download a single windows-1250 VASCO KN 2.1 XML file (Prenos Verzija 2.1) for finalized, non-voided issued and received invoices, credit notes and advance invoices in an inclusive document-date range (the same selection as the miniMAX export). Amounts are in EUR. Advance invoices carry their VAT-book records on a zero-amount advance-account entry; linked final invoices settle the advance account. Payments are not exported. The 5% VAT rate, OSS destination-VAT documents and customs imports are not supported by VASCO KN 2.1 and reject the export. Source data must contain product/service classifications and reconcilable tax and EUR amounts. Invalid or unsupported accounting data rejects the entire export with an actionable 422 error, as does a range with no exportable entries (no finalized issued or received documents with postings). The first export of a partner without a Slovenian 8-digit tax number assigns it a permanent VASCO partner code (100000000 upwards) that later exports reuse. Re-importing the same date range duplicates entries in VASCO; import each document once.

Header parameters

entity_idstringoptional

Entity ID on which the request is made. Auto-selected when only one entity exists, required when multiple entities exist.

Body parameters

date_fromstring<date>required

Inclusive document date in YYYY-MM-DD format.

date_tostring<date>required

Inclusive document date in YYYY-MM-DD format.

import SpaceInvoices from '@spaceinvoices/js-sdk/sdk';

const sdk = new SpaceInvoices('YOUR_API_KEY');

const blob = await sdk.taxReports.exportSloveniaVascoXml({
  date_from: "2025-01-01",
  date_to: "2025-01-31"
}, {
  entity_id: "YOUR_ENTITY_ID"
});

const arrayBuffer = await blob.arrayBuffer();
const { writeFile } = await import('node:fs/promises');
await writeFile('download.bin', Buffer.from(arrayBuffer));
console.log('Saved download.bin');
Example:

Get tax liability estimate

GET/tax-reports/liability

Estimate tax payable for a selected document-date period from finalized outgoing document taxes, deductible incoming purchase tax, and matching-currency tax authority payments. Incoming purchases use the supplier document date, falling back to received date only when absent. Stored financial conversion provenance converts foreign tax; unprovable conversions are skipped with a warning. Applied advances preserve their issue-period tax and proportionally reduce the final invoice period; invalid allocation currency or gross over-allocation returns 422. Early-payment discount corrections are not inferred, and warnings identify affected invoices or adjustment history. This is an operational estimate and not a country-specific legal filing.

Header parameters

entity_idstringoptional

Entity ID on which the request is made. Auto-selected when only one entity exists, required when multiple entities exist.

Query parameters

date_fromstring<date>required

Report period start date in YYYY-MM-DD format.

date_tostring<date>required

Report period end date in YYYY-MM-DD format.

import SpaceInvoices from '@spaceinvoices/js-sdk/sdk';

const sdk = new SpaceInvoices('YOUR_API_KEY');

const response = await sdk.taxReports.getTaxLiabilityReport({
  date_from: "2026-01-01",
  date_to: "2026-03-31"
}, {
  entity_id: "YOUR_ENTITY_ID"
});

console.log(response);

Returns

date_fromstring
date_tostring
currency_codestring
remainingnumber
json
{
  "date_from": "date-from",
  "date_to": "date-to",
  "currency_code": "currency-code",
  "totals": {
    "output_tax": 0,
    "output_tax_adjustments": 0,
    "input_tax": 0,
    "input_tax_adjustments": 0,
    "reverse_charge_tax": 0,
    "non_deductible_input_tax": 0,
    "net_tax_due": 0,
    "paid": 0,
    "remaining": 0
  },
  "by_rate": [
    {
      "rate": 0,
      "output_tax": 0,
      "output_tax_adjustments": 0,
      "input_tax": 0,
      "input_tax_adjustments": 0,
      "reverse_charge_tax": 0,
      "non_deductible_input_tax": 0,
      "net_tax_due": 0
    }
  ],
  "payments": [
    {
      "id": "id",
      "entity_id": "entity-id",
      "date_from": "date-from",
      "date_to": "date-to",
      "amount": 0,
      "currency_code": "currency-code",
      "payment_date": "payment-date",
      "type": "bank_transfer",
      "reference": "reference",
      "note": "note",
      "liability_snapshot": {
        "date_from": "date-from",
        "date_to": "date-to",
        "output_tax": 0,
        "input_tax": 0,
        "net_tax_due": 0,
        "paid": 0,
        "remaining": 0,
        "currency_code": "currency-code"
      },
      "metadata": {
        "external_id": "123",
        "source": "shopify"
      },
      "deleted_at": "2025-01-15T10:30:00.000Z",
      "created_at": "2025-01-15T10:30:00.000Z",
      "updated_at": "2025-01-15T10:30:00.000Z"
    }
  ],
  "remaining": 0,
  "warnings": [
    {
      "code": "code",
      "message": "message",
      "document_id": "document-id",
      "document_type": "document-type"
    }
  ]
}

List tax authority payments

GET/tax-reports/payments

List tax payments recorded for tax periods within the selected date range.

Header parameters

entity_idstringoptional

Entity ID on which the request is made. Auto-selected when only one entity exists, required when multiple entities exist.

Query parameters

date_fromstring<date>required

Report period start date in YYYY-MM-DD format.

date_tostring<date>required

Report period end date in YYYY-MM-DD format.

import SpaceInvoices from '@spaceinvoices/js-sdk/sdk';

const sdk = new SpaceInvoices('YOUR_API_KEY');

const response = await sdk.taxReports.list({
  date_from: "2026-01-01",
  date_to: "2026-03-31",
  entity_id: "YOUR_ENTITY_ID"
});

console.log(response);

Returns

dataarray of objects
json
{
  "data": [
    {
      "id": "id",
      "entity_id": "entity-id",
      "date_from": "date-from",
      "date_to": "date-to",
      "amount": 0,
      "currency_code": "currency-code",
      "payment_date": "payment-date",
      "type": "bank_transfer",
      "reference": "reference",
      "note": "note",
      "liability_snapshot": {
        "date_from": "date-from",
        "date_to": "date-to",
        "output_tax": 0,
        "input_tax": 0,
        "net_tax_due": 0,
        "paid": 0,
        "remaining": 0,
        "currency_code": "currency-code"
      },
      "metadata": {
        "external_id": "123",
        "source": "shopify"
      },
      "deleted_at": "2025-01-15T10:30:00.000Z",
      "created_at": "2025-01-15T10:30:00.000Z",
      "updated_at": "2025-01-15T10:30:00.000Z"
    }
  ]
}

Get EU OSS sales tracking

GET/tax-reports/eu/oss

Review finalized intra-EU B2C invoices and credit notes by destination country for a selected and preceding calendar year. The response is an operational estimate, not an OSS eligibility or filing determination. The EUR 10,000 threshold comparison is available only for EUR entities when every included financial line is classified as a product and every required stored currency conversion is complete.

Header parameters

entity_idstringoptional

Entity ID on which the request is made. Auto-selected when only one entity exists, required when multiple entities exist.

Query parameters

yearintegeroptional

Calendar year to review together with its preceding year.

import SpaceInvoices from '@spaceinvoices/js-sdk/sdk';

const sdk = new SpaceInvoices('YOUR_API_KEY');

const response = await sdk.taxReports.getEuOssReport(undefined, {
  entity_id: "YOUR_ENTITY_ID"
});

console.log(response);

Returns

entity_idstring
eligibleboolean
issuer_country_codestringnullable
reporting_currency_codestringnullable
selected_yearinteger
auto_apply_destination_vatboolean
guidance_urlstring<uri>
vat_rates_verified_throughstring<date>
noticesarray of strings
json
{
  "entity_id": "ent_eu_1",
  "eligible": true,
  "eligibility_reason": "eligible",
  "issuer_country_code": "SI",
  "reporting_currency_code": "EUR",
  "selected_year": 2026,
  "auto_apply_destination_vat": false,
  "threshold": {
    "amount": 10000,
    "currency_code": "EUR",
    "comparison_available": true,
    "status": "below_threshold",
    "selected_year_net_sales": 4200,
    "preceding_year_net_sales": 1800
  },
  "periods": [
    {
      "year": 2025,
      "invoice_count": 1,
      "credit_note_count": 0,
      "net_sales": 1800,
      "vat_collected": 342,
      "gross_sales": 2142,
      "countries": [
        {
          "country_code": "DE",
          "country_name": "Germany",
          "invoice_count": 1,
          "credit_note_count": 0,
          "net_sales": 1800,
          "vat_collected": 342,
          "gross_sales": 2142,
          "standard_vat_rate": 19,
          "reduced_vat_rates": []
        }
      ]
    },
    {
      "year": 2026,
      "invoice_count": 2,
      "credit_note_count": 1,
      "net_sales": 4200,
      "vat_collected": 798,
      "gross_sales": 4998,
      "countries": [
        {
          "country_code": "DE",
          "country_name": "Germany",
          "invoice_count": 2,
          "credit_note_count": 1,
          "net_sales": 4200,
          "vat_collected": 798,
          "gross_sales": 4998,
          "standard_vat_rate": 19,
          "reduced_vat_rates": []
        }
      ]
    }
  ],
  "guidance_url": "https://vat-one-stop-shop.ec.europa.eu/one-stop-shop_en",
  "vat_rates_verified_through": "2027-03-31",
  "notices": [
    "scope_requires_review",
    "vat_rates_reference_only",
    "vat_rates_last_verified",
    "stored_conversion_data_only"
  ]
}

Get Slovenia yearly tax profile

GET/tax-reports/si/profile

Retrieve the normalized Slovenia-specific tax profile stored on the entity, including inferred business form and yearly-export support status.

Header parameters

entity_idstringoptional

Entity ID on which the request is made. Auto-selected when only one entity exists, required when multiple entities exist.

import SpaceInvoices from '@spaceinvoices/js-sdk/sdk';

const sdk = new SpaceInvoices('YOUR_API_KEY');

const response = await sdk.taxReports.getSloveniaTaxProfile({
  entity_id: "YOUR_ENTITY_ID"
});

console.log(response);

Returns

calculates_deduction_ratioboolean
unsupported_reasonstringnullable
json
{
  "business_form": "sp",
  "income_tax_regime": "normirani",
  "vat_profile": "standard",
  "calculates_deduction_ratio": true,
  "tax_residency": "resident",
  "yearly_reporting": {
    "activity_codes": [
      "62.010",
      "47.910"
    ],
    "registration_number": "1234567",
    "accounting_type": "records",
    "normiranec_insurance_basis": "full_time_self_employed",
    "default_withholding_tax_amount": 0,
    "default_foreign_tax_credit_amount": 0
  },
  "accounting_exports": {
    "preferred_format": "vod_xml",
    "konto_mappings": {
      "receivables": "receivables",
      "payables": "payables",
      "advances_received": "advances-received",
      "advances_paid": "advances-paid",
      "sales_vat_22": "sales-vat-22",
      "sales_vat_95": "sales-vat-95",
      "sales_vat_5": "sales-vat-5",
      "purchase_vat_recoverable_22": "purchase-vat-recoverable-22",
      "purchase_vat_recoverable_95": "purchase-vat-recoverable-95",
      "purchase_vat_recoverable_5": "purchase-vat-recoverable-5",
      "sales_revenue_22": "sales-revenue-22",
      "sales_revenue_95": "sales-revenue-95",
      "sales_revenue_5": "sales-revenue-5",
      "sales_revenue_exempt": "sales-revenue-exempt",
      "sales_revenue_eu_goods": "sales-revenue-eu-goods",
      "sales_revenue_eu_services": "sales-revenue-eu-services",
      "sales_revenue_reverse_charge": "sales-revenue-reverse-charge",
      "sales_revenue_third_country_goods": "sales-revenue-third-country-goods",
      "sales_revenue_third_country_services": "sales-revenue-third-country-services",
      "purchase_expense_22": "purchase-expense-22",
      "purchase_expense_95": "purchase-expense-95",
      "purchase_expense_5": "purchase-expense-5",
      "purchase_expense_exempt": "purchase-expense-exempt",
      "purchase_expense_eu_goods": "purchase-expense-eu-goods",
      "purchase_expense_eu_services": "purchase-expense-eu-services",
      "purchase_expense_reverse_charge": "purchase-expense-reverse-charge",
      "purchase_expense_third_country_goods": "purchase-expense-third-country-goods",
      "purchase_expense_third_country_services": "purchase-expense-third-country-services"
    }
  },
  "business_form_source": "stored",
  "inferred_business_form": "sp",
  "supported_exports": {
    "yearly_normirani": true,
    "vod_xml": true,
    "vasco_xml": true,
    "minimax_xml": true
  },
  "unsupported_reason": "unsupported-reason"
}

Export QuickBooks Online import files

GET/tax-reports/accounting/quickbooks/export

Download a ZIP of CSV files for QuickBooks Online import: invoices.csv (invoice import layout), credit-notes.csv (same layout, for manual entry because QuickBooks cannot import credit memos) and bills.csv (bill import layout, built from expenses). Includes finalized, non-voided invoices, credit notes and expenses whose document date falls in the inclusive range; expenses without a document date use their received date. Advance invoices are excluded because final invoices carry the full amount. Each line keeps the document currency and a tax-exclusive amount with its tax amount; the tax code column holds the rate (for example 22%, or 22% RC for reverse charge) for mapping to QuickBooks tax codes during import. Dates use DD/MM/YYYY, or MM/DD/YYYY for US entities. Bill lines use the line's financial category as the account, otherwise Uncategorized Expense. Files are split at 100 documents or 1,000 rows (for example invoices-01.csv, invoices-02.csv) to fit QuickBooks import limits; a set with no documents still contains a header-only file. QuickBooks-specific validation failures return 422 with a cause.code: quickbooks_export_too_many_documents (more than 10,000 documents in range), quickbooks_export_unsupported_expense_type (the range includes supplier credit notes or advance invoices), quickbooks_export_document_too_many_lines (a single document renders more than 1,000 rows and cannot be split without breaking its grouping on import), or quickbooks_export_missing_exchange_rate (a crypto-denominated document has neither converted amounts nor a stored exchange rate, so it cannot be converted to the entity currency). If the selected period contains an issued invoice with early-payment terms, or the entity has any early-payment discount-adjustment history, the export is unsupported and returns a message-only 422 with no cause.code.

Header parameters

entity_idstringoptional

Entity ID on which the request is made. Auto-selected when only one entity exists, required when multiple entities exist.

Query parameters

date_fromstring<date>required

Inclusive lower bound of the issued or supplier document date, in YYYY-MM-DD format.

date_tostring<date>required

Inclusive upper bound of the issued or supplier document date, in YYYY-MM-DD format. The range cannot exceed one year.

import SpaceInvoices from '@spaceinvoices/js-sdk/sdk';

const sdk = new SpaceInvoices('YOUR_API_KEY');

const blob = await sdk.taxReports.exportQuickbooksCsv({
  date_from: "2026-01-01",
  date_to: "2026-03-31"
}, {
  entity_id: "YOUR_ENTITY_ID"
});

const arrayBuffer = await blob.arrayBuffer();
const { writeFile } = await import('node:fs/promises');
await writeFile('download.bin', Buffer.from(arrayBuffer));
console.log('Saved download.bin');

Update a tax authority payment

PATCH/tax-reports/payments/{id}

Update amount, payment date, payment type, reference, note, or metadata. The tax period is immutable.

Header parameters

entity_idstringoptional

Entity ID on which the request is made. Auto-selected when only one entity exists, required when multiple entities exist.

Path parameters

idstringrequired

Tax payment identifier

Body parameters

import SpaceInvoices from '@spaceinvoices/js-sdk/sdk';

const sdk = new SpaceInvoices('YOUR_API_KEY');

const response = await sdk.taxReports.update("txpay_6595a27b5d35015c3ef0c3fd", {
  amount: 1250,
  reference: "VAT-Q1-2026-FINAL",
  note: "Updated after bank settlement."
}, {
  entity_id: "YOUR_ENTITY_ID"
});

console.log(response);
Example:

Returns

idstring
Other parameters
entity_idstring
date_fromstring
date_tostring
amountnumber
currency_codestring
payment_datestring
referencestringnullable
notestringnullable
deleted_atstring<date-time>nullable
created_atstring<date-time>
updated_atstring<date-time>
json
{
  "id": "id",
  "entity_id": "entity-id",
  "date_from": "date-from",
  "date_to": "date-to",
  "amount": 0,
  "currency_code": "currency-code",
  "payment_date": "payment-date",
  "type": "bank_transfer",
  "reference": "reference",
  "note": "note",
  "liability_snapshot": {
    "date_from": "date-from",
    "date_to": "date-to",
    "output_tax": 0,
    "input_tax": 0,
    "net_tax_due": 0,
    "paid": 0,
    "remaining": 0,
    "currency_code": "currency-code"
  },
  "metadata": {
    "external_id": "123",
    "source": "shopify"
  },
  "deleted_at": "2025-01-15T10:30:00.000Z",
  "created_at": "2025-01-15T10:30:00.000Z",
  "updated_at": "2025-01-15T10:30:00.000Z"
}

Update Slovenia yearly tax profile

PUT/tax-reports/si/profile

Update the Slovenia-specific tax profile stored on the entity. Unsupported profiles are stored for future use but remain blocked for yearly export.

Header parameters

entity_idstringoptional

Entity ID on which the request is made. Auto-selected when only one entity exists, required when multiple entities exist.

Body parameters

calculates_deduction_ratiobooleanoptionalnullable
import SpaceInvoices from '@spaceinvoices/js-sdk/sdk';

const sdk = new SpaceInvoices('YOUR_API_KEY');

const response = await sdk.taxReports.updateSloveniaTaxProfile({
  business_form: "sp",
  income_tax_regime: "normirani",
  vat_profile: "standard",
  calculates_deduction_ratio: false,
  tax_residency: "resident",
  yearly_reporting: {
    activity_codes: [
      "62.010",
      "47.910"
    ],
    registration_number: "1234567",
    accounting_type: "records",
    normiranec_insurance_basis: "full_time_self_employed",
    default_withholding_tax_amount: 0,
    default_foreign_tax_credit_amount: 0
  }
}, {
  entity_id: "YOUR_ENTITY_ID"
});

console.log(response);
Example:

Returns

calculates_deduction_ratioboolean
unsupported_reasonstringnullable
json
{
  "business_form": "sp",
  "income_tax_regime": "normirani",
  "vat_profile": "standard",
  "calculates_deduction_ratio": true,
  "tax_residency": "resident",
  "yearly_reporting": {
    "activity_codes": [
      "62.010",
      "47.910"
    ],
    "registration_number": "1234567",
    "accounting_type": "records",
    "normiranec_insurance_basis": "full_time_self_employed",
    "default_withholding_tax_amount": 0,
    "default_foreign_tax_credit_amount": 0
  },
  "accounting_exports": {
    "preferred_format": "vod_xml",
    "konto_mappings": {
      "receivables": "receivables",
      "payables": "payables",
      "advances_received": "advances-received",
      "advances_paid": "advances-paid",
      "sales_vat_22": "sales-vat-22",
      "sales_vat_95": "sales-vat-95",
      "sales_vat_5": "sales-vat-5",
      "purchase_vat_recoverable_22": "purchase-vat-recoverable-22",
      "purchase_vat_recoverable_95": "purchase-vat-recoverable-95",
      "purchase_vat_recoverable_5": "purchase-vat-recoverable-5",
      "sales_revenue_22": "sales-revenue-22",
      "sales_revenue_95": "sales-revenue-95",
      "sales_revenue_5": "sales-revenue-5",
      "sales_revenue_exempt": "sales-revenue-exempt",
      "sales_revenue_eu_goods": "sales-revenue-eu-goods",
      "sales_revenue_eu_services": "sales-revenue-eu-services",
      "sales_revenue_reverse_charge": "sales-revenue-reverse-charge",
      "sales_revenue_third_country_goods": "sales-revenue-third-country-goods",
      "sales_revenue_third_country_services": "sales-revenue-third-country-services",
      "purchase_expense_22": "purchase-expense-22",
      "purchase_expense_95": "purchase-expense-95",
      "purchase_expense_5": "purchase-expense-5",
      "purchase_expense_exempt": "purchase-expense-exempt",
      "purchase_expense_eu_goods": "purchase-expense-eu-goods",
      "purchase_expense_eu_services": "purchase-expense-eu-services",
      "purchase_expense_reverse_charge": "purchase-expense-reverse-charge",
      "purchase_expense_third_country_goods": "purchase-expense-third-country-goods",
      "purchase_expense_third_country_services": "purchase-expense-third-country-services"
    }
  },
  "business_form_source": "stored",
  "inferred_business_form": "sp",
  "supported_exports": {
    "yearly_normirani": true,
    "vod_xml": true,
    "vasco_xml": true,
    "minimax_xml": true
  },
  "unsupported_reason": "unsupported-reason"
}

Delete a tax authority payment

DELETE/tax-reports/payments/{id}

Soft delete a tax authority payment without changing document balances.

Header parameters

entity_idstringoptional

Entity ID on which the request is made. Auto-selected when only one entity exists, required when multiple entities exist.

Path parameters

idstringrequired

Tax payment identifier

import SpaceInvoices from '@spaceinvoices/js-sdk/sdk';

const sdk = new SpaceInvoices('YOUR_API_KEY');

await sdk.taxReports.delete("txpay_6595a27b5d35015c3ef0c3fd", {
  entity_id: "YOUR_ENTITY_ID"
});

console.log('Deleted successfully');