U
BaaS

Welcome to BaaS! 🎉

Let's set up your first organization and project.

CURRENT PLAN

Loading... -

-
Requests This Month
-
Loading...
Requests Today
-
Errors This Month
-
Avg Response
-
Active Projects
-
API Keys
-
Success Rate
-
Plan Limit
-

📈 Requests

🔑 API Keys

NameKey PrefixStatusRequestsLast UsedActions
Select a project

🛡️ IP Whitelist

Restrict API access to specific IPs. Empty = all IPs allowed.

IP AddressDescriptionAddedActions
Select a project

Enter your API key to test endpoints directly

API Overview

Base URL

https://baas.dapita.net

Authentication

All API requests require an API key sent in the X-API-Key header.

curl -H "X-API-Key: baas_sk_your_key_here" https://baas.dapita.net/geo/ip/8.8.8.8

Request Headers

HeaderRequiredDescription
X-API-KeyYesYour API key
Content-TypeFor POSTapplication/json

Error Responses

CodeDescription
400Bad Request
401Unauthorized
403Forbidden
429Rate limit exceeded
500Internal Server Error

Rate Limits

PlanRequests/MonthRequests/Hour
Free1,0005
Pay-as-you-go5,00020
Growth50,000100
Scale500,000700

Special Rate Limits

EndpointLimitReason
/vat/validate1 req / 10 secExternal VIES API
/ip/reputation1 req / 60 secExternal AbuseIPDB
/email/validate1 req / 5 secSMTP verification
GET/compliance/{jurisdiction}

Data-retention & GDPR-style compliance rules for a jurisdiction. Per data category: action (delete / anonymize / restrict / retain), retention period (days), legal reference, source URL and a ready-to-use policy clause. Also returns jurisdiction-level request (days to fulfil a data-subject request + extension) and data_residency (none / local_copy_required / transfer_restricted). For the 30 EEA countries and the UK it also returns supervisory_authority — name, abbreviation, complaint URL, phone, email and postal address of the national data protection authority, ready to drop into a privacy notice (GDPR art. 13(2)(d) / 14(2)(e), WP260 transparency guidance). Unlike the other blocks it never falls back to EU or DEFAULT: a complaint is lodged with the authority of the data subject’s own country (art. 77(1)), so the field is simply absent outside the EEA and the UK. Falls back to EU / DEFAULT when a country has no specific rule, so the response is never empty.

Parameters

NameTypeRequiredDescription
jurisdictionstringYesISO 3166-1 alpha-2 (ES, DE, US…) or EU / DEFAULT
categorystringNocontact, credentials, tokens, audit, financial or consent. Omit to return all categories.

Example Request

curl -H "X-API-Key: YOUR_KEY" "https://baas.dapita.net/compliance/ES?category=financial"

Response

{"jurisdiction":"ES","resolved_from":"ES","version":1,"request":{"max_days_to_fulfill":30,"extension_days":60,"legal_reference":"GDPR Art. 12(3)","resolved_from":"EU","reviewed":false},"data_residency":{"mode":"none","required":false,"resolved_from":"EU","reviewed":false},"supervisory_authority":{"name":"Agencia Española de Protección de Datos","abbr":"AEPD","website":"https://www.aepd.es/","complaint_url":"https://www.aepd.es/","phone":"900 293 183","email":"internacional@aepd.es","address":"C/ Jorge Juan 6, 28001 Madrid","source_url":"https://www.edpb.europa.eu/about-edpb/about-edpb/members_en","version":1,"reviewed":false},"categories":{"financial":{"action":"retain","retention_days":2190,"legal_reference":"Código de Comercio art. 30","source_url":"https://www.boe.es/buscar/act.php?id=BOE-A-1885-6627","clause":{"en":"Accounting books and records are retained for 6 years.","es":"..."},"resolved_from":"ES","version":1,"reviewed":false}}}

Field guide

FieldMeaning
actiondelete erase · anonymize irreversibly de-identify (row kept) · restrict keep but block processing (legal hold) · retain keep and use
retention_days0 delete now · N keep N days then delete · null keep indefinitely
requestDays to fulfil a data-subject request (max_days_to_fulfill) plus permitted extension_days
data_residencynone · local_copy_required (primary copy stays in-country) · transfer_restricted (cross-border needs assessment/approval); required is a bool shortcut
supervisory_authorityNational data protection authority to name in your privacy notice: name, abbr, complaint_url, phone, email, address. Present for the 30 EEA countries and GB only — never inherited from EU or DEFAULT, since a complaint goes to the authority of the data subject’s own country (GDPR art. 77(1))
resolved_fromWhich tier supplied the rule: the country, EU, or DEFAULT (shown per category and on request / data_residency)
versionPolicy version — store it with any action you take to prove which rule applied; the top-level value is the max, use it for cache invalidation
reviewedfalse until confirmed by legal counsel — treat unreviewed rules as provisional

How to use correctly

  1. Fetch GET /compliance/{jurisdiction} once per user's jurisdiction; cache by version with a short TTL and refetch when it changes.
  2. Per data category, read action + retention_days to decide whether and when to delete, anonymize, restrict or retain.
  3. For data-subject (deletion / access) requests, take the deadline from request.max_days_to_fulfill (plus extension_days).
  4. Choose the storage region according to data_residency before storing personal data.
  5. Generate policy text from clause and keep source_url as proof of the legal basis.
  6. Record the (jurisdiction, category, version) you acted on, so the exact rule can be reproduced later.

Try It

GET/geo/ip/{ip}

Get geolocation data for an IP address.

Parameters

NameTypeRequiredDescription
ipstringYesIPv4 or IPv6 address

Example Request

curl -H "X-API-Key: YOUR_KEY" https://baas.dapita.net/geo/ip/8.8.8.8

Response

{"ip":"8.8.8.8","country_code":"US","country":"United States","city":"","timezone":"America/Chicago","latitude":37.751,"longitude":-97.822}

Try It

GET/ip/me

Get geolocation data for your current IP address.

Example Request

curl -H "X-API-Key: YOUR_KEY" https://baas.dapita.net/ip/me

Response

{"ip":"57.131.32.227","country_code":"FR","country":"France","city":"","timezone":"Europe/Paris","latitude":48.8582,"longitude":2.3387}

Try It

GET/ip/reputation/{ip}

Get IP reputation data including abuse score, reports, and threat indicators. Rate limited: 1 request per 60 seconds.

Parameters

NameTypeRequiredDescription
ipstringYesIPv4 or IPv6 address

Example Request

curl -H "X-API-Key: YOUR_KEY" https://baas.dapita.net/ip/reputation/8.8.8.8

Response

{"ip":"8.8.8.8","is_public":true,"abuse_score":0,"country_code":"US","isp":"Google LLC","domain":"google.com","total_reports":140,"last_reported_at":"2025-12-29T02:57:13Z","is_whitelisted":true,"is_tor":false,"source":"abuseipdb"}

Try It

GET/country/{code?}

Get country information. Without code returns all countries. With code returns specific country details.

Parameters

NameTypeRequiredDescription
codestringNoISO 2-letter country code. Empty = all countries.
formatqueryNoUse "compact" for smaller payload (list mode only)

Example Requests

# All countries
curl -H "X-API-Key: YOUR_KEY" https://baas.dapita.net/country/list

# Compact format
curl -H "X-API-Key: YOUR_KEY" "https://baas.dapita.net/country/list?format=compact"

# Single country
curl -H "X-API-Key: YOUR_KEY" https://baas.dapita.net/country/ES

Response (single)

{"code":"ES","name":"Spain","native_name":"España","flag":"🇪🇸","dial_code":"+34","currency":"EUR","languages":["es"],"capital":"Madrid","region":"Europe"}

Try It

GET/trade-blocs/{code?}

Trade, customs and travel bloc membership for a country, plus the territorial exclusions that override it. Built for shipping and tax logic: deciding whether a consignment needs a customs declaration, which duty regime applies, and whether a postal code falls outside its country's VAT territory. Sources are the EU VAT Directive, the Union Customs Code and the founding treaties of each bloc. Kept separate from /country/ so that ordinary country lookups stay small.

Modes

RequestReturns
/trade-blocs/ESOne country: blocs and bloc_exclusions
/trade-blocs/All countries with membership, without exclusions
/trade-blocs/?bloc=EU_VATOnly countries belonging to one bloc
/trade-blocs/exclusionsEvery territorial exclusion in one response
/trade-blocs/referenceAll bloc tokens with their legal basis

Bloc tokens

TokenMeaning
EUEuropean Union membership (27)
EU_VATTerritory where the VAT Directive applies. This is the field that decides whether a declaration is needed
EU_CUSTOMSCustoms territory of the Union. Wider than EU_VAT: the Canary Islands sit inside it but outside the VAT territory
EU_CU_ASSOCBilateral customs union with the EU (Türkiye, Andorra, San Marino). A declaration is still required; only the duty changes, via an A.TR or EUR.1 certificate
EU_VAT_GOODSAligned with EU VAT rules for goods only. Applies to Northern Ireland
EEAEuropean Economic Area (30). Switzerland is not a member
SCHENGENSchengen Area (29). Affects transit times, not customs
EAEUEurasian Economic Union (5)
USMCAUnited States, Mexico, Canada
MERCOSURArgentina, Brazil, Paraguay, Uruguay; Bolivia transitional
GCCGulf Cooperation Council (6). Intra-GCC movements still need a unified statistical declaration
CH_LISwitzerland and Liechtenstein customs union

