Faktur

POST /v1/documents/credit-notes/full-refund

Scope: documents:write

Devolución total de una factura autorizada. El servidor carga comprador e ítems desde la factura original y construye la nota de crédito automáticamente. Solo envías tres campos.

Campos del body

CampoTipoObligatorioDescripción
originalAccessKeystringClave de acceso de 49 dígitos numéricos de la factura autorizada.
reasonstringMotivo de la nota de crédito. Máx. 300 chars. Sin saltos de línea.
issueDatestringNoFecha YYYY-MM-DD. Si se omite, se usa la fecha del día. No puede ser futura.

Respuesta y errores

201: Documento nota de crédito (misma estructura que factura). Modo síncrono por defecto; ?async=true para asíncrono.

HTTPerror.codeCuándo
401INVALID_API_KEYAPI Key inválida.
402TX_LIMIT_REACHEDLímite de transacciones.
422ORIGINAL_DOCUMENT_NOT_FOUNDNo existe factura con esa clave en la empresa.
422ORIGINAL_DOCUMENT_NOT_AUTHORIZEDLa factura referenciada no está en estado AUTHORIZED.
422FUTURE_ISSUE_DATEissueDate es futura.

Ejemplo (body)

{
  "originalAccessKey": "0703202601099123456000110010010000000024000000011",
  "reason": "Devolución total — producto defectuoso"
}

Ejemplo en JavaScript

const API_BASE_URL = 'https://live.faktur.com.ec';
const API_KEY = 'sk_...';
const API_SECRET = 'tu-secret';

const body = {
  originalAccessKey: '0703202601099123456000110010010000000024000000011',
  reason: 'Devolución total — producto defectuoso'
};

const response = await fetch(`${API_BASE_URL}/v1/documents/credit-notes/full-refund`, {
  method: 'POST',
  headers: {
    'X-API-Key': API_KEY,
    'X-API-Secret': API_SECRET,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify(body)
});

const json = await response.json();
if (json.success) {
  console.log('Nota de crédito:', json.data.accessKey, json.data.status);
} else {
  console.error('Error:', json.error?.code, json.error?.message);
}