API ReferenceOrders

Create and manage orders

Create a purchase, open checkout, issue refunds, and manage delivery.

An order represents one purchase and contains one or more line items. Each line item describes a purchased product variant. Create an order, then use its ID for checkout, refunds, or delivery actions. Checkout URLs appear only in order creation and checkout responses. Existing invoice operations remain available for integrations that use them.

Use POST /v2/orders/wallet to create and pay from an existing customer wallet in one call. This debits the full order total and queues fulfillment. It requires both invoice and wallet:write API-key abilities and the matching store permissions. Subscriptions and partial wallet payments are not supported. Existing orders can use /wallet-payments only while pending and without a payment method or checkout session.

Every mutation below requires Idempotency-Key. Reuse it only for the same intended change.

POST
/v2/orders

Authorization

AuthorizationBearer <token>

Provide your SellApp API key as a bearer token.

In: header

Header Parameters

Idempotency-Key*string

Reuse this key only for an identical retry. A replay returns Idempotent-Replayed: true.

Length8 <= length <= 255
X-STORE?string

Store slug. Required for OAuth access tokens. API keys may omit it to use their current store, or the first accessible store when no current store is selected.

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

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://sell.app/api/v2/orders" \  -H "Idempotency-Key: project-library-2026-09-04" \  -H "X-STORE: launch-lab" \  -H "Content-Type: application/json" \  -d '{    "customer_email": "maya@example.com",    "payment_method": "STRIPE",    "product_variants": {      "4321": {        "quantity": 1      }    }  }'
{
  "data": {
    "id": 9001,
    "status": "PENDING",
    "timeline": [
      {
        "status": "PENDING",
        "set_at": "2026-08-01T12:00:00Z"
      }
    ],
    "customer": {
      "id": 77,
      "email": "maya@example.com",
      "country": "United Kingdom",
      "location": "London",
      "proxied": false
    },
    "payment": {
      "method": "STRIPE",
      "transaction_id": null,
      "payment_id": null,
      "payment_capture_id": null,
      "blockchain_txid": null,
      "settlement_gateway": null,
      "has_checkout_url": true,
      "checkout_url": "https://checkout.stripe.com/c/pay/cs_example"
    },
    "totals": {
      "currency": "USD",
      "subtotal_cents": 1999,
      "total_exclusive_cents": 1999,
      "total_cents": 1999,
      "total_exclusive_usd_cents": 1999,
      "total_usd_cents": 1999
    },
    "coupon_id": null,
    "line_items": [
      {
        "id": 501,
        "product_id": 120,
        "product_variant_id": 4321,
        "product_title": "Design kit",
        "variant_title": "Standard",
        "quantity": 1,
        "status": "PENDING",
        "currency": "USD",
        "subtotal_cents": 1999,
        "total_exclusive_cents": 1999,
        "total_cents": 1999,
        "subscription_id": null,
        "created_at": "2026-08-01T12:00:00Z"
      }
    ],
    "created_at": "2026-08-01T12:00:00Z",
    "updated_at": "2026-08-01T12:00:00Z"
  }
}
{
  "type": "invalid_request_error",
  "code": "bad_request",
  "message": "The request could not be understood.",
  "status": 400,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#bad-request"
}
{
  "type": "authentication_error",
  "code": "unauthenticated",
  "message": "Unauthenticated.",
  "status": 401,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#unauthenticated"
}
{
  "type": "authorization_error",
  "code": "forbidden",
  "message": "This action is unauthorized.",
  "status": 403,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#forbidden"
}
{
  "type": "not_found_error",
  "code": "resource_not_found",
  "message": "Not Found.",
  "status": 404,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#resource-not-found"
}
{
  "type": "conflict_error",
  "code": "conflict",
  "message": "The resource state changed before this request.",
  "status": 409,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#conflict"
}
{
  "type": "invalid_request_error",
  "code": "cursor_expired",
  "message": "This cursor has expired. Start again without a cursor.",
  "status": 410,
  "param": "cursor",
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#cursor-expired"
}
{
  "type": "validation_error",
  "code": "validation_failed",
  "message": "The selected product variant id is invalid.",
  "status": 422,
  "param": "product_variant_id",
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#validation-failed",
  "errors": {
    "product_variant_id": [
      "The selected product variant id is invalid."
    ]
  }
}
{
  "type": "rate_limit_error",
  "code": "rate_limit_exceeded",
  "message": "Too Many Attempts.",
  "status": 429,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#rate-limit-exceeded"
}
{
  "type": "api_error",
  "code": "api_error",
  "message": "Server Error",
  "status": 500,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#api-error"
}
POST
/v2/orders/wallet

Authorization

AuthorizationBearer <token>

Provide your SellApp API key as a bearer token.

In: header

Header Parameters

Idempotency-Key*string

Reuse this key only for an identical retry. A replay returns Idempotent-Replayed: true.

Length8 <= length <= 255
X-STORE?string

Store slug. Required for OAuth access tokens. API keys may omit it to use their current store, or the first accessible store when no current store is selected.

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

application/json

application/json

application/json