Example Requests

# One country
curl -H "X-API-Key: YOUR_KEY" https://baas.dapita.net/trade-blocs/ES

# Everything you need to cache locally
curl -H "X-API-Key: YOUR_KEY" https://baas.dapita.net/trade-blocs/
curl -H "X-API-Key: YOUR_KEY" https://baas.dapita.net/trade-blocs/exclusions

# Countries inside the EU VAT territory
curl -H "X-API-Key: YOUR_KEY" "https://baas.dapita.net/trade-blocs/?bloc=EU_VAT"

Response (single)

{"code":"ES","blocs":["EEA","EU","EU_CUSTOMS","EU_VAT","SCHENGEN"],"bloc_exclusions":[{"country":"ES","name":"Canary Islands","postal_prefixes":["35","38"],"excluded_from":["EU_VAT"],"included_in":[]},{"country":"ES","name":"Ceuta","postal_prefixes":["51"],"excluded_from":["EU_VAT","EU_CUSTOMS"],"included_in":[]}]}

Deciding whether a shipment needs customs clearance

No declaration is required only when all three conditions hold: both countries carry EU_VAT; neither address falls under an exclusion listing EU_VAT in excluded_from; and a postal code was resolved for both addresses. If a postal code is missing or unrecognised, treat the shipment as requiring clearance — absent data must never be read as a clean route. Match postal codes on the longest prefix after stripping spaces and hyphens.

// Madrid -> Berlin              both EU_VAT, no exclusion   -> no declaration
// Madrid -> Las Palmas (35001)  ES excluded from EU_VAT    -> declaration
// Berlin -> Istanbul            TR is EU_CU_ASSOC          -> declaration + A.TR
// London -> Belfast (BT1)       both GB, one is BT         -> declaration

Both blocs and bloc_exclusions are always present. An empty array means no membership, never missing data. Cache /trade-blocs/ and /trade-blocs/exclusions locally and refresh them occasionally — the data changes only when treaties do.

Try It

GET/geo/countries

Get countries with detailed geographic data from GeoNames. Supports filtering.

Query Parameters

NameTypeRequiredDescription
isostringNoFilter by ISO 2-letter code
iso3stringNoFilter by ISO 3-letter code
namestringNoSearch by name
langstringNoLanguage code for localized names
continentstringNoFilter: EU, AS, NA, SA, AF, OC, AN
currencystringNoFilter by currency code
phonestringNoFilter by phone code
tldstringNoFilter by TLD domain

Example Requests

# All countries
curl -H "X-API-Key: YOUR_KEY" https://baas.dapita.net/geo/countries

# European countries
curl -H "X-API-Key: YOUR_KEY" "https://baas.dapita.net/geo/countries?continent=EU"

# Single country by ISO
curl -H "X-API-Key: YOUR_KEY" "https://baas.dapita.net/geo/countries?iso=ES"

Response

{"count":1,"countries":[{"iso":"ES","iso3":"ESP","iso_numeric":"724","name":"Spain","capital":"Madrid","continent":"EU","continent_name":"Europe","population":46723749,"currency_code":"EUR","currency_name":"Euro","phone":"34","tld":".es"}]}

Try It

GET/geo/regions

Get regions/states/provinces for a country.

Query Parameters

NameTypeRequiredDescription
countrystringYesISO 2-letter country code
codestringNoFilter by region code
namestringNoSearch by name

Example Request

curl -H "X-API-Key: YOUR_KEY" "https://baas.dapita.net/geo/regions?country=ES"

Response

{"count":19,"regions":[{"name":"Andalusia","asciiname":"Andalusia","country_code":"ES","country_iso3":"ESP","country_name":"Spain","admin1_code":"51","latitude":37.5,"longitude":-4.58333,"population":8631862,"timezone":"Europe/Madrid"},...]}

Try It

GET/geo/cities

Get cities for a country with pagination. Includes postal codes.

Query Parameters

NameTypeRequiredDescription
countrystringYesISO 2-letter country code
iso3stringNoISO 3-letter country code
admin1stringNoFilter by region code
namestringNoSearch by city name
limitintNoResults per page (default: 100, max: 1000)
offsetintNoSkip N results
shortboolNoReturn minimal fields (true/false)

Example Requests

# Basic request with limit
curl -H "X-API-Key: YOUR_KEY" "https://baas.dapita.net/geo/cities?country=ES&limit=10"

# Search by city name
curl -H "X-API-Key: YOUR_KEY" "https://baas.dapita.net/geo/cities?country=ES&name=Madrid"

# Filter by region code
curl -H "X-API-Key: YOUR_KEY" "https://baas.dapita.net/geo/cities?country=ES&admin1=29"

# Short format (minimal fields)
curl -H "X-API-Key: YOUR_KEY" "https://baas.dapita.net/geo/cities?country=ES&short=true&limit=100"

Response

{"count":2,"total":30871,"limit":2,"offset":0,"cities":[{"name":"Madrid","asciiname":"Madrid","admin1_code":"29","admin1_name":"Comunidad de Madrid","latitude":40.4165,"longitude":-3.70256,"population":3255944,"timezone":"Europe/Madrid","continent_name":"Europe","phone_code":"34","currency_code":"EUR","currency_name":"Euro","tld":".es","postal_codes":["28001","28002",...]},...]}

Try It

GET/currency/rates/{base?}

Get current exchange rates. Base defaults to EUR.

Parameters

NameTypeRequiredDescription
basestringNoBase currency (default: EUR)

Example Request

curl -H "X-API-Key: YOUR_KEY" https://baas.dapita.net/currency/rates/EUR

Response

{"base":"EUR","date":"2025-12-29","rates":{"USD":1.04,"GBP":0.83,"JPY":164.5,...}}

Try It

GET/currency/convert

Convert amount from one currency to another.

Query Parameters

NameTypeRequiredDescription
fromstringYesSource currency code
tostringYesTarget currency code
amountnumberYesAmount to convert

Example Request

curl -H "X-API-Key: YOUR_KEY" "https://baas.dapita.net/currency/convert?from=USD&to=EUR&amount=100"

Response

{"from":"USD","to":"EUR","amount":100,"result":96.15,"rate":0.9615}

Try It

GET/currency/history

Get historical exchange rates for a specific date.

Query Parameters

NameTypeRequiredDescription
basestringNoBase currency (default: EUR)
datestringYesDate in YYYY-MM-DD format

Example Request

curl -H "X-API-Key: YOUR_KEY" "https://baas.dapita.net/currency/history?base=EUR&date=2025-12-01"

Response

{"base":"EUR","date":"2025-12-01","rates":{"USD":1.05,"GBP":0.84,...}}

Try It

GET/currency/list/{code?}

Get currency info with symbol, flag and ISO 4217 minor units. Without code returns all currencies.

Parameters

NameTypeRequiredDescription
codestringNoCurrency code. Empty = all currencies.

Example Requests

# All currencies
curl -H "X-API-Key: YOUR_KEY" https://baas.dapita.net/currency/list/

# Single currency
curl -H "X-API-Key: YOUR_KEY" https://baas.dapita.net/currency/list/EUR

Response (single)

{"code":"EUR","name":"Euro","symbol":"€","flag":"🇪🇺","decimals":2}

Response Fields

NameTypeDescription
codestringISO 4217 currency code
namestringCurrency name in English
symbolstringCurrency symbol
flagstringFlag emoji of the issuing country
decimalsintegerISO 4217 minor units — number of digits after the decimal separator. 0 for JPY, KRW, VND and 13 others; 3 for KWD, BHD, JOD and 4 others; 2 for the remaining 132. Use it to round and display amounts returned by /currency/convert.

Try It

GET/vat/rates/{country}

Get VAT rates for a country including standard, reduced, and super-reduced rates.

Parameters

NameTypeRequiredDescription
countrystringYesISO 2-letter country code

Example Request

curl -H "X-API-Key: YOUR_KEY" https://baas.dapita.net/vat/rates/ES

Response

{"country_code":"ES","country_name":"Spain","local_name":"IVA","standard_rate":21,"reduced_rates":[10],"super_reduced_rate":4,"parking_rate":null,"updated_at":"2025-12-03"}

Try It

GET/vat/rates/batch?countries={codes}

VAT rates for up to 250 countries in one call, charged as one request. Same data as /vat/rates/{country}, reduced to the rate fields and keyed by country code. Countries without data, and codes in a wrong format, are listed in missing instead of failing the whole request.

Parameters

NameTypeRequiredDescription
countriesqueryYesISO 3166-1 alpha-2 codes separated by commas, case-insensitive, up to 250. Duplicates are ignored

Response Fields

FieldDescription
countries.{code}.standard_rateStandard rate, percent
countries.{code}.reduced_ratesReduced rates, percent; empty array when there are none
countries.{code}.super_reduced_rateSuper-reduced rate, percent, or null
countries.{code}.parking_rateParking rate, percent, or null
countries.{code}.local_nameLocal name of the tax (MwSt, IVA, TVA)
missingRequested codes with no data or a wrong format; always present

