Expensicat
API Reference

Recurring Invoices

GET
/v1/recurring-invoices

List all recurring invoice series with filtering

Authorization

bearerAuth
AuthorizationBearer <token>

Session JWT or OAuth2 access token

In: header

Query Parameters

cursor?string

Pagination cursor

limit?integer

Number of items per page (1-100; higher values cap at 100)

Range1 <= value
Default20
status?string

Value in

  • "active"
  • "paused"
  • "cancelled"
  • "completed"
customer_id?string

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/recurring-invoices"
{  "data": [    {      "id": "string",      "organization_id": "string",      "customer_id": "string",      "frequency": "weekly",      "start_date": "string",      "end_date": "string",      "max_invoices": 0,      "invoices_generated": 0,      "items": [        {          "name": "string",          "description": "string",          "quantity": 0,          "price": 0        }      ],      "country_extensions": {        "it": {          "regime_fiscale": "RF01",          "natura": "N1"        },        "pl": {          "annotations": {            "cash_method": true,            "self_invoicing": true,            "reverse_charge": true,            "split_payment": true          }        }      },      "notes": "string",      "auto_send": true,      "status": "active",      "next_generation_date": "string",      "last_generated_date": "string",      "created_by": "string",      "created_at": "string",      "updated_at": "string",      "customer": {        "id": "string",        "name": "string",        "email": "string"      }    }  ],  "meta": {    "count": 0,    "next_cursor": "string"  }}
POST
/v1/recurring-invoices

Create a new recurring invoice series

Authorization

bearerAuth
AuthorizationBearer <token>

Session JWT or OAuth2 access token

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

curl -X POST "https://example.com/v1/recurring-invoices" \  -H "Content-Type: application/json" \  -d '{    "customer_id": "string",    "frequency": "weekly",    "start_date": "string",    "items": [      {        "name": "string",        "quantity": 0,        "price": 0      }    ]  }'
{  "data": {    "id": "string",    "organization_id": "string",    "customer_id": "string",    "frequency": "weekly",    "start_date": "string",    "end_date": "string",    "max_invoices": 0,    "invoices_generated": 0,    "items": [      {        "name": "string",        "description": "string",        "quantity": 0,        "price": 0      }    ],    "country_extensions": {      "it": {        "regime_fiscale": "RF01",        "natura": "N1"      },      "pl": {        "annotations": {          "cash_method": true,          "self_invoicing": true,          "reverse_charge": true,          "split_payment": true        }      }    },    "notes": "string",    "auto_send": true,    "status": "active",    "next_generation_date": "string",    "last_generated_date": "string",    "created_by": "string",    "created_at": "string",    "updated_at": "string",    "customer": {      "id": "string",      "name": "string",      "email": "string"    }  }}
GET
/v1/recurring-invoices/{id}

Get a single recurring invoice series by ID

Authorization

bearerAuth
AuthorizationBearer <token>

Session JWT or OAuth2 access token

In: header

Path Parameters

id*string

Response Body

application/json

application/json

application/json

curl -X GET "https://example.com/v1/recurring-invoices/string"
{  "data": {    "id": "string",    "organization_id": "string",    "customer_id": "string",    "frequency": "weekly",    "start_date": "string",    "end_date": "string",    "max_invoices": 0,    "invoices_generated": 0,    "items": [      {        "name": "string",        "description": "string",        "quantity": 0,        "price": 0      }    ],    "country_extensions": {      "it": {        "regime_fiscale": "RF01",        "natura": "N1"      },      "pl": {        "annotations": {          "cash_method": true,          "self_invoicing": true,          "reverse_charge": true,          "split_payment": true        }      }    },    "notes": "string",    "auto_send": true,    "status": "active",    "next_generation_date": "string",    "last_generated_date": "string",    "created_by": "string",    "created_at": "string",    "updated_at": "string",    "customer": {      "id": "string",      "name": "string",      "email": "string"    }  }}
PATCH
/v1/recurring-invoices/{id}

Update recurring invoice series fields

Authorization

bearerAuth
AuthorizationBearer <token>

Session JWT or OAuth2 access token

In: header

Path Parameters

id*string

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

curl -X PATCH "https://example.com/v1/recurring-invoices/string" \  -H "Content-Type: application/json" \  -d '{}'
{  "data": {    "id": "string",    "organization_id": "string",    "customer_id": "string",    "frequency": "weekly",    "start_date": "string",    "end_date": "string",    "max_invoices": 0,    "invoices_generated": 0,    "items": [      {        "name": "string",        "description": "string",        "quantity": 0,        "price": 0      }    ],    "country_extensions": {      "it": {        "regime_fiscale": "RF01",        "natura": "N1"      },      "pl": {        "annotations": {          "cash_method": true,          "self_invoicing": true,          "reverse_charge": true,          "split_payment": true        }      }    },    "notes": "string",    "auto_send": true,    "status": "active",    "next_generation_date": "string",    "last_generated_date": "string",    "created_by": "string",    "created_at": "string",    "updated_at": "string",    "customer": {      "id": "string",      "name": "string",      "email": "string"    }  }}
DELETE
/v1/recurring-invoices/{id}

Delete a recurring invoice series (does not delete generated invoices)

Authorization

bearerAuth
AuthorizationBearer <token>

Session JWT or OAuth2 access token

In: header

Path Parameters

id*string

Response Body

application/json

application/json

curl -X DELETE "https://example.com/v1/recurring-invoices/string"
Empty
GET
/v1/recurring-invoices/{id}/invoices

Get invoices generated from this recurring series

Authorization

bearerAuth
AuthorizationBearer <token>

Session JWT or OAuth2 access token

In: header

Path Parameters

id*string

Response Body

application/json

application/json

application/json

curl -X GET "https://example.com/v1/recurring-invoices/string/invoices"
{  "data": [    {      "id": "string",      "number": "string",      "status": "string",      "date": "string",      "due_date": "string",      "total": "string",      "scheduled_send_at": "string",      "created_at": "string"    }  ]}
PATCH
/v1/recurring-invoices/{id}/status

Pause, resume, or cancel a recurring invoice series

Authorization

bearerAuth
AuthorizationBearer <token>

Session JWT or OAuth2 access token

In: header

Path Parameters

id*string

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

curl -X PATCH "https://example.com/v1/recurring-invoices/string/status" \  -H "Content-Type: application/json" \  -d '{    "status": "active"  }'
{  "data": {    "id": "string",    "organization_id": "string",    "customer_id": "string",    "frequency": "weekly",    "start_date": "string",    "end_date": "string",    "max_invoices": 0,    "invoices_generated": 0,    "items": [      {        "name": "string",        "description": "string",        "quantity": 0,        "price": 0      }    ],    "country_extensions": {      "it": {        "regime_fiscale": "RF01",        "natura": "N1"      },      "pl": {        "annotations": {          "cash_method": true,          "self_invoicing": true,          "reverse_charge": true,          "split_payment": true        }      }    },    "notes": "string",    "auto_send": true,    "status": "active",    "next_generation_date": "string",    "last_generated_date": "string",    "created_by": "string",    "created_at": "string",    "updated_at": "string",    "customer": {      "id": "string",      "name": "string",      "email": "string"    }  }}