---
title: "Bulk invite team members"
method: POST
path: "/api/v1/team-members/bulk"
tags: ["Team Members"]
---

# Bulk invite team members

`POST /api/v1/team-members/bulk`

Invite multiple users to the same team in a single request. Each member is processed independently — a failure on one item does not abort siblings. The response is a list with one entry per input member, in order, indicating individual outcomes.</br></br>Required scope: `team-members:write` </br>Organization authorization: `supported`

## Request body

- BulkInviteTeamMember
  - `teamId` integer — Id of the team that the members will be invited to. All members in the request are added to this team.
  - `members` BulkInviteTeamMemberItem[], required — Members to invite to the team. Each item is processed independently — a failure on one member does not abort siblings. The response lists every input item with its individual outcome.
    - `userId` integer, nullable — Id of the user to be invited. When inviting by `userId` the fields `email` or `phone` must not be provided.
    - `email` string, email, nullable — Email of the user to be invited. When inviting by `email` the fields `userId` or `phone` must not be provided.
    - `phone` string, nullable — Phone of the user to be invited. When inviting by `phone` the fields `userId` or `email` must not be provided.
    - `role` 'admin' | 'user' | 'other', required
    - `priceGroupId` integer, nullable — The price group for this team member, when not provided the default team price group will be applied
    - `costGroupId` integer, nullable — The cost group for this team member
    - `teamMemberProfileId` integer, nullable — The team member profile id to apply to this team member
    - `canConfigureChargePoints` boolean — Indicates if the team member can configure charge points
    - `canPayWithTeamWallet` boolean — Gives the team member access to pay with the team wallet in the Monta shop (e.g. charge keys, stickers). Team wallet payment for charging sessions is controlled by `teamWalletChargePaymentType`
    - `canRequestSponsoring` boolean — Allows the team member to request sponsoring from this team
    - `canManageTeamMembers` boolean — Allows the team member to view and manage other members settings
    - `teamWalletChargePaymentType` 'partner' | 'operator' | 'all' | 'team' | 'selected_operators' | 'none', nullable — On which chargers is the team member allowed to pay with Team Wallet?<br><br>* `all` - On any charger (including roaming chargers)<br>* `partner` - On chargers with the same partner as this team<br>* `operator` - On chargers with the same operator as this team<br>* `team` - On chargers belonging to this team<br>* `selected_operators` - On chargers from selected operators<br>* `none` - The team member is not allowed to pay with Team Wallet for any charge session<br>
    - `canDepositToWallet` boolean, nullable — Gives the team member permission to deposit to the team wallet
    - `canWithdrawFromWallet` boolean, nullable — Gives the team member permission to withdraw from the team wallet
    - `canManageChargeKeys` boolean, nullable — Gives the team member permission to manage charge keys for the team
    - `canPayForChargesCountryIds` integer[], nullable — List of country ids for which the team member can pay for charges
    - `note` string, nullable — A note for the team member
    - `chargePointIds` integer[], nullable — Ids of the charge points this team member will have access to
    - `partnerExternalId` string, nullable — External Id of this entity, managed by you.
    - `partnerCustomPayload` object[], nullable — Custom JSON payload for this entity, managed by you.
    - `notifyUser` boolean — Controls whether an invitation email and/or SMS is sent to the user based on the provided `email` and `phone` fields.
    - `immediateAccess` boolean, nullable — Grants the invited member access to the team immediately, without waiting for them to accept the invitation.
    - `kwhPriceCapAc` number, nullable — Maximum price per kWh in the team currency that the team will cover when charging on AC.
    - `kwhPriceCapDc` number, nullable — Maximum price per kWh in the team currency that the team will cover when charging on DC.

## Response `200`

Per-member invite results

