# Saltar la siguiente factura

`POST https://api.fiscalisto.com/v1/recurring_invoices/{id}/skip`

La siguiente fecha pasa a la que sigue, sin timbrar nada.

## Parámetros

| Nombre | Dónde | Obligatorio | Descripción |
| --- | --- | --- | --- |
| `id` | ruta | sí | El id del objeto. |
| `Idempotency-Key` | encabezado |  | Opcional (los SDK la mandan solos). Si la respuesta se pierde, repita la solicitud con el mismo valor durante 24 horas: contesta lo mismo, con idempotent-replayed: true, y no lo hace dos veces (ni crea, ni manda correos, ni cobra). |

## Con el SDK de TypeScript

```ts
import { Fiscalisto } from "fiscalisto";

// La llave viene de FISCALISTO_API_KEY.
const fiscalisto = new Fiscalisto();

const recurringInvoice = await fiscalisto.recurringInvoices.skip("rin_OufpKqnrvx9p7Hq2mZr1XyT5uBcW8sKdLx", { idempotencyKey: "pedido-A-1042" });
```

## Con el SDK de Python

```python
from fiscalisto import Fiscalisto

# La llave viene de FISCALISTO_API_KEY.
fiscalisto = Fiscalisto()

recurring_invoice = fiscalisto.recurring_invoices.skip("rin_OufpKqnrvx9p7Hq2mZr1XyT5uBcW8sKdLx", idempotency_key="pedido-A-1042")
```

## Con el SDK de PHP

```php
<?php

use Fiscalisto\Fiscalisto;

// La llave viene de FISCALISTO_API_KEY.
$fiscalisto = new Fiscalisto();

$recurringInvoice = $fiscalisto->recurringInvoices->skip('rin_OufpKqnrvx9p7Hq2mZr1XyT5uBcW8sKdLx', ['idempotency_key' => 'pedido-A-1042']);
```

## Con el SDK de .NET

```csharp
using Fiscalisto;

// La llave viene de FISCALISTO_API_KEY.
var fiscalisto = new FiscalistoClient();

var recurringInvoice = await fiscalisto.RecurringInvoices.SkipAsync("rin_OufpKqnrvx9p7Hq2mZr1XyT5uBcW8sKdLx", new RequestOptions { IdempotencyKey = "pedido-A-1042" });
```

## Con el SDK de Go

```go
package main

import (
	"context"
	"fmt"
	"log"

	fiscalisto "fiscalisto.com/go"
)

func main() {
	// La llave viene de FISCALISTO_API_KEY.
	client, err := fiscalisto.NewClient("")
	if err != nil {
		log.Fatal(err)
	}
	ctx := context.Background()

	recurringInvoice, err := client.RecurringInvoices.Skip(ctx, "rin_OufpKqnrvx9p7Hq2mZr1XyT5uBcW8sKdLx", fiscalisto.WithIdempotencyKey("pedido-A-1042"))
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(recurringInvoice.ID)
}
```

## Con el SDK de Java

```java
import com.fiscalisto.FiscalistoClient;
import com.fiscalisto.RequestOptions;

// La llave viene de FISCALISTO_API_KEY.
var fiscalisto = new FiscalistoClient();

var recurringInvoice = fiscalisto.recurringInvoices().skip("rin_OufpKqnrvx9p7Hq2mZr1XyT5uBcW8sKdLx", RequestOptions.idempotencyKey("pedido-A-1042"));
System.out.println(recurringInvoice.getId());
```

## Respuesta 200

Correcto.

Un objeto `RecurringInvoice`:

