Group Payment Links
A group payment link is a collection of payment links attached to a single booking, with one group member per person and a payment link for each of their instalments. Each member pays their own share, and the group leader receives a shareable portal URL where they can track who has paid and who is outstanding, add members individually or via CSV import, and email members their payment links.
A member is outstanding while they still owe money, overdue when an unpaid instalment has passed its due date, and paid once their full share is collected.
Instalments
A group can optionally have an instalment schedule — a sequence of amounts and due dates that applies to every member. Each member gets one payment link per instalment, and the final due date is the payment deadline for the booking. Members can pay an instalment early or pay more than one instalment at once, but cannot underpay an instalment. When members owe different amounts, the schedule amounts are scaled proportionally to each member's share.
Automatic collection
When a group has future instalments, members are offered the option at checkout to store their card and have their remaining instalments collected automatically on each due date. This is always opt-in for the member, and they can ask the organiser to opt them out at any time. When an automatic charge fails, or an instalment is missed or approaching its due date, both the group leader and the organisation's user that created the group are alerted by email.
Group Payment Link Model
Properties
- Name
id- Type
- string
- Description
Unique identifier for the group payment link.
- Name
name- Type
- string
- Description
A name to help the group identify their trip.
- Name
lead_name- Type
- string
- Description
The name of the group leader.
- Name
lead_email- Type
- string
- Description
The email address of the group leader.
- Name
currency- Type
- string
- Description
Currency that the group members will pay in. See currency documentation.
- Name
status- Type
- string
- Description
The status of the group.
- Name
members_locked- Type
- boolean
- Description
Whether the group leader is prevented from adding or removing group members via their portal link.
- Name
installments_locked- Type
- boolean
- Description
Whether the group leader is prevented from setting or changing the instalment schedule via their portal link.
- Name
portal_url- Type
- string
- Description
The shareable portal URL for the group leader, where they can track which members have paid. If the organisation has a custom portal domain configured, that domain is used.
- Name
booking- Type
- object
- Description
The booking model that the group is attached to, including its
gross_amount.
- Name
organisation- Type
- object
- Description
Organisation model owning the group payment link.
- Name
installments- Type
- array
- Description
The group's instalment schedule, ordered by
sequence. Each entry has anamount(integer, in the lowest currency denomination) and adue_atdate. Empty when payment is due in full.
- Name
members- Type
- array
- Description
The members of the group. Each member includes their
customer_name,email,amountdue,paid_amount,remaining,status(paid,outstandingoroverdue),next_due_at, whether they have opted into automatic collection (auto_collect), and apayment_linksarray with one link per instalment.
- Name
totals.members- Type
- object
- Description
A count of the group's members, in total and by state (paid, outstanding, overdue).
- Name
totals.amounts- Type
- object
- Description
The value of the group in the lowest currency denomination — the total, the amount paid, and the amount outstanding.
- Name
created_at- Type
- datetime
- Description
Date and time of creation within our systems.
{
"id": "7d94f3f2-4c45-4d3e-9c76-8a4762a54c2b",
"name": "Smith Family Holiday",
"lead_name": "Sarah Smith",
"lead_email": "sarah.smith@gmail.com",
"currency": "GBX",
"status": "active",
"members_locked": false,
"installments_locked": false,
"created_at": "2026-09-03T15:10:37.589Z",
"portal_url": "https://portal.felloh.com/?group=7d94f3f2-4c45-4d3e-9c76-8a4762a54c2b",
"booking": {
"id": "9a33a74f-1e3e-595d-b89f-9da87d289e05",
"booking_reference": "FEL-00012",
"gross_amount": 40000
},
"organisation": {
"id": "X9876",
"name": "Felloh"
},
"installments": [
{
"id": "0d3f0f37-93d0-4bb0-97b6-4d0f47c5f9c1",
"sequence": 1,
"amount": 10000,
"due_at": "2026-10-01T00:00:00.000Z"
},
{
"id": "8d1e13d5-4a86-4f26-8ee9-cb2b0c37e6ff",
"sequence": 2,
"amount": 10000,
"due_at": "2026-11-01T00:00:00.000Z"
}
],
"members": [
{
"id": "b5e1bd24-7379-4d27-b4d8-07120fefc25c",
"customer_name": "Sarah Smith",
"email": "sarah.smith@gmail.com",
"amount": 20000,
"auto_collect": true,
"paid_amount": 10000,
"remaining": 10000,
"status": "outstanding",
"next_due_at": "2026-11-01T00:00:00.000Z",
"payment_links": [
{
"id": "c76a9c3f-40ba-4f35-a2be-40dbb26a99a1",
"amount": 10000,
"currency": "GBX",
"status": "paid",
"paid": true,
"due_at": "2026-10-01T00:00:00.000Z",
"installment_sequence": 1,
"created_at": "2026-09-03T15:10:37.589Z"
},
{
"id": "226009ab-ffe9-4c80-922b-982e8e7849f8",
"amount": 10000,
"currency": "GBX",
"status": "active",
"paid": false,
"due_at": "2026-11-01T00:00:00.000Z",
"installment_sequence": 2,
"created_at": "2026-09-03T15:10:37.589Z"
}
]
}
],
"totals": {
"members": {
"total": 2,
"paid": 1,
"outstanding": 1,
"overdue": 0
},
"amounts": {
"total": 40000,
"paid": 30000,
"outstanding": 10000
}
}
}
Create One
This endpoint allows you to create a new group payment link, with a member created for each person in the group and a payment link created for each of their instalments (or a single link when the group has no instalment schedule).
You can attach the group to an existing booking by supplying a booking_id, or supply a booking_reference to have a booking created for you. When a booking is created for you, the group leader is set as the booking customer and the booking value is set to the sum of the member amounts.
Parameters
- Name
organisationrequired- Type
- string
- Description
Organisation ID where the group payment link is created.
- Name
lead_namerequired- Type
- string
- Description
Full name of the group leader.
- Name
lead_emailrequired- Type
- string
- Description
Email address of the group leader.
- Name
members- Type
- array
- Description
The group members. Each member requires a
customer_name(string) and anamount(integer, in the lowest currency denomination), and may optionally include anemail(string). A group can be created with no members — the group leader can add members themselves via their portal link.
- Name
installments- Type
- array
- Description
An optional instalment schedule of up to 12 entries. Each entry requires an
amount(integer, in the lowest currency denomination) and adue_atdate in ascending order. When every member owes the same amount, the instalment amounts must add up to that amount; when member amounts differ, the schedule is scaled proportionally per member.
- Name
members_locked- Type
- boolean
- Description
Prevent the group leader from adding or removing group members via their portal link. Defaults to false.
- Name
installments_locked- Type
- boolean
- Description
Prevent the group leader from setting or changing the instalment schedule via their portal link. Defaults to false.
- Name
name- Type
- string
- Description
A name to help the group identify their trip.
- Name
booking_id- Type
- string
- Description
Felloh booking ID to attach the group to.
- Name
booking_reference- Type
- string
- Description
A booking reference to create a new booking with. Only used when
booking_idis not supplied.
- Name
gross_amount- Type
- integer
- Description
The value of the booking created from
booking_reference, in the lowest currency denomination. Defaults to the sum of the member amounts.
- Name
currency- Type
- string
- Description
Currency for the member payment links, defaults to GBX. See currency documentation.
- Name
description- Type
- string
- Description
Description of the payment's purpose, shown to each member.
- Name
expires_at- Type
- date
- Description
Expiry date for the member payment links, defaults to 30 days from creation. This should be in ISO 8601 Format
- Name
open_banking_enabled- Type
- boolean
- Description
Allow members to pay via open banking.
- Name
card_enabled- Type
- boolean
- Description
Allow members to pay via card.
Returns
- Name
id- Type
- uuid
- Description
The ID of the group payment link that has been created.
- Name
booking_id- Type
- uuid
- Description
The ID of the booking that the group is attached to.
- Name
portal_url- Type
- string
- Description
The shareable portal URL for the group leader.
- Name
installments- Type
- array
- Description
The instalment schedule that was created.
- Name
members- Type
- array
- Description
The member created for each person, in the same order as the
membersparameter, each with theirpayment_links.
Request
import axios from 'axios';
const response = await axios.put(
'https://api.felloh.com/agent/payment-link-groups',
{
organisation: 'X9876',
name: 'Smith Family Holiday',
lead_name: 'Sarah Smith',
lead_email: 'sarah.smith@gmail.com',
booking_reference: 'FEL-00012',
currency: 'GBX',
members: [
{ customer_name: 'Sarah Smith', email: 'sarah.smith@gmail.com', amount: 20000 },
{ customer_name: 'Tom Smith', email: 'tom.smith@gmail.com', amount: 20000 },
],
installments: [
{ amount: 10000, due_at: '2026-10-01T00:00:00.000Z' },
{ amount: 10000, due_at: '2026-11-01T00:00:00.000Z' },
],
},
{
headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer <YOUR TOKEN HERE>` }
}
);
Response
{
"data": {
"id": "7d94f3f2-4c45-4d3e-9c76-8a4762a54c2b",
"booking_id": "9a33a74f-1e3e-595d-b89f-9da87d289e05",
"portal_url": "https://portal.felloh.com/?group=7d94f3f2-4c45-4d3e-9c76-8a4762a54c2b",
"installments": [
{
"id": "0d3f0f37-93d0-4bb0-97b6-4d0f47c5f9c1",
"sequence": 1,
"amount": 10000,
"due_at": "2026-10-01T00:00:00.000Z"
},
{
"id": "8d1e13d5-4a86-4f26-8ee9-cb2b0c37e6ff",
"sequence": 2,
"amount": 10000,
"due_at": "2026-11-01T00:00:00.000Z"
}
],
"members": [
{
"id": "b5e1bd24-7379-4d27-b4d8-07120fefc25c",
"customer_name": "Sarah Smith",
"email": "sarah.smith@gmail.com",
"amount": 20000,
"payment_links": [
{
"id": "c76a9c3f-40ba-4f35-a2be-40dbb26a99a1",
"amount": 10000,
"installment_sequence": 1,
"due_at": "2026-10-01T00:00:00.000Z"
},
{
"id": "226009ab-ffe9-4c80-922b-982e8e7849f8",
"amount": 10000,
"installment_sequence": 2,
"due_at": "2026-11-01T00:00:00.000Z"
}
]
}
]
},
"errors": [],
"meta": {
"code": 200,
"reason": "OK",
"message": "The request was successful",
"request_id": "cdd40f5c-9d82-44c2-92e3-b5d2cad364f6"
}
}
Fetch One
This endpoint allows you to retrieve a single group payment link, including its members, instalment schedule and paid / outstanding totals.
Path Parameters
- Name
payment_link_group_id- Type
- uuid
- Description
The group payment link ID to retrieve.
Returns
Returns a group payment link model
Request
import axios from 'axios';
const paymentLinkGroupID = '7d94f3f2-4c45-4d3e-9c76-8a4762a54c2b';
const response = await axios.get(
`https://api.felloh.com/agent/payment-link-groups/${paymentLinkGroupID}`,
{
headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer <YOUR TOKEN HERE>` }
}
);
Response
{
"data": {
"id": "7d94f3f2-4c45-4d3e-9c76-8a4762a54c2b",
"name": "Smith Family Holiday",
"lead_name": "Sarah Smith",
"lead_email": "sarah.smith@gmail.com",
"currency": "GBX",
"status": "active",
"members_locked": false,
"created_at": "2026-09-03T15:10:37.589Z",
"portal_url": "https://portal.felloh.com/?group=7d94f3f2-4c45-4d3e-9c76-8a4762a54c2b",
"booking": {
"id": "9a33a74f-1e3e-595d-b89f-9da87d289e05",
"booking_reference": "FEL-00012",
"gross_amount": 40000
},
"organisation": {
"id": "X9876",
"name": "Felloh"
},
"installments": [],
"members": [
{
"id": "b5e1bd24-7379-4d27-b4d8-07120fefc25c",
"customer_name": "Sarah Smith",
"email": "sarah.smith@gmail.com",
"amount": 20000,
"auto_collect": false,
"paid_amount": 20000,
"remaining": 0,
"status": "paid",
"next_due_at": null,
"payment_links": [
{
"id": "c76a9c3f-40ba-4f35-a2be-40dbb26a99a1",
"amount": 20000,
"currency": "GBX",
"status": "paid",
"paid": true,
"due_at": null,
"installment_sequence": null,
"created_at": "2026-09-03T15:10:37.589Z"
}
]
},
{
"id": "226009ab-ffe9-4c80-922b-982e8e7849f8",
"customer_name": "Tom Smith",
"email": "tom.smith@gmail.com",
"amount": 20000,
"auto_collect": false,
"paid_amount": 0,
"remaining": 20000,
"status": "outstanding",
"next_due_at": null,
"payment_links": [
{
"id": "f2b7e6d1-9f30-4f34-b2c1-9be243c6d1aa",
"amount": 20000,
"currency": "GBX",
"status": "active",
"paid": false,
"due_at": null,
"installment_sequence": null,
"created_at": "2026-09-03T15:10:37.589Z"
}
]
}
],
"totals": {
"members": {
"total": 2,
"paid": 1,
"outstanding": 1,
"overdue": 0
},
"amounts": {
"total": 40000,
"paid": 20000,
"outstanding": 20000
}
}
},
"errors": [],
"meta": {
"code": 200,
"reason": "OK",
"message": "The request was successful",
"request_id": "cdd40f5c-9d82-44c2-92e3-b5d2cad364f6"
}
}
Fetch For a Booking
This endpoint retrieves all group payment links attached to a booking, ordered by creation date with the most recent first.
Path Parameters
- Name
booking_id- Type
- uuid
- Description
The booking ID to retrieve group payment links for.
Returns
Returns an array of group payment link models
Request
import axios from 'axios';
const bookingID = '9a33a74f-1e3e-595d-b89f-9da87d289e05';
const response = await axios.get(
`https://api.felloh.com/agent/bookings/${bookingID}/payment-link-groups`,
{
headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer <YOUR TOKEN HERE>` }
}
);
Response
{
"data": [
{
"id": "7d94f3f2-4c45-4d3e-9c76-8a4762a54c2b",
"name": "Smith Family Holiday",
"lead_name": "Sarah Smith",
"lead_email": "sarah.smith@gmail.com",
"currency": "GBX",
"status": "active",
"members_locked": false,
"created_at": "2026-09-03T15:10:37.589Z",
"portal_url": "https://portal.felloh.com/?group=7d94f3f2-4c45-4d3e-9c76-8a4762a54c2b",
"installments": [],
"members": [
{
"id": "b5e1bd24-7379-4d27-b4d8-07120fefc25c",
"customer_name": "Sarah Smith",
"email": "sarah.smith@gmail.com",
"amount": 20000,
"auto_collect": false,
"paid_amount": 20000,
"remaining": 0,
"status": "paid",
"next_due_at": null,
"payment_links": [
{
"id": "c76a9c3f-40ba-4f35-a2be-40dbb26a99a1",
"amount": 20000,
"currency": "GBX",
"status": "paid",
"paid": true,
"due_at": null,
"installment_sequence": null,
"created_at": "2026-09-03T15:10:37.589Z"
}
]
}
],
"totals": {
"members": {
"total": 1,
"paid": 1,
"outstanding": 0,
"overdue": 0
},
"amounts": {
"total": 20000,
"paid": 20000,
"outstanding": 0
}
}
}
],
"errors": [],
"meta": {
"code": 200,
"reason": "OK",
"message": "The request was successful",
"request_id": "cdd40f5c-9d82-44c2-92e3-b5d2cad364f6",
"count": 1
}
}
Send Payment Links
This endpoint emails every group member their next outstanding payment link, branded with your organisation's name and logo and including the booking reference and instalment due date. Members that have paid in full, or that have no email address on file, are skipped.
The group leader can also trigger this themselves from their portal link, and can always copy and share individual payment links manually.
Path Parameters
- Name
payment_link_group_id- Type
- uuid
- Description
The group payment link ID to send payment links for.
Returns
- Name
sent- Type
- array
- Description
The members that were emailed, each with the
payment_link_idthat was sent.
- Name
skipped- Type
- array
- Description
The members that were skipped, each with a
reasonofpaidorno_email.
Request
import axios from 'axios';
const paymentLinkGroupID = '7d94f3f2-4c45-4d3e-9c76-8a4762a54c2b';
const response = await axios.post(
`https://api.felloh.com/agent/payment-link-groups/${paymentLinkGroupID}/send-links`,
{},
{
headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer <YOUR TOKEN HERE>` }
}
);
Response
{
"data": {
"sent": [
{
"member_id": "226009ab-ffe9-4c80-922b-982e8e7849f8",
"payment_link_id": "f2b7e6d1-9f30-4f34-b2c1-9be243c6d1aa"
}
],
"skipped": [
{
"member_id": "b5e1bd24-7379-4d27-b4d8-07120fefc25c",
"reason": "paid"
}
]
},
"errors": [],
"meta": {
"code": 200,
"reason": "OK",
"message": "The request was successful",
"request_id": "cdd40f5c-9d82-44c2-92e3-b5d2cad364f6"
}
}
