Expensicat

Recurring Invoices

Recurring invoice series management

List recurring invoice series

GET
/v1/recurring-invoices

Authorization

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)

Default20
Range1 <= value <= 100
status?string
Value in"active" | "paused" | "cancelled" | "completed"
customer_id?string

Response Body

application/json

application/json

curl -X GET "https://api.expensicat.com/api/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
        }
      ],
      "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"
  }
}
{
  "error": {
    "code": "string",
    "message": "string",
    "details": {
      "property1": null,
      "property2": null
    }
  }
}

Create recurring invoice series

POST
/v1/recurring-invoices

Authorization

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

curl -X POST "https://api.expensicat.com/api/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
      }
    ],
    "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"
    }
  }
}
{
  "error": {
    "code": "string",
    "message": "string",
    "details": {
      "property1": null,
      "property2": null
    }
  }
}

Get recurring invoice series

GET
/v1/recurring-invoices/{id}

Authorization

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://api.expensicat.com/api/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
      }
    ],
    "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"
    }
  }
}
{
  "error": {
    "code": "string",
    "message": "string",
    "details": {
      "property1": null,
      "property2": null
    }
  }
}
{
  "error": {
    "code": "string",
    "message": "string",
    "details": {
      "property1": null,
      "property2": null
    }
  }
}

Update recurring invoice series

PATCH
/v1/recurring-invoices/{id}

Authorization

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://api.expensicat.com/api/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
      }
    ],
    "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"
    }
  }
}
{
  "error": {
    "code": "string",
    "message": "string",
    "details": {
      "property1": null,
      "property2": null
    }
  }
}
{
  "error": {
    "code": "string",
    "message": "string",
    "details": {
      "property1": null,
      "property2": null
    }
  }
}

Delete recurring invoice series

DELETE
/v1/recurring-invoices/{id}

Authorization

AuthorizationBearer <token>

Session JWT or OAuth2 access token

In: header

Path Parameters

id*string

Response Body

application/json

application/json

curl -X DELETE "https://api.expensicat.com/api/v1/recurring-invoices/string"
Empty
{
  "error": {
    "code": "string",
    "message": "string",
    "details": {
      "property1": null,
      "property2": null
    }
  }
}
{
  "error": {
    "code": "string",
    "message": "string",
    "details": {
      "property1": null,
      "property2": null
    }
  }
}

Get generated invoices

GET
/v1/recurring-invoices/{id}/invoices

Authorization

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://api.expensicat.com/api/v1/recurring-invoices/string/invoices"
{
  "data": [
    {
      "id": "string",
      "number": "string",
      "status": "string",
      "date": "string",
      "due_date": "string",
      "total": 0,
      "scheduled_send_at": "string",
      "created_at": "string"
    }
  ]
}
{
  "error": {
    "code": "string",
    "message": "string",
    "details": {
      "property1": null,
      "property2": null
    }
  }
}
{
  "error": {
    "code": "string",
    "message": "string",
    "details": {
      "property1": null,
      "property2": null
    }
  }
}

Update series status

PATCH
/v1/recurring-invoices/{id}/status

Authorization

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://api.expensicat.com/api/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
      }
    ],
    "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"
    }
  }
}
{
  "error": {
    "code": "string",
    "message": "string",
    "details": {
      "property1": null,
      "property2": null
    }
  }
}
{
  "error": {
    "code": "string",
    "message": "string",
    "details": {
      "property1": null,
      "property2": null
    }
  }
}