Billable Portfolios

A billable portfolio is a portfolio that is associated with a specific fee schedule. A billable portfolio can be a household, client, legal entity, or group. Use the Billable Portfolios API to view and add portfolios, edit their fee schedules, archive portfolios, and restore archived portfolios.

Base route/v1/billable_portfolios
EndpointsGET
/v1/billable_portfolios/:id
/v1/billable_portfolios

POST
/v1/billable_portfolios

PATCH
/v1/billable_portfolios/:id/relationships/fee_schedules
/v1/billable_portfolios/relationships/fee_schedules

DELETE
/v1/billable_portfolios/:id/relationships/fee_schedules
/v1/billable_portfolios/relationships/fee_schedules
ProducesJSON
PaginationYes
Application permissions required"Run and manage bills, include fee adjustment and payment tracking" or "Full access to Billing and billing data"
OAuth scopesBILLING_WRITE

Resource overview

Arguments are described by the below resource object attributes and will appear in successful POST responses.

AttributeDescriptionExample
idThe billable portfolio's ID. List of integers.[1234, 5678]

Parameters

ParameterDescriptionExample
entity_idThe ID of the entity that is a billable portfolio. You can only use either entity_id or group_id per request, not both.1234
group_idThe ID of the group that is a billable portfolio. You can only use either entity_id or group_id per request, not both.4567
schedule_idThe ID of the associated fee schedule .9101
is_archivedA boolean flag showing if the billable portfolio is archived. Only available on get requests.true
last_modifiedThe time that the portfolio was last modified. Only available on get requests.2026-05-10T14:30:00Z

Get a billable portfolio

Get a single billable portfolio setup by it's id.

GET /v1/billable_portfolios/:id

Example:

GET https://examplefirm.addepar.com/api/v1/billable_portfolios/12345
HTTP/1.1 200

{
  "data": {
    "type": "billable_portfolios",
    "id": "12345",
    "attributes": {
      "entity_id": 67890,
      "group_id": null,
      "schedule_id": 111
      "is_archived": false,
      "last_modified": "2026-05-10T14:30:00Z"
    }
  }
}

Response codes:

  • 200 OK: Success
  • 403 Forbidden: Insufficient application permissions or appropriate scope not granted
  • 404 Not Found: Billable Portfolio does not exist

Get billable portfolios

Get multiple billable portfolio setups.

GET /v1/billable_portfolios

Example:

GET https://examplefirm.addepar.com/api/v1/billable_portfolios
HTTP/1.1 200

{
  "data": [
    {
      "type": "billable_portfolios",
      "id": "12345",
      "attributes": {
        "entity_id": 67890,
        "group_id": null,
        "schedule_id": 111,
        "is_archived": false,
        "last_modified": "2026-03-15T10:30:00Z"
      }
    },
    {
      "type": "billable_portfolios",
      "id": "12346",
      "attributes": {
        "entity_id": null,
        "group_id": 54321,
        "schedule_id": 222,
        "is_archived": false,
        "last_modified": "2026-04-20T16:45:00Z"
      }
    }
  ],
  "meta": {
    "page": {
      "total_count": 2,
      "next_cursor": null,
      "limit": 500
    }
  }
}

Response codes:

  • 200 OK: Success
  • 403 Forbidden: Insufficient application permissions or appropriate scope not granted
  • 404 Not Found: Billable Portfolio does not exist

Add a billable portfolio

Set up a group or entity for billing with a specified fee schedule. This also supports bulk creation.

POST /v1/billable_portfolios

Example:

POST https://examplefirm.addepar.com/api/v1/billable_portfolios

{
  "data": {
    "type": “create_billable_portfolio”,
    "attributes": {
      "group_id": 1,
      "schedule_id": 2
    }
  }
}
HTTP/1.1 201

{
    "id": 1234
}

Example:

POST https://examplefirm.addepar.com/api/v1/billable_portfolios

{
  "data": {
    "type": "create_billable_portfolio",
    "attributes": {
      "entity_id": 1,
      "schedule_id": 2
    }
  }
}
HTTP/1.1 201

{
    "id": 1234
}

Example:

POST https://examplefirm.addepar.com/api/v1/billable_portfolios

