Payment Plans

This section describes how merchants and developers can create and manage their respective payment plans.

Create Payment Plan

This section describes how to create a payment plan with Flutterwave.

post https://api.flutterwave.com/v3/payment-plans

Body Params

amount int32

This is the amount to charge all customers subscribed to this plan.

name string

This is the name of the plan. You can use this to retrieve the details of your plan later on.

interval string

This will determine the frequency of the charges for this plan. Could be yearly, quarterly, monthly, weekly, daily, etc.

Headers

Authorization string

Pass your secret key as a bearer token in the request header to authorize this call

var request = require('request');
var options = {
  'method': 'POST',
  'url': '{{BASE_API_URL}}/payment-plans',
  'headers': {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer {SEC_KEY}'
  },
  body: JSON.stringify({"amount":5000,"name":"the akhlm postman plan 2","interval":"monthly","duration":48})

};
request(options, function (error, response) { 
  if (error) throw new Error(error);
  console.log(response.body);
});

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "{{BASE_API_URL}}/payment-plans",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS =>"{\n    \"amount\": 5000,\n    \"name\": \"the akhlm postman plan 2\",\n    \"interval\": \"monthly\",\n    \"duration\": 48\n}",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json",
    "Authorization: Bearer {SEC_KEY}"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
require "uri"
require "net/http"

url = URI("{{BASE_API_URL}}/payment-plans")

http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer {SEC_KEY}"
request.body = "{\n    \"amount\": 5000,\n    \"name\": \"the akhlm postman plan 2\",\n    \"interval\": \"monthly\",\n    \"duration\": 48\n}"

response = http.request(request)
puts response.read_body
{
  "status": "success",
  "message": "Payment plan created",
  "data": {
    "id": 3807,
    "name": "the akhlm postman plan 2",
    "amount": 5000,
    "interval": "monthly",
    "duration": 48,
    "status": "active",
    "currency": "NGN",
    "plan_token": "rpp_12d2ef3d5ac1c13b9d30",
    "created_at": "2020-01-16T18:08:19.000Z"
  }
}
{}

Get payment plans

This section describes how to fetch all payment plans on your account.

get https://api.flutterwave.com/v3/payment-plans

Query Params

Show optional parameters

Headers

Authorization string

Pass your secret key as a bearer token in the request header to authorize this call

var request = require('request');
var options = {
  'method': 'GET',
  'url': '{{BASE_API_URL}}/payment-plans',
  'headers': {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer {SEC_KEY}'
  }
};
request(options, function (error, response) { 
  if (error) throw new Error(error);
  console.log(response.body);
});
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "{{BASE_API_URL}}/payment-plans",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json",
    "Authorization: Bearer {SEC_KEY}"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
require "uri"
require "net/http"

url = URI("{{BASE_API_URL}}/payment-plans")

http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Get.new(url)
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer {SEC_KEY}"

response = http.request(request)
puts response.read_body
{
  "status": "success",
  "message": "Payment plans fetched",
  "meta": {
    "page_info": {
      "total": 11,
      "current_page": 1,
      "total_pages": 2
    }
  },
  "data": [
    {
      "id": 3809,
      "name": "akhlm postman updated",
      "amount": 0,
      "interval": "daily",
      "duration": 0,
      "status": "active",
      "currency": "NGN",
      "plan_token": "rpp_59072efa415936a5cfbf",
      "created_at": "2020-01-16T18:10:32.000Z"
    },
    {
      "id": 3808,
      "name": "N/A",
      "amount": 5000,
      "interval": "daily",
      "duration": 0,
      "status": "active",
      "currency": "NGN",
      "plan_token": "rpp_e8b0c18d665d849f033b",
      "created_at": "2020-01-16T18:10:22.000Z"
    },
    {
      "id": 3807,
      "name": "akhlm postman update",
      "amount": 5000,
      "interval": "monthly",
      "duration": 48,
      "status": "active",
      "currency": "NGN",
      "plan_token": "rpp_12d2ef3d5ac1c13b9d30",
      "created_at": "2020-01-16T18:08:19.000Z"
    },
    {
      "id": 3806,
      "name": "the akhlm postman plan",
      "amount": 5000,
      "interval": "weekly",
      "duration": 52,
      "status": "active",
      "currency": "NGN",
      "plan_token": "rpp_25f3bbeae9333211dd35",
      "created_at": "2020-01-16T18:05:01.000Z"
    },
    {
      "id": 3772,
      "name": "The selma Postman Plan 2",
      "amount": 5000,
      "interval": "weekly",
      "duration": 52,
      "status": "cancelled",
      "currency": "NGN",
      "plan_token": "rpp_d2f295acd1970438f822",
      "created_at": "2020-01-14T05:43:48.000Z"
    },
    {
      "id": 3771,
      "name": "The selma Postman Plan",
      "amount": 5000,
      "interval": "monthly",
      "duration": 12,
      "status": "active",
      "currency": "NGN",
      "plan_token": "rpp_3e0968c64209b7a0f25c",
      "created_at": "2020-01-14T05:42:57.000Z"
    },
    {
      "id": 3700,
      "name": "The selma Plan",
      "amount": 2000,
      "interval": "monthly",
      "duration": 12,
      "status": "active",
      "currency": "NGN",
      "plan_token": "rpp_93fef9f31f7b6abb5882",
      "created_at": "2020-01-10T13:29:46.000Z"
    },
    {
      "id": 3699,
      "name": "N/A",
      "amount": 0,
      "interval": "daily",
      "duration": 0,
      "status": "cancelled",
      "currency": "NGN",
      "plan_token": "rpp_93d443ad355b5efb4fe3",
      "created_at": "2020-01-10T13:28:47.000Z"
    },
    {
      "id": 3698,
      "name": "The selma Editted",
      "amount": 0,
      "interval": "daily",
      "duration": 0,
      "status": "cancelled",
      "currency": "NGN",
      "plan_token": "rpp_f1ef76170b1a7bc1110b",
      "created_at": "2020-01-10T13:28:13.000Z"
    },
    {
      "id": 3657,
      "name": "akhlm-stag",
      "amount": 2000,
      "interval": "hourly",
      "duration": 4,
      "status": "active",
      "currency": "NGN",
      "plan_token": "rpp_fed796f8be1f5469a41f",
      "created_at": "2019-12-31T16:51:28.000Z"
    }
  ]
}
{}

