---
title: "Submit invoice to FACe B2G portal"
method: POST
path: "/v1/invoices/{invoiceId}/face/submit"
tags: ["E-Invoicing"]
---

# Submit invoice to FACe B2G portal

`POST /v1/invoices/{invoiceId}/face/submit`

## Request

- Base URL: `https://api.frihet.io`
- URL: `https://api.frihet.io/v1/invoices/{invoiceId}/face/submit`
- Auth: API key in header `X-API-Key`

Submit a signed Facturae XML to Spain's FACe B2G portal (face.gob.es).

Pipeline: load invoice → generate Facturae XML → sign with XAdES-EPES → submit to FACe.
Result is persisted to `invoices/{id}/face/submission` subdoc.

**Idempotent**: if the invoice was already accepted (registered), returns the prior result
with `idempotent: true` — does not resubmit.

**Trust Area: COMPLIANCE** — Requires owner role or API key with `einvoice:*` scope.
Requires a PKCS#12 certificate for sandbox/production modes.

## Path parameters

- `invoiceId` string, required

## Request body

- object
  - `mode` 'mock' | 'sandbox' | 'production': FACe submission mode. Defaults to `ES_FACE_MODE` env var (default `mock`).
  - `correo` string, email: Recipient notification email (required by FACe protocol). Defaults to fiscal billing email.

## Response `200`

Invoice submitted to FACe

- object
  - `data` object
    - `status` string
    - `numeroRegistro` string: FACe registration number (never fabricated)
    - `codigo` string: FACe result code
    - `descripcion` string: FACe result description
    - `idempotent` boolean: Present and true when returning a prior accepted submission

## Other responses

- `400`: Bad request - invalid parameters or request body
- `401`: Authentication required or invalid API key
- `403`: Insufficient permissions
- `404`: Resource not found
- `422`: FACe rejection, certificate missing, or XML generation error
- `429`: Rate limit exceeded (100 requests per minute)
- `500`: Internal server error

---

[API](https://skmtc.dev/frihet/apis/frihet-api.md) · [All operations](https://skmtc.dev/frihet/apis/frihet-api/llms.txt) · [OpenAPI document](https://skmtc.dev/frihet/apis/frihet-api/revisions/3dd37f6a72d1?raw)