{
  "data": [
    {
      "type": "create_billable_portfolio",
      "attributes": {
        "entity_id": 1,
        "schedule_id": 2
      }
    },
    {
      "type": "create_billable_portfolio",
      "attributes": {
        "group_id": 1,
        "schedule_id": 2
      }
    }
  ]
}
HTTP/1.1 201

{
  "data": [
    {
      "type": "billable_portfolios",
      "id": "1001",
      "attributes": {
        "entity_id": 1,
        "schedule_id": 2,
        "is_archived": false,
        "last_modified": "2024-03-15T10:00:00Z"
      }
    },
    {
      "type": "billable_portfolios",
      "id": "1002",
      "attributes": {
        "group_id": 1,
        "schedule_id": 2,
        "is_archived": false,
        "last_modified": "2024-03-15T10:00:01Z"
      }
    }
  ]
}

Response codes:

  • 200 OK: Success
  • 400 Bad Request: Failed during validation
  • 403 Forbidden: Insufficient application permissions or appropriate scope not granted
  • 404 Not Found: Argument does not exist

Update a fee schedule or restore a billable portfolio

Update a billable portfolio's fee schedule to a different one. You can also restore an archived billable portfolio by adding a fee schedule to it.

PATCH /v1/billable_portfolios/:id/relationships/fee_schedules

Example:

PATCH https://examplefirm.addepar.com/api/v1/billable_portfolios/2/relationships/fee_schedules

{
  "data": {
    "id": 3,
    "type": "fee_schedules"
  }
}
HTTP/1.1 200

Response codes:

  • 200 OK: Success
  • 400 Bad Request: Failed during validation
  • 403 Forbidden: Insufficient application permissions or appropriate scope not granted
  • 404 Not Found: Billable portfolio or fee schedule does not exist.

Bulk update fee schedules or restore billable portfolios

Update multiple billable portfolios' fee schedules to different ones. You can also restore archived billable portfolios by adding fee schedules to them.

PATCH /v1/billable_portfolios/relationships/fee_schedules

Example:

PATCH https://examplefirm.addepar.com/api/v1/billable_portfolios/relationships/fee_schedules

{
  "data": [
    {
      "id": "2",
      "type": "create_billable_portfolio",
      "attributes": {
        "schedule_id": 3
      }
    },
    {
      "id": "5",
      "type": "create_billable_portfolio",
      "attributes": {
        "schedule_id": 7
      }
    }
  ]
}                                                                                                   
HTTP/1.1 200 

Response codes:

  • 200 OK: Success
  • 400 Bad Request: Failed during validation, or request exceeds the 500 portfolio limit
  • 403 Forbidden: Insufficient application permissions, appropriate scope not granted, or feature flag
    not enabled
  • 404 Not Found: One or more billable portfolios or fee schedules do not exist

Archive a billable portfolio

Archive a billable portfolio when you no longer want to bill on it. None of its previous bills will change.

DELETE /v1/billable_portfolios/:id/relationships/fee_schedules

Example:

DELETE https://examplefirm.addepar.com/api/v1/billable_portfolios/2/relationships/fee_schedules
HTTP/1.1 200

Response codes:

  • 200 OK: Success
  • 403 Forbidden: Insufficient application permissions or appropriate scope not granted
  • 404 Not Found: Billable portfolio does not exist.
  • 409 Conflict: Billable portfolio is already archived.

Bulk archive billable portfolios

Archive multiple billable portfolios when you no longer want to bill on them. None of their previous
bills will change.

DELETE /v1/billable_portfolios/relationships/fee_schedules

Example:

DELETE https://examplefirm.addepar.com/api/v1/billable_portfolios/relationships/fee_schedules

{
  "data": [
    {
      "id": "2",
      "type": "billable_portfolios"
    },
    {
      "id": "5",
      "type": "billable_portfolios"
    }
  ]
}                                                                                                   
HTTP/1.1 200

Response codes:

  • 200 OK: Success
  • 400 Bad Request: Request exceeds the 500 portfolio limit
  • 403 Forbidden: Insufficient application permissions, appropriate scope not granted, or feature flag
    not enabled
  • 404 Not Found: One or more billable portfolios do not exist
  • 409 Conflict: One or more billable portfolios are already archived, or type is not
    billable_portfolios