curl -X POST "https://sell.app/api/v2/orders/wallet" \  -H "Idempotency-Key: project-library-2026-09-04" \  -H "X-STORE: launch-lab" \  -H "Content-Type: application/json" \  -d '{    "customer_email": "maya.chen@example.com",    "product_variants": {      "4321": {        "quantity": 1      }    },    "country": "US"  }'
{
  "data": {
    "id": 9001,
    "status": "PAID",
    "timeline": [
      {
        "status": "PENDING",
        "set_at": "2026-08-01T12:00:00Z"
      },
      {
        "status": "PAID",
        "set_at": "2026-08-01T12:00:01Z"
      }
    ],
    "customer": {
      "id": 77,
      "email": "maya.chen@example.com",
      "country": "United States",
      "location": "New York",
      "proxied": false
    },
    "payment": {
      "method": null,
      "transaction_id": null,
      "payment_id": null,
      "payment_capture_id": null,
      "blockchain_txid": null,
      "settlement_gateway": null,
      "has_checkout_url": false,
      "checkout_url": "https://sell.app/payment/status/completed/9001?signature=example"
    },
    "totals": {
      "currency": "USD",
      "subtotal_cents": 1999,
      "total_exclusive_cents": 1999,
      "total_cents": 1999,
      "total_exclusive_usd_cents": 1999,
      "total_usd_cents": 1999
    },
    "coupon_id": null,
    "line_items": [
      {
        "id": 501,
        "product_id": 120,
        "product_variant_id": 4321,
        "product_title": "Design kit",
        "variant_title": "Standard",
        "quantity": 1,
        "status": "PAID",
        "currency": "USD",
        "subtotal_cents": 1999,
        "total_exclusive_cents": 1999,
        "total_cents": 1999,
        "subscription_id": null,
        "created_at": "2026-08-01T12:00:00Z"
      }
    ],
    "created_at": "2026-08-01T12:00:00Z",
    "updated_at": "2026-08-01T12:00:01Z"
  }
}
{
  "type": "invalid_request_error",
  "code": "bad_request",
  "message": "The request could not be understood.",
  "status": 400,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#bad-request"
}
{
  "type": "authentication_error",
  "code": "unauthenticated",
  "message": "Unauthenticated.",
  "status": 401,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#unauthenticated"
}
{
  "type": "authorization_error",
  "code": "forbidden",
  "message": "This action is unauthorized.",
  "status": 403,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#forbidden"
}
{
  "type": "not_found_error",
  "code": "resource_not_found",
  "message": "Not Found.",
  "status": 404,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#resource-not-found"
}
{
  "type": "validation_error",
  "code": "validation_failed",
  "message": "The selected product variant id is invalid.",
  "status": 422,
  "param": "product_variant_id",
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#validation-failed",
  "errors": {
    "product_variant_id": [
      "The selected product variant id is invalid."
    ]
  }
}
{
  "type": "rate_limit_error",
  "code": "rate_limit_exceeded",
  "message": "Too Many Attempts.",
  "status": 429,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#rate-limit-exceeded"
}
{
  "type": "api_error",
  "code": "api_error",
  "message": "Server Error",
  "status": 500,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#api-error"
}
POST
/v2/orders/{order}/wallet-payments

Authorization

AuthorizationBearer <token>

Provide your SellApp API key as a bearer token.

In: header

Path Parameters

order*integer

Header Parameters

Idempotency-Key*string

Reuse this key only for an identical retry. A replay returns Idempotent-Replayed: true.

Length8 <= length <= 255
X-STORE?string

Store slug. Required for OAuth access tokens. API keys may omit it to use their current store, or the first accessible store when no current store is selected.

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

application/json

application/json

application/json

curl -X POST "https://sell.app/api/v2/orders/42/wallet-payments" \  -H "Idempotency-Key: project-library-2026-09-04" \  -H "X-STORE: launch-lab" \  -H "Content-Type: application/json" \  -d '{    "expected_status": "PENDING"  }'
{
  "data": {
    "id": 9001,
    "status": "PAID",
    "timeline": [
      {
        "status": "PENDING",
        "set_at": "2026-08-01T12:00:00Z"
      },
      {
        "status": "PAID",
        "set_at": "2026-08-01T12:00:01Z"
      }
    ],
    "customer": {
      "id": 77,
      "email": "maya.chen@example.com",
      "country": "United States",
      "location": "New York",
      "proxied": false
    },
    "payment": {
      "method": null,
      "transaction_id": null,
      "payment_id": null,
      "payment_capture_id": null,
      "blockchain_txid": null,
      "settlement_gateway": null,
      "has_checkout_url": false
    },
    "totals": {
      "currency": "USD",
      "subtotal_cents": 1999,
      "total_exclusive_cents": 1999,
      "total_cents": 1999,
      "total_exclusive_usd_cents": 1999,
      "total_usd_cents": 1999
    },
    "coupon_id": null,
    "line_items": [
      {
        "id": 501,
        "product_id": 120,
        "product_variant_id": 4321,
        "product_title": "Design kit",
        "variant_title": "Standard",
        "quantity": 1,
        "status": "PAID",
        "currency": "USD",
        "subtotal_cents": 1999,
        "total_exclusive_cents": 1999,
        "total_cents": 1999,
        "subscription_id": null,
        "created_at": "2026-08-01T12:00:00Z"
      }
    ],
    "created_at": "2026-08-01T12:00:00Z",
    "updated_at": "2026-08-01T12:00:01Z"
  }
}
{
  "type": "invalid_request_error",
  "code": "bad_request",
  "message": "The request could not be understood.",
  "status": 400,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#bad-request"
}
{
  "type": "authentication_error",
  "code": "unauthenticated",
  "message": "Unauthenticated.",
  "status": 401,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#unauthenticated"
}
{
  "type": "authorization_error",
  "code": "forbidden",
  "message": "This action is unauthorized.",
  "status": 403,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#forbidden"
}
{
  "type": "not_found_error",
  "code": "resource_not_found",
  "message": "Not Found.",
  "status": 404,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#resource-not-found"
}
{
  "type": "validation_error",
  "code": "validation_failed",
  "message": "The selected product variant id is invalid.",
  "status": 422,
  "param": "product_variant_id",
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#validation-failed",
  "errors": {
    "product_variant_id": [
      "The selected product variant id is invalid."
    ]
  }
}
{
  "type": "rate_limit_error",
  "code": "rate_limit_exceeded",
  "message": "Too Many Attempts.",
  "status": 429,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#rate-limit-exceeded"
}
{
  "type": "api_error",
  "code": "api_error",
  "message": "Server Error",
  "status": 500,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#api-error"
}
PATCH
/v2/orders/{order}/status

