TidePay
Offers

Create an offer

POST
/offers

Creates a sellable offer with one or more pricing options and returns its checkoutUrl. This is a single call — there is no separate plan or paylink to create first. idempotencyKey is optional; a retried request with the same key returns the original offer with 200 instead of creating a duplicate.

X-API-Key<token>

Your merchant API key, shown once at creation in the dashboard (Settings → API key).

In: header

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" \  -H "Content-Type: application/json" \  -d '{    "name": "Pro",    "pricing": [      {        "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"}