---
title: "Execute checkout"
method: POST
path: "/api/v2/organizations/{orgSlug}/checkout"
tags: ["Checkout"]
---

# Execute checkout

`POST /api/v2/organizations/{orgSlug}/checkout`

Execute a checkout for memberships, fees, or bookings. Provide either memberships/fees or a booking, but not both. This endpoint creates billable items and may trigger invoice generation, payment charging, email notifications, and legal document signing depending on the provided options and the organization's billing flow. 

**Memberships/Fees flow:** Creates memberships and/or fees for the member. The checkout options control whether an invoice is generated immediately, whether the member is charged, and whether a credit card is required. If `shouldRequestApproval` is true, the order is created but payment is deferred and an approval request email is sent instead of the standard checkout confirmation. 

**Booking flow:** Creates a booking for the specified resource and time slot. If the booking produces fees, an invoice is generated and processed automatically. This flow simulates the booking experience from the members portal or public calendar. 

 Required scopes: `flex.billing.checkout.create`

## Path parameters

- `orgSlug` string, required

## Query parameters

- `enforceBookingPolicy` boolean

## Request body

- CheckoutRequestDto
  - `member` string, required — The `_id` of the member who is purchasing. Used to resolve the member's billing context, location, and company.
  - `location` string — Overrides the location for the order. If omitted, resolved from the member's assigned location.
  - `memberships` MembershipRequestDto[] — Memberships to check out. Mutually exclusive with booking.
    - `plan` string, required — The `_id` of the plan that defines the membership type, pricing, and benefits.
    - `startDate` string, required — The date the membership becomes active. Format: YYYY-MM-DD.
    - `location` string — The `_id` of the location for this membership. If omitted, resolved from the member's assigned location or the first open location.
    - `name` string — A custom display name that overrides the plan's default name for this membership.
    - `price` number — A custom price that overrides the plan's default price for this membership.
    - `addOns` string[] — Plan `_id`s of add-on plans to include with this membership. Add-ons provide supplementary benefits on top of the base plan.
  - `fees` FeeRequestDto[] — One-time fees to check out. Mutually exclusive with booking.
    - `plan` string — The `_id` of the plan that defines the fee type and pricing.
    - `date` string — The effective date of the fee. Format: YYYY-MM-DD.
    - `location` string — The `_id` of the location associated with this fee.
  - `booking` BookingRequestDto
    - `start` string, date-time, required — The booking start date and time in ISO 8601 format.
    - `end` string, date-time, required — The booking end date and time in ISO 8601 format. Must be after `start`.
    - `resource` string, required — The `_id` of the resource (e.g., meeting room, desk) to book.
    - `member` string — The `_id` of the member making the booking. At least one of `member` or `company` must be provided.
    - `company` string — The `_id` of the company making the booking. At least one of `member` or `company` must be provided.
    - `price` number — Overrides the resource's default price for this booking. When omitted, the resource's plan-based pricing applies.
    - `isFree` boolean — When true, the booking is created without generating any fees or charges.
    - `isTentative` boolean — When true, the booking is created as a tentative/unconfirmed reservation.
    - `extras` BookingExtraDto[] — Additional resources or services (e.g., catering, AV equipment) to include with the booking. Each extra generates additional fees.
      - `_id` string, required — The `_id` of the extra resource to add to the booking (e.g., additional equipment, catering).
      - `count` number, required — The quantity of this extra resource to include.
    - `description` string — A free-text description for the booking, visible to the member and admins.
    - `title` string — A display title for the booking, shown on calendars and booking lists.
  - `discountCode` string — A plan-level discount code. Applies the discount to all eligible plans in the order. Only one discount code is supported per checkout.
  - `documents` string[] — Legal document `_id`s to sign during checkout. Must be provided together with `signatureMeta` for document signing to occur.
  - `options` CheckoutOptionsDto, required
    - `shouldSendInvoice` boolean, required — Controls whether the generated invoice email is sent to the member after checkout.
    - `shouldInvoiceImmediately` boolean, required — When true, an invoice is generated immediately upon checkout rather than at the next billing cycle.
    - `shouldChargeImmediately` boolean, required — When true, the member is charged at checkout time. Requires `paymentProvider` with a valid `paymentIntent` or `setupIntent`.
    - `shouldRequireCreditCard` boolean, required — When true, requires a saved credit card or a payment setup intent before completing checkout.
  - `paymentProvider` PaymentProviderDetailsDto
    - `providerType` 'stripe', required — The payment provider type. Currently only Stripe is supported.
    - `cardType` string — The card brand (e.g., "visa", "mastercard"). Used for processing fee calculation.
    - `setupIntent` string — The Stripe setup intent ID. Required when `shouldChargeImmediatelly` is true with iDEAL, or when `shouldRequireCreditCard` is true without immediate charge.
    - `paymentIntent` string — The Stripe payment intent ID. Required when `shouldChargeImmediatelly` is true with Stripe Card payment method.
    - `method` 'card' | 'ach' | 'sepa' | 'sepa_debit' | 'bacs' | 'becs' | 'pad' | 'cashapp' | 'ideal' — The Stripe payment method type (e.g., card, ideal). Determines which intent field (`paymentIntent` or `setupIntent`) is required.
    - `shouldSavePaymentDetails` boolean — When true, persists the payment method on the member's account for future recurring charges.
  - `notifications` NotificationSettingsDto
    - `member` boolean, required — Controls whether the checkout confirmation or approval request email is sent to the member.
    - `admin` boolean, required — Controls whether the checkout notification email is sent to organization administrators.
  - `signatureMeta` string — Base64-encoded signature data used when signing the legal documents specified in `documents`. Both fields must be provided together for document signing to occur.
  - `shouldRequestApproval` boolean — When true, the checkout creates the order but does not process payment. An approval request email is sent instead of the standard checkout confirmation. Payment validation is skipped in this mode.