Authorization

AuthorizationBearer <token>

Provide your SellApp API key as a bearer token.

In: header

Path Parameters

order*integer

The order identifier.

Header Parameters

Idempotency-Key*string

Reuse this key only for an identical retry. A replay returns Idempotent-Replayed: true.

Length1 <= length <= 255
X-STORE?string

Store slug. Required for OAuth access tokens. API keys may omit it to use their current store, or the first accessible store when no current store is selected.

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

application/json

application/json

application/json

application/json

application/json

curl -X PATCH "https://sell.app/api/v2/orders/9001/status" \  -H "Idempotency-Key: project-library-2026-09-04" \  -H "X-STORE: launch-lab" \  -H "Content-Type: application/json" \  -d '{    "status": "COMPLETED",    "expected_status": "PAID"  }'
{
  "data": {
    "id": 9001,
    "status": "COMPLETED",
    "timeline": [
      {
        "status": "COMPLETED",
        "set_at": "2026-09-04T09:12:00.000Z"
      }
    ],
    "customer": {
      "id": 77,
      "email": "maya@example.com",
      "country": "United Kingdom",
      "location": "London",
      "proxied": false
    },
    "payment": {
      "method": "STRIPE",
      "transaction_id": "pi_example",
      "payment_id": "pi_example",
      "payment_capture_id": null,
      "blockchain_txid": null,
      "settlement_gateway": null,
      "has_checkout_url": true
    },
    "totals": {
      "currency": "USD",
      "subtotal_cents": 1999,
      "total_exclusive_cents": 1999,
      "total_cents": 1999,
      "total_exclusive_usd_cents": 1999,
      "total_usd_cents": 1999
    },
    "coupon_id": null,
    "line_items": [
      {
        "id": 501,
        "product_id": 120,
        "product_variant_id": 4321,
        "product_title": "Design kit",
        "variant_title": "Standard",
        "quantity": 1,
        "status": "COMPLETED",
        "currency": "USD",
        "subtotal_cents": 1999,
        "total_exclusive_cents": 1999,
        "total_cents": 1999,
        "subscription_id": null,
        "created_at": "2026-09-04T09:10:00.000Z"
      }
    ],
    "created_at": "2026-09-04T09:10:00.000Z",
    "updated_at": "2026-09-04T09:12:00.000Z"
  }
}
{
  "type": "invalid_request_error",
  "code": "bad_request",
  "message": "The request could not be understood.",
  "status": 400,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#bad-request"
}
{
  "type": "authentication_error",
  "code": "unauthenticated",
  "message": "Unauthenticated.",
  "status": 401,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#unauthenticated"
}
{
  "type": "authorization_error",
  "code": "forbidden",
  "message": "This action is unauthorized.",
  "status": 403,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#forbidden"
}
{
  "type": "not_found_error",
  "code": "resource_not_found",
  "message": "Not Found.",
  "status": 404,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#resource-not-found"
}
{
  "type": "conflict_error",
  "code": "conflict",
  "message": "The resource state changed before this request.",
  "status": 409,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#conflict"
}
{
  "type": "invalid_request_error",
  "code": "cursor_expired",
  "message": "This cursor has expired. Start again without a cursor.",
  "status": 410,
  "param": "cursor",
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#cursor-expired"
}
{
  "type": "validation_error",
  "code": "validation_failed",
  "message": "The selected product variant id is invalid.",
  "status": 422,
  "param": "product_variant_id",
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#validation-failed",
  "errors": {
    "product_variant_id": [
      "The selected product variant id is invalid."
    ]
  }
}
{
  "type": "rate_limit_error",
  "code": "rate_limit_exceeded",
  "message": "Too Many Attempts.",
  "status": 429,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#rate-limit-exceeded"
}
{
  "type": "api_error",
  "code": "api_error",
  "message": "Server Error",
  "status": 500,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#api-error"
}
POST
/v2/orders/{order}/checkout

Authorization

AuthorizationBearer <token>

Provide your SellApp API key as a bearer token.

In: header

Path Parameters

order*integer

The order identifier.

Header Parameters

Idempotency-Key*string

Reuse this key only for an identical retry. A replay returns Idempotent-Replayed: true.

Length1 <= length <= 255
X-STORE?string

