ResourcesProduct Variants

Update product variant pricing

Update pricing, subscription cadence, quantity tiers, and payment-method selection through the shared variant pricing action.

Use this endpoint for pricing-specific mutations. Amounts are integer minor units, so 1000 represents USD 10.00.

Subscription pricing requires a positive amount, a supported cadence, and subscription-capable payment methods. Custom payment method IDs must belong to the current store and are never accepted for subscriptions.

Pass the variant's current updated_at value as expected_updated_at when you want stale writes rejected.

PATCH
/v2/products/{product}/variants/{variant}/pricing

Authorization

bearerAuth storeAuth
AuthorizationBearer <token>

Provide your SellApp API key as a bearer token.

In: header

X-STORE<token>

Select the SellApp store for this API request.

In: header

Path Parameters

product*integer

The product path parameter.

variant*integer

The variant path parameter.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X PATCH "https://sell.app/api/v2/products/0/variants/0/pricing" \  -H "Content-Type: application/json" \  -d '{    "pricing": {      "type": "SUBSCRIPTION",      "price": {        "price": 1000,        "currency": "USD"      },      "compare_at_price": null,      "humble": false,      "frequency": {        "value": 1,        "interval": "MONTH"      }    },    "payment_methods": [      "STRIPE"    ],    "custom_payment_method_ids": [],    "bulk_discount": [],    "expected_updated_at": "2026-07-12T18:30:00.000000Z"  }'
{
  "data": {
    "id": 2,
    "product_id": 1,
    "title": "Variant Title",
    "description": "Variant Description",
    "deliverable": {
      "data": {
        "removeDuplicate": false,
        "parsingMode": "COMMA",
        "stock": 3,
        "comment": "Thanks for the purchase! I'll send you a contract by email. Make sure to sign it with your blood.",
        "serials": [
          "1",
          "2",
          "3"
        ]
      },
      "types": [
        "TEXT",
        "MANUAL"
      ]
    },
    "pricing": {
      "humble": true,
      "frequency": {
        "value": 1,
        "interval": "MONTH"
      },
      "type": "SINGLE_PAYMENT",
      "price": {
        "price": "1999",
        "currency": "USD"
      }
    },
    "minimum_purchase_quantity": 1,
    "maximum_purchase_quantity": 3,
    "bulk_discount": [
      {
        "discount_percentage": 10,
        "minimum_purchase_amount": 10
      }
    ],
    "payment_methods": [
      "BTC",
      "STRIPE"
    ],
    "other_settings": {
      "quantity_increments": 2,
      "discord_data_required": false
    },
    "order": 1,
    "created_at": "2024-01-10T18:47:22.000000Z",
    "updated_at": "2024-01-10T18:47:22.000000Z",
    "deleted_at": null,
    "product": {
      "additional_information": [
        {
          "required": true,
          "key": "5ebae238c0afae7f4a4b96b30ff6f34c",
          "type": "CHECKBOX",
          "label": "I agree to handing over my soul"
        }
      ]
    }
  }
}
{
  "message": "Unauthenticated."
}
{
  "message": "This action is unauthorized."
}
{
  "message": "Rule not found."
}
{
  "message": "The given data was invalid.",
  "errors": {
    "data": [
      "The data field is required."
    ]
  }
}