Example Request

curl -H "X-API-Key: YOUR_KEY" "https://baas.dapita.net/vat/rates/batch?countries=DE,FR,ES,US"

Response

{"countries":{"DE":{"standard_rate":19,"reduced_rates":[7],"super_reduced_rate":null,"parking_rate":null,"local_name":"MwSt"},"ES":{"standard_rate":21,"reduced_rates":[10],"super_reduced_rate":4,"parking_rate":null,"local_name":"IVA"},"FR":{"standard_rate":20,"reduced_rates":[10,5.5],"super_reduced_rate":2.1,"parking_rate":null,"local_name":"TVA"}},"missing":["US"]}

Errors

CodeWhen
400countries is empty, or holds more than 250 codes

Try It

GET/docpacks/schema

Document rules pack format: the JSON Schema every pack follows, the canonical field dictionary, the closed lists (document categories, statuses, filters, checksums, rate sources) and how packs are signed, with the public key. Call it when the plugin is installed and when the schema version changes.

Response Fields

FieldDescription
schemaJSON Schema 2020-12 of a pack
fieldsCanonical field dictionary (EN 16931 business terms plus extensions)
registriesClosed lists with their version
signature.algorithmecdsa-p256-sha256
signature.signedWhat is signed: the UTF-8 bytes of meta.hash
signature.hashHow meta.hash is computed
signature.public_keyPEM public key that verifies every pack

Example Request

curl -H "X-API-Key: YOUR_KEY" "https://baas.dapita.net/docpacks/schema"

Response (live, shortened)

{
  "schema": "{… JSON Schema 2020-12 …}",
  "fields": "{… canonical field dictionary …}",
  "registries": "{… closed lists …}",
  "signature": {
    "algorithm": "ecdsa-p256-sha256",
    "format": "ecdsa-p256:<base64 ASN.1 DER>",
    "hash": "sha256 of the pack JSON without meta.hash, meta.signature, meta.published_at and meta.next_check_after; object keys sorted, no whitespace",
    "public_key": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAECdU3gkef1gpmcm6LkNpYpbg6vzTv\nBPcW6IHIKSENETp1MlZVzrNqWZ5Wlyp32JsIwZrX85P4gqP6aa3L/soq/A==\n-----END PUBLIC KEY-----\n",
    "signed": "UTF-8 bytes of meta.hash"
  }
}

Errors

CodeWhen
503signer_unavailable: the public key could not be read, retry later

Try It

GET/docpacks/index

Jurisdictions that have published rules: subdivisions and special territories, seller profiles (entity types and tax regimes), the current version and hash of the country rules, coverage and the outgoing hosts of government channels.

Response Fields

FieldDescription
countNumber of jurisdictions
jurisdictions[].jurisdictionISO 3166-1 alpha-2 code
jurisdictions[].version, hashVersion and hash of the published country layer
jurisdictions[].coveragefull, rules_only (no channels, formats or returns) or none
jurisdictions[].missingSections absent from the country rules
jurisdictions[].subdivisions, territoriesISO 3166-2 subdivisions and special territories with own rules
jurisdictions[].entity_types, tax_regimesSeller profiles: id and label
jurisdictions[].hostsHosts of the government channels, for the plugin's allowed outgoing hosts
jurisdictions[].published_atWhen the country rules were published

Example Request

curl -H "X-API-Key: YOUR_KEY" "https://baas.dapita.net/docpacks/index"

Response (live, shortened)

{
  "count": 7,
  "jurisdictions": [
    {
      "jurisdiction": "BE",
      "version": "2026.10.1",
      "hash": "sha256:d7924dbe58a8dd06f1e5af053cd3a058c7b8de3b61bd5582bdb2cc50c13d8b02",
      "coverage": "rules_only",
      "missing": [
        "numbering",
        "integrity",
        "… 6 more"
      ],
      "subdivisions": [],
      "territories": [],
      "entity_types": [
        {
          "id": "company",
          "label": {
            "en": "Company (legal person)",
            "fr": "Société (personne morale)",
            "nl": "Vennootschap (rechtspersoon)"
          }
        },
        {
          "id": "sole_trader",
          "label": {
            "en": "Sole proprietorship (natural person)",
            "fr": "Entreprise individuelle (personne physique)",
            "nl": "Eenmanszaak (natuurlijke persoon)"
          }
        }
      ],
      "tax_regimes": [
        {
          "id": "standard",
          "label": {
            "en": "Standard VAT regime",
            "fr": "Régime normal de TVA",
            "nl": "Normale btw-regeling"
          }
        },
        {
          "id": "small_business",
          "label": {
            "en": "Small enterprise VAT exemption scheme (franchise)",
            "fr": "Régime de la franchise des petites entreprises",
            "nl": "Vrijstellingsregeling voor kleine ondernemingen"
          }
        },
        "… 1 more"
      ],
      "hosts": [
        "ec.europa.eu"
      ],
      "published_at": "2026-10-24T14:35:58.085428Z"
    },
    {
      "jurisdiction": "ES",
      "version": "2026.10.1",
      "hash": "sha256:6cf99431db497b7f7f81e5e85015986aa840a80647d148a4b0d4e6274189c5fe",
      "coverage": "full",
      "missing": [
        "pos",
        "trade",
        "… 1 more"
      ],
      "subdivisions": [
        "ES-BI",
        "ES-SS",
        "… 1 more"
      ],
      "territories": [
        "CE",
        "CN",
        "… 1 more"
      ],
      "entity_types": [
        {
          "id": "company",
          "label": {
            "en": "Company (legal person: S.A., S.L. and other entities)",
            "es": "Sociedad / persona jurídica"
          }
        },
        {
          "id": "sole_trader",
          "label": {
            "en": "Sole trader (autónomo, natural person)",
            "es": "Empresario o profesional persona física (autónomo)"
          }
        }
      ],
      "tax_regimes": [
        {
          "id": "standard",
          "label": {
            "en": "General VAT regime",
            "es": "Régimen general del IVA"
          }
        },
        {
          "id": "recargo_equivalencia",
          "label": {
            "en": "Equivalence surcharge special regime (retailers)",
            "es": "Régimen especial del recargo de equivalencia"
          }
        },
        "… 1 more"
      ],
      "hosts": [
        "ec.europa.eu",
        "sede.agenciatributaria.gob.es",
        "… 2 more"
      ],
      "published_at": "2026-10-24T14:35:58.699694Z"
    },
    "… 5 more"
  ]
}

Errors

CodeWhen
401Missing or invalid API key
402Not enough credits

Try It

POST/docpacks/batch

Assembled, signed rules packs for up to 100 addresses (country, optional subdivision or CC:TERRITORY, seller profile) in one request, charged as one request. Pass have_hash to get {"unchanged": true} instead of a pack you already have. Every rule carries origin, the layer it came from.

Parameters

NameTypeRequiredDescription
items[].jurisdictionbodyYesISO 3166-1 alpha-2, or CC:TERRITORY (e.g. ES:CN)
items[].subdivisionbodyNoISO 3166-2 of the same country (e.g. US-CA); not together with a territory
items[].profile.entity_typebodyYesId from index
items[].profile.tax_regimebodyYesId from index
items[].have_hashbodyNoHash of the pack the caller has

Response Fields

FieldDescription
items[].hashHash of the current pack (sha256:…)
items[].packThe pack; absent when unchanged
items[].unchangedtrue when have_hash equals the current hash
items[].warning, missingcoverage_rules_only and the absent sections: documents can be issued and stored, not transmitted
items[].error, messagePer item: unknown_jurisdiction, profile_not_supported, pack_unavailable, bad_request
pack.meta.hash, pack.meta.signatureVerify with the public key from /docpacks/schema before use
pack.meta.next_check_afterDo not ask again before this time

Example Request

curl -H "X-API-Key: YOUR_KEY" -H "Content-Type: application/json" -X POST "https://baas.dapita.net/docpacks/batch" \
  -d '{"items": [{"jurisdiction": "ES", "profile": {"entity_type": "company", "tax_regime": "standard"}}, {"jurisdiction": "US", "subdivision": "US-CA", "profile": {"entity_type": "company", "tax_regime": "standard"}}]}'

Response (live, shortened)

