Recurring Plans

This resource is only relevant for Flywire-managed recurring payments.

List of endpoints

Description Endpoint

Getting a List of all Installment Plans

GET/recurring_plans

Getting Details about an Installment Plan

GET/recurring_plans/{planID}

Cancelling an Installment Plan

POST/recurring_plans/{planID}/ cancel

About Recurring Plans

The recurring plans resource allows you to access data for installment plans.

For recurring payments with Flywire-managed plans, payments are always part of an installment plan. An installment plan contains the settings, for example the number of installments and the total amount of all payments for this plan. The unique identifier for an installment plan is the plan ID.

Getting a List of all Installment Plans

This endpoint lets you retrieve a list of all installment plans for recipients you have access to.

In the example, the "View Details" button triggers another API request, see Getting Details about an Installment Plan.

You can also use this request to build a payer wallet if you filter the list by payor_id.

Example for displaying the list of installment plans in your backend:

Request

Parameters for the Request Body

No request body needed.

Optional Query Parameters for Filtering

You can filter the list of results by the following parameters:

Optional Query Parameters for Pagination

This endpoint supports pagination. If you are not providing any pagination parameters, the response is returned with default pagination settings.

Pagination parameters are added as query parameters with the request in the format

{endpoint_path}?page=2&per_page=10

GET/recurring_plans

curl https://base-url-placeholder/recurring_plans
  -X GET
  -H "Content-Type: application/json"
  -H "X-Authentication-Key: {api_key}"

Response

Pagination Parameters

recurring_plans array

This array contains the installment plans. Each installment plan contains:

{
    "total_entries": 21,
    "total_pages": 3,
    "page": 1,
    "per_page": 2,
    "recurring_plans": [
        {
            "created_at": "2024-04-05T11:09:46Z",
            "external_reference": "My external reference",
            "notifications_url": "https://webhook.site/5f2acad62",
            "number_of_installments": 4,
            "payor_id": "my_payer_id_1",
            "recipient_id": "TQQ",
            "recurring_id": "IPTQQ18EADF349BE",
            "status": "in_progress",
            "total_amount": 50000
        },							
        {
            "created_at": "2024-03-07T09:13:30Z",
            "number_of_installments": 4,
            "payor_id": "my_payer_id_2",
            "recipient_id": "TQQ",
            "recurring_id": "IPTQQ18F52545931",
            "status": "finished",
            "total_amount": 2000000
        }

    ]
}

Getting Details about an Installment Plan

This endpoint lets you retrieve details about an installment plan.

In the example, the "Cancel Plan" button triggers another API request, see Cancelling an Installment Plan.

You can also use this request to build a payer wallet.

Example for displaying installment plan details in your backend:

Request

Parameters for the Request Body

No request body needed.

How to Resolve the Path Placeholders of the Endpoint

Exchange {planID} in the endpoint with the actual plan ID.

GET/recurring_plans/{planID}

curl https://base-url-placeholder/recurring_plans/IPTQQ191E6DBE533
  -X GET
  -H "Content-Type: application/json"
  -H "X-Authentication-Key: {api_key}"

Response

recipient object

fields array

charges array

An array of all charges of this installment plan.

A charge is a completed or future payment within an installment plan. There are different kinds of charges (hover to highlight the examples on the right):

Completed charges

Completed charges have a payment reference and a status for the payment.

This includes:

Successful charges

Successful payments in various statuses.

As soon as a payment is in delivered, the payment amount is reflected in the amount_paid_value parameter.

Unsuccessful charges

Unsuccessful charges are failed payments.

"Pay-in-Full" charges

A Pay in Full payment is an out of schedule payment that can be manually triggered by the payer. With this option, the payer can pay the full remaining amount of the installment plan at once. If a payer has the option to do this depends on your settings for the installment plan.

Future charges

Future charges are scheduled for a time in the future and don't have a payment reference or status yet.

{
    "recurring_id": "IPTQQ191E6DBE533",
    "status": "paused",
 	"recipient": {
		"id": "FWU",
   		"fields": [
            {
                "id": "custom_field_1",
                "value": "ID12345"
            },
			{
				"id": "custom_field_2",
				"value": "2020"
			}
        ]
	},
    "created_at": "2024-09-12T15:30:56Z",
    "total_amount": 900000,
    "currency": "EUR",
    "number_of_installments": 3,
    "payor_id": "my_payer_id",
    "recurring_receivables_start_date": "2024-09-12T15:30:55.000+00:00",
    "recurring_receivables_end_date": "2024-11-12T16:30:55.000+00:00",
    "next_installment_date": "2024-10-12T15:30:55.000+00:00",
    "amount_paid_value": 300000,
    "remaining_amount_value": 600000,
    "charges": [
        {
            "id": 1800,
            "amount": 300000,
            "currency": "EUR",
            "scheduled_at": "2024-09-12T15:30:55.000+00:00",
            "payment_id": "TQQ294358388",
            "status": "cancelled"
        },
        {
            "id": 1801,
            "amount": 300000,
            "currency": "EUR",
            "scheduled_at": "2024-09-13T15:30:55.000+00:00",
            "payment_id": "TQQ294328372",
            "status": "delivered"
        },	
        {
            "id": 1802,
            "amount": 600000,
            "currency": "EUR",
            "scheduled_at": "2024-10-06T15:00:22.000+00:00",
            "payment_id": "TQQ294328373",
            "status": "initiated"
        },													
        {
            "id": 1803,
            "amount": 300000,
            "currency": "EUR",
            "scheduled_at": "2024-11-12T15:30:55.000+00:00",
            "payment_id": null,
            "status": null
        },
        {
            "id": 1804,
            "amount": 300000,
            "currency": "EUR",
            "scheduled_at": "2024-12-12T16:30:55.000+00:00",
            "payment_id": null,
            "status": null
        }
    ]
}

Cancelling an Installment Plan

Cancelling an installment plan means the plan was stopped before the total amount was paid. No more payments will be created for this plan.

You can also use this request for a payer wallet.

Request

Parameters for the Request Body

No request body needed.

How to Resolve the Path Placeholders of the Endpoint

Exchange {planID} in the endpoint with the actual plan ID.

POST/recurring_plans/{planID}/ cancel

curl https://base-url-placeholder/recurring_plans/IPTQQ191E6DBE533/cancel
  -X POST
  -H "Content-Type: application/json"
  -H "X-Authentication-Key: {api_key}"

Response

A 204 response will let you know that the installment plan has been successfully cancelled.

If you provided a notifications URL, you'll also receive a notification about the status change.

204 NO CONTENT