---
title: "Subscribe a team to a plan"
method: POST
path: "/api/v1/teams/{teamId}/plans/{planId}/subscribe"
tags: ["Subscriptions"]
---

# Subscribe a team to a plan

`POST /api/v1/teams/{teamId}/plans/{planId}/subscribe`

## Request

- Base URL: `https://partner-api.monta.com`
- URL: `https://partner-api.monta.com/api/v1/teams/{teamId}/plans/{planId}/subscribe`
- Auth: HTTP bearer

Required scope: `subscriptions:write` </br>Organization authorization: `supported`

## Path parameters

- `teamId` integer, required
- `planId` integer, required

## Request body

- SubscribeTeamToPlan
  - `userId` integer, nullable: The user that should be assigned as the purchaser of the subscription. If not provided, the subscription will be assigned to the default user for this consumer.
  - `nextPurchaseAt` string, date-time, nullable: Date when wallet will be charged for the first time (ISO8601: yyyy-MM-ddTHH:mm:ssZ). Has to be a date in the future.

## Response `201`

The created subscription

- Subscription
  - `id` integer: Id of the subscription
  - `state` 'pending' | 'active' | 'paused' | 'cancelling' | 'cancelled' | 'unpaid' | 'other', required
  - `nextPurchaseAt` string, date-time, nullable: Date of next purchase
  - `cancelledAt` string, date-time, nullable: Subscription cancellation date
  - `endAt` string, date-time, nullable: Subscription end date
  - `validityPeriod` SubscriptionValidityPeriod: The validity period of the subscription, with optional from (start) and to (end) dates.
    - `from` string, date-time, nullable: Start date of the subscription's validity period
    - `to` string, date-time, nullable: End date of the subscription's validity period
  - `discountPercentage` number, double: Discount percentage
  - `discountAbsolute` number, double: Discount absolute
  - `discountAmount` number, double: Discount amount
  - `originalAmount` number, double: Original amount
  - `totalAmount` number, double: Total amount
  - `purchaseCount` integer: Number of purchases
  - `chargePoints` integer: Number of charge points
  - `customerId` integer: The id of the customer
  - `customerType` 'team' | 'charge-point' | 'operator' | 'other', required: Enumerate the various subscription customer types
  - `planId` integer: Plan id
  - `serviceConfig` union
    - object
      - `serviceType` 'custom' | 'tax-refund' | 'charge-package', required
      - `payoutPerKwh` number, double, required: Amount to pay out per kWh
      - `priceIncludesVat` boolean, required: Indicates whether the VAT is already included in the price
      - `additionalFeeAbsolute` number, double, nullable, required: This absolute value will be added as additional fee, paid by charge point owner.Will be only applied to charge point owned by operator.Note: This uses the default currency of the operator!
      - `roamingAdditionalFeeAbsolute` number, double, nullable: Same as the additional fee absolute, but only applied to roaming sessions.
    - object
      - `serviceType` 'custom' | 'tax-refund' | 'charge-package', required
      - `subscriptionAdditionalFeeApplicationScope` 'all' | 'paid', required
      - `additionalFeePercentage` integer, required: This percentage will be added as additional fee, paid by charge point owner.Will only be applied to charge point owned by operator.
      - `additionalFeeAbsolute` number, double, required: This absolute value will be added as additional fee, paid by charge point owner.Will only be applied to charge point owned by operator.Note: This uses the default currency of the operator!
      - `additionalStartingFee` number, double, required: This absolute value will be added as additional fee, once per charge session, paid by charge point owner.Will only be applied to charge point owned by operator.Note: This uses the default currency of the operator!
      - `roamingAdditionalFeePercentage` integer, nullable: Same as the additional fee percentage, but only applied to roaming sessions.
      - `roamingAdditionalFeeAbsolute` number, double, nullable: Same as the additional fee absolute, but only applied to roaming sessions.
      - `roamingAdditionalStartingFee` number, double, nullable: Same as the additional starting fee, but only applied to roaming sessions.
  - `createdAt` string, date-time, required: Subscription creation date
  - `updatedAt` string, date-time, required: Subscription update date
  - `canCancel` boolean: Indicates if the subscription can be cancelled
  - `note` string, nullable: A note on the subscription
  - `deletedAt` string, date-time, nullable: Subscription marked as deleted date

## 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.dev/monta/apis/monta-partner-api.md) - [All operations](https://skmtc.dev/monta/apis/monta-partner-api/llms.txt) - [OpenAPI document](https://skmtc.dev/monta/apis/monta-partner-api/revisions/0ca400461c52?raw)