| Campo | Tipo | Siempre viene | Descripción |
| --- | --- | --- | --- |
| `id` | string | sí | Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_). |
| `livemode` | boolean | sí | true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT. |
| `object` | `"recurring_invoice"` | sí | Qué tipo de objeto es («invoice», «customer»…). |
| `issuer` | string | sí | El emisor (iss_…). |
| `name` | string | sí | Para reconocerla. |
| `status` | `active`, `paused` | sí | active (timbra en cada fecha) o paused. |
| `schedule` | objeto | sí | Cada cuánto: frequency (monthly, weekly o daily), interval, day_of_month (con monthly; "last" es el último del mes), y la hora (hour, en time_zone) en que se timbra. |
| `schedule.frequency` | `monthly`, `weekly`, `daily` | sí | monthly: cada interval meses en day_of_month. weekly o daily: cada interval semanas o días. |
| `schedule.interval` | integer | sí | Cada cuántos meses, semanas o días. (de -9007199254740991 a 9007199254740991) |
| `schedule.day_of_month` | integer o `"last"` o null | sí | Con monthly: el día del mes, del 1 al 28, o "last" (el último). null con weekly o daily. |
| `schedule.hour` | integer | sí | La hora (0 a 23) en que se timbra, en time_zone. (de -9007199254740991 a 9007199254740991) |
| `schedule.time_zone` | string | sí | La zona de esa hora (America/Mexico_City, America/Cancun…). |
| `next_invoice_on` | string | sí | La fecha (AAAA-MM-DD) de la siguiente factura. |
| `last_invoiced_on` | string o null | sí | La fecha del último periodo que timbró, o null si aún no timbra ninguna. |
| `last_invoice` | string o null | sí | La última factura (inv_…) que timbró, o null. |
| `last_error` | objeto o null | sí | Por qué no se pudo timbrar la última vez (sin timbres, el cliente borrado, el SAT la rechazó…), o null. Se vuelve a intentar a la siguiente hora del día siguiente; también llega recurring_invoice.failed. |
| `last_error.message` | string o null | sí | Qué pasó. |
| `send_email` | boolean | sí | Si cada factura se manda al correo del cliente. |
| `catch_up` | `all`, `latest` | sí | Si quedaron periodos sin timbrar: all los timbra todos, latest solo el más reciente. |
| `customer` | objeto | sí | A quién se factura. |
| `customer.tax_id` | string | sí | RFC (Rfc), 12 caracteres una persona moral y 13 una física. |
| `customer.legal_name` | string o null | sí | Nombre o razón social tal como está en la constancia de situación fiscal, sin el régimen de capital (sin «S.A. de C.V.»). |
| `currency` | string | sí | La moneda de la factura. |
| `items` | arreglo de objeto | sí | Los conceptos, con description tal como se guardó ({mes}, {año}… se llenan en cada factura). |
| `items[].description` | string | sí | Descripción del concepto (Descripcion), hasta 1,000 caracteres. |
| `items[].product_key` | string | sí | Clave del producto o servicio (ClaveProdServ), 8 dígitos de c_ClaveProdServ. Búsquela con GET /v1/sat_catalogs/product_keys?q=… |
| `items[].quantity` | number |  | Cantidad (Cantidad). Por omisión 1. |
| `items[].unit_key` | string |  | Clave de unidad (ClaveUnidad) de c_ClaveUnidad: E48 unidad de servicio (por omisión), H87 pieza, ACT actividad… |
| `items[].unit_price` | number | sí | Precio unitario antes de impuestos (ValorUnitario). |
| `total` | number o null | sí | El total de cada factura con los precios de hoy. |
| `created_at` | string (date-time) o null | sí | Cuándo se creó. |

```json
{
  "id": "rin_OufpKqnrvx9p7Hq2mZr1XyT5uBcW8sKdLx",
  "object": "recurring_invoice",
  "livemode": false,
  "issuer": "iss_OufpKqnrvx9p",
  "name": "Renta oficina 3",
  "status": "active",
  "schedule": {
    "frequency": "monthly",
    "interval": 1,
    "day_of_month": 1,
    "hour": 7,
    "time_zone": "America/Mexico_City"
  },
  "next_invoice_on": "2026-11-01",
  "last_invoiced_on": "2026-10-01",
  "last_invoice": "inv_OufpKqnrvx9p6hW1yQbT3mZr8sKdLx0VeN",
  "last_error": null,
  "send_email": true,
  "catch_up": "all",
  "customer": {
    "tax_id": "ICV060329BY0",
    "legal_name": "INMOBILIARIA CVA"
  },
  "currency": "MXN",
  "items": [
    {
      "description": "Renta de oficina de {mes} {año}",
      "product_key": "80131500",
      "quantity": 1,
      "unit_key": "E48",
      "unit_price": 15000
    }
  ],
  "total": 17400,
  "created_at": "2026-09-28T11:02:14-06:00"
}
```

## Errores

Puede responder 400, 401, 403, 404, 429, 500 con el cuerpo de error de siempre; cada código está en https://fiscalisto.com/docs/api/errores.md.
