---
title: "Remove a payment from a Basket"
method: DELETE
path: "/shop/basket/{basketId}/payments/{payment}"
tags: ["Baskets"]
---

# Remove a payment from a Basket

`DELETE /shop/basket/{basketId}/payments/{payment}`

Detaches a `Payment` from the basket. Any voucher balance the
payment was consuming is released back to the voucher, and the
basket's outstanding submit amount is recalculated.

Only valid while the basket is updatable — submitted baskets
return `400 Bad Request`.

## Response `200`

The updated `Basket` with the payment removed.

- object
  - `data` Basket, required
    - `id` string, object-id, required
    - `applied_promo_code` AppliedPromoCode
      - `id` string, object-id, required — The ID of the promo code.
      - `applied_at` string, date-time — The date and time the promo code was applied.
      - `applied_by` UserSummary
        - `id` string, mongo-id, required — The ID of the user.
        - `avatar` Media
          - `id` string, uuid, required — Unique identifier of the uploaded media item, returned from `createMedia`. Pass this ID into any field that accepts a media reference (logos, hero images, product images, etc.).
          - `file_name` string, required — Original filename of the uploaded asset, preserved as provided at upload time. Used for display in the media library and as a hint when serving downloads.
          - `mime_type` string, required — The mime type of the media item.
          - `original_url` string, required — The url of the media resource.
          - `size` integer, required — The size of the media item in bytes.
          - `url` string, required — The url of the converted media resource.
        - `email` string, email, required
        - `first_name` string, required
        - `full_name` string, required
        - `last_name` string, required
      - `code` string, required — The code of the promo code.
      - `discount_total` integer, required — The total discount from the applied promo code on the order.
      - `is_discount_applied` boolean, required — Whether the discount from the promo code has been applied to the order.
      - `percentage` integer, required — The percentage discount from the promo code.
    - `applied_promo_code_discount_total` integer, required
    - `applied_promo_code_id` string, nullable, required
    - `coupon_codes` BasketCouponSummary[], required
      - `id` string, object-id, required — The ID of the coupon.
      - `code` string, required — The code of the coupon.
      - `name` string, required — The name of the coupon.
      - `description` string, required — A description of the coupon.
      - `customer_credit_id` string, uuid, required — The customer credit this coupon relates to, if applicable.
    - `currency` string, required — The ISO-4217 currency code.
    - `customer_id` string, uuid, required
    - `discount_total` integer, required
    - `email` string, required
    - `guests` Guest[], required
      - `id` string, object-id, required — Stable identifier for the guest slot on an order. Used to attach intake-form answers, check the guest in or out, and link the slot to a `Customer` once one is resolved.
      - `checked_in_at` string, date-time, nullable, required — ISO-8601 timestamp at which the guest checked in for their visit. `null` until check-in happens.
      - `checked_out_at` string, date-time, nullable, required — ISO-8601 timestamp at which the guest checked out / finished their visit. `null` while the visit is still in progress.
      - `customer_id` string, uuid, nullable, required — The `Customer` the guest slot has been linked to, if any. `null` for walk-ins or anonymous guests that haven't been matched to a customer record yet.
      - `email` string, email, nullable — Email address captured for this guest, used to send the pre-visit intake form and post-visit follow-ups. `null` when no email has been supplied for the slot.
      - `first_name` string, required — The first name of the guest.
      - `intake_form_submission_id` string, object-id — Identifier of the most recent intake-form submission for this guest, if one exists. Use this to fetch the submitted answers from the guest-intake API.
      - `intake_form_complete` boolean, required — Whether the intake form for the guest is complete.
      - `is_lead_booker` boolean, required — Whether the guest is the lead booker.
      - `last_name` string, required — The last name of the guest.
      - `name` string, required — Full display name for the guest — typically `first_name` plus `last_name`, but kept as a separate field so the platform can render it consistently across receipts, intake forms and check-in screens.
    - `first_name` string, required
    - `is_promo_code_discount_applied` boolean, required
    - `items` Item[], required
      - `id` string, object-id, required
      - `currency` string, required — The ISO-4217 currency code.
      - `date` string, date, required
      - `discounts` Discount[], required
        - `id` string, object-id, required — The ID of the order discount
        - `amount_type` 'monetary' | 'percentage', required — The type of the amount this discount describes.
        - `applicable_for` 'app_and_booking_engine' | 'app_only', nullable, required — Where this discount type is able to be applied.
        - `applied_at` string, date-time, required — The date and time that the discount was applied.
        - `applied_by` UserSummary, required
          - `id` string, mongo-id, required — The ID of the user.
          - `avatar` Media
            - `id` string, uuid, required — Unique identifier of the uploaded media item, returned from `createMedia`. Pass this ID into any field that accepts a media reference (logos, hero images, product images, etc.).
            - `file_name` string, required — Original filename of the uploaded asset, preserved as provided at upload time. Used for display in the media library and as a hint when serving downloads.
            - `mime_type` string, required — The mime type of the media item.
            - `original_url` string, required — The url of the media resource.
            - `size` integer, required — The size of the media item in bytes.
            - `url` string, required — The url of the converted media resource.
          - `email` string, email, required
          - `first_name` string, required
          - `full_name` string, required
          - `last_name` string, required
        - `calculated_amount` integer, required — The total calculated amount of this discount.
        - `coupon` BasketCouponSummary, required
          - `id` string, object-id, required — The ID of the coupon.
          - `code` string, required — The code of the coupon.
          - `name` string, required — The name of the coupon.
          - `description` string, required — A description of the coupon.
          - `customer_credit_id` string, uuid, required — The customer credit this coupon relates to, if applicable.
        - `coupon_code_id` string, object-id, nullable, required — The ID of the coupon code used to add this discount, if applicable.
        - `currency` string, required — The ISO-4217 currency code.
        - `discount_amount` integer, required — The value of the discount to be applied when a discount type is used. This can be used as a monetary or percentage value for an in-app discount type and is set to percentage for a promo code.
        - `discount_type_code` string, required — The code for the discount type.
        - `reason_code` string, required — A code to describe the reason for the discount.
        - `site_id` string, uuid, required — The ID of the site the discount is associated with.
      - `duration` integer, required
      - `guest` Guest
        - `id` string, object-id, required — Stable identifier for the guest slot on an order. Used to attach intake-form answers, check the guest in or out, and link the slot to a `Customer` once one is resolved.
        - `checked_in_at` string, date-time, nullable, required — ISO-8601 timestamp at which the guest checked in for their visit. `null` until check-in happens.
        - `checked_out_at` string, date-time, nullable, required — ISO-8601 timestamp at which the guest checked out / finished their visit. `null` while the visit is still in progress.
        - `customer_id` string, uuid, nullable, required — The `Customer` the guest slot has been linked to, if any. `null` for walk-ins or anonymous guests that haven't been matched to a customer record yet.
        - `email` string, email, nullable — Email address captured for this guest, used to send the pre-visit intake form and post-visit follow-ups. `null` when no email has been supplied for the slot.
        - `first_name` string, required — The first name of the guest.
        - `intake_form_submission_id` string, object-id — Identifier of the most recent intake-form submission for this guest, if one exists. Use this to fetch the submitted answers from the guest-intake API.
        - `intake_form_complete` boolean, required — Whether the intake form for the guest is complete.
        - `is_lead_booker` boolean, required — Whether the guest is the lead booker.
        - `last_name` string, required — The last name of the guest.
        - `name` string, required — Full display name for the guest — typically `first_name` plus `last_name`, but kept as a separate field so the platform can render it consistently across receipts, intake forms and check-in screens.
      - `guests` Guest[], required
        - `id` string, object-id, required — Stable identifier for the guest slot on an order. Used to attach intake-form answers, check the guest in or out, and link the slot to a `Customer` once one is resolved.
        - `checked_in_at` string, date-time, nullable, required — ISO-8601 timestamp at which the guest checked in for their visit. `null` until check-in happens.
        - `checked_out_at` string, date-time, nullable, required — ISO-8601 timestamp at which the guest checked out / finished their visit. `null` while the visit is still in progress.
        - `customer_id` string, uuid, nullable, required — The `Customer` the guest slot has been linked to, if any. `null` for walk-ins or anonymous guests that haven't been matched to a customer record yet.
        - `email` string, email, nullable — Email address captured for this guest, used to send the pre-visit intake form and post-visit follow-ups. `null` when no email has been supplied for the slot.
        - `first_name` string, required — The first name of the guest.
        - `intake_form_submission_id` string, object-id — Identifier of the most recent intake-form submission for this guest, if one exists. Use this to fetch the submitted answers from the guest-intake API.
        - `intake_form_complete` boolean, required — Whether the intake form for the guest is complete.
        - `is_lead_booker` boolean, required — Whether the guest is the lead booker.
        - `last_name` string, required — The last name of the guest.
        - `name` string, required — Full display name for the guest — typically `first_name` plus `last_name`, but kept as a separate field so the platform can render it consistently across receipts, intake forms and check-in screens.
      - `image` Media
        - `id` string, uuid, required — Unique identifier of the uploaded media item, returned from `createMedia`. Pass this ID into any field that accepts a media reference (logos, hero images, product images, etc.).
        - `file_name` string, required — Original filename of the uploaded asset, preserved as provided at upload time. Used for display in the media library and as a hint when serving downloads.
        - `mime_type` string, required — The mime type of the media item.
        - `original_url` string, required — The url of the media resource.
        - `size` integer, required — The size of the media item in bytes.
        - `url` string, required — The url of the converted media resource.
      - `item_configuration` ItemConfiguration — Type-specific properties to configure an order item.
      - `net_total` integer, required
      - `offering_categories` object[], required
        - `id` string, object-id, required
        - `name` string, required
      - `offering_id` string, object-id, required
      - `offering_name` string, required
      - `offering_type` 'appointment' | 'appointment_enquiry' | 'area_booking' | 'course' | 'hotel_room_reservation' | 'membership' | 'package' | 'product' | 'session' | 'table_reservation' | 'voucher', required — Discriminator describing what kind of sellable item an `Offering` represents. The value determines which downstream schema (`Appointment`, `Session`, `Package`, etc.) the offering's `offering_id` resolves against, and which checkout/booking flow applies.
      - `option_budgets` OptionBudget[]
        - `budget` string, nullable, required — The amount of the budget, in the smallest denomination.
        - `choice_id` string, required — The ID of the choice this option budget belongs to.
        - `remaining` string, nullable, required — The amount of the budget remaining to be spent, in the smallest denomination.
        - `spent` string, nullable, required — The amount spent towards the budget, in the smallest denomination.
      - `package_items` OrderItemPackageItem[], required
        - `id` string, mongo-id, required — The ID of the package item.
        - `booking_summary` union
          - AreaBookingSummary
            - `id` string, object-id, required
            - `area_ids` string[], required
            - `areas` BookableAreaSummary[], required
              - …
            - `duration` integer, required
            - `end_time` string, date-time, required
            - `offering` OfferingSummary, required — Summary details of an offering.
              - …
            - `start_time` string, date-time, required
            - `status` 'cancelled' | 'confirmed' | 'pending_confirmation' | 'reserved' | 'waitlisted', required
            - `created_at` string, date-time, required — When then resource was created.
            - `updated_at` string, date-time, required — When then resource was last updated.
          - BookingSummaryBookingSummary
            - `id` string, object-id, required
            - `duration` integer, required
            - `end_time` string, date-time, required
            - `equipment` EquipmentSummary[], required
              - …
            - `equipment_ids` string[], required
            - `offering` OfferingSummary, required — Summary details of an offering.
              - …
            - `practitioners` PractitionerSummary[], required
              - …
            - `practitioner_ids` string[], required
            - `practitioner_was_requested` boolean
            - `room` RoomSummary, required — The summary of a `Room` object
              - …
            - `room_id` string, object-id, required
            - `room_was_requested` boolean
            - `session_id` string, object-id
            - `start_time` string, date-time, required
            - `status` 'cancelled' | 'confirmed' | 'pending_confirmation' | 'reserved' | 'waitlisted', required
            - `created_at` string, date-time, required — When then resource was created.
            - `updated_at` string, date-time, required — When then resource was last updated.
          - TableReservationSummary
            - `id` string, object-id, required
            - `duration` integer, required
            - `end_time` string, date-time, required
            - `offering` OfferingSummary, required — Summary details of an offering.
              - …
            - `start_time` string, date-time, required
            - `status` 'cancelled' | 'confirmed' | 'pending_confirmation' | 'reserved' | 'waitlisted', required
            - `created_at` string, date-time, required — When then resource was created.
            - `updated_at` string, date-time, required — When then resource was last updated.
        - `choice_id` string, mongo-id, required — The ID of the package choice this item relates to.
        - `duration` integer, nullable, required — The duration of the item in minutes.
        - `guests` GuestSummary[]
          - `id` string, mongo-id, required — The ID of the guest.
          - `customer_id` string, mongo-id, nullable — The ID of the customer this guest relates to.
          - `name` string, required — The guest's full name.
          - `checked_in_at` string, date-time, nullable, required — The date and time the guest checked in.
        - `item_configuration` ItemConfiguration, required — Type-specific properties to configure an order item.
        - `offering_id` string, mongo-id, required — The ID of the offering.
        - `offering_name` string, required — The name of the offering.
        - `offering_type` string, required — The offering type of this package item.
        - `option_id` string, mongo-id, required — The ID of the choice option that this item relates to.
        - `price_change` integer, required — The amount by which this option changes the overall package price.
        - `reserved_until` string, date-time, required
        - `shared_basket_item_id` string, object-id
        - `status` 'cancelled' | 'in_progress' | 'new' | 'no_show' | 'settled' | 'submitted'
        - `time` string, date-time, nullable, required — The start time of the item.
      - `price` integer, nullable, required
      - `purchasable_details` union
        - PurchasableDetailsVoucher
          - `delivery_date` string, date-time
        - object
          - `membership_rate_id` string, object-id
          - `membership_type_id` string, object-id
          - `membership_type_name` string
          - `purchasable_id` string, object-id, nullable
          - `rate` object
            - `billing_frequency` string, required
            - `currency` string, required — The ISO-4217 currency code.
            - `default_duration` integer, required
            - `amount` string, required
          - `joining_fee` object
            - `amount` integer, required
            - `currency` string, required — The ISO-4217 currency code.
      - `quantity` integer, required
      - `reserved_until` string, date-time, nullable, required
      - `tax_amount` integer, required
      - `tax_percent` integer, required
      - `time` string, date-time, required
      - `total_cost` integer, nullable, required
      - `validity` object
        - `errors` object[], required
          - `message` string
        - `valid` boolean, required
      - `will_be_waitlisted` boolean
    - `items_reserved_until` string, date-time, nullable, required
    - `last_name` string, required
    - `net_total` integer, required
    - `order_ref` string, nullable, required
    - `organisation_id` string, uuid, required
    - `outstanding_payment_amount` integer, required
    - `payments` Payment[], required
      - `id` string, object-id, required — The ID of the item to be added.
      - `amount` integer, required — The amount of the payment, in the lowest denomination
      - `capture_method` string, nullable, required — At what point the payment amount will be captured
      - `chargebacks` Chargeback[]
        - `id` string, object-id, required
        - `amount` string, required
        - `currency` string, required — The ISO-4217 currency code.
        - `payment_id` string, object-id, required — The ID of the payment that was charged back.
        - `processor_data` object, required
        - `reason` string, required — The reason for the chargeback.
        - `status` 'confirmed' | 'pending' | 'processed' | 'reversed', required
        - `created_at` string, date-time, required — When then resource was created.
      - `currency` string, required — The ISO-4217 currency code.
      - `details_source` string, nullable, required — How the payment method will be provided
      - `failure_reason` string, nullable — If present, provides a human-readable explanation for the failure.
      - `item_revenues` PaymentItemRevenue[], nullable, required — How the payment amount is allocated across the order's items and revenue centres. Null for payments taken before item revenue allocation was enabled — such payments cannot support item-level operations like partial charge to room.
        - `basket_item_id` string, object-id, required — The ID of the order item that this allocation covers.
        - `revenue_centre` string, required — The revenue centre of the order item's revenue line that this allocation covers.
        - `gross_amount` integer, required — The gross amount of the payment allocated to this revenue line, in the lowest denomination.
        - `net_amount` integer, required — The net amount of the payment allocated to this revenue line, in the lowest denomination.
        - `refunded_amount` integer, required — The amount of this allocation that has been refunded, in the lowest denomination.
        - `currency` string, required — The ISO-4217 currency code.
      - `order_ref` string, nullable
      - `paid_at` string, date-time, nullable, required — The time and date that the payment was paid.
      - `payable_id` string, object-id, required
      - `payable_type` string, required
      - `processor` string, required — The payment processor to be used for the payment
      - `processor_data` object, required — A dictionary of processor-specific data
      - `processor_id` string, object-id, required
      - `processor_type` string, nullable, required
      - `refundable_amount` number, required — The amount of the payment that may be refunded.
      - `refunds` Refund[], required
        - `id` string, object-id, required — The ID of the refund.
        - `payment_id` string, object-id, required — The ID of the payment that was refunded.
        - `amount` integer, required — The amount of the refund.
        - `currency` string, required — The ISO-4217 currency code.
        - `notes` string, nullable — Notes that were added against the refund.
        - `status` 'pending' | 'complete' | 'failed', required — The current status of the refund.
        - `processor_data` object, required — A dictionary of processor-specific data.
        - `created_at` string, date-time, required — The date and time that the refund was created.
      - `status` 'cancelled' | 'expired' | 'failed' | 'paid' | 'payment_method_charged' | 'payment_method_stored' | 'pending' | 'ready_for_capture' | 'requires_action', required — The current status of the payment
      - `created_at` string, date-time, required — When then resource was created.
    - `phone` string, required
    - `promo_code_applied_at` string, date-time
    - `promo_code_applied_by` UserSummary
      - `id` string, mongo-id, required — The ID of the user.
      - `avatar` Media
        - `id` string, uuid, required — Unique identifier of the uploaded media item, returned from `createMedia`. Pass this ID into any field that accepts a media reference (logos, hero images, product images, etc.).
        - `file_name` string, required — Original filename of the uploaded asset, preserved as provided at upload time. Used for display in the media library and as a hint when serving downloads.
        - `mime_type` string, required — The mime type of the media item.
        - `original_url` string, required — The url of the media resource.
        - `size` integer, required — The size of the media item in bytes.
        - `url` string, required — The url of the converted media resource.
      - `email` string, email, required
      - `first_name` string, required
      - `full_name` string, required
      - `last_name` string, required
    - `site_id` string, uuid, required
    - `special_requests` string, nullable, required
    - `status` 'cancelled' | 'in_progress' | 'new' | 'no_show' | 'settled' | 'submitted', required
    - `submit_auth_amount` integer, nullable, required
    - `submit_errors` object[]
      - `error` string, required
      - `message` string, required
      - `time` integer, required
    - `submit_payment_amount` integer, nullable, required
    - `submitted_at` string, date-time, nullable, required
    - `total_cost` integer, required
    - `total_paid_or_authed` integer, required
    - `total_tax` integer, required
    - `totals` object, required
      - `applied_vouchers` integer, required
      - `auth_required` integer, required
      - `discounts` integer, required
      - `gross_total` integer, required
      - `net_total` integer, required
      - `payment_required` integer, required
      - `tax` integer, required
    - `voucher_codes` VoucherSummary[], required
      - `id` string, uuid, required — The ID of the voucher.
      - `amount_type` string, required — The amount type of the voucher.
      - `calculated_amount` integer — The calculated amount of the voucher.
      - `code` string, required — The code of the voucher.
      - `coupon_code_id` string, object-id — The ID of the coupon that created the voucher, if applicable.
      - `description` string, nullable, required — The description of the voucher.
      - `is_redeemed` boolean — Whether the voucher has been redeemed.
      - `name` string, required — The name of the voucher.
      - `voucher_type_id` string, object-id, required — The ID of the voucher type.
    - `created_at` string, date-time, required — When then resource was created.
    - `updated_at` string, date-time, required — When then resource was last updated.

## Other responses

- `400` — The request failed.
- `401` — The user is unauthenticated
- `403` — The authenticated user does not have permission.
- `404` — The resource couldn't be found

---

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