Store slug. Required for OAuth access tokens. API keys may omit it to use their current store, or the first accessible store when no current store is selected.

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

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://sell.app/api/v2/orders/9001/checkout" \  -H "Idempotency-Key: project-library-2026-09-04" \  -H "X-STORE: launch-lab" \  -H "Content-Type: application/json" \  -d '{}'
{
  "data": {
    "id": 9001,
    "status": "PENDING",
    "timeline": [
      {
        "status": "PENDING",
        "set_at": "2026-08-01T12:00:00Z"
      }
    ],
    "customer": {
      "id": 77,
      "email": "maya@example.com",
      "country": "United Kingdom",
      "location": "London",
      "proxied": false
    },
    "payment": {
      "method": "STRIPE",
      "transaction_id": null,
      "payment_id": null,
      "payment_capture_id": null,
      "blockchain_txid": null,
      "settlement_gateway": null,
      "has_checkout_url": true,
      "checkout_url": "https://checkout.stripe.com/c/pay/cs_example"
    },
    "totals": {
      "currency": "USD",
      "subtotal_cents": 1999,
      "total_exclusive_cents": 1999,
      "total_cents": 1999,
      "total_exclusive_usd_cents": 1999,
      "total_usd_cents": 1999
    },
    "coupon_id": null,
    "line_items": [
      {
        "id": 501,
        "product_id": 120,
        "product_variant_id": 4321,
        "product_title": "Design kit",
        "variant_title": "Standard",
        "quantity": 1,
        "status": "PENDING",
        "currency": "USD",
        "subtotal_cents": 1999,
        "total_exclusive_cents": 1999,
        "total_cents": 1999,
        "subscription_id": null,
        "created_at": "2026-08-01T12:00:00Z"
      }
    ],
    "created_at": "2026-08-01T12:00:00Z",
    "updated_at": "2026-08-01T12:00:00Z"
  },
  "message": "Existing payment session has been found."
}
{
  "data": {
    "id": 9001,
    "status": "PENDING",
    "timeline": [
      {
        "status": "PENDING",
        "set_at": "2026-08-01T12:00:00Z"
      }
    ],
    "customer": {
      "id": 77,
      "email": "maya@example.com",
      "country": "United Kingdom",
      "location": "London",
      "proxied": false
    },
    "payment": {
      "method": "STRIPE",
      "transaction_id": null,
      "payment_id": null,
      "payment_capture_id": null,
      "blockchain_txid": null,
      "settlement_gateway": null,
      "has_checkout_url": true,
      "checkout_url": "https://checkout.stripe.com/c/pay/cs_example"
    },
    "totals": {
      "currency": "USD",
      "subtotal_cents": 1999,
      "total_exclusive_cents": 1999,
      "total_cents": 1999,
      "total_exclusive_usd_cents": 1999,
      "total_usd_cents": 1999
    },
    "coupon_id": null,
    "line_items": [
      {
        "id": 501,
        "product_id": 120,
        "product_variant_id": 4321,
        "product_title": "Design kit",
        "variant_title": "Standard",
        "quantity": 1,
        "status": "PENDING",
        "currency": "USD",
        "subtotal_cents": 1999,
        "total_exclusive_cents": 1999,
        "total_cents": 1999,
        "subscription_id": null,
        "created_at": "2026-08-01T12:00:00Z"
      }
    ],
    "created_at": "2026-08-01T12:00:00Z",
    "updated_at": "2026-08-01T12:00:00Z"
  },
  "message": "A new payment session has been generated."
}
{
  "type": "invalid_request_error",
  "code": "bad_request",
  "message": "The request could not be understood.",
  "status": 400,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#bad-request"
}
{
  "type": "authentication_error",
  "code": "unauthenticated",
  "message": "Unauthenticated.",
  "status": 401,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#unauthenticated"
}
{
  "type": "authorization_error",
  "code": "forbidden",
  "message": "This action is unauthorized.",
  "status": 403,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#forbidden"
}
{
  "type": "not_found_error",
  "code": "resource_not_found",
  "message": "Not Found.",
  "status": 404,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#resource-not-found"
}
{
  "type": "conflict_error",
  "code": "conflict",
  "message": "The resource state changed before this request.",
  "status": 409,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#conflict"
}
{
  "type": "invalid_request_error",
  "code": "cursor_expired",
  "message": "This cursor has expired. Start again without a cursor.",
  "status": 410,
  "param": "cursor",
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#cursor-expired"
}
{
  "type": "validation_error",
  "code": "validation_failed",
  "message": "The selected product variant id is invalid.",
  "status": 422,
  "param": "product_variant_id",
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#validation-failed",
  "errors": {
    "product_variant_id": [
      "The selected product variant id is invalid."
    ]
  }
}
{
  "type": "rate_limit_error",
  "code": "rate_limit_exceeded",
  "message": "Too Many Attempts.",
  "status": 429,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#rate-limit-exceeded"
}
{
  "type": "api_error",
  "code": "api_error",
  "message": "Server Error",
  "status": 500,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#api-error"
}
POST
/v2/orders/{order}/replacements

Authorization

AuthorizationBearer <token>

Provide your SellApp API key as a bearer token.

In: header

Path Parameters

order*integer

The order identifier.

Header Parameters

Idempotency-Key*string

Reuse this key only for an identical retry. A replay returns Idempotent-Replayed: true.

Length1 <= length <= 255
X-STORE?string