{
  "items": [
    {
      "hash": "sha256:7594bd79718ec2a7823300d2b040b1b1c9c9d7c7c5e7ca8e426db9cebf3f9a67",
      "jurisdiction": "ES",
      "pack": {
        "meta": {
          "coverage": "full",
          "currency": {
            "local": "EUR"
          },
          "hash": "sha256:7594bd79718ec2a7823300d2b040b1b1c9c9d7c7c5e7ca8e426db9cebf3f9a67",
          "jurisdiction": "ES",
          "languages": [
            "es",
            "en"
          ],
          "layers": [
            {
              "key": "ES/country",
              "version": "2026.10.1"
            }
          ],
          "missing": [
            "pos",
            "trade",
            "… 1 more"
          ],
          "next_check_after": "2026-10-25T14:36:01Z",
          "profile": {
            "entity_type": "company",
            "tax_regime": "standard"
          },
          "published_at": "2026-10-24T14:36:01Z",
          "signature": "ecdsa-p256:MEQCIEhTwN9+2M4QBfDXwB3XB7U8UcVJAJ831D2qiX2LrMz2AiBEZopyzWGICY7rIabQQYzSFDpPpQcOH53buA3XYF4E/Q==",
          "sources": [
            {
              "checked_at": "2026-10-24",
              "id": "boe_liva",
              "title": {
                "en": "Ley 37/1992 del Impuesto sobre el Valor Añadido (consolidated text, last update 07/10/2026)",
                "es": "Ley 37/1992, de 28 de diciembre, del Impuesto sobre el Valor Añadido (texto consolidado)"
              },
              "url": "https://www.boe.es/eli/es/l/1992/12/28/37/con"
            },
            {
              "checked_at": "2026-10-24",
              "id": "boe_rdl_20_2012",
              "title": {
                "en": "Real Decreto-ley 20/2012 (VAT 18->21 % and 8->10 % from 1 September 2012)",
                "es": "Real Decreto-ley 20/2012, de 13 de julio"
              },
              "url": "https://www.boe.es/buscar/act.php?id=BOE-A-2012-9364"
            },
            "… 34 more"
          ],
          "version": "2026.10.1"
        },
        "profiles": {
          "entity_types": [
            {
              "effective_from": "2008-07-01",
              "id": "company",
              "identifiers": [
                {
                  "ref": "identifiers.es_nif"
                }
              ],
              "issues": [
                {
                  "ref": "document_types.invoice"
                },
                {
                  "ref": "document_types.simplified_invoice"
                },
                "… 1 more"
              ],
              "label": {
                "en": "Company (legal person: S.A., S.L. and other entities)",
                "es": "Sociedad / persona jurídica"
              },
              "origin": "ES/country",
              "source": "boe_nif_entities"
            },
            {
              "effective_from": "2008-07-01",
              "id": "sole_trader",
              "identifiers": [
                {
                  "ref": "identifiers.es_nif"
                }
              ],
              "issues": [
                {
                  "ref": "document_types.invoice"
                },
                {
                  "ref": "document_types.simplified_invoice"
                },
                "… 1 more"
              ],
              "label": {
                "en": "Sole trader (autónomo, natural person)",
                "es": "Empresario o profesional persona física (autónomo)"
              },
              "origin": "ES/country",
              "source": "aeat_nif_fisica"
            }
          ],
          "tax_regimes": [
            {
              "effective_from": "2012-09-01",
              "id": "standard",
              "label": {
                "en": "General VAT regime",
                "es": "Régimen general del IVA"
              },
              "origin": "ES/country",
              "source": "boe_liva",
              "thresholds": [
                {
                  "ref": "thresholds.large_company"
                }
              ]
            },
            {
              "effective_from": "2025-01-01",
              "entity_types": [
                "sole_trader"
              ],
              "id": "recargo_equivalencia",
              "label": {
                "en": "Equivalence surcharge special regime (retailers)",
                "es": "Régimen especial del recargo de equivalencia"
              },
              "origin": "ES/country",
              "source": "aeat_re_regime"
            },
            "… 1 more"
          ]
        },
        "document_types": [
          {
            "category": "invoice",
            "code": "F1",
            "corrections": [
              {
                "doc_type": "corrective_invoice",
                "id": "rectificativa",
                "reason_codes": [
                  "R1",
                  "R2",
                  "… 2 more"
                ],
                "reason_required": true
              }
            ],
            "effective_from": "2012-12-01",
            "id": "invoice",
            "issuer": "seller",
            "label": {
              "en": "Invoice (full)",
              "es": "Factura completa u ordinaria"
            },
            "legal_texts": [
              {
                "ref": "legal_texts.reverse_charge"
              },
              {
                "ref": "legal_texts.exempt"
              },
              "… 3 more"
            ],
            "mandatory_when": {
              "any": [
                {
                  "field": "buyer.type",
                  "is": "eq",
                  "value": "business"
                },
                {
                  "field": "buyer.type",
                  "is": "eq",
                  "value": "government"
                }
              ]
            },
            "numbering": {
              "ref": "numbering.invoice"
            },
            "origin": "ES/country",
            "outputs": [
              {
                "ref": "formats.pdf"
              },
              {
                "ref": "formats.spfe_ubl"
              }
            ],
            "required_fields": [
              {
                "field": "doc.number"
              },
              {
                "field": "doc.issue_date"
              },
              "… 13 more"
            ],
            "retention": {
              "ref": "retention.invoices"
            },
            "source": "boe_rd1619",
            "transmission": [
              {
                "channel": {
                  "ref": "channels.sii"
                },
                "deadline": {
                  "calendar": "business",
                  "days": 4,
                  "from": "doc.issue_date",
                  "holidays": "baas.holidays"
                },
                "required_when": {
                  "field": "settings.transmission_mode",
                  "is": "eq",
                  "value": "sii"
                },
                "timing": "after_delivery"
              },
              {
                "channel": {
                  "ref": "channels.verifactu"
                },
                "required_when": {
                  "all": [
                    {
                      "field": "settings.transmission_mode",
                      "is": "eq",
                      "value": "verifactu"
                    },
                    {
                      "field": "doc.issue_date",
                      "is": "gte",
                      "value": "2027-01-01"
                    },
                    "… 1 more"
                  ]
                }
              }
            ]
          },
          {
            "category": "simplified_invoice",
            "code": "F2",
            "corrections": [
              {
                "doc_type": "corrective_simplified",
                "id": "rectificativa_simplificada",
                "reason_codes": [
                  "R5"
                ],
                "reason_required": true
              }
            ],
            "effective_from": "2012-12-01",
            "id": "simplified_invoice",
            "issuer": "seller",
            "label": {
              "en": "Simplified invoice",
              "es": "Factura simplificada"
            },
            "legal_texts": [
              {
                "ref": "legal_texts.reverse_charge"
              },
              {
                "ref": "legal_texts.exempt"
              },
              "… 1 more"
            ],
            "limits": [
              {
                "else": "convert_to:invoice",
                "field": "totals.total",
                "is": "lte",
                "value": "400.00"
              }
            ],
            "numbering": {
              "ref": "numbering.simplified"
            },
            "origin": "ES/country",
            "outputs": [
              {
                "ref": "formats.pdf"
              }
            ],
            "required_fields": [
              {
                "field": "doc.number"
              },
              {
                "field": "doc.issue_date"
              },
              "… 7 more"
            ],
            "retention": {
              "ref": "retention.invoices"
            },
            "source": "boe_rd1619",
            "transmission": [
              {
                "channel": {
                  "ref": "channels.sii"
                },
                "deadline": {
                  "calendar": "business",
                  "days": 4,
                  "from": "doc.issue_date",
                  "holidays": "baas.holidays"
                },
                "required_when": {
                  "field": "settings.transmission_mode",
                  "is": "eq",
                  "value": "sii"
                },
                "timing": "after_delivery"
              },
              {
                "channel": {
                  "ref": "channels.verifactu"
                },
                "required_when": {
                  "all": [
                    {
                      "field": "settings.transmission_mode",
                      "is": "eq",
                      "value": "verifactu"
                    },
                    {
                      "field": "doc.issue_date",
                      "is": "gte",
                      "value": "2027-01-01"
                    },
                    "… 1 more"
                  ]
                }
              }
            ]
          },
          "… 4 more"
        ],
        "taxes": {
          "exemptions": [
            {
              "basis": {
                "en": "Exempt under article 20 of Ley 37/1992",
                "es": "Exenta por el artículo 20 de la Ley 37/1992"
              },
              "code": "E1",
              "effective_from": "2024-10-29",
              "id": "e1",
              "legal_text": {
                "ref": "legal_texts.exempt"
              },
              "origin": "ES/country",
              "source": "boe_hac1177"
            },
            {
              "basis": {
                "en": "Exempt under article 21 of Ley 37/1992 (exports)",
                "es": "Exenta por el artículo 21 de la Ley 37/1992"
              },
              "code": "E2",
              "effective_from": "2024-10-29",
              "id": "e2",
              "legal_text": {
                "ref": "legal_texts.export"
              },
              "origin": "ES/country",
              "source": "boe_hac1177"
            },
            "… 4 more"
          ],
          "kinds": [
            {
              "effective_from": "2012-09-01",
              "id": "vat",
              "label": {
                "en": "Value added tax (IVA)",
                "es": "Impuesto sobre el Valor Añadido (IVA)"
              },
              "level": "country",
              "origin": "ES/country",
              "payer": "seller",
              "separate_line": true,
              "source": "boe_rd1619"
            }
          ],
          "rates": [
            {
              "applies_to": {
                "product_tax_class": [
                  "standard"
                ]
              },
              "category": "S",
              "effective_from": "2012-09-01",
              "id": "vat_standard",
              "kind": "vat",
              "origin": "ES/country",
              "rate": "21.00",
              "source": "boe_rdl_20_2012"
            },
            {
              "applies_to": {
                "product_tax_class": [
                  "reduced"
                ]
              },
              "category": "S",
              "effective_from": "2025-01-01",
              "id": "vat_reduced",
              "kind": "vat",
              "origin": "ES/country",
              "rate": "10.00",
              "source": "aeat_iva_rates_2025"
            },
            "… 2 more"
          ],
          "selection": [
            {
              "effective_from": "2012-12-01",
              "id": "intra_eu_goods_b2b",
              "order": 1,
              "origin": "ES/country",
              "result": {
                "category": "K",
                "exemption": {
                  "ref": "exemptions.e5"
                },
                "legal_text": {
                  "ref": "legal_texts.intra_eu_supply"
                }
              },
              "source": "boe_rd1619",
              "when": {
                "all": [
                  {
                    "field": "supply.type",
                    "is": "eq",
                    "value": "goods"
                  },
                  {
                    "field": "buyer.type",
                    "is": "eq",
                    "value": "business"
                  },
                  "… 2 more"
                ]
              }
            },
            {
              "effective_from": "2012-12-01",
              "id": "export_goods",
              "order": 2,
              "origin": "ES/country",
              "result": {
                "category": "G",
                "exemption": {
                  "ref": "exemptions.e2"
                },
                "legal_text": {
                  "ref": "legal_texts.export"
                }
              },
              "source": "boe_rd1619",
              "when": {
                "all": [
                  {
                    "field": "supply.type",
                    "is": "eq",
                    "value": "goods"
                  },
                  {
                    "field": "delivery.address.country",
                    "is": "not_in",
                    "value": [
                      "ES",
                      "AT",
                      "… 25 more"
                    ]
                  }
                ]
              }
            },
            "… 2 more"
          ],
          "thresholds": [
            {
              "consequence": "change_regime",
              "effective_from": "2017-07-01",
              "id": "large_company",
              "measure": "sales_amount",
              "origin": "ES/country",
              "period": "previous_year",
              "source": "aeat_gran_empresa_sii",
              "value": "6010121.04"
            }
          ]
        },
        "channels": [
          {
            "auth": {
              "certificate": {
                "ref": "signatures.aeat_certificate"
              },
              "type": "mtls"
            },
            "batch": {
              "max_items": 10000
            },
            "effective_from": "2017-07-01",
            "environments": {
              "prod": "https://www1.agenciatributaria.gob.es/wlpl/SSII-FACT/ws/fe/SiiFactFEV1SOAP",
              "test": "https://www7.aeat.es/wlpl/SSII-FACT/ws/fe/SiiFactFEV1SOAP"
            },
            "errors": [
              {
                "canonical": "malformed_request",
                "code": "soapenv:Client",
                "fix": {
                  "en": "Read the faultstring, correct the message and resend",
                  "es": "Revise el faultstring, corrija y reenvíe"
                },
                "message": {
                  "en": "Malformed message or incorrect data",
                  "es": "Mensaje mal formado o datos incorrectos"
                }
              },
              {
                "canonical": "server_error",
                "code": "soapenv:Server",
                "fix": {
                  "en": "Resend the message",
                  "es": "Reenvíe el mensaje"
                },
                "message": {
                  "en": "Server-side error",
                  "es": "Error del servidor"
                }
              }
            ],
            "id": "sii",
            "model": "real_time_reporting",
            "offline": {
              "max_delay": {
                "days": 4
              },
              "queue": true
            },
            "operations": {
              "submit": {
                "port": "SuministroFactEmitidas",
                "wsdl": "SuministroFactEmitidas.wsdl"
              }
            },
            "origin": "ES/country",
            "protocol": "soap",
            "source": "aeat_sii_ws",
            "status_map": [
              {
                "canonical": "accepted",
                "external": "Aceptada"
              },
              {
                "canonical": "accepted_with_errors",
                "external": "Aceptada con errores"
              },
              "… 1 more"
            ]
          },
          {
            "auth": {
              "certificate": {
                "ref": "signatures.aeat_certificate"
              },
              "type": "mtls"
            },
            "batch": {
              "max_items": 1000
            },
            "effective_from": "2024-10-29",
            "id": "verifactu",
            "model": "real_time_reporting",
            "offline": {
              "queue": true,
              "retry": {
                "backoff_seconds": [
                  3600
                ]
              }
            },
            "origin": "ES/country",
            "protocol": "soap",
            "rate_limit": {
              "per_minute": 1
            },
            "source": "boe_hac1177"
          },
          "… 2 more"
        ],
        "test_vectors": [
          {
            "description": "Domestic B2C sale of one standard-rated item, simplified invoice under 400 EUR",
            "expect": {
              "tax": {
                "S": {
                  "21.00": {
                    "amount": "21.00",
                    "taxable_amount": "100.00"
                  }
                }
              },
              "totals": {
                "net": "100.00",
                "tax": "21.00",
                "total": "121.00"
              }
            },
            "id": "b2c_simplified_21",
            "input": {
              "buyer": {
                "type": "consumer"
              },
              "doc": {
                "currency": "EUR",
                "issue_date": "2026-10-24",
                "type": "simplified_invoice"
              },
              "lines": [
                {
                  "net_amount": "100.00",
                  "net_price": "50.00",
                  "product_tax_class": "standard",
                  "quantity": "2"
                }
              ],
              "seller": {
                "entity_type": "company",
                "tax_id": "B12345674",
                "tax_regime": "standard"
              },
              "supply": {
                "type": "goods"
              }
            }
          },
          {
            "description": "Domestic B2B full invoice with 21 % and 10 % lines",
            "expect": {
              "tax": {
                "S": {
                  "10.00": {
                    "amount": "5.00",
                    "taxable_amount": "50.00"
                  },
                  "21.00": {
                    "amount": "42.00",
                    "taxable_amount": "200.00"
                  }
                }
              },
              "totals": {
                "net": "250.00",
                "tax": "47.00",
                "total": "297.00"
              }
            },
            "id": "b2b_domestic_mixed_rates",
            "input": {
              "buyer": {
                "address": {
                  "country": "ES"
                },
                "name": "Cliente SA",
                "tax_id": "A87654321",
                "type": "business"
              },
              "doc": {
                "currency": "EUR",
                "issue_date": "2026-10-24",
                "type": "invoice"
              },
              "lines": [
                {
                  "net_amount": "200.00",
                  "net_price": "200.00",
                  "product_tax_class": "standard",
                  "quantity": "1"
                },
                {
                  "net_amount": "50.00",
                  "net_price": "10.00",
                  "product_tax_class": "reduced",
                  "quantity": "5"
                }
              ],
              "seller": {
                "entity_type": "company",
                "tax_id": "B12345674",
                "tax_regime": "standard"
              },
              "supply": {
                "type": "goods"
              }
            }
          },
          "… 4 more"
        ],
        "…": "also: changes, fields, formats, identifiers, integrity, legal_texts, numbering, obligations, payments, retention, signatures"
      },
      "profile": {
        "entity_type": "company",
        "tax_regime": "standard"
      }
    },
    {
      "hash": "sha256:df8e15dbe681ecc2ad993f62364f9b43cd5252ce80cae29f4b6e13bb97b5b2af",
      "jurisdiction": "US",
      "pack": {
        "meta": {
          "coverage": "full",
          "currency": {
            "local": "USD"
          },
          "hash": "sha256:df8e15dbe681ecc2ad993f62364f9b43cd5252ce80cae29f4b6e13bb97b5b2af",
          "jurisdiction": "US",
          "languages": [
            "en"
          ],
          "layers": [
            {
              "key": "US/country",
              "version": "2026.10.1"
            },
            {
              "key": "US/subdivision/US-CA",
              "version": "2026.10.1"
            }
          ],
          "missing": [
            "numbering",
            "integrity",
            "… 5 more"
          ],
          "next_check_after": "2026-10-25T14:36:02Z",
          "profile": {
            "entity_type": "company",
            "tax_regime": "standard"
          },
          "published_at": "2026-10-24T14:36:02Z",
          "signature": "ecdsa-p256:MEYCIQCGhg5myA9A7w0wKjAR93mvIQkdYl0I8KURF4TG34nVGwIhAJqIn1iBD1jazRUEX6wRYmdMpMv8G1T+rmm/oa9grfcp",
          "sources": [
            {
              "checked_at": "2026-10-24",
              "id": "irs_iw2w3",
              "title": {
                "en": "IRS, General Instructions for Forms W-2 and W-3 (2026), Taxpayer identification numbers (TINs)"
              },
              "url": "https://www.irs.gov/instructions/iw2w3"
            },
            {
              "checked_at": "2026-10-24",
              "id": "irs_records_kind",
              "title": {
                "en": "IRS, What kind of records should I keep"
              },
              "url": "https://www.irs.gov/businesses/small-businesses-self-employed/what-kind-of-records-should-i-keep"
            },
            "… 10 more"
          ],
          "subdivision": "US-CA",
          "version": "2026.10.1"
        },
        "profiles": {
          "entity_types": [
            {
              "effective_from": "2026-10-24",
              "id": "company",
              "identifiers": [
                {
                  "ref": "identifiers.ein"
                }
              ],
              "issues": [
                {
                  "ref": "document_types.invoice"
                },
                {
                  "ref": "document_types.credit_note"
                },
                "… 1 more"
              ],
              "label": {
                "en": "Company (corporation, S corporation or limited liability company)"
              },
              "origin": "US/subdivision/US-CA",
              "receives": [
                {
                  "ref": "document_types.resale_certificate"
                }
              ],
              "source": "ca_reg_1668"
            },
            {
              "effective_from": "2026-10-24",
              "id": "sole_proprietor",
              "issues": [
                {
                  "ref": "document_types.invoice"
                },
                {
                  "ref": "document_types.credit_note"
                },
                "… 1 more"
              ],
              "label": {
                "en": "Sole proprietorship"
              },
              "origin": "US/subdivision/US-CA",
              "receives": [
                {
                  "ref": "document_types.resale_certificate"
                }
              ],
              "source": "ca_reg_1668"
            }
          ],
          "tax_regimes": [
            {
              "effective_from": "2026-10-24",
              "id": "standard",
              "label": {
                "en": "Standard (state sales and use tax rules of the selling state apply)"
              },
              "origin": "US/country",
              "source": "irs_business_structures"
            }
          ]
        },
        "document_types": [
          {
            "category": "invoice",
            "code": "380",
            "corrections": [
              {
                "doc_type": "credit_note",
                "id": "credit_note"
              }
            ],
            "effective_from": "2003-01-01",
            "id": "invoice",
            "issuer": "seller",
            "label": {
              "en": "Invoice"
            },
            "origin": "US/subdivision/US-CA",
            "outputs": [
              {
                "ref": "formats.pdf"
              }
            ],
            "retention": {
              "ref": "retention.ca_records"
            },
            "source": "ca_reg_1698"
          },
          {
            "category": "credit_note",
            "code": "381",
            "effective_from": "2003-01-01",
            "id": "credit_note",
            "issuer": "seller",
            "label": {
              "en": "Credit memo"
            },
            "origin": "US/subdivision/US-CA",
            "outputs": [
              {
                "ref": "formats.pdf"
              }
            ],
            "retention": {
              "ref": "retention.ca_records"
            },
            "source": "ca_reg_1698"
          },
          "… 2 more"
        ],
        "taxes": {
          "exemptions": [
            {
              "basis": {
                "en": "Sale for resale, supported by a timely resale certificate taken in good faith (Regulation 1668)"
              },
              "code": "resale",
              "effective_from": "2026-10-24",
              "id": "ca_resale",
              "origin": "US/subdivision/US-CA",
              "source": "ca_reg_1668"
            }
          ],
          "kinds": [
            {
              "effective_from": "2017-01-01",
              "id": "ca_sales_use_tax",
              "label": {
                "en": "California sales and use tax"
              },
              "level": "subdivision",
              "origin": "US/subdivision/US-CA",
              "payer": "seller",
              "separate_line": true,
              "source": "ca_cdtfa_rate_history"
            }
          ],
          "rates": [
            {
              "applies_to": {
                "product_tax_class": [
                  "standard"
                ]
              },
              "category": "S",
              "effective_from": "2017-01-01",
              "id": "ca_statewide_base",
              "kind": "ca_sales_use_tax",
              "origin": "US/subdivision/US-CA",
              "rate": "7.25",
              "scope": "US-CA",
              "source": "ca_cdtfa_rate_history"
            }
          ],
          "selection": [
            {
              "effective_from": "2019-10-01",
              "id": "ca_marketplace_facilitated",
              "order": 1,
              "origin": "US/subdivision/US-CA",
              "result": {
                "category": "O"
              },
              "source": "ca_cdtfa_mpf",
              "when": {
                "field": "doc.marketplace_facilitated",
                "is": "eq",
                "value": true
              }
            }
          ],
          "thresholds": [
            {
              "consequence": "register",
              "effective_from": "2019-04-01",
              "id": "ca_nexus_current_year",
              "includes": [
                "sales of tangible personal property for delivery in California by the retailer and related persons",
                "sales facilitated through a marketplace facilitator"
              ],
              "measure": "sales_amount",
              "origin": "US/subdivision/US-CA",
              "period": "calendar_year",
              "scope": "US-CA",
              "source": "ca_cdtfa_wayfair",
              "value": "500000.00"
            },
            {
              "consequence": "register",
              "effective_from": "2019-04-01",
              "id": "ca_nexus_preceding_year",
              "includes": [
                "sales of tangible personal property for delivery in California by the retailer and related persons",
                "sales facilitated through a marketplace facilitator"
              ],
              "measure": "sales_amount",
              "origin": "US/subdivision/US-CA",
              "period": "previous_year",
              "scope": "US-CA",
              "source": "ca_cdtfa_wayfair",
              "value": "500000.00"
            }
          ]
        },
        "channels": [
          {
            "effective_from": "2026-10-24",
            "id": "no_government_channel",
            "model": "none",
            "origin": "US/country"
          }
        ],
        "test_vectors": [
          {
            "description": "Taxable sale of goods delivered in US-CA at the state base rate 7.25% only (local taxes not included).",
            "expect": {
              "tax": {
                "amount": "7.25",
                "category": "S",
                "rate": "7.25",
                "taxable_amount": "100.00"
              },
              "totals": {
                "lines_net": "100.00",
                "net": "100.00",
                "tax": "7.25",
                "total": "107.25"
              }
            },
            "id": "taxable_sale_b2c",
            "input": {
              "buyer": {
                "address": {
                  "country": "US",
                  "subdivision": "US-CA"
                },
                "name": "Example Buyer",
                "type": "consumer"
              },
              "delivery": {
                "address": {
                  "country": "US",
                  "subdivision": "US-CA"
                }
              },
              "doc": {
                "category": "invoice",
                "currency": "USD",
                "issue_date": "2026-11-02",
                "type": "invoice"
              },
              "lines": [
                {
                  "id": "1",
                  "item_name": "Item 1",
                  "net_amount": "100.00",
                  "net_price": "100.00",
                  "product_tax_class": "standard",
                  "quantity": "1"
                }
              ],
              "seller": {
                "address": {
                  "country": "US",
                  "subdivision": "US-CA"
                },
                "entity_type": "company",
                "name": "Example Seller",
                "tax_regime": "standard"
              },
              "supply": {
                "place_country": "US",
                "place_subdivision": "US-CA",
                "type": "goods"
              }
            }
          },
          {
            "description": "Taxable sale to a business without a resale certificate, delivered in US-CA, state base rate 7.25% only.",
            "expect": {
              "tax": {
                "amount": "14.50",
                "category": "S",
                "rate": "7.25",
                "taxable_amount": "200.00"
              },
              "totals": {
                "lines_net": "200.00",
                "net": "200.00",
                "tax": "14.50",
                "total": "214.50"
              }
            },
            "id": "taxable_sale_b2b",
            "input": {
              "buyer": {
                "address": {
                  "country": "US",
                  "subdivision": "US-CA"
                },
                "name": "Example Buyer",
                "type": "business"
              },
              "delivery": {
                "address": {
                  "country": "US",
                  "subdivision": "US-CA"
                }
              },
              "doc": {
                "category": "invoice",
                "currency": "USD",
                "issue_date": "2026-11-02",
                "type": "invoice"
              },
              "lines": [
                {
                  "id": "1",
                  "item_name": "Item 1",
                  "net_amount": "200.00",
                  "net_price": "200.00",
                  "product_tax_class": "standard",
                  "quantity": "1"
                }
              ],
              "seller": {
                "address": {
                  "country": "US",
                  "subdivision": "US-CA"
                },
                "entity_type": "company",
                "name": "Example Seller",
                "tax_regime": "standard"
              },
              "supply": {
                "place_country": "US",
                "place_subdivision": "US-CA",
                "type": "goods"
              }
            }
          }
        ],
        "…": "also: changes, fields, formats, identifiers, legal_texts, obligations, retention"
      },
      "profile": {
        "entity_type": "company",
        "tax_regime": "standard"
      },
      "subdivision": "US-CA"
    }
  ]
}

