# Add budget owner

Adds a user (or pending invite) as an owner of the budget. Provide
exactly one of `user` or `invite`. If an invite has already been
accepted, the response will contain `user` rather than `invite`.
If the same user or invite was previously removed from this budget,
the original record is reinstated rather than a new one created — the
returned `id` will match the original owner's `id`.

Endpoint: POST /v1/businesses/{client_id}/budgets/{budget_id}/owners
Version: v1
Security: BearerAuth

## Path parameters:

  - `client_id` (integer, required)
    The ID of the business.

  - `budget_id` (string, required)
    The ID of the budget.

## Response 201 fields (application/json):

  - `id` (string)
    The ID of the budget owner.
    Example: e33b7c61-5124-4ba0-b238-e4c573133715

  - `user` (object | null)

  - `user.id` (integer)
    The ID of the user.
    Example: 123

  - `user.first_name` (string)
    The first name of the user.
    Example: John

  - `user.last_name` (string)
    The last name of the user.
    Example: Doe

  - `user.name` (string)
    The full name of the user or the display name if the user has set one.
    Example: John Doe

  - `invite` (object)

  - `invite.id` (integer)
    The ID of the invite.
    Example: 99

  - `invite.email` (string)
    The email address the invite was sent to.
    Example: jane.doe@example.com

  - `invite.role_id` (string)
    The ID of the role assigned to the invitee.
    Example: a1b2c3d4-e5f6-7890-abcd-ef1234567890

  - `invite.role` (string)
    The name of the role assigned to the invitee.
    Example: Team Member

  - `invite.payment_types` (array)
    The payment types the invitee will have access to.
    Example: ["cards","reimbursements"]

  - `invite.used` (boolean)
    Whether the invite has been accepted.
    Example: false

  - `invite.created` (string)
    The date and time the invite was created in UTC.
    Example: 2026-05-01T00:00:00Z

  - `invite.updated` (string)
    The date and time the invite was last updated in UTC.
    Example: 2026-05-01T00:00:00Z

  - `is_deleted` (boolean)
    Whether the budget owner has been removed from the budget.
    Example: false

  - `created` (string)
    The date and time when the budget owner was created in UTC.
    Example: 2024-01-01T00:00:00Z

  - `updated` (string)
    The date and time when the budget owner was last updated in UTC.
    Example: 2024-01-01T00:00:00Z

