> ## Documentation Index
> Fetch the complete documentation index at: https://docs.invopop.com/llms.txt
> Use this file to discover all available pages before exploring further.

# RO e-Factura issuing invoices guide

> Issue CIUS-RO invoices through Romania's RO e-Factura system.

## Introduction

[RO e-Factura](https://mfinante.gov.ro/ro/web/efactura) is Romania's mandatory national e-invoicing system, run by the Ministry of Finance and [ANAF](https://www.anaf.ro). Every B2B invoice [in scope](https://docs.invopop.com/compliance/romania.md#what-is-out-of-scope) must be uploaded within 5 working days of issue, and B2C invoices are reported the same way. The platform validates each invoice and seals it with the Ministry of Finance signature: the sealed XML is the legal invoice.

Invoices are encoded in UBL 2.1 following CIUS-RO, the Romanian profile of EN 16931. Invopop builds the XML from your GOBL invoice, checks it against the official ANAF schematron, uploads it and waits for ANAF's decision.

This guide covers three key processes:

* [Invoice issuance](#send-an-invoice): Creating and sending CIUS-RO invoices through RO e-Factura
* [Corrections](#correct-an-invoice): Credit notes and corrective invoices for accepted invoices
* [Special cases](#special-cases): B2C, self-billed and accounting invoices

For registering parties (suppliers) with RO e-Factura, see the companion guide: [Romania: Supplier registration](https://docs.invopop.com/guides/ro-efactura-supplier.md).

Invopop supports two use cases that require different configurations:

* **Send only**: You issue invoices through RO e-Factura on behalf of your suppliers. This is the simplest setup and does not require the Cron app or the sync and import workflows.
* **Send & receive**: In addition to sending, you also want to automatically import invoices received by your suppliers. This requires the Cron app to periodically check for new invoices.

The table below summarizes which components are needed for each use case:

| Component | Send only | Send & receive |
| - | :-: | :-: |
| Romania app | ✓ | ✓ |
| Cron app | — | ✓ |
| Generate & send workflow | ✓ | ✓ |
| Import invoice workflow | — | ✓ |
| Sync received invoices workflow | — | ✓ |
| Registration workflow | [Without the subscribe step](https://docs.invopop.com/guides/ro-efactura-supplier.md#setup) | [With the subscribe step](https://docs.invopop.com/guides/ro-efactura-supplier.md#setup) |

| - | Sandbox | Live |
| - | - | - |
| **Supplier** | Registered party with a real CIF | Registered party with a real CIF |
| **Environment** | ANAF test environment, documents have no fiscal value | ANAF production environment |

## Prerequisites

To issue invoices through RO e-Factura, you will need:

* **A registered party (supplier)**: follow the [RO e-Factura supplier registration guide](https://docs.invopop.com/guides/ro-efactura-supplier.md) to connect the Romania app and register the party with ANAF before issuing.
* **Customer details**, including their Romanian CIF for domestic B2B invoices, and their address with county.
* **Line items** with quantities, prices, and applicable VAT rates.

## Setup

All of the following steps must be carried out from the [Invopop Console](https://console.invopop.com).

> [!NOTE]
>
> The Romania app must already be connected and the party registered with ANAF — both are covered in the [supplier registration guide](https://docs.invopop.com/guides/ro-efactura-supplier.md).

**1. Configure the invoice sending workflow**

This workflow numbers the invoice, converts it to CIUS-RO XML, signs it, sends it to RO e-Factura and renders a PDF:

1. **Set state** to Processing.
2. **Add sequential code** gives the invoice its number.
3. **Generate e-Factura XML** converts the GOBL invoice to CIUS-RO, checks it against the ANAF schematron and attaches it as `efactura.xml`.
4. **Sign envelope** seals the GOBL document so it can no longer change.
5. **Send e-Factura XML to ANAF** uploads the XML and waits until ANAF accepts or rejects it. On acceptance, the official XML returned by ANAF is attached as `anaf-efactura.xml` and the invoice is stamped with the ANAF upload ID and response date.
6. **Generate PDF** renders a PDF of the invoice in Romanian to hand to your customer.
7. **Set state** to Sent.

> [!WARNING]
>
> Keep **Sign envelope** before **Send e-Factura XML to ANAF**. Invopop stamps the invoice after sending it, and only a signed invoice can be stamped: the send step fails on an unsigned one.

> [tab] Workflow

> [tab] Code
>
> Copy and paste into a new [Empty Invoice workflow](https://console.invopop.com/redirect/workflows/new?template=empty-invoice) code view.
>
> ```json RO generate & send workflow theme={"system"}
> {
>     "name": "RO generate & send",
>     "description": "Generate the RO e-Factura XML of an invoice and send it to ANAF",
>     "schema": "bill/invoice",
>     "steps": [
>         {
>             "id": "ee1c73d0-bcc4-11f1-bf89-fb0eed7855a8",
>             "name": "Set state",
>             "provider": "silo.state",
>             "summary": "Set state to `processing`{.state .processing}",
>             "config": {
>                 "state": "processing"
>             }
>         },
>         {
>             "id": "f3508b70-bcc4-11f1-bf89-fb0eed7855a8",
>             "name": "Add sequential code",
>             "provider": "sequence.enumerate",
>             "summary": "Dynamic · E-Factura · 000001",
>             "config": {
>                 "name": "E-Factura",
>                 "padding": 6,
>                 "start": 1
>             }
>         },
>         {
>             "id": "2cd5d320-d875-11f1-b91e-5f8b984fb663",
>             "name": "Generate e-Factura XML",
>             "provider": "gov-ro.generate"
>         },
>         {
>             "id": "13ae7af0-d893-11f1-a9c3-b52662ba5583",
>             "name": "Sign envelope",
>             "provider": "silo.sign"
>         },
>         {
>             "id": "03dfe4e0-bcc5-11f1-bf89-fb0eed7855a8",
>             "name": "Send e-Factura XML to ANAF",
>             "provider": "gov-ro.send"
>         },
>         {
>             "id": "9380fe70-d86f-11f1-bad9-0977cf1b74dd",
>             "name": "Generate PDF",
>             "provider": "pdf",
>             "summary": "Romanian · A4",
>             "config": {
>                 "currency_template": "",
>                 "date_format": "%Y-%m-%d",
>                 "decimal_mark": "",
>                 "duplicate": false,
>                 "label": "",
>                 "layout": "A4",
>                 "locale": "ro",
>                 "logo_height": 40,
>                 "negative_template": "",
>                 "scripting": false,
>                 "thousands_separator": "",
>                 "time_format": "%H:%M",
>                 "watermark": ""
>             }
>         },
>         {
>             "id": "0779d480-bcc5-11f1-bf89-fb0eed7855a8",
>             "name": "Set state",
>             "provider": "silo.state",
>             "summary": "Set state to `sent`{.state .sent}",
>             "config": {
>                 "state": "sent"
>             }
>         }
>     ],
>     "rescue": [
>         {
>             "id": "0b90bc50-bcc5-11f1-bf89-fb0eed7855a8",
>             "name": "Set state",
>             "provider": "silo.state",
>             "summary": "Set state to `error`{.state .error}",
>             "config": {
>                 "state": "error"
>             }
>         }
>     ]
> }
> ```

Keep the **Workflow ID** at hand, you'll use it later.

Have your agent issue an RO e-Factura invoice in your sandbox.

Read [https://docs.invopop.com/guides/ro-efactura.md](https://docs.invopop.com/guides/ro-efactura.md), [https://docs.invopop.com/guides/ro-efactura-supplier.md](https://docs.invopop.com/guides/ro-efactura-supplier.md) and [https://github.com/invopop/gobl.ro.anaf/blob/main/addon/README.md](https://github.com/invopop/gobl.ro.anaf/blob/main/addon/README.md). In my sandbox workspace, using the token in INVOPOP\_TOKEN and the workflow ID I give you, create a bill/invoice entry with \$addons containing ro-efactura-v1, the party I registered with ANAF as the supplier, a customer with a Romanian CIF and an address with its county in state, and the lines I describe with taxes as the VAT category plus a rate key. Do not write totals or percentages and do not invent extension codes; start from one of the example invoices in the guide. Run the workflow with wait=30, then fetch the entry and report its state, the stamps in the envelope header, the attached efactura.xml, anaf-efactura.xml and PDF, and any faults with the errors ANAF returned explained using [https://docs.invopop.com/faq/romania.md](https://docs.invopop.com/faq/romania.md).

## Running

In this section, we'll provide details on how to issue invoices on behalf of a registered party.

### Send an invoice

Once a party is registered, you can issue invoices on their behalf.

> [!TIP]
>
> GOBL invoices sent to RO e-Factura must include the `ro-efactura-v1` addon in `$addons`, which applies the CIUS-RO rules on top of EN 16931.

**1. Upload an invoice**

Use the [Create an entry](https://docs.invopop.com/api-ref/silo/entries/create-an-entry-put.md) endpoint to upload the invoice details. Include an [invoice](https://docs.gobl.org/draft-0/bill/invoice) object in the [data](https://docs.invopop.com/api-ref/silo/entries/create-an-entry-put.md#body-data) field with these required fields:

* `$addons`: include [`ro-efactura-v1`](https://github.com/invopop/gobl.ro.anaf/tree/main/addon)
* `supplier`: use the details of the party you've registered before
* `customer`: the Romanian CIF for domestic B2B invoices, and the address with its county in `state`

You can copy one of the example invoices below as a reference. They are partial [GOBL](https://docs.gobl.org) documents you can also paste directly into the [Invopop Console](https://console.invopop.com), then click **Build** and **Save**.

> [accordion] B2B standard invoice
>
> In this example, we're issuing a standard B2B invoice from a Romanian supplier to another Romanian business customer.
>
> Notice:
>
> * the minimal version in the first tab contains only the essential fields required to create the invoice,
> * the [`ro-efactura-v1`](https://github.com/invopop/gobl.ro.anaf/tree/main/addon) addon ensures the document is validated using the national CIUS-RO rules (BR-RO) on top of EN 16931,
> * addresses in Romania carry the county as `state` (ISO 3166-2:RO code, `B` for Bucharest), and Bucharest addresses use the sector as `locality`,
> * payment terms are required whenever an amount is due,
> * the built version in the second tab shows the calculated totals and the `untdid-document-type` extension set to `380`, and,
> * make sure to process it with the "RO generate & send" workflow created during setup.
>
> ```json B2B standard invoice theme={"system"}
> {
>   "$schema": "https://gobl.org/draft-0/bill/invoice",
>   "$addons": [
>     "ro-efactura-v1"
>   ],
>   "series": "FCT",
>   "code": "0001",
>   "issue_date": "2026-10-26",
>   "currency": "RON",
>   "supplier": {
>     "name": "Exemplu Digital SRL",
>     "tax_id": {
>       "country": "RO",
>       "code": "12345674"
>     },
>     "addresses": [
>       {
>         "num": "10",
>         "street": "Strada Exemplu",
>         "locality": "Sector 1",
>         "state": "B",
>         "code": "010101",
>         "country": "RO"
>       }
>     ],
>     "emails": [
>       {
>         "addr": "facturare@exemplu.ro"
>       }
>     ]
>   },
>   "customer": {
>     "name": "Client Test SRL",
>     "tax_id": {
>       "country": "RO",
>       "code": "34567892"
>     },
>     "addresses": [
>       {
>         "num": "25",
>         "street": "Strada Memorandumului",
>         "locality": "Cluj-Napoca",
>         "state": "CJ",
>         "code": "400114",
>         "country": "RO"
>       }
>     ]
>   },
>   "lines": [
>     {
>       "quantity": "10",
>       "item": {
>         "name": "Servicii de dezvoltare software",
>         "price": "150.00",
>         "unit": "h"
>       },
>       "taxes": [
>         {
>           "cat": "VAT",
>           "rate": "standard"
>         }
>       ]
>     }
>   ],
>   "payment": {
>     "terms": {
>       "notes": "Plata in 30 de zile"
>     }
>   }
> }
> ```
>
> ```json Built version theme={"system"}
> {
> 	"$schema": "https://gobl.org/draft-0/bill/invoice",
> 	"$regime": "RO",
> 	"$addons": [
> 		"eu-en16931-v2017",
> 		"ro-efactura-v1"
> 	],
> 	"type": "standard",
> 	"series": "FCT",
> 	"code": "0001",
> 	"issue_date": "2026-10-26",
> 	"currency": "RON",
> 	"tax": {
> 		"rounding": "currency",
> 		"ext": {
> 			"untdid-document-type": "380"
> 		}
> 	},
> 	"supplier": {
> 		"name": "Exemplu Digital SRL",
> 		"tax_id": {
> 			"country": "RO",
> 			"code": "12345674"
> 		},
> 		"addresses": [
> 			{
> 				"num": "10",
> 				"street": "Strada Exemplu",
> 				"locality": "SECTOR1",
> 				"region": "RO-B",
> 				"state": "B",
> 				"code": "010101",
> 				"country": "RO"
> 			}
> 		],
> 		"emails": [
> 			{
> 				"addr": "facturare@exemplu.ro"
> 			}
> 		]
> 	},
> 	"customer": {
> 		"name": "Client Test SRL",
> 		"tax_id": {
> 			"country": "RO",
> 			"code": "34567892"
> 		},
> 		"addresses": [
> 			{
> 				"num": "25",
> 				"street": "Strada Memorandumului",
> 				"locality": "Cluj-Napoca",
> 				"region": "RO-CJ",
> 				"state": "CJ",
> 				"code": "400114",
> 				"country": "RO"
> 			}
> 		]
> 	},
> 	"lines": [
> 		{
> 			"i": 1,
> 			"quantity": "10",
> 			"item": {
> 				"name": "Servicii de dezvoltare software",
> 				"price": "150.00",
> 				"unit": "h"
> 			},
> 			"sum": "1500.00",
> 			"taxes": [
> 				{
> 					"cat": "VAT",
> 					"key": "standard",
> 					"rate": "general",
> 					"percent": "21.0%",
> 					"ext": {
> 						"untdid-tax-category": "S"
> 					}
> 				}
> 			],
> 			"total": "1500.00"
> 		}
> 	],
> 	"payment": {
> 		"terms": {
> 			"notes": "Plata in 30 de zile"
> 		}
> 	},
> 	"totals": {
> 		"sum": "1500.00",
> 		"total": "1500.00",
> 		"taxes": {
> 			"categories": [
> 				{
> 					"code": "VAT",
> 					"rates": [
> 						{
> 							"key": "standard",
> 							"ext": {
> 								"untdid-tax-category": "S"
> 							},
> 							"base": "1500.00",
> 							"percent": "21.0%",
> 							"amount": "315.00"
> 						}
> 					],
> 					"amount": "315.00"
> 				}
> 			],
> 			"sum": "315.00"
> 		},
> 		"tax": "315.00",
> 		"total_with_tax": "1815.00",
> 		"payable": "1815.00"
> 	}
> }
> ```

> [accordion] B2C standard invoice
>
> In this example, the supplier issues an invoice to a consumer without a tax ID.
>
> Notice:
>
> * the customer has no `tax_id`, so Invopop uploads the invoice to ANAF's B2C endpoint,
> * the built version adds the thirteen zeros CNP (`0000000000000`) that Romanian law requires for a consumer without an identifier, and,
> * if the consumer gives you their CNP, add it as a `CNP` identity on the customer instead.
>
> ```json B2C standard invoice theme={"system"}
> {
>   "$schema": "https://gobl.org/draft-0/bill/invoice",
>   "$addons": [
>     "ro-efactura-v1"
>   ],
>   "series": "FCT",
>   "code": "0002",
>   "issue_date": "2026-10-26",
>   "currency": "RON",
>   "supplier": {
>     "name": "Exemplu Digital SRL",
>     "tax_id": {
>       "country": "RO",
>       "code": "12345674"
>     },
>     "addresses": [
>       {
>         "num": "10",
>         "street": "Strada Exemplu",
>         "locality": "Sector 1",
>         "state": "B",
>         "code": "010101",
>         "country": "RO"
>       }
>     ],
>     "emails": [
>       {
>         "addr": "facturare@exemplu.ro"
>       }
>     ]
>   },
>   "customer": {
>     "name": "Ion Popescu",
>     "addresses": [
>       {
>         "num": "5",
>         "street": "Strada Florilor",
>         "locality": "Brasov",
>         "state": "BV",
>         "code": "500001",
>         "country": "RO"
>       }
>     ]
>   },
>   "lines": [
>     {
>       "quantity": "10",
>       "item": {
>         "name": "Servicii de dezvoltare software",
>         "price": "150.00",
>         "unit": "h"
>       },
>       "taxes": [
>         {
>           "cat": "VAT",
>           "rate": "standard"
>         }
>       ]
>     }
>   ],
>   "payment": {
>     "terms": {
>       "notes": "Plata in 30 de zile"
>     }
>   }
> }
> ```
>
> ```json Built version theme={"system"}
> {
> 	"$schema": "https://gobl.org/draft-0/bill/invoice",
> 	"$regime": "RO",
> 	"$addons": [
> 		"eu-en16931-v2017",
> 		"ro-efactura-v1"
> 	],
> 	"type": "standard",
> 	"series": "FCT",
> 	"code": "0002",
> 	"issue_date": "2026-10-26",
> 	"currency": "RON",
> 	"tax": {
> 		"rounding": "currency",
> 		"ext": {
> 			"untdid-document-type": "380"
> 		}
> 	},
> 	"supplier": {
> 		"name": "Exemplu Digital SRL",
> 		"tax_id": {
> 			"country": "RO",
> 			"code": "12345674"
> 		},
> 		"addresses": [
> 			{
> 				"num": "10",
> 				"street": "Strada Exemplu",
> 				"locality": "SECTOR1",
> 				"region": "RO-B",
> 				"state": "B",
> 				"code": "010101",
> 				"country": "RO"
> 			}
> 		],
> 		"emails": [
> 			{
> 				"addr": "facturare@exemplu.ro"
> 			}
> 		]
> 	},
> 	"customer": {
> 		"name": "Ion Popescu",
> 		"identities": [
> 			{
> 				"scope": "legal",
> 				"type": "CNP",
> 				"code": "0000000000000"
> 			}
> 		],
> 		"addresses": [
> 			{
> 				"num": "5",
> 				"street": "Strada Florilor",
> 				"locality": "Brasov",
> 				"region": "RO-BV",
> 				"state": "BV",
> 				"code": "500001",
> 				"country": "RO"
> 			}
> 		]
> 	},
> 	"lines": [
> 		{
> 			"i": 1,
> 			"quantity": "10",
> 			"item": {
> 				"name": "Servicii de dezvoltare software",
> 				"price": "150.00",
> 				"unit": "h"
> 			},
> 			"sum": "1500.00",
> 			"taxes": [
> 				{
> 					"cat": "VAT",
> 					"key": "standard",
> 					"rate": "general",
> 					"percent": "21.0%",
> 					"ext": {
> 						"untdid-tax-category": "S"
> 					}
> 				}
> 			],
> 			"total": "1500.00"
> 		}
> 	],
> 	"payment": {
> 		"terms": {
> 			"notes": "Plata in 30 de zile"
> 		}
> 	},
> 	"totals": {
> 		"sum": "1500.00",
> 		"total": "1500.00",
> 		"taxes": {
> 			"categories": [
> 				{
> 					"code": "VAT",
> 					"rates": [
> 						{
> 							"key": "standard",
> 							"ext": {
> 								"untdid-tax-category": "S"
> 							},
> 							"base": "1500.00",
> 							"percent": "21.0%",
> 							"amount": "315.00"
> 						}
> 					],
> 					"amount": "315.00"
> 				}
> 			],
> 			"sum": "315.00"
> 		},
> 		"tax": "315.00",
> 		"total_with_tax": "1815.00",
> 		"payable": "1815.00"
> 	}
> }
> ```

> [accordion] B2B credit note
>
> In this example, we're issuing a credit note (type code `381`) to refund part of a previous invoice.
>
> Notice:
>
> * the `type` field is set to `credit-note`,
> * the `preceding` field references the original invoice by `series`, `code` and `issue_date`,
> * quantities and amounts are expressed as positive values, as in every GOBL credit note, and,
> * the built version shows the `untdid-document-type` extension set to `381`.
>
> ```json B2B credit note theme={"system"}
> {
>   "$schema": "https://gobl.org/draft-0/bill/invoice",
>   "$addons": [
>     "ro-efactura-v1"
>   ],
>   "series": "CN",
>   "code": "0001",
>   "issue_date": "2026-10-26",
>   "currency": "RON",
>   "supplier": {
>     "name": "Exemplu Digital SRL",
>     "tax_id": {
>       "country": "RO",
>       "code": "12345674"
>     },
>     "addresses": [
>       {
>         "num": "10",
>         "street": "Strada Exemplu",
>         "locality": "Sector 1",
>         "state": "B",
>         "code": "010101",
>         "country": "RO"
>       }
>     ],
>     "emails": [
>       {
>         "addr": "facturare@exemplu.ro"
>       }
>     ]
>   },
>   "customer": {
>     "name": "Client Test SRL",
>     "tax_id": {
>       "country": "RO",
>       "code": "34567892"
>     },
>     "addresses": [
>       {
>         "num": "25",
>         "street": "Strada Memorandumului",
>         "locality": "Cluj-Napoca",
>         "state": "CJ",
>         "code": "400114",
>         "country": "RO"
>       }
>     ]
>   },
>   "lines": [
>     {
>       "quantity": "2",
>       "item": {
>         "name": "Servicii de dezvoltare software",
>         "price": "150.00",
>         "unit": "h"
>       },
>       "taxes": [
>         {
>           "cat": "VAT",
>           "rate": "standard"
>         }
>       ]
>     }
>   ],
>   "type": "credit-note",
>   "preceding": [
>     {
>       "series": "FCT",
>       "code": "0001",
>       "issue_date": "2026-10-26"
>     }
>   ]
> }
> ```
>
> ```json Built version theme={"system"}
> {
> 	"$schema": "https://gobl.org/draft-0/bill/invoice",
> 	"$regime": "RO",
> 	"$addons": [
> 		"eu-en16931-v2017",
> 		"ro-efactura-v1"
> 	],
> 	"type": "credit-note",
> 	"series": "CN",
> 	"code": "0001",
> 	"issue_date": "2026-10-26",
> 	"currency": "RON",
> 	"preceding": [
> 		{
> 			"issue_date": "2026-10-26",
> 			"series": "FCT",
> 			"code": "0001"
> 		}
> 	],
> 	"tax": {
> 		"rounding": "currency",
> 		"ext": {
> 			"untdid-document-type": "381"
> 		}
> 	},
> 	"supplier": {
> 		"name": "Exemplu Digital SRL",
> 		"tax_id": {
> 			"country": "RO",
> 			"code": "12345674"
> 		},
> 		"addresses": [
> 			{
> 				"num": "10",
> 				"street": "Strada Exemplu",
> 				"locality": "SECTOR1",
> 				"region": "RO-B",
> 				"state": "B",
> 				"code": "010101",
> 				"country": "RO"
> 			}
> 		],
> 		"emails": [
> 			{
> 				"addr": "facturare@exemplu.ro"
> 			}
> 		]
> 	},
> 	"customer": {
> 		"name": "Client Test SRL",
> 		"tax_id": {
> 			"country": "RO",
> 			"code": "34567892"
> 		},
> 		"addresses": [
> 			{
> 				"num": "25",
> 				"street": "Strada Memorandumului",
> 				"locality": "Cluj-Napoca",
> 				"region": "RO-CJ",
> 				"state": "CJ",
> 				"code": "400114",
> 				"country": "RO"
> 			}
> 		]
> 	},
> 	"lines": [
> 		{
> 			"i": 1,
> 			"quantity": "2",
> 			"item": {
> 				"name": "Servicii de dezvoltare software",
> 				"price": "150.00",
> 				"unit": "h"
> 			},
> 			"sum": "300.00",
> 			"taxes": [
> 				{
> 					"cat": "VAT",
> 					"key": "standard",
> 					"rate": "general",
> 					"percent": "21.0%",
> 					"ext": {
> 						"untdid-tax-category": "S"
> 					}
> 				}
> 			],
> 			"total": "300.00"
> 		}
> 	],
> 	"totals": {
> 		"sum": "300.00",
> 		"total": "300.00",
> 		"taxes": {
> 			"categories": [
> 				{
> 					"code": "VAT",
> 					"rates": [
> 						{
> 							"key": "standard",
> 							"ext": {
> 								"untdid-tax-category": "S"
> 							},
> 							"base": "300.00",
> 							"percent": "21.0%",
> 							"amount": "63.00"
> 						}
> 					],
> 					"amount": "63.00"
> 				}
> 			],
> 			"sum": "63.00"
> 		},
> 		"tax": "63.00",
> 		"total_with_tax": "363.00",
> 		"payable": "363.00"
> 	}
> }
> ```

> [accordion] B2B corrective invoice
>
> In this example, we're issuing a corrective invoice (type code `384`) that replaces a previous invoice.
>
> Notice:
>
> * the `type` field is set to `corrective`,
> * the `preceding` field references the original invoice by `series`, `code` and `issue_date`, and,
> * the built version shows the `untdid-document-type` extension set to `384`.
>
> ```json B2B corrective invoice theme={"system"}
> {
>   "$schema": "https://gobl.org/draft-0/bill/invoice",
>   "$addons": [
>     "ro-efactura-v1"
>   ],
>   "series": "COR",
>   "code": "0001",
>   "issue_date": "2026-10-26",
>   "currency": "RON",
>   "supplier": {
>     "name": "Exemplu Digital SRL",
>     "tax_id": {
>       "country": "RO",
>       "code": "12345674"
>     },
>     "addresses": [
>       {
>         "num": "10",
>         "street": "Strada Exemplu",
>         "locality": "Sector 1",
>         "state": "B",
>         "code": "010101",
>         "country": "RO"
>       }
>     ],
>     "emails": [
>       {
>         "addr": "facturare@exemplu.ro"
>       }
>     ]
>   },
>   "customer": {
>     "name": "Client Test SRL",
>     "tax_id": {
>       "country": "RO",
>       "code": "34567892"
>     },
>     "addresses": [
>       {
>         "num": "25",
>         "street": "Strada Memorandumului",
>         "locality": "Cluj-Napoca",
>         "state": "CJ",
>         "code": "400114",
>         "country": "RO"
>       }
>     ]
>   },
>   "lines": [
>     {
>       "quantity": "10",
>       "item": {
>         "name": "Servicii de dezvoltare software",
>         "price": "150.00",
>         "unit": "h"
>       },
>       "taxes": [
>         {
>           "cat": "VAT",
>           "rate": "standard"
>         }
>       ]
>     }
>   ],
>   "payment": {
>     "terms": {
>       "notes": "Plata in 30 de zile"
>     }
>   },
>   "type": "corrective",
>   "preceding": [
>     {
>       "series": "FCT",
>       "code": "0001",
>       "issue_date": "2026-10-26"
>     }
>   ]
> }
> ```
>
> ```json Built version theme={"system"}
> {
> 	"$schema": "https://gobl.org/draft-0/bill/invoice",
> 	"$regime": "RO",
> 	"$addons": [
> 		"eu-en16931-v2017",
> 		"ro-efactura-v1"
> 	],
> 	"type": "corrective",
> 	"series": "COR",
> 	"code": "0001",
> 	"issue_date": "2026-10-26",
> 	"currency": "RON",
> 	"preceding": [
> 		{
> 			"issue_date": "2026-10-26",
> 			"series": "FCT",
> 			"code": "0001"
> 		}
> 	],
> 	"tax": {
> 		"rounding": "currency",
> 		"ext": {
> 			"untdid-document-type": "384"
> 		}
> 	},
> 	"supplier": {
> 		"name": "Exemplu Digital SRL",
> 		"tax_id": {
> 			"country": "RO",
> 			"code": "12345674"
> 		},
> 		"addresses": [
> 			{
> 				"num": "10",
> 				"street": "Strada Exemplu",
> 				"locality": "SECTOR1",
> 				"region": "RO-B",
> 				"state": "B",
> 				"code": "010101",
> 				"country": "RO"
> 			}
> 		],
> 		"emails": [
> 			{
> 				"addr": "facturare@exemplu.ro"
> 			}
> 		]
> 	},
> 	"customer": {
> 		"name": "Client Test SRL",
> 		"tax_id": {
> 			"country": "RO",
> 			"code": "34567892"
> 		},
> 		"addresses": [
> 			{
> 				"num": "25",
> 				"street": "Strada Memorandumului",
> 				"locality": "Cluj-Napoca",
> 				"region": "RO-CJ",
> 				"state": "CJ",
> 				"code": "400114",
> 				"country": "RO"
> 			}
> 		]
> 	},
> 	"lines": [
> 		{
> 			"i": 1,
> 			"quantity": "10",
> 			"item": {
> 				"name": "Servicii de dezvoltare software",
> 				"price": "150.00",
> 				"unit": "h"
> 			},
> 			"sum": "1500.00",
> 			"taxes": [
> 				{
> 					"cat": "VAT",
> 					"key": "standard",
> 					"rate": "general",
> 					"percent": "21.0%",
> 					"ext": {
> 						"untdid-tax-category": "S"
> 					}
> 				}
> 			],
> 			"total": "1500.00"
> 		}
> 	],
> 	"payment": {
> 		"terms": {
> 			"notes": "Plata in 30 de zile"
> 		}
> 	},
> 	"totals": {
> 		"sum": "1500.00",
> 		"total": "1500.00",
> 		"taxes": {
> 			"categories": [
> 				{
> 					"code": "VAT",
> 					"rates": [
> 						{
> 							"key": "standard",
> 							"ext": {
> 								"untdid-tax-category": "S"
> 							},
> 							"base": "1500.00",
> 							"percent": "21.0%",
> 							"amount": "315.00"
> 						}
> 					],
> 					"amount": "315.00"
> 				}
> 			],
> 			"sum": "315.00"
> 		},
> 		"tax": "315.00",
> 		"total_with_tax": "1815.00",
> 		"payable": "1815.00"
> 	}
> }
> ```

> [accordion] Self-billed invoice
>
> In this example, the customer issues the invoice in the supplier's name (*autofactură*, type code `389`).
>
> Notice:
>
> * the `$tags` field includes `self-billed`,
> * the registered party issuing the invoice is the **customer**, so the customer's CIF is the one used to upload it to ANAF,
> * the built version adds the mandatory `Autofactură` note and sets the `untdid-document-type` extension to `389`, and,
> * Invopop flags the upload as self-billed (`autofactura=DA`) automatically.
>
> ```json Self-billed invoice theme={"system"}
> {
>   "$schema": "https://gobl.org/draft-0/bill/invoice",
>   "$addons": [
>     "ro-efactura-v1"
>   ],
>   "series": "AUT",
>   "code": "0001",
>   "issue_date": "2026-10-26",
>   "currency": "RON",
>   "supplier": {
>     "name": "Exemplu Digital SRL",
>     "tax_id": {
>       "country": "RO",
>       "code": "12345674"
>     },
>     "addresses": [
>       {
>         "num": "10",
>         "street": "Strada Exemplu",
>         "locality": "Sector 1",
>         "state": "B",
>         "code": "010101",
>         "country": "RO"
>       }
>     ],
>     "emails": [
>       {
>         "addr": "facturare@exemplu.ro"
>       }
>     ]
>   },
>   "customer": {
>     "name": "Client Test SRL",
>     "tax_id": {
>       "country": "RO",
>       "code": "34567892"
>     },
>     "addresses": [
>       {
>         "num": "25",
>         "street": "Strada Memorandumului",
>         "locality": "Cluj-Napoca",
>         "state": "CJ",
>         "code": "400114",
>         "country": "RO"
>       }
>     ]
>   },
>   "lines": [
>     {
>       "quantity": "10",
>       "item": {
>         "name": "Servicii de dezvoltare software",
>         "price": "150.00",
>         "unit": "h"
>       },
>       "taxes": [
>         {
>           "cat": "VAT",
>           "rate": "standard"
>         }
>       ]
>     }
>   ],
>   "payment": {
>     "terms": {
>       "notes": "Plata in 30 de zile"
>     }
>   },
>   "$tags": [
>     "self-billed"
>   ]
> }
> ```
>
> ```json Built version theme={"system"}
> {
> 	"$schema": "https://gobl.org/draft-0/bill/invoice",
> 	"$regime": "RO",
> 	"$addons": [
> 		"eu-en16931-v2017",
> 		"ro-efactura-v1"
> 	],
> 	"$tags": [
> 		"self-billed"
> 	],
> 	"type": "standard",
> 	"series": "AUT",
> 	"code": "0001",
> 	"issue_date": "2026-10-26",
> 	"currency": "RON",
> 	"tax": {
> 		"rounding": "currency",
> 		"ext": {
> 			"untdid-document-type": "389"
> 		},
> 		"notes": [
> 			{
> 				"key": "self-billed",
> 				"text": "Autofactură"
> 			}
> 		]
> 	},
> 	"supplier": {
> 		"name": "Exemplu Digital SRL",
> 		"tax_id": {
> 			"country": "RO",
> 			"code": "12345674"
> 		},
> 		"addresses": [
> 			{
> 				"num": "10",
> 				"street": "Strada Exemplu",
> 				"locality": "SECTOR1",
> 				"region": "RO-B",
> 				"state": "B",
> 				"code": "010101",
> 				"country": "RO"
> 			}
> 		],
> 		"emails": [
> 			{
> 				"addr": "facturare@exemplu.ro"
> 			}
> 		]
> 	},
> 	"customer": {
> 		"name": "Client Test SRL",
> 		"tax_id": {
> 			"country": "RO",
> 			"code": "34567892"
> 		},
> 		"addresses": [
> 			{
> 				"num": "25",
> 				"street": "Strada Memorandumului",
> 				"locality": "Cluj-Napoca",
> 				"region": "RO-CJ",
> 				"state": "CJ",
> 				"code": "400114",
> 				"country": "RO"
> 			}
> 		]
> 	},
> 	"lines": [
> 		{
> 			"i": 1,
> 			"quantity": "10",
> 			"item": {
> 				"name": "Servicii de dezvoltare software",
> 				"price": "150.00",
> 				"unit": "h"
> 			},
> 			"sum": "1500.00",
> 			"taxes": [
> 				{
> 					"cat": "VAT",
> 					"key": "standard",
> 					"rate": "general",
> 					"percent": "21.0%",
> 					"ext": {
> 						"untdid-tax-category": "S"
> 					}
> 				}
> 			],
> 			"total": "1500.00"
> 		}
> 	],
> 	"payment": {
> 		"terms": {
> 			"notes": "Plata in 30 de zile"
> 		}
> 	},
> 	"totals": {
> 		"sum": "1500.00",
> 		"total": "1500.00",
> 		"taxes": {
> 			"categories": [
> 				{
> 					"code": "VAT",
> 					"rates": [
> 						{
> 							"key": "standard",
> 							"ext": {
> 								"untdid-tax-category": "S"
> 							},
> 							"base": "1500.00",
> 							"percent": "21.0%",
> 							"amount": "315.00"
> 						}
> 					],
> 					"amount": "315.00"
> 				}
> 			],
> 			"sum": "315.00"
> 		},
> 		"tax": "315.00",
> 		"total_with_tax": "1815.00",
> 		"payable": "1815.00"
> 	}
> }
> ```

After uploading you'll see the document in the **Invoices** section with status `Empty`.

**2. Send the invoice to the RO generate & send workflow**

Send the invoice to the workflow using the [Create a job](https://docs.invopop.com/api-ref/transform/jobs/create-a-job-post.md) endpoint. Use:

* `workflow_id`: use the Workflow ID of the **RO generate & send** workflow we created during setup
* `silo_entry_id`: use the Silo Entry ID of the invoice you've just uploaded.

From the Console, open the invoice, click **Select workflow**, choose **RO generate & send** and click **Run workflow**.

The job waits on the **Send e-Factura XML to ANAF** step until ANAF decides, which usually takes a few minutes:

* ✓ **Accepted** (`ok`): the invoice moves to Sent and carries the official XML returned by ANAF, next to the generated XML and the PDF. The invoice is stamped with the ANAF upload ID (`ro-anaf-upload-index`) and the date ANAF returned (`ro-anaf-upload-date`), shown in the **Headers** section of the invoice in the Console.
* × **Rejected** (`nok`): the job fails with the errors ANAF returned. Correct the invoice and run the workflow again.

![Invoice in Sent state with the generated and the official ANAF XML](https://mintcdn.com/invopop/FN59cfkHlyzc_NNB/assets/guides/ro-efactura-sent-invoice.png?fit=max\&auto=format\&n=FN59cfkHlyzc_NNB\&q=85\&s=cd2907fc249c03fe9eed59a0eedeb6ec)

Once ANAF decides, download the official archive it signed with [Fetch sent archive](https://docs.invopop.com/api-ref/apps/gov-ro/sent-archive-fetch.md). It holds the accepted invoice, or the errors of a rejection.

### Issue a credit note

An invoice accepted by RO e-Factura cannot be cancelled. To correct it, issue a new document that references it. In Romania you can either:

* Issue a **credit note** (type code `381`), which adjusts the value of the original invoice, or
* Issue a **corrective invoice** (type code `384`), which replaces the original invoice entirely.

For example, if you issued an invoice for 100 lei but later realized it should have been 80 lei, you can either issue a credit note for 20 lei, or a corrective invoice for 80 lei. Unless you have a specific requirement to replace the original invoice, we recommend only using credit notes. They're more widely supported across countries, while corrective invoices are specific to a few jurisdictions like Romania.

**1. Upload a credit note**

A credit note in Invopop is an invoice of the type `credit-note`. The process is very similar to uploading an invoice, use the [Create an entry](https://docs.invopop.com/api-ref/silo/entries/create-an-entry-put.md) endpoint to upload a credit note. Include an [invoice](https://docs.gobl.org/draft-0/bill/invoice) object in the [data](https://docs.invopop.com/api-ref/silo/entries/create-an-entry-put.md#body-data) field, with these required fields:

* `$addons`: include `ro-efactura-v1`
* `supplier`: use the same supplier details as in the original invoice
* `type`: `credit-note`
* `preceding`: references the original invoice, within it, you must include:
  * `uuid`: the UUID of the original invoice (optional but recommended)
  * `issue_date`: the date of the original invoice
  * `series`: the series of the original invoice
  * `code`: the code of the original invoice

As with every GOBL credit note, quantities and amounts are expressed as positive values. You can copy the **B2B credit note** example above as a reference.

After successful upload, you'll see the credit note in the **Invoices** section with status `Empty`. If you've included the `uuid` of the invoice in `preceding`, you'll see a link to the credit note in the **Related** tab of the original invoice.

**2. Send the credit note to the RO generate & send workflow**

Send the credit note to the same workflow using the [Create a job](https://docs.invopop.com/api-ref/transform/jobs/create-a-job-post.md) endpoint. Use:

* `workflow_id`: use the Workflow ID of the **RO generate & send** workflow we created during setup
* `silo_entry_id`: use the Silo Entry ID of the credit note you've just uploaded.

The credit note moves to Sent once ANAF accepts it.

### Issue a corrective invoice

**1. Upload a corrective invoice**

A corrective invoice in Invopop is an invoice of the type `corrective`. The process is very similar to uploading an invoice, use the [Create an entry](https://docs.invopop.com/api-ref/silo/entries/create-an-entry-put.md) endpoint to upload a corrective invoice. Include an [invoice](https://docs.gobl.org/draft-0/bill/invoice) object in the [data](https://docs.invopop.com/api-ref/silo/entries/create-an-entry-put.md#body-data) field, with these required fields:

* `$addons`: include `ro-efactura-v1`
* `supplier`: use the same supplier details as in the original invoice
* `type`: `corrective`
* `preceding`: references the original invoice, within it, you must include:
  * `uuid`: the UUID of the original invoice (optional but recommended)
  * `issue_date`: the date of the original invoice
  * `series`: the series of the original invoice
  * `code`: the code of the original invoice

The corrective invoice carries the full, corrected content of the original. You can copy the **B2B corrective invoice** example above as a reference.

After successful upload, you'll see the corrective invoice in the **Invoices** section with status `Empty`. If you've included the `uuid` of the invoice in `preceding`, you'll see a link to the corrective invoice in the **Related** tab of the original invoice.

**2. Send the corrective invoice to the RO generate & send workflow**

Send the corrective invoice to the same workflow using the [Create a job](https://docs.invopop.com/api-ref/transform/jobs/create-a-job-post.md) endpoint. Use:

* `workflow_id`: use the Workflow ID of the **RO generate & send** workflow we created during setup
* `silo_entry_id`: use the Silo Entry ID of the corrective invoice you've just uploaded.

The corrective invoice moves to Sent once ANAF accepts it.

### Special cases

Invopop picks the right ANAF upload options from the invoice itself, so the same workflow handles every case:

* **B2C invoices**: when the customer has no tax ID, the invoice is uploaded to ANAF's B2C endpoint. The `ro-efactura-v1` addon adds the thirteen zeros CNP that Romanian law requires for consumers without an identifier.
* **Self-billed invoices** (*autofactură*, type code `389`): add the `self-billed` tag. The customer issues the invoice in the supplier's name, so the **customer** must be the registered party. The addon adds the `Autofactură` note, and the upload is flagged as self-billed.
* **Invoices for accounting purposes** (type code `751`): add the `accounting` tag.
* **Enforcement procedures**: add the `enforcement` tag and name the enforcement body as payee. The upload is made with the payee's CIF and flagged as enforcement.

## GOBL addon reference

Detailed information about the CIUS-RO rules, scenarios and tags can be found in the [`ro-efactura-v1` addon documentation](https://github.com/invopop/gobl.ro.anaf/tree/main/addon).

## FAQ

> [accordion] What format does a Romanian e-invoice use?
>
> UBL 2.1 in the Romanian profile of EN 16931, called CIUS-RO (version 1.0.1). RO e-Factura also accepts CII (D16B). The platform checks the invoice against the EN 16931 rules and the national BR-RO rules.

> [accordion] Is a PDF invoice still valid?
>
> No. The legal invoice is the XML file that the Ministry of Finance seals after validation. A PDF has no legal value, but you can give one to your customer as a readable copy.

> [accordion] How do I correct an invoice after RO e-Factura accepts it?
>
> You cannot cancel a sealed invoice. Issue a credit note (type 381) or a corrective invoice (type 384) that references the original invoice.

> [accordion] Can the buyer reject an invoice in RO e-Factura?
>
> No. The platform statuses show only whether the invoice passed validation. The buyer settles a dispute directly with the supplier, and the supplier corrects the invoice with a new document.

> [accordion] Which VAT rates apply in Romania?
>
> Since 1 August 2025, the standard rate is 21% and the reduced rate is 11%. If an invoice is in another currency, the VAT amounts must also show in RON.

> [accordion] How long can I download invoices from RO e-Factura?
>
> For 60 days. After that, ANAF archives the files, and a copy is available only on request. Keep your own copy of each sealed invoice.

> [accordion] Is self-billing allowed?
>
> Yes. The buyer issues the invoice in the supplier's name, with type code 389.

> [accordion] Which GOBL documents can I send to RO e-Factura?
>
> Invoices that declare the `ro-efactura-v1` addon: standard invoices (380), invoices for accounting purposes (751, with the `accounting` tag), self-billed invoices (389, with the `self-billed` tag), credit notes (381) and corrective invoices (384).

> [accordion] How long does ANAF take to accept an invoice?
>
> Usually a few minutes. After the upload, the **Send e-Factura XML to ANAF** step waits and checks the upload status until ANAF answers `ok` or `nok`. The job finishes when ANAF has decided.

> [accordion] Where do I find the official invoice?
>
> When ANAF accepts the invoice, Invopop attaches the official XML returned by ANAF to the invoice entry as `anaf-efactura.xml`, next to the generated `efactura.xml`. The archive is also kept in Invopop's database.

> [accordion] What happens when ANAF rejects an invoice?
>
> The job fails with the errors ANAF returned. Correct the invoice and run the workflow again; a rejected invoice can be sent again.

> [accordion] Can I send the same invoice twice?
>
> No. Invopop never uploads an accepted invoice twice. To change an accepted invoice, issue a credit note or a corrective invoice that references it.

> [accordion] How are B2C and self-billed invoices handled?
>
> Invopop picks the ANAF upload options from the invoice itself. An invoice to a customer without a tax ID goes to the B2C endpoint, and a self-billed invoice is uploaded with the customer's CIF and flagged as `autofactura`. No workflow configuration is needed.

More available in our [Romania FAQ](https://docs.invopop.com/faq/romania.md) section

***

> [accordion] 🇷🇴 Invopop resources for Romania
>
> | | |
> | - | - |
> | Compliance | [Invoicing compliance in Romania](https://docs.invopop.com/compliance/romania.md)   [Compliance timeline](https://docs.invopop.com/timelines/romania.md) |
> | Apps | [Romania](https://docs.invopop.com/apps/romania.md) |
> | Guides | [Supplier registration](https://docs.invopop.com/guides/ro-efactura-supplier.md)   [Issuing invoices](https://docs.invopop.com/guides/ro-efactura.md)   [Receiving invoices](https://docs.invopop.com/guides/ro-efactura-receiving.md) |
> | FAQ | [Romania FAQ](https://docs.invopop.com/faq/romania.md) |
> | GOBL | [Romanian RO e-Factura addon](https://github.com/invopop/gobl.ro.anaf/tree/main/addon) |

> [card] [Participate in our community](https://community.invopop.com)
>
> Ask and answer questions about invoicing in Romania →


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.