Document template · eu.trade.oss_return
One-Stop Shop VAT Return
- Render-verified
- Official document
- Version 1.0.0
Quarterly OSS return covering B2C distance sales of goods and B2C telecommunications/broadcasting/electronic services supplied from one member state into another, above the €10 000 EU-wide threshold. Filed in the member state of identification; VAT is allocated to each member state of consumption.
JSON Schema
Fields in this template
Data sent to the API is validated against the template’s JSON Schema before anything is rendered. This template defines 27 fields:
| Field | Required | Type | Description |
|---|---|---|---|
| declarant | Required | object | |
| declarant.name | Required | string | |
| declarant.oss_id | Required | string | OSS scheme identifier (often EUxxxyyyyy). |
| declarant.member_state_of_identification | Required | string | |
| declarant.address | Optional | string | |
| declarant.contact_email | Optional | string | |
| period | Required | object | |
| period.year | Required | integer | |
| period.quarter | Required | integer | |
| scheme | Optional | enum | Union scheme (EU suppliers) vs non-Union scheme (non-EU suppliers of services). Union by default. |
| supplies | Required | array of object | One entry per member state of consumption × VAT rate. |
| supplies[].member_state_of_consumption | Required | string | |
| supplies[].supply_type | Required | enum | |
| supplies[].vat_rate_type | Required | enum | |
| supplies[].vat_rate | Required | number | |
| supplies[].taxable_amount | Required | number | |
| supplies[].vat_amount | Required | number | |
| corrections | Optional | array of object | Corrections to earlier OSS returns (Art. 61a IR 282/2011). |
| corrections[].period_corrected | Required | string | YYYY-Qn of the period being corrected. |
| corrections[].member_state_of_consumption | Required | string | |
| corrections[].vat_amount_adjustment | Required | number | |
| totals | Required | object | |
| totals.currency | Required | string | |
| totals.total_taxable_amount | Optional | number | |
| totals.total_vat_due | Required | number | |
| filed_on | Optional | date | |
| reference | Optional | string |
POST /render
Generate it
One POST /render call: send your JSON, get the finished PDF back. Or skip the JSON entirely and describe the document in plain language on chut.app.
curl -X POST https://api.papii.eu/render \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"template": "eu.trade.oss_return",
"data": { ... },
"options": {"language": "en"}
}' -o oss-return.pdf Frequently asked questions
What is “One-Stop Shop VAT Return”?
Quarterly OSS return covering B2C distance sales of goods and B2C telecommunications/broadcasting/electronic services supplied from one member state into another, above the €10 000 EU-wide threshold. Filed in the member state of identification; VAT is allocated to each member state of consumption. On papii this document is available as template eu.trade.oss_return: a JSON Schema plus a deterministic PDF renderer, so the same data always produces the same document.
Can I generate a One-Stop Shop VAT Return with AI?
Yes. chut.app — the AI back office papii powers — fills this template from a plain-language description: you describe the document in one sentence, the AI structures the data, papii validates it against the schema and renders the PDF. Developers can also call the papii API directly with structured JSON.
Is the One-Stop Shop VAT Return template legally compliant?
This template is render-verified: its schema, sample data and PDF output are automatically tested on every release. It is published with status “ready”, meaning it has not yet been through papii’s final legal review. Where it references specific legislation, that is stated in the template description — always have a professional check documents with legal effect before relying on them.