## Response `201`

- CheckoutResponseDto
  - `memberships` MembershipResultDto[] — The created memberships. Present in the memberships/fees checkout flow.
    - `properties` object — An object that contains all custom properties that can be applied to the item.
    - `_id` string — The _id of the membership.
    - `name` string — The name of the membership.
    - `isPersonal` boolean — If true, the membership is billed to the assigned member and not to the company.
    - `status` 'approved' | 'not_approved' — The approval status of the membership. This is usually set to approved, but if a member purchases a membership that needs to be approved, the status will be "not_approved".
    - `calculatedStatus` 'not_started' | 'active' | 'expired' | 'not_approved' — The actual membership status calculated by the platform.
    - `type` 'month_to_month' | 'fixed' — The type of the membership.
    - `location` string — A reference to the location the membership is issued for.
    - `plan` string — A reference to the price plan assigned to the membership. It is used to determine the sales account when generating an invoice.
    - `company` string — The _id of the company with which the membership is associated.
    - `member` string — The _id of the member with which the membership is associated.
    - `startDate` string — The membership starting date.
    - `endDate` string — The last date of membership. If not set, the membership is open-ended.
    - `intervalLength` 'once' | 'hour' | 'day' | 'month' — The membership interval. It could be "once", "hour", "day", or "month".
    - `intervalCount` number — The length of the membership interval.
    - `isLocked` boolean — If true, prevents editing the membership.
    - `price` number — The monthly price of the membership.
    - `deposit` number — The deposit of the membership.
    - `discount` string — A reference to a discount definition.
    - `discountAmount` number — Manually granted discount for the specific membership.
    - `calculatedDiscountAmount` number — The actual discount amount coming from a discount defintion or from a manually granted discount.
    - `discountedPrice` number — The final membership unit price after granting the discount.
    - `contract` string — Reference to the contract associated with the membership
    - `source` string — The source of the membership.
    - `createdAt` string, date-time — The date when the membership has been created.
    - `createdBy` string — The user that created the membership.
    - `modifiedAt` string, date-time — The user that did the last modification to the membership. If no update is made this field will match the "createdBy" field.
    - `modifiedBy` string — The user that last updated the membership.
  - `fees` FeeResultDto[] — One-time fees created alongside the memberships. Present in the memberships/fees checkout flow.
    - `properties` object — An object that contains all custom properties that can be applied to the item.
    - `_id` string — The _id of the fee.
    - `name` string — The name of the fee.
    - `price` number — The unit price of the item described by the fee.
    - `quantity` number — The quantity described by the one-off charge.
    - `company` string — The _id of the company that the fee is associated with.
    - `member` string — The _id of the member that the fee is associated with.
    - `location` string — A reference to the location the fee is issued for.
    - `plan` string — A reference to the price plan assigned to the fee. It is used to determine the sales account when generating an invoice.
    - `planType` 'Plan' | 'ResourceRate' — The type of the plan assigned to the fee.
    - `issueDate` string — The date the fee was issued.
    - `status` 'approved' | 'awaiting_approval' — The status of the fee.
    - `discount` string — A reference to a discount definition.
    - `discountAmount` number — Manually granted discount for the specific fee.
    - `calculatedDiscountAmount` number — The actual discount amount coming from a discount defintion or from a manually granted discount.
    - `discountedPrice` number — The final fee unit price after granting the discount.
    - `isRefundable` boolean — If true, the one-off charge is counted as deposit and can be refunded later on.
    - `isPersonal` boolean — If true, the one-off charge is billed to the assigned member and not to the company.
    - `shouldBillInAdvance` boolean — If true, the one-off charge is billed in advance (respecting its date). By default one-off charges are not billed in advance.
    - `shouldUseCoins` boolean — In order for a fee to use coins you need to set this to true. By default it's set to false.
    - `coins` FeeCoinResultDto[] — The coins used for the fee.
      - `_id` string — The _id of the coin used for the fee.
      - `count` number — The count of the coins used for the fee.
    - `payment` FeePaymentDto
      - `_id` string — The _id of the payment associated with the fee. Appears, if a fee has been invoiced
      - `status` 'not_paid' | 'invoiced' | 'paid' | 'refunded' | 'waived' — The status of the fee in terms of billing.
      - `creditNote` string — The _id of the credit note associated with the fee. Appears, if a fee was credited.
    - `source` string — The source of the fee.
    - `createdAt` string, date-time — The date when the fee has been created.
    - `createdBy` string — The user that created the fee.
    - `modifiedAt` string, date-time — The user that did the last modification to the fee. If no update is made this field will match the "createdBy" field.
    - `modifiedBy` string — The user that last updated the fee.
  - `booking` BookingResultDto
    - `properties` object — An object that contains all custom properties that can be applied to the item.
    - `_id` string — The _id of the booking.
    - `timezone` string — The timezone of the booking.
    - `start` string — The start date of the booking.
    - `end` string — The end date of the booking.
    - `recurrence` BookingRecurrenceResultDto
      - `rrule` string — The recurrence rule for the booking.
      - `exdates` string[] — The dates that are marked as an exception from the recurrence.
    - `seriesStart` string — The start date of the series or standalone booking. For recurring bookings, this refers to the start of the entire series
    - `seriesEnd` string — The end date of the series or standalone booking. For recurring bookings, this refers to the end of the last occurrence.
    - `location` string — The _id of the location of booking.
    - `company` string — Reference to the company.
    - `member` string — Reference to the member.
    - `resource` string — Reference to the booked resource.
    - `fees` BookingFeeResultDto[] — Array of items describing how the booking will be charged for.
      - `date` string, date-time — The date of the occurrence the fee has been generated for.
      - `fee` string — The actual charge generated for this occurrence.
      - `extraFees` string[] — Array of fees generated for the extras.
      - `passes` string[] — Array of passes used for this occurrence.
      - `credits` BookingCreditsResultDto[] — The credits used for the booking.
        - `count` number — The number of credits used for the booking.
        - `credit` string — The _id of the set of credits used for the booking.
      - `coins` BookingCoinResultDto[] — The coins used for the booking.
        - `_id` string — The _id of the coin used for the fee.
        - `count` number — The count of the coins used for the fee.
      - `customPrice` number — Used if you want to set a custom price for the booking and ignore the standard rate. Can also be used a in PUT request to update an existing booking.
    - `reference` string — The reference id of the booking.
    - `isCancelled` boolean — Whether the booking got canceled or not.
    - `title` string — Booking title/summary.
    - `rate` string — Reference to the resource rate used for the booking.
    - `description` string — Long description of the booking.
    - `isTentative` boolean — True if the booking is not confirmed. Tentative bookings are not charged.
    - `isFree` boolean — True if the booking is marked as free. If create a booking marked as free, no fees will be added for it.
    - `isAccounted` boolean — True if the booking is marked as accounted.
    - `extras` object[] — Extras that are added to the booking.
    - `visitors` string[] — An array containg a list of all the ids of external visitors associated with the booking.
    - `members` string[] — An array containing a list of all the _ids of teammates associated with the booking. This is possible if the member associated with the booking is part of a company - these company members can be added here.
    - `serviceSlots` BookingServiceSlotResultDto
      - `before` number — The amount of buffer time before the booking in minutes.
      - `after` number — The amount of buffer time after the booking in minutes.
    - `source` string — Shows where the booking was created
    - `createdAt` string — The date when the booking has been created.
    - `createdBy` string — The user that created the booking.
    - `modifiedAt` string — The date of the last update of the booking.
    - `modifiedBy` string — The user that did the last modification to the booking. If no update is made this field will match the createdBy field.
  - `invoice` PaymentResultDto
    - `properties` object — An object that contains all custom properties that can be applied to the item.
    - `_id` string — The id of the payment.
    - `number` string — The document number for the payment.
    - `documentType` 'creditNote' | 'invoice' | 'overpayment' | 'paymentCharge' — The type of the document. It could be either invoice, creditNote, or overpayment. If omitted, invoice is assumed.
    - `date` string — The issue date of the payment.
    - `dueDate` string — The due date of the payment.
    - `company` string — A reference to the company the payment is issued for.
    - `member` string — A reference to the member or individual the payment is issued for.
    - `location` string — A reference to the location the payment is issued by.
    - `reference` string — Additional data describing the payment. It could be any string value.
    - `taxType` 'included' | 'excluded' | 'noTax' — The type of the tax calculation for the payment. It could be excluded, included or noTax.
    - `allocations` CreditAllocationResultDto[] — A list of credit allocations. Each allocation has amount and target.
      - `_id` string — The id of the credit allocation.
      - `target` string — If payment is an invoice, a reference to the credit note, sourcing the credit. If payment is a credit note, a reference to the invoice the credit is allocated to.
      - `amount` number — The allocated amount.
      - `documentType` 'creditNote' | 'invoice' | 'overpayment' | 'paymentCharge' — The type of the document. It could be either invoice, creditNote, or overpayment. If omitted, invoice is assumed.
      - `accounting` AccountingResultDto
        - `provider` string — The name of the accounting provider.
        - `providerId` string — The id of the payment in the accounting provider.
        - `externalOrgId` string — The organization id in the accounting provider.
        - `deepLink` string — A deep link to the payment in the accounting provider.
        - `lastSync` string — The date of the last sync of the payment with the accounting integration.
        - `error` string — An error message with more details about the reason of the failure.
    - `lines` LineItemDto[] — A list of payment line items.
      - `taxPercent` number — The tax percent applied to the line item.
      - `taxAmount` number — The tax amount applied to the line item.
      - `price` number — The total price as described in the system.
      - `discountAmount` number — The calculated discount amount based on the discount set in the payment.
      - `unitPrice` number — Based on the quantity of the line item, this is the price of a single unit.
      - `baseUnitPrice` number — Based on the quantity of the line item, this is the price of a single unit in the base currency.
      - `subTotal` number — The subtotal of the line item (including tax).
      - `baseTotal` number — The total price of the line item in the base currency (including discount).
      - `total` number — The total for the line item (including tax).
      - `convertedAmounts` CalculatedLineStatsDto
        - `taxPercent` number — The tax percent applied to the line item.
        - `taxAmount` number — The tax amount applied to the line item.
        - `price` number — The total price as described in the system.
        - `discountAmount` number — The calculated discount amount based on the discount set in the payment.
        - `unitPrice` number — Based on the quantity of the line item, this is the price of a single unit.
        - `baseUnitPrice` number — Based on the quantity of the line item, this is the price of a single unit in the base currency.
        - `subTotal` number — The subtotal of the line item (including tax).
        - `baseTotal` number — The total price of the line item in the base currency (including discount).
        - `total` number — The total for the line item (including tax).
      - `description` string — Description of the line item.
      - `account` string — A reference to the account the line item is allocated to.
      - `plan` string — A reference to the plan the line item is for.
      - `fee` string — A reference to the fee the line item is for.
      - `location` string — A reference to the location the line item is for.
      - `membership` string — A reference to the membership the line item is for. @deprecated Use memberships array instead.
      - `taxRate` string — A reference to the taxRate the line item is for.
      - `discount` number — Based on the quantity of the line item, this is the total discount that applied.
      - `unitDiscount` number — Based on the quantity of the line item, this is the single discount of a unit.
      - `quantity` number — The quantity of items described in the line item.
      - `startDate` string — The start date of the billing period.
      - `endDate` string — The end date of the billing period.
      - `addOns` LineItemAddonDto
        - `name` string — The name of the addon.
        - `unitPrice` number — The unit price of the addon.
        - `description` string — The description of the addon.
      - `fees` string[] — An array of fee references from the original lines that were merged into this invoice line.
      - `memberships` string[] — An array of membership references from the original lines that were merged into this invoice line.
    - `processingFeeLine` LineItemDto
      - `taxPercent` number — The tax percent applied to the line item.
      - `taxAmount` number — The tax amount applied to the line item.
      - `price` number — The total price as described in the system.
      - `discountAmount` number — The calculated discount amount based on the discount set in the payment.
      - `unitPrice` number — Based on the quantity of the line item, this is the price of a single unit.
      - `baseUnitPrice` number — Based on the quantity of the line item, this is the price of a single unit in the base currency.
      - `subTotal` number — The subtotal of the line item (including tax).
      - `baseTotal` number — The total price of the line item in the base currency (including discount).
      - `total` number — The total for the line item (including tax).
      - `convertedAmounts` CalculatedLineStatsDto
        - `taxPercent` number — The tax percent applied to the line item.
        - `taxAmount` number — The tax amount applied to the line item.
        - `price` number — The total price as described in the system.
        - `discountAmount` number — The calculated discount amount based on the discount set in the payment.
        - `unitPrice` number — Based on the quantity of the line item, this is the price of a single unit.
        - `baseUnitPrice` number — Based on the quantity of the line item, this is the price of a single unit in the base currency.
        - `subTotal` number — The subtotal of the line item (including tax).
        - `baseTotal` number — The total price of the line item in the base currency (including discount).
        - `total` number — The total for the line item (including tax).
      - `description` string — Description of the line item.
      - `account` string — A reference to the account the line item is allocated to.
      - `plan` string — A reference to the plan the line item is for.
      - `fee` string — A reference to the fee the line item is for.
      - `location` string — A reference to the location the line item is for.
      - `membership` string — A reference to the membership the line item is for. @deprecated Use memberships array instead.
      - `taxRate` string — A reference to the taxRate the line item is for.
      - `discount` number — Based on the quantity of the line item, this is the total discount that applied.
      - `unitDiscount` number — Based on the quantity of the line item, this is the single discount of a unit.
      - `quantity` number — The quantity of items described in the line item.
      - `startDate` string — The start date of the billing period.
      - `endDate` string — The end date of the billing period.
      - `addOns` LineItemAddonDto
        - `name` string — The name of the addon.
        - `unitPrice` number — The unit price of the addon.
        - `description` string — The description of the addon.
      - `fees` string[] — An array of fee references from the original lines that were merged into this invoice line.
      - `memberships` string[] — An array of membership references from the original lines that were merged into this invoice line.
    - `taxAmounts` TaxAmountDto[] — A list of payment tax amounts.
      - `percent` number — The tax percent for the group.
      - `total` number — The tax total for the group.
      - `taxRate` string — A reference to the taxRate the group is for.
    - `subTotal` number — The total of the payment before tax.
    - `amount` number — The total of the payment after tax and discount.
    - `payableAmount` number — Total amount due for this payment. Voided and paid payments have payableAmount of 0.
    - `accounting` AccountingResultDto
      - `provider` string — The name of the accounting provider.
      - `providerId` string — The id of the payment in the accounting provider.
      - `externalOrgId` string — The organization id in the accounting provider.
      - `deepLink` string — A deep link to the payment in the accounting provider.
      - `lastSync` string — The date of the last sync of the payment with the accounting integration.
      - `error` string — An error message with more details about the reason of the failure.
    - `baseTotal` number — The base total amount of the payment.
    - `total` number — The total amount of the payment.
    - `paidAmount` number — The total amount paid for the payment.
    - `pendingAmount` number — The total amount pending for the payment.
    - `allocatedAmount` number — The total amount allocated for the payment.
    - `currency` string — The currency of the payment.
    - `currencyConversionRate` number — The conversion rate for the currency of the payment.
    - `isFailed` boolean — Determines whether the payment is considered as failed.
    - `isPaid` boolean — Determines whether the payment is considered as paid.
    - `isSent` boolean — Shows if the payment has been sent.
    - `status` 'voided' | 'failed' | 'draft' | 'pending' | 'refunded' | 'paid' | 'awaiting_payment' | 'partially_paid' — The status of the payment.
    - `chargeMethod` string — The charge method of the payment.
    - `createdAt` string — The date when the payment has been created at.
    - `createdBy` string — The user that created the payment.
    - `modifiedAt` string — The date when the payment has been modified for the last time. Note that adding/removing charges and credit allocations are considered modifications to both the invoice and the credit note/overpayment.
    - `modifiedBy` string — The user that did the last modification to the payment. Before the first modification, this field equals to the createdBy field.

---

[API](https://skmtc.dev/officernd/apis/authentication-api.md) · [All operations](https://skmtc.dev/officernd/apis/authentication-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/officernd/authentication-api/revisions/6bcd33dc648e/schema)