Store slug. Required for OAuth access tokens. API keys may omit it to use their current store, or the first accessible store when no current store is selected.

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

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://sell.app/api/v2/orders/9001/replacements" \  -H "Idempotency-Key: project-library-2026-09-04" \  -H "X-STORE: launch-lab" \  -H "Content-Type: application/json" \  -d '{    "product_variants": [      4321    ]  }'
{
  "data": {
    "id": 9003,
    "status": "PAID",
    "timeline": [
      {
        "status": "PAID",
        "set_at": "2026-09-07T12:00:00Z"
      }
    ],
    "customer": {
      "id": 77,
      "email": "maya@example.com",
      "country": "United Kingdom",
      "location": "London",
      "proxied": false
    },
    "payment": {
      "method": "STRIPE",
      "transaction_id": "pi_example",
      "payment_id": "pi_example",
      "payment_capture_id": null,
      "blockchain_txid": null,
      "settlement_gateway": null,
      "has_checkout_url": true
    },
    "totals": {
      "currency": "USD",
      "subtotal_cents": 1999,
      "total_exclusive_cents": 0,
      "total_cents": 0,
      "total_exclusive_usd_cents": 0,
      "total_usd_cents": 0
    },
    "coupon_id": null,
    "line_items": [
      {
        "id": 9004,
        "product_id": 120,
        "product_variant_id": 4321,
        "product_title": "Design kit",
        "variant_title": "Standard",
        "quantity": 1,
        "status": "PAID",
        "currency": "USD",
        "subtotal_cents": 0,
        "total_exclusive_cents": 0,
        "total_cents": 0,
        "subscription_id": null,
        "created_at": "2026-09-07T12:00:00Z"
      }
    ],
    "created_at": "2026-09-07T12:00:00Z",
    "updated_at": "2026-09-07T12:00:00Z"
  }
}
{
  "type": "invalid_request_error",
  "code": "bad_request",
  "message": "The request could not be understood.",
  "status": 400,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#bad-request"
}
{
  "type": "authentication_error",
  "code": "unauthenticated",
  "message": "Unauthenticated.",
  "status": 401,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#unauthenticated"
}
{
  "type": "authorization_error",
  "code": "forbidden",
  "message": "This action is unauthorized.",
  "status": 403,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#forbidden"
}
{
  "type": "not_found_error",
  "code": "resource_not_found",
  "message": "Not Found.",
  "status": 404,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#resource-not-found"
}
{
  "type": "conflict_error",
  "code": "conflict",
  "message": "The resource state changed before this request.",
  "status": 409,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#conflict"
}
{
  "type": "invalid_request_error",
  "code": "cursor_expired",
  "message": "This cursor has expired. Start again without a cursor.",
  "status": 410,
  "param": "cursor",
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#cursor-expired"
}
{
  "type": "validation_error",
  "code": "validation_failed",
  "message": "The selected product variant id is invalid.",
  "status": 422,
  "param": "product_variant_id",
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#validation-failed",
  "errors": {
    "product_variant_id": [
      "The selected product variant id is invalid."
    ]
  }
}
{
  "type": "rate_limit_error",
  "code": "rate_limit_exceeded",
  "message": "Too Many Attempts.",
  "status": 429,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#rate-limit-exceeded"
}
{
  "type": "api_error",
  "code": "api_error",
  "message": "Server Error",
  "status": 500,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#api-error"
}
POST
/v2/orders/{order}/refunds

Authorization

AuthorizationBearer <token>

Provide your SellApp API key as a bearer token.

In: header

Path Parameters

order*integer

The order identifier.

Header Parameters

Idempotency-Key*string

Reuse this key only for an identical retry. A replay returns Idempotent-Replayed: true.

Length1 <= length <= 255
X-STORE?string