With have_hash:

{
  "items": [
    {
      "hash": "sha256:7594bd79718ec2a7823300d2b040b1b1c9c9d7c7c5e7ca8e426db9cebf3f9a67",
      "jurisdiction": "ES",
      "profile": {
        "entity_type": "company",
        "tax_regime": "standard"
      },
      "unchanged": true
    }
  ]
}

Errors

CodeWhen
400Body is not {"items": [...]}, or has 0 or more than 100 items
401Missing or invalid API key
402Not enough credits

Try It

GET/docpacks/{country}/changes?since={version}

Change journal of a jurisdiction after a version: what changed, what it affects (impact) and what the seller must do (action_required). The plugin shows it to the owner and applies auto_fixable changes to templates itself.

Parameters

NameTypeRequiredDescription
countrypathYesISO 3166-1 alpha-2
sincequeryNoVersion the caller has; only later entries are returned

Response Fields

FieldDescription
changes[].version, effective_fromVersion and the date it applies
changes[].summaryText for people
changes[].items[].rule, changeChanged rule and the kind of change
changes[].items[].impacttemplates, documents, settings or none
changes[].items[].action_required, auto_fixableWhat the owner must do; whether the plugin can do it

Example Request

curl -H "X-API-Key: YOUR_KEY" "https://baas.dapita.net/docpacks/ES/changes?since=2026.1.0"

