Generate Checkout

Generates a quick payment URL for server-side operations. This endpoint is used internally for creating payment links with user information.

POST
/sdk/server/checkout_links/generate_quick_pay_url
x-stash-hmac-signature<token>

Versioned HMAC-SHA256 signature authenticating server-to-server SDK requests (your backend calling Stash), as opposed to client-side SDK operations. Recommended over the deprecated X-Stash-Api-Key for the best security. Header format: v1;{appId};{unixMillisTimestamp};{base64Signature} (semicolon-delimited). {base64Signature} is the base64-encoded HMAC-SHA256 of the string {unixMillisTimestamp}.{requestBody} using your app ingress secret (the ingress secret is shown base64-encoded in Studio; base64-decode it to the raw bytes used as the HMAC key), where {requestBody} is the compact canonical request JSON for POST requests and empty for GET requests. The timestamp must be within 5 minutes of Stash server time. Your appId is your immutable app identifier, shown in Stash Studio under Project Settings > App details; your ingress secret is under Project Settings > API Secrets.

In: header

item?pie.sdk.quickpay.GenerateQuickPayUrlRequest.Item

Item to purchase with inline pricing. Mutually exclusive with catalog_items; provide exactly one of the two.

bonusItems?array<Bonus items to include with the purchase (free items granted alongside the main item)>

Optional bonus items to include with the purchase. These are free items granted alongside the main item.

user?pie.sdk.quickpay.GenerateQuickPayUrlRequest.User

User information for the payment

transactionId?string

Optional transaction ID for tracking

regionCode?string

Region code (2-3 letter country code, defaults to US if not set)

currency?string

ISO-4217 Currency code (currently only USD supported)

catalogItems?array<pie.sdk.quickpay.GenerateQuickPayUrlRequest.CatalogItem>

Managed Catalog SKUs (id + quantity) to resolve server-side. Requires the shop to have managed catalog enabled. Mutually exclusive with item; provide exactly one of the two.

checkoutSessionId?string

Optional checkout-session id (the per-tab analytics session for this checkout, shared with telemetry and the funnel webhooks); persisted on the order. Distinct from the multi-PSP payment session_id used during authorization.

Response Body

curl -X POST "https://test-api.stash.gg/sdk/server/checkout_links/generate_quick_pay_url" \  -H "Content-Type: application/json" \  -d '{}'
{
  "url": "string",
  "id": "string",
  "regionCode": "string"
}
{
  "code": 0,
  "message": "string",
  "details": [
    {
      "@type": "string",
      "property1": null,
      "property2": null
    }
  ]
}

How is this guide?