- BulkInviteTeamMemberResult[]
  - `index` integer — Zero-based index of the member in the request `members` array this result corresponds to
  - `status` 'created' | 'failed', required
  - `teamMember` TeamMember
    - `id` integer, required — Id of the team member
    - `teamId` integer — Team id of team member
    - `displayName` string, nullable — The team member display name, formats can be: `First and Last Name`, `User: #id`, `email`, or `phone`
    - `operator` Operator
      - `id` integer — ID of the operator
      - `name` string, required — Name of operator
      - `identifier` string, required — Identifier of operator
      - `partnerId` integer, nullable — Id of the partner
      - `vatNumber` string, nullable — VAT number
    - `partnerExternalTeamId` string, nullable — The partner external id for the team
    - `userId` integer, nullable — User id of team member. If the user does not exist yet, it will be null
    - `email` string, nullable — Email of the team member
    - `phone` string, nullable — Phone number of the team member
    - `role` 'admin' | 'user' | 'other', required
    - `access` 'all' | 'selected' | 'other', required — definitions: * `all` - Indicates the team member has access all the team's charge points. * `selected` - Indicates the team member has only access to the selected charge points. * `other` - Fallback value, Indicates a new type was added but is not mapped/unknown on this API yet.
    - `state` 'requested' | 'invited' | 'rejected' | 'accepted' | 'blocked' | 'expired' | 'other', required
    - `note` string, nullable — Note for team member
    - `invitedAt` string, date-time, nullable — Date of team member was invited to join the team
    - `invitedBy` string, nullable — Email of the team member that invited this team member
    - `acceptedAt` string, date-time, nullable — Date of team member accepted the invitation
    - `acceptedBy` string, nullable — Email of the team member that accepted the invitation
    - `rejectedAt` string, date-time, nullable — Date of team member rejected the invitation
    - `createdAt` string, date-time, nullable — Date the team member was created
    - `updatedAt` string, date-time, nullable — Date the team member was updated
    - `deletedAt` string, date-time, nullable — Date the team member was deleted
    - `chargePointIds` integer[], required — The charge points ids this team member has access
    - `priceGroupId` integer, nullable — The price group for this team member
    - `costGroupId` integer, nullable — The cost group for this team member
    - `teamMemberProfileId` integer, nullable — The team member profile id to apply to this team member
    - `canConfigureChargePoints` boolean — Indicates if the team member can configure charge points
    - `canPayWithTeamWallet` boolean — Indicates if the team member can pay with the team wallet in the Monta shop (e.g. charge keys, stickers). Team wallet payment for charging sessions is controlled by `teamWalletChargePaymentType`
    - `canManageTeamWallet` boolean — Indicates if team member has access to withdraw and deposit from your team wallet to your bank account
    - `canDepositToWallet` boolean, nullable — Indicates if team member can deposit to team wallet
    - `canWithdrawFromWallet` boolean, nullable — Indicates if team member can withdraw from team wallet
    - `canManageChargeKeys` boolean, nullable — Indicates if team member can manage charge keys for the team
    - `canRequestSponsoring` boolean — Indicates if the team member is allowed to request sponsoring from this team for their charge point
    - `canManageTeamMembers` boolean — Indicates that the team member can view and manage other members settings
    - `canPayForChargesCountryIds` integer[], required — List of country ids for which the team member can pay for charges
    - `teamWalletChargePaymentType` 'partner' | 'operator' | 'all' | 'team' | 'selected_operators' | 'none', required — On which chargers is the team member allowed to pay with Team Wallet?<br><br>* `all` - On any charger (including roaming chargers)<br>* `partner` - On chargers with the same partner as this team<br>* `operator` - On chargers with the same operator as this team<br>* `team` - On chargers belonging to this team<br>* `selected_operators` - On chargers from selected operators<br>* `none` - The team member is not allowed to pay with Team Wallet for any charge session<br>
    - `partnerExternalId` string, nullable — External Id of this entity, managed by you
    - `partnerCustomPayload` object[], nullable — Custom JSON payload for this entity, managed by you
    - `kwhPriceCapAc` number, nullable — Maximum price per kWh in the team currency that the team will cover when charging on AC.
    - `kwhPriceCapDc` number, nullable — Maximum price per kWh in the team currency that the team will cover when charging on DC.
    - `sponsoredPriceGroupId` integer, nullable — Price group used to reimburse this team member for home charging. `null` means the employee's own cost price group is cloned at SCP creation time.
    - `autoApproveElectricityCost` boolean — When true, employee-submitted electricity costs are auto-approved for SCPs created for this team member.
    - `reimbursementEnabled` boolean — Master switch — whether the team member participates in home reimbursement. Gates auto-creation of sponsored charge points on acceptance and on charge-point install.
    - `reimbursementPayoutSchedule` 'end-of-month' | 'realtime' | 'other'
    - `reimbursementSubscription` boolean — Whether the operator reimburses the charge-point subscription price for this team member.
  - `error` string, nullable — Failure reason, present only when status is `failed`

## Other responses

- `400` — The request is invalid
- `401` — Consumer with provided credentials was not found
- `403` — Operator doesn't have access to resource
- `404` — Entity with the provided id was not found

---

[API](https://skmtc.net/monta/apis/monta-partner-api.md) · [All operations](https://skmtc.net/monta/apis/monta-partner-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/monta/monta-partner-api/versions/517e18f11015/schema)
