# Notas de crédito

Una **nota de crédito** es un CFDI de tipo **Egreso (E)** que se utiliza para documentar
devoluciones, descuentos o bonificaciones aplicadas sobre una factura de ingreso previamente emitida.

El endpoint de notas de crédito comparte la misma estructura que el de factura de ingreso,
con algunas diferencias importantes en los campos requeridos.

## Endpoint

```
POST /v1/qrs/invoices/credit-notes
```

**Host (DEV):**

```
https://api-dev.qrwey.com
```

**Host (PROD):**

```
https://api.qrwey.com
```

## Headers requeridos

```http
Authorization: Bearer {{access_token}}
Content-Type: application/json
```

## Diferencias con la factura de ingreso

| Campo | Valor para nota de crédito |
|  --- | --- |
| `type_of_receipt` | Debe ser `E` (Egreso) |
| `related_cfdis` | **Requerido**. Debe contener la referencia al CFDI original |
| `related_cfdis.tipo_relacion` | Normalmente `01` (Nota de crédito de los documentos relacionados) |


> ⚠️ El campo `related_cfdis` es **obligatorio** para notas de crédito. Debe contener al menos un UUID del CFDI de ingreso original al que se aplica la nota.


## Request body

La estructura es la misma que para [Timbrar CFDI 4.0](/guides/stamp-cfdi). Consulta esa guia
para el detalle de todos los campos.

### Campos principales

| Campo | Descripción |
|  --- | --- |
| `sale_id` | Identificador de la operación |
| `date` | Fecha de emisión ISO 8601 (requerido) |
| `expedition_zip_code` | Código postal del lugar de expedición (requerido) |
| `amount` | Total de la nota de crédito (requerido) |
| `subtotal` | Subtotal antes de impuestos (requerido) |
| `currency` | Moneda, ej. `MXN` (requerido) |
| `exchange_rate` | Tasa de cambio |
| `sat_payment_form` | Forma de pago SAT |
| `sat_payment_method` | Método de pago SAT (`PUE`) |
| `type_of_receipt` | **`E`** (Egreso) (requerido) |
| `export_code` | Código de exportación, ej. `01` (requerido) |
| `items` | Conceptos de la nota de crédito |
| `issuer` | Datos del emisor (ver [lógica de resolución](/guides/stamp-cfdi)) |
| `recipient` | Datos del receptor |
| `related_cfdis` | **Requerido**. CFDIs relacionados |


### CFDIs relacionados (`related_cfdis`) - Requerido

| Campo | Descripción |
|  --- | --- |
| `tipo_relacion` | Tipo de relación SAT, normalmente `01` (Nota de crédito de los documentos relacionados) |
| `cfdis` | Lista de UUIDs de los CFDIs de ingreso originales |


## Ejemplo de request (DEV)

```bash
curl -X POST "https://api-dev.qrwey.com/v1/qrs/invoices/credit-notes" \
  -H "Authorization: Bearer {{access_token}}" \
  -H "Content-Type: application/json" \
  -d '{
    "sale_id": "nc-001-2026",
    "date": "2026-03-19T15:00:00",
    "expedition_zip_code": "06600",
    "amount": 580.00,
    "subtotal": 500.00,
    "currency": "MXN",
    "exchange_rate": 1.0,
    "sat_payment_form": "04",
    "sat_payment_method": "PUE",
    "type_of_receipt": "E",
    "export_code": "01",
    "items": [
      {
        "sku": "GAS87",
        "description": "Devolución parcial - Gasolina Magna",
        "amount": 500.00,
        "quantity": 24.605,
        "discount": 0.00,
        "sat_unit_key": "LTR",
        "unit_price": 20.321,
        "sat_product_service_key": "15101515",
        "sat_tax_object_key": "02",
        "taxes": [
          {
            "type": "Traslado",
            "tax": "002",
            "factor": "Tasa",
            "rate": "0.160000",
            "taxable_base": 500.00,
            "amount": 80.00
          }
        ]
      }
    ],
    "issuer": {
      "rfc": "FUNK671228PH6"
    },
    "recipient": {
      "rfc": "EKU9003173C9",
      "business_name": "ESCUELA KEMPER URGATE",
      "zip_code": "42501",
      "tax_regime_code": "601",
      "cfdi_use_code": "G03",
      "email": "receptor@ejemplo.com"
    },
    "related_cfdis": {
      "tipo_relacion": "01",
      "cfdis": [
        "A1B2C3D4-E5F6-7890-ABCD-EF1234567890"
      ]
    },
    "global_info": null
  }'
```

## Respuesta

```json
{
  "invoiceStatus": "GENERATED",
  "folioUuid": "F1G2H3I4-J5K6-7890-LMNO-PQ1234567890",
  "sourceTaxId": "FUNK671228PH6",
  "sourceLegalName": "KARLA FUENTE NOLASCO",
  "targetTaxId": "EKU9003173C9",
  "targetLegalName": "ESCUELA KEMPER URGATE",
  "subtotal": 500.00,
  "iva": 80.00,
  "total": 580.00,
  "invoiceDate": "2026-03-19T15:00:00Z",
  "invoiceError": null,
  "base64Xml": "PD94bWwgdmVyc2lvbj0iMS4wIiBlb..."
}
```

La estructura de la respuesta es la misma que para [Timbrar CFDI 4.0](/guides/stamp-cfdi). Consulta esa guia para el detalle de todos los campos.

## Errores comunes

| Código | Motivo |
|  --- | --- |
| 400 | `type_of_receipt` no es `E`, o `related_cfdis` no proporcionado |
| 401 | Token inválido o expirado |
| 404 | Emisor no encontrado o sin llaves CSD |
| 422 | UUID del CFDI relacionado inválido o reglas del SAT no cumplidas |


Consulta: [Manejo de errores](/guides/error-handling)

## Buenas prácticas

- Verifica que el UUID del CFDI original sea correcto antes de emitir la nota de crédito
- El monto de la nota de crédito no debe exceder el total del CFDI original
- Usa `tipo_relacion` `01` para notas de crédito estándar
- Conserva el `folioUuid` de la nota de crédito para tu registro contable
- Los datos del receptor deben coincidir con los del CFDI original


## ¿Qué sigue?

- Genera complementos de pago: [Complementos de pago](/guides/payment-complements)
- Vuelve a facturas de ingreso: [Timbrar CFDI 4.0](/guides/stamp-cfdi)
- Vuelve al índice: [Gestión de Clientes](/guides/customer-portal)