Get a Payment Plan

This section describes how to get a single payment plan

get https://api.flutterwave.com/v3/payment-plans/:id

Path Params

id int32

This is the unique id of the payment plan you want to fetch. It is returned in the call to create a payment plan as data.id

Headers

Authorization string

Pass your secret key as a bearer token in the request header to authorize this call

var request = require('request');
var options = {
  'method': 'GET',
  'url': '{{BASE_API_URL}}/payment-plans/3806',
  'headers': {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer {SEC_KEY}'
  }
};
request(options, function (error, response) { 
  if (error) throw new Error(error);
  console.log(response.body);
});
<?php
$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "{{BASE_API_URL}}/payment-plans/3806",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json",
    "Authorization: Bearer {SEC_KEY}"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
require "uri"
require "net/http"

url = URI("{{BASE_API_URL}}/payment-plans/3806")

http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Get.new(url)
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer {SEC_KEY}"

response = http.request(request)
puts response.read_body
{
  "status": "success",
  "message": "Payment plan fetched",
  "data": {
    "id": 3806,
    "name": "the akhlm postman plan",
    "amount": 5000,
    "interval": "weekly",
    "duration": 52,
    "status": "active",
    "currency": "NGN",
    "plan_token": "rpp_25f3bbeae9333211dd35",
    "created_at": "2020-01-16T18:05:01.000Z"
  }
}

{}

Update a Payment Plan

This endpoint help the merchant/developer update an existing payment plan.

put https://api.flutterwave.com/v3/payment-plans/:id

Path Params

id int32

This is the unique id of the payment plan you want to fetch. It is returned in the call to create a payment plan as data.id

Body Params

name string

The new name of the payment plan.

status string

The new status of the payment plan.

Headers

Authorization string

Pass your secret key as a bearer token in the request header to authorize this call

var request = require('request');
var options = {
  'method': 'PUT',
  'url': '{{BASE_API_URL}}/payment-plans/3807',
  'headers': {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer {SEC_KEY}'
  },
  body: JSON.stringify({"name":"January neighbourhood contribution ","status":"active"})

};
request(options, function (error, response) { 
  if (error) throw new Error(error);
  console.log(response.body);
});
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "{{BASE_API_URL}}/payment-plans/3807",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "PUT",
  CURLOPT_POSTFIELDS =>"{\n    \"name\": \"January neighbourhood contribution \",\n    \"status\": \"active\"\n}",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json",
    "Authorization: Bearer {SEC_KEY}"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
require "uri"
require "net/http"

url = URI("{{BASE_API_URL}}/payment-plans/3807")

http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Put.new(url)
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer {SEC_KEY}"
request.body = "{\n    \"name\": \"January neighbourhood contribution \",\n    \"status\": \"active\"\n}"

response = http.request(request)
puts response.read_body
{
  "status": "success",
  "message": "Payment plan updated",
  "data": {
    "id": 3807,
    "name": "akhlm postman update",
    "plan_token": "rpp_12d2ef3d5ac1c13b9d30",
    "status": "active",
    "currency": "NGN",
    "amount": 5000,
    "duration": 48,
    "interval": "monthly",
    "created_at": "2020-01-16T18:08:19.000Z"
  }
}
{}

Cancel a Payment Plan

This endpoint help the merchant/developer cancel an existing payment plan.

put https://api.flutterwave.com/v3/payment-plans/:id/cancel

Path Params

id int32

This is the unique id of the payment plan you want to cancel

Headers

Authorization string

Pass your secret key as a bearer token in the request header to authorize this call

var request = require('request');
var options = {
  'method': 'PUT',
  'url': '{{BASE_API_URL}}/payment-plans/3807/cancel',
  'headers': {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer {SEC_KEY}'
  }
};
request(options, function (error, response) { 
  if (error) throw new Error(error);
  console.log(response.body);
});
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "{{BASE_API_URL}}/payment-plans/3807/cancel",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "PUT",
  CURLOPT_HTTPHEADER => array(
    "Content-Type: application/json",
    "Authorization: Bearer {SEC_KEY}"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
require "uri"
require "net/http"

url = URI("{{BASE_API_URL}}/payment-plans/3807/cancel")

http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Put.new(url)
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer {SEC_KEY}"

response = http.request(request)
puts response.read_body
{
  "status": "success",
  "message": "Payment plan cancelled",
  "data": {
    "id": 3807,
    "name": "the akhlm postman plan 2",
    "plan_token": "rpp_12d2ef3d5ac1c13b9d30",
    "status": "cancelled",
    "currency": "NGN",
    "amount": 5000,
    "duration": 48,
    "interval": "monthly",
    "created_at": "2020-01-16T18:08:19.000Z"
  }
}

{}
Loading...