Store slug. Required for OAuth access tokens. API keys may omit it to use their current store, or the first accessible store when no current store is selected.

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

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://sell.app/api/v2/orders/9001/refunds" \  -H "Idempotency-Key: project-library-2026-09-04" \  -H "X-STORE: launch-lab" \  -H "Content-Type: application/json" \  -d '{    "amount": "5.00"  }'
{
  "data": {
    "order": {
      "id": 9001,
      "status": "COMPLETED",
      "timeline": [
        {
          "status": "COMPLETED",
          "set_at": "2026-09-04T09:12:00.000Z"
        }
      ],
      "customer": {
        "id": 77,
        "email": "maya@example.com",
        "country": "United Kingdom",
        "location": "London",
        "proxied": false
      },
      "payment": {
        "method": "STRIPE",
        "transaction_id": "pi_example",
        "payment_id": "pi_example",
        "payment_capture_id": null,
        "blockchain_txid": null,
        "settlement_gateway": null,
        "has_checkout_url": true
      },
      "totals": {
        "currency": "USD",
        "subtotal_cents": 1999,
        "total_exclusive_cents": 1999,
        "total_cents": 1999,
        "total_exclusive_usd_cents": 1999,
        "total_usd_cents": 1999
      },
      "coupon_id": null,
      "line_items": [
        {
          "id": 501,
          "product_id": 120,
          "product_variant_id": 4321,
          "product_title": "Design kit",
          "variant_title": "Standard",
          "quantity": 1,
          "status": "COMPLETED",
          "currency": "USD",
          "subtotal_cents": 1999,
          "total_exclusive_cents": 1999,
          "total_cents": 1999,
          "subscription_id": null,
          "created_at": "2026-09-04T09:10:00.000Z"
        }
      ],
      "created_at": "2026-09-04T09:10:00.000Z",
      "updated_at": "2026-09-04T09:12:00.000Z"
    },
    "refund": {
      "status": "effective",
      "provider": "stripe",
      "provider_refund_id": "re_launch_lab_500",
      "amount_cents": 500,
      "currency": "USD"
    }
  }
}
{
  "type": "invalid_request_error",
  "code": "bad_request",
  "message": "The request could not be understood.",
  "status": 400,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#bad-request"
}
{
  "type": "authentication_error",
  "code": "unauthenticated",
  "message": "Unauthenticated.",
  "status": 401,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#unauthenticated"
}
{
  "type": "authorization_error",
  "code": "forbidden",
  "message": "This action is unauthorized.",
  "status": 403,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#forbidden"
}
{
  "type": "not_found_error",
  "code": "resource_not_found",
  "message": "Not Found.",
  "status": 404,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#resource-not-found"
}
{
  "type": "conflict_error",
  "code": "conflict",
  "message": "The resource state changed before this request.",
  "status": 409,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#conflict"
}
{
  "type": "invalid_request_error",
  "code": "cursor_expired",
  "message": "This cursor has expired. Start again without a cursor.",
  "status": 410,
  "param": "cursor",
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#cursor-expired"
}
{
  "type": "validation_error",
  "code": "validation_failed",
  "message": "The selected product variant id is invalid.",
  "status": 422,
  "param": "product_variant_id",
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#validation-failed",
  "errors": {
    "product_variant_id": [
      "The selected product variant id is invalid."
    ]
  }
}
{
  "type": "rate_limit_error",
  "code": "rate_limit_exceeded",
  "message": "Too Many Attempts.",
  "status": 429,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#rate-limit-exceeded"
}
{
  "type": "api_error",
  "code": "api_error",
  "message": "Server Error",
  "status": 500,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#api-error"
}
POST
/v2/orders/{order}/fulfillment-retries

Authorization

AuthorizationBearer <token>

Provide your SellApp API key as a bearer token.

In: header

Path Parameters

order*integer

The order identifier.

Header Parameters

Idempotency-Key*string

Reuse this key only for an identical retry. A replay returns Idempotent-Replayed: true.

Length1 <= length <= 255
X-STORE?string

Store slug. Required for OAuth access tokens. API keys may omit it to use their current store, or the first accessible store when no current store is selected.

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

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://sell.app/api/v2/orders/9001/fulfillment-retries" \  -H "Idempotency-Key: project-library-2026-09-04" \  -H "X-STORE: launch-lab" \  -H "Content-Type: application/json" \  -d '{    "email": "maya@example.com"  }'
{
  "data": {
    "id": 9001,
    "status": "PAID",
    "timeline": [
      {
        "status": "PAID",
        "set_at": "2026-09-07T12:00:00Z"
      }
    ],
    "customer": {
      "id": 77,
      "email": "maya@example.com",
      "country": "United Kingdom",
      "location": "London",
      "proxied": false
    },
    "payment": {
      "method": "STRIPE",
      "transaction_id": "pi_example",
      "payment_id": "pi_example",
      "payment_capture_id": null,
      "blockchain_txid": null,
      "settlement_gateway": null,
      "has_checkout_url": true
    },
    "totals": {
      "currency": "USD",
      "subtotal_cents": 1999,
      "total_exclusive_cents": 1999,
      "total_cents": 1999,
      "total_exclusive_usd_cents": 1999,
      "total_usd_cents": 1999
    },
    "coupon_id": null,
    "line_items": [
      {
        "id": 501,
        "product_id": 120,
        "product_variant_id": 4321,
        "product_title": "Design kit",
        "variant_title": "Standard",
        "quantity": 1,
        "status": "PAID",
        "currency": "USD",
        "subtotal_cents": 1999,
        "total_exclusive_cents": 1999,
        "total_cents": 1999,
        "subscription_id": null,
        "created_at": "2026-09-04T09:10:00.000Z"
      }
    ],
    "created_at": "2026-09-04T09:10:00.000Z",
    "updated_at": "2026-09-04T09:12:00.000Z"
  },
  "meta": {
    "effects_reset": 1
  }
}
{
  "type": "invalid_request_error",
  "code": "bad_request",
  "message": "The request could not be understood.",
  "status": 400,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#bad-request"
}
{
  "type": "authentication_error",
  "code": "unauthenticated",
  "message": "Unauthenticated.",
  "status": 401,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#unauthenticated"
}
{
  "type": "authorization_error",
  "code": "forbidden",
  "message": "This action is unauthorized.",
  "status": 403,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#forbidden"
}
{
  "type": "not_found_error",
  "code": "resource_not_found",
  "message": "Not Found.",
  "status": 404,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#resource-not-found"
}
{
  "type": "conflict_error",
  "code": "conflict",
  "message": "The resource state changed before this request.",
  "status": 409,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#conflict"
}
{
  "type": "invalid_request_error",
  "code": "cursor_expired",
  "message": "This cursor has expired. Start again without a cursor.",
  "status": 410,
  "param": "cursor",
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#cursor-expired"
}
{
  "type": "validation_error",
  "code": "validation_failed",
  "message": "The selected product variant id is invalid.",
  "status": 422,
  "param": "product_variant_id",
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#validation-failed",
  "errors": {
    "product_variant_id": [
      "The selected product variant id is invalid."
    ]
  }
}
{
  "type": "rate_limit_error",
  "code": "rate_limit_exceeded",
  "message": "Too Many Attempts.",
  "status": 429,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#rate-limit-exceeded"
}
{
  "type": "api_error",
  "code": "api_error",
  "message": "Server Error",
  "status": 500,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#api-error"
}
POST
/v2/orders/{order}/dynamic-delivery-retries

