Fac-360
Summaries

Validate and durably create a void communication (RA)

A void communication (RA) withdraws already-issued facturas and the notes over them. Boleta 03 is deliberately not accepted: a boleta is annulled through a daily summary line with statusCode 3. Creation is capability-gated per tenant and does not contact SUNAT. The response reports the communication deadline; it never enforces it. A line naming a comprobante this API holds is checked against it: the comprobante must have been accepted or observed by SUNAT, and must not already be withdrawn or carried by another live communication. A line naming a comprobante this API does not hold is accepted and recorded as unlinked — see `references` — because an emitter may have issued it through another provider, on paper, or before integrating; SUNAT's own ERROR 2105 and 2323 police that case.

POST
/api/v2/voided

A void communication (RA) withdraws already-issued facturas and the notes over them. Boleta 03 is deliberately not accepted: a boleta is annulled through a daily summary line with statusCode 3. Creation is capability-gated per tenant and does not contact SUNAT. The response reports the communication deadline; it never enforces it. A line naming a comprobante this API holds is checked against it: the comprobante must have been accepted or observed by SUNAT, and must not already be withdrawn or carried by another live communication. A line naming a comprobante this API does not hold is accepted and recorded as unlinked — see references — because an emitter may have issued it through another provider, on paper, or before integrating; SUNAT's own ERROR 2105 and 2323 police that case.

Authorization

bearerAuth
AuthorizationBearer <token>

Tenant-bound, scoped and expiring Apifact credential. Migrated legacy credentials are accepted only on deprecated v1 writes and tenant-scoped v2 read, poll and download routes. Each operation names the single scope it requires in x-required-scope; the scope array of the security requirement itself is empty because OpenAPI 3.0 requires it to be for a non-oauth2 scheme.

In: header

Header Parameters

Idempotency-Key*string
Length1 <= length <= 200

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/api/v2/voided" \  -H "Idempotency-Key: b6a2f0e4-1c3d-4a5b-8e7f-9d0c1b2a3e4f" \  -H "Authorization: Bearer apf_v2_tu_credencial" \  -H "Content-Type: application/json" \  -d '{    "schemaVersion": "1.0",    "documentType": "RA",    "issueDate": "2026-08-12",    "referenceDate": "2026-08-12",    "correlative": "1",    "supplier": {      "documentType": "6",      "documentNumber": "20601030405",      "legalName": "MI EMPRESA EMISORA S.A.C."    },    "lines": [      {        "documentType": "01",        "series": "F001",        "number": "1024",        "reason": "ERROR EN EL IMPORTE UNITARIO"      }    ]  }'
{  "schemaVersion": "2.0",  "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6",  "operationId": "3051932a-fdd2-48fa-b330-7e7d41535969",  "resourceId": "026d60bb-63a8-407e-bf67-01dcfc6022e6",  "summaryType": "RC",  "documentName": "string",  "state": "VALIDATED",  "replay": true,  "deadline": {    "status": "WITHIN_DEADLINE",    "elapsedDays": 0,    "limitDays": 0  }}