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.


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 an amount (integer, in the lowest currency denomination) and a due_at date. Empty when payment is due in full.

  • Name
    members
    Type
    array
    Description

    The members of the group. Each member includes their customer_name, email, amount due, paid_amount, remaining, status (paid, outstanding or overdue), next_due_at, whether they have opted into automatic collection (auto_collect), and a payment_links array 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
    }
  }
}

PUT/agent/payment-link-groups

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 an amount (integer, in the lowest currency denomination), and may optionally include an email (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 a due_at date 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_id is 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 members parameter, each with their payment_links.

Request

PUT
/agent/payment-link-groups
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"
  }
}

GET/agent/payment-link-groups/:payment_link_group_id

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

GET
/agent/payment-link-groups/:payment_link_group_id
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"
  }
}

GET/agent/bookings/:booking_id/payment-link-groups

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

GET
/agent/bookings/:booking_id/payment-link-groups
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
  }
}

POST/agent/payment-link-groups/:payment_link_group_id/send-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.

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_id that was sent.

  • Name
    skipped
    Type
    array
    Description

    The members that were skipped, each with a reason of paid or no_email.

Request

POST
/agent/payment-link-groups/:payment_link_group_id/send-links
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"
  }
}