---
title: "Create a subscription offer"
method: POST
path: "/subscription/offer"
tags: ["Subscription"]
---

# Create a subscription offer

`POST /subscription/offer`

Creates a new subscription offer

## Request body

- ApiCreateSubscriptionOfferDto
  - `name` string, required — The name of the subscription offer
  - `description` string, required — The description of the subscription offer
  - `currency` 'EUR' | 'USD', required — The currency for the subscription offer
  - `amountInCents` number, required — The amount in cents for the subscription offer
  - `entryFeesInCents` number — Optional entry fees in cents for the first payment. If set, the first payment will be entryFeesInCents, and subsequent recurring payments will be amountInCents. If not set, all payments will be amountInCents.
  - `interval` 'day' | 'week' | 'month' | 'year', required — The billing interval for the subscription
  - `intervalCount` number, required — The number of intervals between billing cycles. Maximum depends on the selected interval: day up to 365, week up to 52, month up to 12, year up to 3.
  - `cycleCount` number — The number of cycles the customer will be billed for, if cycleCount is 12 for example if the interval is month and intervalCount is 1, the customer will be billed for 12 months and the subscription will be cancelled after 12 months
  - `trialPeriodDays` number — Trial period length in days for subscriptions created from this offer.
  - `sessionCustomization` CreateSessionCustomizationDto
    - `bgColor` string — The background color of the checkout session
    - `fontColor` string — The font color of the checkout session
    - `logoUrl` string — The logo url of the checkout session
    - `merchantName` string — The merchant name of the checkout session, the default merchant name will be used if not provided
  - `statementDescriptor` string — Optional statement descriptor (max 11 characters) shown on the customer's bank statement as 'INFLOWPAY* <descriptor>'. Falls back to the account-level statement descriptor if omitted.
  - `successUrl` string — The URL to redirect to after successful subscription first payment. This will be used as default for all subscriptions from this offer.
  - `cancelUrl` string — The URL to redirect to after failed/cancelled subscription first payment. This will be used as default for all subscriptions from this offer.

## Response `201`

Create a subscription offer successful

- CreateSubscriptionOfferResponse
  - `id` string, required — Unique identifier of the subscription offer
  - `name` string, required — Name of the subscription offer
  - `description` string, required — Description of the subscription offer
  - `amountInCents` number, required — Amount in cents (e.g., 2999 = €29.99)
  - `currency` 'EUR' | 'GBP' | 'USD', required — Currency for the subscription
  - `interval` 'day' | 'week' | 'month' | 'year', required — Billing interval
  - `intervalCount` number, required — Number of intervals between each billing
  - `isArchived` boolean, required — Whether the subscription offer is archived
  - `waitlistEnabled` boolean — Whether the subscription offer is using the waitlist flow (capture later).
  - `userId` string, required — User ID who created the subscription offer
  - `createdAt` string, date-time, required — Creation timestamp
  - `updatedAt` string, date-time, required — Last update timestamp
  - `trialPeriodDays` number, nullable — Trial period length in days. If present and >0, subscription is currently in free trial until creation date + trialPeriodDays.

## Other responses

- `400` — Invalid input data
- `401` — Unauthorized - Invalid API key

---

[API](https://skmtc.dev/inflowpay/apis/inflow-api.md) · [All operations](https://skmtc.dev/inflowpay/apis/inflow-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/inflowpay/inflow-api/revisions/3012dd3dd14a/schema)
