Add a pricing option
Adds a pricing option to an existing offer — the offer and its checkoutUrl stay the same, only the option list grows. This replaces the removed POST /paylinks/{paylinkId}/variants, which cloned an entire plan and minted a second, unrelated link.
Authorization
apiKey Your merchant API key, shown once at creation in the dashboard (Settings → API key).
In: header
Path Parameters
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
curl -X POST "https://example.com/offers/string/pricing" \ -H "Content-Type: application/json" \ -d '{ "amount": "30", "acceptedTokens": [ "usdc-base" ], "billing": { "type": "one_time" } }'{ "id": "offer_01j8x2q3r4s5t6u7v8w9x0y1z2", "name": "Pro", "description": "string", "imageUrl": "string", "identifier": "pro", "productRef": "SKU-1234", "checkoutUrl": "https://tidepay.cc/pay/a8f3k2", "pricing": [ { "id": "price_01j8x2q3r4s5t6u7v8w9x0y1z3", "label": "Monthly", "amount": "30", "currency": "USDC", "billing": { "type": "recurring", "interval": "month" }, "acceptedTokens": [ { "tokenKey": "usdc-polygon", "chainId": 8453, "amountBaseUnits": "30000000" } ], "trialDays": 7, "maxCycles": 12, "maxFailedCycles": 3, "active": true } ], "active": true, "availableQuantity": 100, "redeemedCount": 12, "expiresAt": "2026-08-19T14:32:00.000Z", "afterCompletion": { "property1": null, "property2": null }, "features": [ { "property1": null, "property2": null } ], "collectFields": { "property1": null, "property2": null }, "allowedPaymentMethods": { "property1": null, "property2": null }, "metadata": { "orderId": "12345" }, "reference": "ORDER-2024-001", "isSandbox": true, "createdAt": "2026-08-19T14:32:00.000Z", "updatedAt": "2026-08-19T14:32:00.000Z"}