Authorization

AuthorizationBearer <token>

Provide your SellApp API key as a bearer token.

In: header

Path Parameters

order*integer

The order identifier.

Header Parameters

Idempotency-Key*string

Reuse this key only for an identical retry. A replay returns Idempotent-Replayed: true.

Length1 <= length <= 255
X-STORE?string

Store slug. Required for OAuth access tokens. API keys may omit it to use their current store, or the first accessible store when no current store is selected.

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

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://sell.app/api/v2/orders/9001/dynamic-delivery-retries" \  -H "Idempotency-Key: project-library-2026-09-04" \  -H "X-STORE: launch-lab" \  -H "Content-Type: application/json" \  -d '{    "delivered_product_id": 81  }'
{
  "data": {
    "id": 9001,
    "status": "COMPLETED",
    "timeline": [
      {
        "status": "COMPLETED",
        "set_at": "2026-09-04T09:12:00.000Z"
      }
    ],
    "customer": {
      "id": 77,
      "email": "maya@example.com",
      "country": "United Kingdom",
      "location": "London",
      "proxied": false
    },
    "payment": {
      "method": "STRIPE",
      "transaction_id": "pi_example",
      "payment_id": "pi_example",
      "payment_capture_id": null,
      "blockchain_txid": null,
      "settlement_gateway": null,
      "has_checkout_url": true
    },
    "totals": {
      "currency": "USD",
      "subtotal_cents": 1999,
      "total_exclusive_cents": 1999,
      "total_cents": 1999,
      "total_exclusive_usd_cents": 1999,
      "total_usd_cents": 1999
    },
    "coupon_id": null,
    "line_items": [
      {
        "id": 501,
        "product_id": 120,
        "product_variant_id": 4321,
        "product_title": "Design kit",
        "variant_title": "Standard",
        "quantity": 1,
        "status": "COMPLETED",
        "currency": "USD",
        "subtotal_cents": 1999,
        "total_exclusive_cents": 1999,
        "total_cents": 1999,
        "subscription_id": null,
        "created_at": "2026-09-04T09:10:00.000Z"
      }
    ],
    "created_at": "2026-09-04T09:10:00.000Z",
    "updated_at": "2026-09-04T09:12:00.000Z"
  },
  "meta": {
    "queued": true
  }
}
{
  "type": "invalid_request_error",
  "code": "bad_request",
  "message": "The request could not be understood.",
  "status": 400,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#bad-request"
}
{
  "type": "authentication_error",
  "code": "unauthenticated",
  "message": "Unauthenticated.",
  "status": 401,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#unauthenticated"
}
{
  "type": "authorization_error",
  "code": "forbidden",
  "message": "This action is unauthorized.",
  "status": 403,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#forbidden"
}
{
  "type": "not_found_error",
  "code": "resource_not_found",
  "message": "Not Found.",
  "status": 404,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#resource-not-found"
}
{
  "type": "conflict_error",
  "code": "conflict",
  "message": "The resource state changed before this request.",
  "status": 409,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#conflict"
}
{
  "type": "invalid_request_error",
  "code": "cursor_expired",
  "message": "This cursor has expired. Start again without a cursor.",
  "status": 410,
  "param": "cursor",
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#cursor-expired"
}
{
  "type": "validation_error",
  "code": "validation_failed",
  "message": "The selected product variant id is invalid.",
  "status": 422,
  "param": "product_variant_id",
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#validation-failed",
  "errors": {
    "product_variant_id": [
      "The selected product variant id is invalid."
    ]
  }
}
{
  "type": "rate_limit_error",
  "code": "rate_limit_exceeded",
  "message": "Too Many Attempts.",
  "status": 429,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#rate-limit-exceeded"
}
{
  "type": "api_error",
  "code": "api_error",
  "message": "Server Error",
  "status": 500,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#api-error"
}
POST
/v2/orders/{order}/fulfillment-notifications

Authorization

AuthorizationBearer <token>

Provide your SellApp API key as a bearer token.

In: header

Path Parameters

order*integer

The order identifier.

Header Parameters

Idempotency-Key*string

Reuse this key only for an identical retry. A replay returns Idempotent-Replayed: true.

Length1 <= length <= 255
X-STORE?string