Response (live, shortened)

{
  "changes": [
    {
      "effective_from": "2026-10-24",
      "items": [],
      "layer": "ES/country",
      "summary": {
        "en": "Initial rules",
        "es": "Reglas iniciales"
      },
      "version": "2026.10.1"
    }
  ],
  "jurisdiction": "ES",
  "since": "2026.1.0"
}

Errors

CodeWhen
400Invalid country code
401Missing or invalid API key

Try It

POST/docpacks/assets/batch

Large files referenced by packs (XSD, schematron, trusted lists, base templates) by id, up to 50 per request. Files are base64 in data; cache them by sha256. Files over the 32 MB response budget come back in deferred: ask for them again.

Parameters

NameTypeRequiredDescription
idsbodyYesAsset ids, 1–50

Response Fields

FieldDescription
assets[].asset_id, sha256, media_type, sizeFile identity
assets[].dataFile content, base64
missingUnknown ids; error is then asset_not_found
deferredIds to request in a next call

Example Request

curl -H "X-API-Key: YOUR_KEY" -H "Content-Type: application/json" -X POST "https://baas.dapita.net/docpacks/assets/batch" \
  -d '{"ids":["peppol-bis-envelope-rules-sch"]}'

Response (live, shortened)

{
  "assets": [
    {
      "asset_id": "peppol-bis-envelope-rules-sch",
      "data": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHNjaGVtYSB4bWxucz0iaHR0cDovL3B1cmwub2NsYy5vcmcvZHNkbC9zY2hlbWF0cm9u… (6284 chars)",
      "media_type": "application/xml",
      "sha256": "96648791fb824b6b58ddae9cc5575e8298e0061fc43dd0934a0b1459396d76f9",
      "size": 4713
    }
  ],
  "deferred": [],
  "error": "asset_not_found",
  "missing": [
    "no_such_asset"
  ]
}

