Create Plan Offer

Creates a plan offer: an invitation for one buyer to subscribe to one of the plans you choose.

Send the buyer to links.self (hosted page), embed links.embeddable in an iframe, or pass the offer id to the Payin
SDK. The buyer signs in, picks a plan, and saves a card or bank account; that creates the subscription.

Permission: Merchant User Config.

Rules

  • buyer.email and subscriptionPlanIds are required. Unknown fields are rejected.
  • The buyer is identified by buyer.email within your account and is created if new.
  • Plan IDs that are not plans of yours are ignored. If none of them is, the offer is refused.
  • expiresAt accepts a date or a date-time. The offer stays open until 23:59:59 of that day in userTimezone (UTC by
    default). It defaults to one year from now and cannot be in the past.

Errors

  • 400 EXPIRED_PLAN_OFFER: expiresAt is in the past.
  • 400 INVALID_PLAN_OFFER: none of subscriptionPlanIds is a plan of yours.
  • 400 VALIDATION_ERROR: a field is missing or invalid; details lists them.
Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Body Params

The fields accepted by Create Plan Offer. Any other field is rejected.

buyer
object
required

The buyer the offer is for.

string

Description of the offer shown to the buyer.

subscriptionPlanIds
array of strings
required

IDs of the plans (RD-…) the buyer can choose from. IDs that are not plans of yours are ignored.

subscriptionPlanIds*
string

Last day the buyer can accept the offer, as a date (2026-12-31) or date-time. The offer stays open until 23:59:59 of
that day in userTimezone. Defaults to one year from today. Cannot be in the past.

string

IANA time zone used to read expiresAt, for example America/New_York. Defaults to UTC.

Responses

Language
Credentials
Bearer
JWT
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json