Creating an OnDemand Plan

This document provides a comprehensive guide for creating an On-Demand Plan using the PortOne API. An On-Demand Plan allows merchants to charge customers based on their usage or activity without fixed intervals.


API Endpoint

POST https://api.portone.cloud/api/subscription/createPlan


Headers

Content-Type
string Ā· required

Set to application/json.


X-Portone-Client-Key
string Ā· required

The unique PortOne key for the merchant.


Authorization
string Ā· required

JWT for authenticating API requests. Learn how to generate the token here.


Request Example

Request Body:

{
  "portone_key": "PORTONE_KEY",
  "merchant_order_ref": "Plan_1729672233766",
  "source": "api",
  "currency": "USD",
  "name": "OnDemand USD plan",
  "description": "OnDemand USD plan",
  "environment": "sandbox",
  "plan_type": "ONDEMAND",
  "notes": [
    { "key": "key1", "value": "value1" },
    { "key": "key2", "value": "value2" }
  ]
}

Request Body Parameters

Below are the required and optional parameters for creating an On-Demand Plan:

General Parameters

portone_key
string Ā· required

The unique PortOne key for the merchant.


signature_hash
string Ā· required

Signature hash generated as per On-Demand Plan Request Signature Documentation.


merchant_order_ref
string Ā· required

The unique merchant order reference generated by the merchant.


source
string Ā· required

The source of plan creation: default, api, or checkout.


description
string

A description of the plan.


environment
string Ā· required

Plan environment, either live or sandbox.


name
string Ā· required

Name of the plan.


notes
array of objects
The JSON array for additional notes

> ##### key

string Ā· The key describing the note. Example: special_instructions or gift_wrap.
value
string Ā· The value of the note. Example: Deliver between 9-11 AM or Yes.

On-Demand Plan-Specific Parameters

currency
string Ā· required

Currency of the plan (e.g., USD).


plan_type
string Ā· required

Type of plan. Set to ONDEMAND.


Response

Success Response

{
  "is_success": true,
  "merchant_order_ref": "Subscription_1729672233761",
  "order_ref": "2nsJNracNOB6mzJ4elECMmnOlu2",
  "subscription_link": "https://subscription.portone.cloud/?ref=2nsJNracNOB6mzJ4elECMmnOlu2",
  "status_code": "200"
}

Error Response

{
  "is_success": false,
  "message": "The API request failed due to invalid parameters.",
  "status_code": "400",
  "status_reason": "Bad Request"
}

Best Practices

  • Environment Selection: Use sandbox for testing and live for production.
  • Validation: Ensure all required fields are correctly validated before sending the request.
  • Testing: Test your API integration in the sandbox environment before moving to production.

Key Notes

  • OnDemand Plans: Ideal for usage-based subscriptions or services with variable billing.
  • Descriptive Details: Use descriptive names and notes for easier plan management and tracking.

This document serves as a comprehensive guide to creating OnDemand Plans with the PortOne API.


Did this page help you?