Expensicat

Recurring Invoices

Recurring invoice series management

List recurring invoice series

GET
/v1/recurring-invoices
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
AuthorizationBearer <token>

Session JWT or OAuth2 access token

In: header

Request Body

application/json

customer_id*string
frequency*string
Value in"weekly" | "biweekly" | "monthly" | "quarterly" | "yearly"
start_date*string
end_date?|
max_invoices?|
items*array<>
notes?|
auto_send?boolean

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}
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}
AuthorizationBearer <token>

Session JWT or OAuth2 access token

In: header

Path Parameters

id*string

Request Body

application/json

frequency?string
Value in"weekly" | "biweekly" | "monthly" | "quarterly" | "yearly"
end_date?|
max_invoices?|
items?array<>
notes?|
auto_send?boolean

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}
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
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
AuthorizationBearer <token>

Session JWT or OAuth2 access token

In: header

Path Parameters

id*string

Request Body

application/json

status*string
Value in"active" | "paused" | "cancelled"

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
    }
  }
}