Errors

CodeWhen
400Body is not {"ids": [...]}, 0 or more than 50 ids, or an invalid id
401Missing or invalid API key

Try It

POST/docpacks/verify-ids

Checks counterparty tax numbers in official registers (EU VIES), up to 20 per request. The register is chosen by the identifier's verification channel in the country rules. Results are cached for 24 hours.

Parameters

NameTypeRequiredDescription
items[].idbodyYesCaller's reference, echoed back
items[].jurisdictionbodyYesCountry whose rules define the identifier
items[].identifierbodyYesIdentifier id from the pack (e.g. vat_id)
items[].valuebodyYesThe number to check

Response Fields

FieldDescription
items[].validWhether the register confirms the number
items[].name, addressRegistered name and address when the register returns them
items[].checked_at, sourceWhen and in which register it was checked
items[].errorPattern mismatch, no register for this identifier, or register unavailable

Example Request

curl -H "X-API-Key: YOUR_KEY" -H "Content-Type: application/json" -X POST "https://baas.dapita.net/docpacks/verify-ids" \
  -d '{"items": [{"id": "1", "jurisdiction": "BE", "identifier": "vat_id", "value": "BE0403170701"}]}'

Response (live, shortened)

{
  "items": [
    {
      "address": "Boulevard Simon Bolivar 36\n1000 Bruxelles",
      "checked_at": "2026-10-24T14:36:05Z",
      "id": "1",
      "name": "SA ELECTRABEL",
      "source": "vies",
      "valid": true
    }
  ]
}

Errors

CodeWhen
400Body is not {"items": [...]}, or has 0 or more than 20 items
401Missing or invalid API key

Try It

GET/vat/validate/{vat_number}

Validate EU VAT number via VIES service. Rate limited: 1 request per 10 seconds.

Parameters

NameTypeRequiredDescription
vat_numberstringYesVAT number with country prefix (e.g. ESB12345678)

Example Request

curl -H "X-API-Key: YOUR_KEY" https://baas.dapita.net/vat/validate/ESB12345678

Response

{"valid":true,"country_code":"ES","vat_number":"B12345678","company_name":"Example Company SL","company_address":"Calle Example 123, Madrid"}

Try It

GET/phone/validate/{number}

Validate phone number and get carrier information.

Parameters

NameTypeRequiredDescription
numberstringYesPhone number with country code (e.g. +34612345678)

Example Request

curl -H "X-API-Key: YOUR_KEY" https://baas.dapita.net/phone/validate/+34612345678

Response

{"valid":true,"number":"+34612345678","country_code":"ES","national_number":"612345678","type":"mobile","carrier":"Syma","formatted":{"international":"+34 612 34 56 78","national":"612 34 56 78","e164":"+34612345678"}}

Try It

GET/phone/format/{number}

Format phone number in various formats (international, national, E.164).

Parameters

NameTypeRequiredDescription
numberstringYesPhone number with country code

Example Request

curl -H "X-API-Key: YOUR_KEY" https://baas.dapita.net/phone/format/+34612345678

Response

{"number":"+34612345678","formatted":{"international":"+34 612 34 56 78","national":"612 34 56 78","e164":"+34612345678"}}

Try It

GET/phone/mask/{country}

Get phone input mask for a country.

Parameters

NameTypeRequiredDescription
countrystringYesISO 2-letter country code

Example Request

curl -H "X-API-Key: YOUR_KEY" https://baas.dapita.net/phone/mask/ES

Response

{"country_code":"ES","country_name":"Spain","dial_code":"+34","mask":"### ## ## ##","example":"+34 810 12 34 56"}

Try It

GET/email/validate/{email}

Validate email address with syntax and MX record check. Rate limited: 1 request per 5 seconds.

Parameters

NameTypeRequiredDescription
emailstringYesEmail address to validate

Example Request

curl -H "X-API-Key: YOUR_KEY" https://baas.dapita.net/email/validate/test@gmail.com

Response

{"email":"test@gmail.com","valid":true,"syntax_valid":true,"mx_valid":true,"mx_records":["gmail-smtp-in.l.google.com","alt1.gmail-smtp-in.l.google.com",...],"domain":"gmail.com"}

Try It

GET/timezone/{location}

Get timezone information and current time for a location.

Parameters

NameTypeRequiredDescription
locationstringYesIANA timezone identifier (e.g. Europe/Madrid)

Example Request

curl -H "X-API-Key: YOUR_KEY" https://baas.dapita.net/timezone/Europe/Madrid

Response

{"timezone":"Europe/Madrid","offset":"+01:00","offset_seconds":3600,"current_time":"2025-12-29T12:53:42+01:00","is_dst":false}

Try It

GET/timezones

Get all world timezones with country bindings. Filter by country code.

Parameters

NameTypeRequiredDescription
countryqueryNoISO 2-letter country code to filter (e.g. ES, RU, US)

Example Request

curl -H "X-API-Key: YOUR_KEY" "https://baas.dapita.net/timezones?country=ES"

Response

{"count":6,"timezones":[{"timezone":"Europe/Madrid","utc_offset":"+01:00","offset_seconds":3600,"countries":[{"code":"ES","name":"Spain"}]},...]}

Try It

GET/business-day/{country}/{date}

Check if a date is a business day (not weekend or holiday).

Parameters

NameTypeRequiredDescription
countrystringYesISO 2-letter country code
datestringYesDate in YYYY-MM-DD format

Example Request

curl -H "X-API-Key: YOUR_KEY" https://baas.dapita.net/business-day/ES/2025-12-25

Response

{"date":"2025-12-25","country_code":"ES","is_business_day":false,"is_weekend":false,"is_holiday":true,"holiday_name":"Christmas Day","day_of_week":"Thursday"}

Try It

GET/holiday/{country}/{year}

Get public holidays for a country and year.

Parameters

NameTypeRequiredDescription
countrystringYesISO 2-letter country code
yearintYesYear (e.g. 2025)
typequeryNoFilter by holiday type (e.g. Public)

Example Request

curl -H "X-API-Key: YOUR_KEY" https://baas.dapita.net/holiday/ES/2025

Response

{"country_code":"ES","year":2025,"holidays":[{"date":"2025-01-01","name":"New Year's Day"},{"date":"2025-01-06","name":"Epiphany"},{"date":"2025-12-25","name":"Christmas Day"},...]}

Try It

GET/languages

Get all world languages with country mappings.

Example Request

curl -H "X-API-Key: YOUR_KEY" https://baas.dapita.net/languages

Response

{"count":279,"languages":[{"code":"aa","name":"Afar","native_name":"Afaraf","family":"Afro-Asiatic","is_regional":false,"countries":[{"country_code":"DJ","is_official":true},...]},...]}

Try It

GET/languages/{code}

Get a single language by ISO 639 code.

Parameters

NameTypeRequiredDescription
codestringYesISO 639-1 (2-char) or ISO 639-3 (3-char) language code

Example Request

curl -H "X-API-Key: YOUR_KEY" https://baas.dapita.net/languages/es

Response

{"code":"es","name":"Spanish","native_name":"Español","family":"Indo-European","is_regional":false,"countries":[{"country_code":"ES","is_official":true},{"country_code":"MX","is_official":true},...]}