Store slug. Required for OAuth access tokens. API keys may omit it to use their current store, or the first accessible store when no current store is selected.

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

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://sell.app/api/v2/orders/9001/fulfillment-notifications" \  -H "Idempotency-Key: project-library-2026-09-04" \  -H "X-STORE: launch-lab" \  -H "Content-Type: application/json" \  -d '{    "email": "maya@example.com",    "product_variant_ids": [      4321    ]  }'
{
  "data": {
    "id": 9001,
    "status": "COMPLETED",
    "timeline": [
      {
        "status": "COMPLETED",
        "set_at": "2026-09-04T09:12:00.000Z"
      }
    ],
    "customer": {
      "id": 77,
      "email": "maya@example.com",
      "country": "United Kingdom",
      "location": "London",
      "proxied": false
    },
    "payment": {
      "method": "STRIPE",
      "transaction_id": "pi_example",
      "payment_id": "pi_example",
      "payment_capture_id": null,
      "blockchain_txid": null,
      "settlement_gateway": null,
      "has_checkout_url": true
    },
    "totals": {
      "currency": "USD",
      "subtotal_cents": 1999,
      "total_exclusive_cents": 1999,
      "total_cents": 1999,
      "total_exclusive_usd_cents": 1999,
      "total_usd_cents": 1999
    },
    "coupon_id": null,
    "line_items": [
      {
        "id": 501,
        "product_id": 120,
        "product_variant_id": 4321,
        "product_title": "Design kit",
        "variant_title": "Standard",
        "quantity": 1,
        "status": "COMPLETED",
        "currency": "USD",
        "subtotal_cents": 1999,
        "total_exclusive_cents": 1999,
        "total_cents": 1999,
        "subscription_id": null,
        "created_at": "2026-09-04T09:10:00.000Z"
      }
    ],
    "created_at": "2026-09-04T09:10:00.000Z",
    "updated_at": "2026-09-04T09:12:00.000Z"
  },
  "meta": {
    "notifications_sent": 1
  }
}
{
  "type": "invalid_request_error",
  "code": "bad_request",
  "message": "The request could not be understood.",
  "status": 400,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#bad-request"
}
{
  "type": "authentication_error",
  "code": "unauthenticated",
  "message": "Unauthenticated.",
  "status": 401,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#unauthenticated"
}
{
  "type": "authorization_error",
  "code": "forbidden",
  "message": "This action is unauthorized.",
  "status": 403,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#forbidden"
}
{
  "type": "not_found_error",
  "code": "resource_not_found",
  "message": "Not Found.",
  "status": 404,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#resource-not-found"
}
{
  "type": "conflict_error",
  "code": "conflict",
  "message": "The resource state changed before this request.",
  "status": 409,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#conflict"
}
{
  "type": "invalid_request_error",
  "code": "cursor_expired",
  "message": "This cursor has expired. Start again without a cursor.",
  "status": 410,
  "param": "cursor",
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#cursor-expired"
}
{
  "type": "validation_error",
  "code": "validation_failed",
  "message": "The selected product variant id is invalid.",
  "status": 422,
  "param": "product_variant_id",
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#validation-failed",
  "errors": {
    "product_variant_id": [
      "The selected product variant id is invalid."
    ]
  }
}
{
  "type": "rate_limit_error",
  "code": "rate_limit_exceeded",
  "message": "Too Many Attempts.",
  "status": 429,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#rate-limit-exceeded"
}
{
  "type": "api_error",
  "code": "api_error",
  "message": "Server Error",
  "status": 500,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#api-error"
}
GET
/v2/orders/{order}/deliverables

Authorization

AuthorizationBearer <token>

Provide your SellApp API key as a bearer token.

In: header

Path Parameters

order*integer

The order identifier.

Header Parameters

X-STORE?string

Store slug. Required for OAuth access tokens. API keys may omit it to use their current store, or the first accessible store when no current store is selected.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://sell.app/api/v2/orders/9001/deliverables" \  -H "X-STORE: launch-lab"
{
  "data": [
    {
      "order_id": 9001,
      "line_item_id": 9002,
      "type": "manual",
      "status": "delivered",
      "product_variant_id": 4321,
      "quantity": 1,
      "deliverable": {
        "types": [
          "MANUAL"
        ],
        "data": {
          "manual": "Your Design kit access has been prepared."
        }
      },
      "additional_information": []
    }
  ]
}
{
  "type": "invalid_request_error",
  "code": "bad_request",
  "message": "The request could not be understood.",
  "status": 400,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#bad-request"
}
{
  "type": "authentication_error",
  "code": "unauthenticated",
  "message": "Unauthenticated.",
  "status": 401,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#unauthenticated"
}
{
  "type": "authorization_error",
  "code": "forbidden",
  "message": "This action is unauthorized.",
  "status": 403,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#forbidden"
}
{
  "type": "not_found_error",
  "code": "resource_not_found",
  "message": "Not Found.",
  "status": 404,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#resource-not-found"
}
{
  "type": "conflict_error",
  "code": "conflict",
  "message": "The resource state changed before this request.",
  "status": 409,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#conflict"
}
{
  "type": "invalid_request_error",
  "code": "cursor_expired",
  "message": "This cursor has expired. Start again without a cursor.",
  "status": 410,
  "param": "cursor",
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#cursor-expired"
}
{
  "type": "validation_error",
  "code": "validation_failed",
  "message": "The selected product variant id is invalid.",
  "status": 422,
  "param": "product_variant_id",
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#validation-failed",
  "errors": {
    "product_variant_id": [
      "The selected product variant id is invalid."
    ]
  }
}
{
  "type": "rate_limit_error",
  "code": "rate_limit_exceeded",
  "message": "Too Many Attempts.",
  "status": 429,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#rate-limit-exceeded"
}
{
  "type": "api_error",
  "code": "api_error",
  "message": "Server Error",
  "status": 500,
  "param": null,
  "request_id": "01992a65-e064-71ba-b38f-902b7966a6be",
  "docs_url": "https://sell.app/docs/api/errors#api-error"
}