{
 "openapi": "3.1.0",
 "info": {
  "title": "ERP Localization static data API",
  "version": "1.0.0",
  "description": "Read-only static JSON regenerated at each site build. No key. Data CC BY-NC 4.0; commercial licence: https://erplocalization.com/data-licence/ (pwn@mail.grokbot.com). Not tax or legal advice.",
  "license": {
   "name": "CC BY-NC 4.0",
   "url": "https://creativecommons.org/licenses/by-nc/4.0/"
  },
  "contact": {
   "email": "pwn@mail.grokbot.com",
   "url": "https://erplocalization.com/data-licence/"
  }
 },
 "servers": [
  {
   "url": "https://erplocalization.com/api"
  }
 ],
 "paths": {
  "/v1/index.json": {
   "get": {
    "summary": "List endpoints",
    "operationId": "index",
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "required": [
          "meta",
          "data"
         ],
         "properties": {
          "meta": {
           "$ref": "#/components/schemas/Meta"
          },
          "data": {
           "type": "array",
           "items": {
            "$ref": "#/components/schemas/Endpoint"
           }
          }
         }
        }
       }
      }
     }
    }
   }
  },
  "/v1/countries.json": {
   "get": {
    "summary": "List countries",
    "operationId": "listCountries",
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "required": [
          "meta",
          "data"
         ],
         "properties": {
          "meta": {
           "$ref": "#/components/schemas/Meta"
          },
          "data": {
           "type": "array",
           "items": {
            "$ref": "#/components/schemas/Country"
           }
          }
         }
        }
       }
      }
     }
    }
   }
  },
  "/v1/countries/{code}.json": {
   "get": {
    "summary": "Country detail",
    "operationId": "getCountry",
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "required": [
          "meta",
          "data"
         ],
         "properties": {
          "meta": {
           "$ref": "#/components/schemas/Meta"
          },
          "data": {
           "$ref": "#/components/schemas/CountryDetail"
          }
         }
        }
       }
      }
     },
     "404": {
      "description": "Unknown id"
     }
    },
    "parameters": [
     {
      "name": "code",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string",
       "enum": [
        "ad",
        "ae",
        "al",
        "ar",
        "at",
        "au",
        "ba",
        "be",
        "bg",
        "br",
        "by",
        "ca",
        "ch",
        "cn",
        "cy",
        "cz",
        "de",
        "dk",
        "ee",
        "es",
        "fi",
        "fr",
        "gb",
        "ge",
        "gr",
        "hr",
        "hu",
        "ie",
        "il",
        "in",
        "is",
        "it",
        "jp",
        "li",
        "lt",
        "lu",
        "lv",
        "mc",
        "md",
        "me",
        "mk",
        "mt",
        "mx",
        "my",
        "nl",
        "no",
        "nz",
        "pl",
        "pt",
        "ro",
        "rs",
        "sa",
        "se",
        "sg",
        "si",
        "sk",
        "tr",
        "ua",
        "us",
        "xk",
        "za"
       ]
      },
      "example": "fr"
     }
    ]
   }
  },
  "/v1/erps.json": {
   "get": {
    "summary": "List ERPs",
    "operationId": "listErps",
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "required": [
          "meta",
          "data"
         ],
         "properties": {
          "meta": {
           "$ref": "#/components/schemas/Meta"
          },
          "data": {
           "type": "array",
           "items": {
            "$ref": "#/components/schemas/ERP"
           }
          }
         }
        }
       }
      }
     }
    }
   }
  },
  "/v1/erps/{id}.json": {
   "get": {
    "summary": "ERP detail",
    "operationId": "getErp",
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "required": [
          "meta",
          "data"
         ],
         "properties": {
          "meta": {
           "$ref": "#/components/schemas/Meta"
          },
          "data": {
           "$ref": "#/components/schemas/ERPDetail"
          }
         }
        }
       }
      }
     },
     "404": {
      "description": "Unknown id"
     }
    },
    "parameters": [
     {
      "name": "id",
      "in": "path",
      "required": true,
      "schema": {
       "type": "string",
       "enum": [
        "business-central",
        "ifs-cloud",
        "lensing-everest",
        "light",
        "netsuite",
        "odoo",
        "sage-intacct",
        "sap-business-one",
        "sap-s-4hana",
        "unit4-erpx",
        "workday-financials"
       ]
      },
      "example": "netsuite"
     }
    ]
   }
  },
  "/v1/facts.json": {
   "get": {
    "summary": "List facts",
    "operationId": "listFacts",
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "required": [
          "meta",
          "data"
         ],
         "properties": {
          "meta": {
           "$ref": "#/components/schemas/Meta"
          },
          "data": {
           "type": "array",
           "items": {
            "$ref": "#/components/schemas/Fact"
           }
          }
         }
        }
       }
      }
     }
    }
   }
  },
  "/v1/local-erps.json": {
   "get": {
    "summary": "List local ERPs",
    "operationId": "listLocalErps",
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "required": [
          "meta",
          "data"
         ],
         "properties": {
          "meta": {
           "$ref": "#/components/schemas/Meta"
          },
          "data": {
           "type": "array",
           "items": {
            "$ref": "#/components/schemas/LocalERP"
           }
          }
         }
        }
       }
      }
     }
    }
   }
  },
  "/v1/partner-flags.json": {
   "get": {
    "summary": "List partner flags",
    "operationId": "listPartnerFlags",
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "required": [
          "meta",
          "data"
         ],
         "properties": {
          "meta": {
           "$ref": "#/components/schemas/Meta"
          },
          "data": {
           "type": "array",
           "items": {
            "$ref": "#/components/schemas/PartnerFlag"
           }
          }
         }
        }
       }
      }
     }
    }
   }
  },
  "/v1/partners.json": {
   "get": {
    "summary": "List partners",
    "operationId": "listPartners",
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "required": [
          "meta",
          "data"
         ],
         "properties": {
          "meta": {
           "$ref": "#/components/schemas/Meta"
          },
          "data": {
           "type": "array",
           "items": {
            "$ref": "#/components/schemas/Partner"
           }
          }
         }
        }
       }
      }
     }
    }
   }
  },
  "/v1/news.json": {
   "get": {
    "summary": "List news",
    "operationId": "listNews",
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "required": [
          "meta",
          "data"
         ],
         "properties": {
          "meta": {
           "$ref": "#/components/schemas/Meta"
          },
          "data": {
           "type": "array",
           "items": {
            "$ref": "#/components/schemas/NewsItem"
           }
          }
         }
        }
       }
      }
     }
    }
   }
  },
  "/v1/sponsors.json": {
   "get": {
    "summary": "List sponsors (paid, separate)",
    "operationId": "listSponsors",
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "required": [
          "meta",
          "data"
         ],
         "properties": {
          "meta": {
           "$ref": "#/components/schemas/Meta"
          },
          "data": {
           "type": "array",
           "items": {
            "$ref": "#/components/schemas/Sponsor"
           }
          }
         }
        }
       }
      }
     }
    }
   }
  },
  "/v1/filters/e-invoicing-mandatory.json": {
   "get": {
    "summary": "Countries with a B2B or B2G e-invoicing mandate (in force or enacted)",
    "operationId": "filter_e_invoicing_mandatory",
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "required": [
          "meta",
          "data"
         ],
         "properties": {
          "meta": {
           "$ref": "#/components/schemas/Meta"
          },
          "data": {
           "type": "array",
           "items": {
            "$ref": "#/components/schemas/FilterItem"
           }
          }
         }
        }
       }
      }
     }
    }
   }
  },
  "/v1/filters/e-invoicing-mandatory-b2b.json": {
   "get": {
    "summary": "Countries with a B2B e-invoicing mandate (in force or enacted)",
    "operationId": "filter_e_invoicing_mandatory_b2b",
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "required": [
          "meta",
          "data"
         ],
         "properties": {
          "meta": {
           "$ref": "#/components/schemas/Meta"
          },
          "data": {
           "type": "array",
           "items": {
            "$ref": "#/components/schemas/FilterItem"
           }
          }
         }
        }
       }
      }
     }
    }
   }
  },
  "/v1/filters/e-invoicing-b2b-in-force.json": {
   "get": {
    "summary": "Countries where a B2B mandate already applies",
    "operationId": "filter_e_invoicing_b2b_in_force",
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "required": [
          "meta",
          "data"
         ],
         "properties": {
          "meta": {
           "$ref": "#/components/schemas/Meta"
          },
          "data": {
           "type": "array",
           "items": {
            "$ref": "#/components/schemas/FilterItem"
           }
          }
         }
        }
       }
      }
     }
    }
   }
  },
  "/v1/filters/e-invoicing-mandatory-b2g.json": {
   "get": {
    "summary": "Countries with a B2G e-invoicing mandate",
    "operationId": "filter_e_invoicing_mandatory_b2g",
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "required": [
          "meta",
          "data"
         ],
         "properties": {
          "meta": {
           "$ref": "#/components/schemas/Meta"
          },
          "data": {
           "type": "array",
           "items": {
            "$ref": "#/components/schemas/FilterItem"
           }
          }
         }
        }
       }
      }
     }
    }
   }
  },
  "/v1/filters/real-time-reporting.json": {
   "get": {
    "summary": "Countries with clearance or real-time invoice reporting in force",
    "operationId": "filter_real_time_reporting",
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "required": [
          "meta",
          "data"
         ],
         "properties": {
          "meta": {
           "$ref": "#/components/schemas/Meta"
          },
          "data": {
           "type": "array",
           "items": {
            "$ref": "#/components/schemas/FilterItem"
           }
          }
         }
        }
       }
      }
     }
    }
   }
  },
  "/v1/filters/saft-required.json": {
   "get": {
    "summary": "Countries requiring a SAF-T file",
    "operationId": "filter_saft_required",
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "required": [
          "meta",
          "data"
         ],
         "properties": {
          "meta": {
           "$ref": "#/components/schemas/Meta"
          },
          "data": {
           "type": "array",
           "items": {
            "$ref": "#/components/schemas/FilterItem"
           }
          }
         }
        }
       }
      }
     }
    }
   }
  },
  "/v1/filters/toggles-unknown.json": {
   "get": {
    "summary": "Countries with at least one toggle still unknown (null)",
    "operationId": "filter_toggles_unknown",
    "responses": {
     "200": {
      "description": "OK",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "required": [
          "meta",
          "data"
         ],
         "properties": {
          "meta": {
           "$ref": "#/components/schemas/Meta"
          },
          "data": {
           "type": "array",
           "items": {
            "$ref": "#/components/schemas/FilterItem"
           }
          }
         }
        }
       }
      }
     }
    }
   }
  }
 },
 "components": {
  "schemas": {
   "Meta": {
    "type": "object",
    "properties": {
     "version": {
      "type": "string"
     },
     "generated_at": {
      "type": "string",
      "format": "date-time"
     },
     "licence": {
      "type": "object",
      "properties": {
       "name": {
        "type": "string"
       },
       "url": {
        "type": "string"
       },
       "commercial_licence": {
        "type": "string"
       },
       "commercial_contact": {
        "type": "string"
       },
       "attribution": {
        "type": "string"
       }
      }
     },
     "count": {
      "type": "integer"
     },
     "notice": {
      "type": "string"
     },
     "docs": {
      "type": "string"
     },
     "openapi": {
      "type": "string"
     },
     "toggle_coverage": {
      "type": "object"
     }
    },
    "required": [
     "version",
     "generated_at",
     "licence",
     "count"
    ]
   },
   "Toggles": {
    "type": "object",
    "properties": {
     "e_invoicing_mandatory_b2b": {
      "type": [
       "boolean",
       "null"
      ],
      "description": "Domestic B2B e-invoicing mandate in force or enacted with a date; null = unknown"
     },
     "e_invoicing_b2b_in_force": {
      "type": [
       "boolean",
       "null"
      ],
      "description": "B2B mandate already applies (at least in part, e.g. obligation to receive) on 2026-10-16; null = unknown"
     },
     "e_invoicing_mandatory_b2g": {
      "type": [
       "boolean",
       "null"
      ],
      "description": "Mandatory e-invoicing to/for public bodies (in force or enacted); null = unknown"
     },
     "real_time_reporting": {
      "type": [
       "boolean",
       "null"
      ],
      "description": "Invoice-level clearance or real-time/continuous transaction reporting to the tax authority in force; null = unknown"
     },
     "saft_required": {
      "type": [
       "boolean",
       "null"
      ],
      "description": "A SAF-T file (national variant) must be submitted periodically or on request; null = unknown"
     },
     "audit_file_on_request": {
      "type": [
       "boolean",
       "null"
      ],
      "description": "A non-SAF-T standard tax-audit file (FEC, GoBD, FAF) must be produced on request; null = unknown"
     }
    }
   },
   "Country": {
    "type": "object",
    "properties": {
     "code": {
      "type": "string",
      "description": "ISO 3166-1 alpha-2, lower case"
     },
     "name": {
      "type": "string"
     },
     "region": {
      "type": "string"
     },
     "url": {
      "type": "string"
     },
     "api_url": {
      "type": "string"
     },
     "counts": {
      "type": "object",
      "properties": {
       "facts": {
        "type": "integer"
       },
       "facts_verified": {
        "type": "integer"
       },
       "erp_matrix_cells": {
        "type": "integer"
       },
       "local_erps": {
        "type": "integer"
       },
       "partners": {
        "type": "integer"
       },
       "partner_flags": {
        "type": "integer"
       }
      }
     },
     "toggles": {
      "$ref": "#/components/schemas/Toggles"
     },
     "vat_standard_rate": {
      "type": [
       "number",
       "null"
      ],
      "description": "Standard VAT/GST rate in percent; null if unknown"
     },
     "vat_reduced_rates": {
      "type": [
       "array",
       "null"
      ],
      "items": {
       "type": "number"
      },
      "description": "Reduced, super-reduced and parking rates in percent (zero rate excluded); null if unknown"
     },
     "vat_name": {
      "type": [
       "string",
       "null"
      ],
      "description": "Local name of the VAT/GST; null if unknown"
     },
     "vat_registration_threshold": {
      "type": [
       "string",
       "null"
      ],
      "description": "Registration threshold for residents / non-residents as text; null if unknown"
     },
     "vat_filing_frequency": {
      "type": [
       "string",
       "null"
      ],
      "description": "VAT return filing frequency as text; null if unknown"
     }
    },
    "required": [
     "code",
     "name",
     "region",
     "url",
     "counts",
     "toggles"
    ]
   },
   "CountryDetail": {
    "allOf": [
     {
      "$ref": "#/components/schemas/Country"
     },
     {
      "type": "object",
      "properties": {
       "facts": {
        "type": "array",
        "items": {
         "$ref": "#/components/schemas/Fact"
        }
       },
       "local_erps": {
        "type": "array",
        "items": {
         "$ref": "#/components/schemas/LocalERP"
        }
       },
       "partner_flags": {
        "type": "array",
        "items": {
         "$ref": "#/components/schemas/PartnerFlag"
        }
       },
       "partners": {
        "type": "array",
        "items": {
         "$ref": "#/components/schemas/Partner"
        }
       }
      }
     }
    ]
   },
   "ERP": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "vendor": {
      "type": [
       "string",
       "null"
      ]
     },
     "category": {
      "type": [
       "string",
       "null"
      ]
     },
     "profile": {
      "type": [
       "string",
       "null"
      ]
     },
     "website": {
      "type": [
       "string",
       "null"
      ]
     },
     "url": {
      "type": "string"
     },
     "api_url": {
      "type": "string"
     },
     "counts": {
      "type": "object",
      "properties": {
       "e_invoicing_countries": {
        "type": "integer"
       },
       "partner_flags": {
        "type": "integer"
       },
       "partners": {
        "type": "integer"
       }
      }
     }
    },
    "required": [
     "id",
     "name",
     "vendor"
    ]
   },
   "ERPDetail": {
    "allOf": [
     {
      "$ref": "#/components/schemas/ERP"
     },
     {
      "type": "object",
      "properties": {
       "e_invoicing_support": {
        "type": "array",
        "items": {
         "$ref": "#/components/schemas/Fact"
        }
       },
       "other_facts": {
        "type": "array",
        "items": {
         "$ref": "#/components/schemas/Fact"
        }
       },
       "partner_flags": {
        "type": "array",
        "items": {
         "$ref": "#/components/schemas/PartnerFlag"
        }
       },
       "providers": {
        "type": "array",
        "items": {
         "type": "object",
         "properties": {
          "provider": {
           "type": "string"
          },
          "connector_type": {
           "type": "string"
          },
          "built_by": {
           "type": "string"
          },
          "direction": {
           "type": "string"
          },
          "countries_in_scope": {
           "type": "array",
           "items": {
            "type": "string"
           }
          },
          "source_urls": {
           "type": "array",
           "items": {
            "type": "string"
           }
          },
          "verification": {
           "type": "string"
          },
          "last_checked": {
           "type": [
            "string",
            "null"
           ]
          }
         }
        }
       }
      }
     }
    ]
   },
   "Fact": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "country": {
      "type": "string"
     },
     "erp": {
      "type": [
       "string",
       "null"
      ],
      "description": "ERP id when the fact is ERP-specific"
     },
     "topic": {
      "type": "string",
      "enum": [
       "currency",
       "e_invoicing",
       "e_invoicing_erp_support",
       "erp_localization",
       "eu_vida",
       "fiscal_year",
       "language",
       "payroll",
       "periodic_reporting",
       "saft",
       "statutory_accounts",
       "tax_authority",
       "vat",
       "vat_reporting"
      ]
     },
     "label": {
      "type": "string"
     },
     "value": {
      "type": "string"
     },
     "status": {
      "type": "string",
      "enum": [
       "verified",
       "unverified"
      ]
     },
     "mandatory": {
      "type": [
       "boolean",
       "null"
      ],
      "description": "Set for e_invoicing facts (B2B or B2G mandate); null elsewhere or when unclear"
     },
     "effective_date": {
      "type": [
       "string",
       "null"
      ],
      "format": "date"
     },
     "source_url": {
      "type": [
       "string",
       "null"
      ]
     },
     "source_urls": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "verification": {
      "type": "string",
      "enum": [
       "official",
       "secondary",
       "unverified"
      ]
     },
     "last_checked": {
      "type": [
       "string",
       "null"
      ],
      "format": "date"
     },
     "details": {
      "type": "object"
     }
    },
    "required": [
     "id",
     "country",
     "topic",
     "value",
     "verification"
    ]
   },
   "LocalERP": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "country": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "segment": {
      "type": "string"
     },
     "description": {
      "type": "string"
     },
     "website": {
      "type": "string"
     },
     "source_url": {
      "type": [
       "string",
       "null"
      ]
     },
     "verification": {
      "type": "string"
     },
     "last_checked": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "id",
     "country",
     "name"
    ]
   },
   "PartnerFlag": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "country": {
      "type": "string"
     },
     "erp": {
      "type": "string"
     },
     "flag": {
      "type": "string"
     },
     "note": {
      "type": "string"
     },
     "source_url": {
      "type": [
       "string",
       "null"
      ]
     },
     "verification": {
      "type": "string"
     },
     "last_checked": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "id",
     "country",
     "erp",
     "flag"
    ]
   },
   "Partner": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "erp": {
      "type": "string"
     },
     "country": {
      "type": "string"
     },
     "partner_type": {
      "type": "string"
     },
     "summary": {
      "type": "string"
     },
     "source_urls": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "source_kind": {
      "type": "string"
     },
     "last_checked": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "id",
     "name",
     "erp",
     "country"
    ],
    "description": "Neutral listing; no pricing, no featured or sponsored flag."
   },
   "NewsItem": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "title": {
      "type": "string"
     },
     "url": {
      "type": "string"
     },
     "date": {
      "type": [
       "string",
       "null"
      ]
     },
     "first_seen": {
      "type": [
       "string",
       "null"
      ]
     },
     "erps": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "source": {
      "type": [
       "string",
       "null"
      ]
     }
    },
    "required": [
     "id",
     "title",
     "url"
    ]
   },
   "Sponsor": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string"
     },
     "name": {
      "type": [
       "string",
       "null"
      ]
     },
     "scope": {},
     "tagline": {
      "type": [
       "string",
       "null"
      ]
     },
     "description": {
      "type": [
       "string",
       "null"
      ]
     },
     "url": {
      "type": [
       "string",
       "null"
      ]
     },
     "start": {
      "type": [
       "string",
       "null"
      ]
     },
     "end": {
      "type": [
       "string",
       "null"
      ]
     },
     "sponsored": {
      "const": true
     }
    },
    "required": [
     "id",
     "sponsored"
    ],
    "description": "Paid placement. Never part of verified data."
   },
   "Endpoint": {
    "type": "object",
    "properties": {
     "path": {
      "type": "string"
     },
     "description": {
      "type": "string"
     },
     "count": {
      "type": [
       "integer",
       "null"
      ]
     }
    }
   },
   "FilterItem": {
    "type": "object",
    "properties": {
     "code": {
      "type": "string"
     },
     "name": {
      "type": "string"
     },
     "region": {
      "type": "string"
     },
     "toggles": {
      "$ref": "#/components/schemas/Toggles"
     },
     "api_url": {
      "type": "string"
     }
    }
   }
  }
 }
}