Try It

GET/languages/country/{code}

Get all languages spoken in a country, including regional and minority languages.

Parameters

NameTypeRequiredDescription
codestringYesISO 3166-1 alpha-2 country code

Example Request

curl -H "X-API-Key: YOUR_KEY" https://baas.dapita.net/languages/country/ES

Response

{"count":8,"languages":[{"code":"es","name":"Spanish","native_name":"Español","family":"Indo-European","is_regional":false,"countries":[{"country_code":"ES","is_official":true}]},{"code":"ca","name":"Catalan","native_name":"Català",...},...]}

Try It

POST/language/detect

Detect the language of a text.

Request Body

NameTypeRequiredDescription
textstringYesText to analyze

Example Request

curl -X POST -H "X-API-Key: YOUR_KEY" -H "Content-Type: application/json" \
  -d '{"text":"Hola, ¿cómo estás?"}' \
  https://baas.dapita.net/language/detect

Response

{"language":"Spanish","code":"es","confidence":0.66}

Try It

POST/useragent/parse

Parse User-Agent string to get browser, OS, and device information.

Request Body

NameTypeRequiredDescription
user_agentstringYesUser-Agent string to parse

Example Request

curl -X POST -H "X-API-Key: YOUR_KEY" -H "Content-Type: application/json" \
  -d '{"user_agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"}' \
  https://baas.dapita.net/useragent/parse

Response

{"user_agent":"Mozilla/5.0...","browser":"Chrome","browser_version":"120.0","os":"Windows 10/11","os_version":"10.0","device":"PC","is_mobile":false,"is_tablet":false,"is_desktop":true,"is_bot":false}

Try It

GET/whois/{domain}

Get WHOIS information for a domain.

Parameters

NameTypeRequiredDescription
domainstringYesDomain name (e.g. google.com)

Example Request

curl -H "X-API-Key: YOUR_KEY" https://baas.dapita.net/whois/google.com

Response

{"domain":"google.com","registrar":"MarkMonitor Inc.","created_date":"1997-09-15T04:00:00Z","expiry_date":"2028-09-14T04:00:00Z","updated_date":"2019-09-09T15:39:04Z","name_servers":["ns1.google.com","ns2.google.com","ns3.google.com","ns4.google.com"],"domain_available":false}

Try It

GET/ip-lists/{dataset}?version={version}

Official IP ranges in three ready-to-use datasets: verified crawlers and services to exempt from rate limits, known malicious networks to block or challenge, and cloud data centers to rate-limit harder. Ranges come straight from the publishers (Google, Bing, Apple, OpenAI, Stripe, Cloudflare, Spamhaus, AWS and others), are validated, deduplicated and merged into the shortest equivalent list. Collected once a day at 03:00 UTC; a source that fails keeps its previous data, so a dataset is never published empty or truncated.

Parameters

NameTypeRequiredDescription
datasetpathYesverified-bots, threat-ips or datacenter-ips
versionqueryNoVersion you already hold. If it is still current, the answer is only {"version","not_modified":true} (about 100 bytes)

Datasets

DatasetCategoriesUseSize (gzip)
verified-botssearch, ai-search, ai-training, payment, cdnExempt from rate limits~1,250 ranges, ~6 KB
threat-ipsdrop, tor, attackBlock or challenge~30,500 ranges, ~140 KB
datacenter-ipsaws, gcpStricter limits, no block~4,600 ranges, ~15 KB

Categories

CategorySources
searchGooglebot, Google special crawlers, Google user-triggered fetchers, Bingbot, Applebot, DuckDuckBot
ai-searchOAI-SearchBot, ChatGPT-User, PerplexityBot, Perplexity-User. Bring visitors from AI answers
ai-trainingGPTBot, CCBot. Collect training data, bring no visitors
paymentStripe webhooks
cdnCloudflare. Needed to read the real client IP behind the proxy
dropSpamhaus DROP v4 and v6: hijacked and criminal networks
torTor exit nodes
attackblocklist.de, CINS Army: hosts seen attacking SSH, mail and logins
aws, gcpAmazon Web Services and Google Cloud ranges

Example Requests

# Full dataset, gzip
curl --compressed -H "X-API-Key: YOUR_KEY" https://baas.dapita.net/ip-lists/verified-bots

# Daily refresh: send the version you hold
curl --compressed -H "X-API-Key: YOUR_KEY" "https://baas.dapita.net/ip-lists/verified-bots?version=ccd368b3331dcaa510ef2fe84507ff4bdc206678d89f2675d7c2216430ce52bf"

Response

{"dataset":"verified-bots","version":"ccd368b3331dcaa510ef2fe84507ff4bdc206678d89f2675d7c2216430ce52bf","updated_at":"2026-10-23T22:10:40Z","sources":{"googlebot":{"category":"search","created":"2026-10-23T14:45:59Z","count":317,"fetched_at":"2026-10-23T22:10:40Z","status":"ok"}},"categories":{"search":["66.249.64.0/27","2001:4860:4801:10::/64"],"ai-search":["..."],"ai-training":["..."],"payment":["..."],"cdn":["..."]}}

# Version unchanged
{"version":"ccd368b3331dcaa510ef2fe84507ff4bdc206678d89f2675d7c2216430ce52bf","not_modified":true}

Notes

version is a SHA-256 of the dataset content and changes only when the ranges change. Refresh once a day and store the last answer; a not_modified answer costs one credit like any request. status of a source is stale when its last fetch failed and the previous data is served. Spamhaus data requires attribution, carried in the notice field of its sources. Each category is ready for an nginx geo block or a firewall set.

Try It

GET/ip-lists/check/{ip}

Checks one IPv4 or IPv6 address against all three IP list datasets and returns the most specific matching range of each, with its source. Answered from memory in under a microsecond, no database access. Use it at decision points such as registration, checkout, review forms or admin login; for per-request filtering download the full datasets with /ip-lists/{dataset}.

Parameters

NameTypeRequiredDescription
ippathYesIPv4 or IPv6 address

Example Requests

curl -H "X-API-Key: YOUR_KEY" https://baas.dapita.net/ip-lists/check/66.249.66.1

curl -H "X-API-Key: YOUR_KEY" https://baas.dapita.net/ip-lists/check/2001:4860:4801:10::1

Response

{"ip":"66.249.66.1","verified_bot":{"category":"search","source":"googlebot","cidr":"66.249.66.0/27"},"threat":null,"datacenter":null}

{"ip":"2.26.97.42","verified_bot":null,"threat":{"category":"tor","source":"tor-exit","cidr":"2.26.97.42/32"},"datacenter":null}

Notes

verified_bot, threat and datacenter are always present; null means the address is in no range of that dataset. An invalid address returns 400 {"error":"invalid_ip"}.

Try It

GET/dns/lookup/{domain}?type={type}

DNS lookup for domain. Returns A, AAAA, MX, TXT, CNAME, or NS records. Useful for email validation and domain verification.

Parameters

NameTypeRequiredDescription
domainstringYesDomain name (e.g. google.com)
typequeryNoRecord type: A, AAAA, MX, TXT, CNAME, NS (default: A)

Example Request

curl -H "X-API-Key: YOUR_KEY" "https://baas.dapita.net/dns/lookup/google.com?type=MX"

Response

{"domain":"google.com","query_type":"MX","records":[{"host":"smtp.google.com","priority":10}],"count":1}

Try It

This Month
0
of 0 limit
Errors
0
Success Rate
-
Avg Response
-

📈 Requests Over Time

🎯 Requests by Endpoint

⚠️ Errors by Endpoint

EndpointRequestsErrorsError RateLast Error
No errors

📋 Detailed Stats

DateEndpointRequestsErrorsAvg Response
Select a project
CURRENT PLAN

Free ForeverFree

1,000 requests/month • 5 requests/hour

Free Forever

£0/forever
  • ✓ 1,000 requests/month
  • ✓ 5 requests/hour
  • ✓ All 30+ APIs
  • ✓ 1 organization
  • ✓ 1 project
  • ✓ 1 API key
  • ✗ IP Whitelist
  • ✗ Support

Pay-as-you-go

£5/month
  • ✓ 5,000 requests/month
  • ✓ 20 requests/hour
  • ✓ All 30+ APIs
  • ✓ 3 organizations
  • ✓ 3 projects each
  • ✓ 3 API keys per project
  • ✓ Email support
  • +£5 per 5,000 extra

Scale

£30/month
  • ✓ 500,000 requests/month
  • ✓ 700 requests/hour
  • ✓ All 30+ APIs
  • ✓ Unlimited organizations
  • ✓ Unlimited projects
  • ✓ Unlimited API keys
  • ✓ IP Whitelist
  • ✓ SLA 99.9%
  • ✓ Dedicated support

⚡ API Rate Limits

▼

Enterprise

Custom limits, dedicated infrastructure, SLA guarantees.

Contact Sales

Top Up Extra Requests

Need more requests? Purchase extra requests that never expire.

Billing History

DateDescriptionAmountStatusInvoice
No billing history yet

🔒 Secure payment via Stripe. Cancel anytime. All prices in GBP.