Suppliers

This object represents one of your suppliers, it is mainly used for risk analysis and booking components. Suppliers can be created through this API, or imported from your booking system alongside its supplier payment reports.


Supplier Model

Properties

  • Name
    id
    Type
    string
    Description

    Unique identifier for the object.

  • Name
    name
    Type
    string
    Description

    The name of the supplier.

  • Name
    source_system
    Type
    string
    Description

    The booking system the supplier was imported from (e.g., DOLPHIN), or null for suppliers created through the API or dashboard.

  • Name
    created_at
    Type
    datetime
    Description

    The datetime at which the supplier object was created within our systems.

{
  "id": "226009ab-ffe9-4c80-922b-982e8e7849f8",
  "name": "XXX123789",
  "source_system": null,
  "created_at": "2022-01-28T10:57:32.456Z"
}

POST/agent/suppliers

Fetch All

This endpoint retrieves all suppliers. Suppliers are sorted by name.

Parameters

  • Name
    organisationrequired
    Type
    string
    Description

    The organisation ID that you want to fetch suppliers for. You can find the organisation that you have access to by using the List all organisations method.

  • Name
    keyword
    Type
    string
    Description

    A supplier name that you want to filter by.

  • Name
    skip
    Type
    integer
    Description

    See the pagination section for details.

  • Name
    take
    Type
    integer
    Description

    Number of records to return. Defaults to 25, maximum 25. See the pagination section for details.

Returns

An array of Supplier Models

Request

POST
/agent/suppliers
import axios from 'axios';

const response = await axios.post(
  'https://api.felloh.com/agent/suppliers',
  {
    organisation: 'X9876',
    keyword: 'virgin tours',
    skip: 10,
    take: 20
  },
  {
    headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer <YOUR TOKEN HERE>` }
  }
);

Response

{
  "data": [
        {
          "id": "02c31636-e311-4694-a128-d83abae12e26",
          "name": "Virgin Cruises",
          "source_system": null,
          "created_at": "2022-01-28T10:57:32.456Z"
        },
        {
          "id": "54969d6f-2695-4314-97a1-63e5696b4807",
          "name": "Virgin Holidays",
          "source_system": "DOLPHIN",
          "created_at": "2022-01-28T10:57:32.456Z"
        }
    ],
  "errors": [],
  "meta": {
    "code": 200,
    "reason": "OK",
    "message": "The request was successful",
    "request_id": "cdd40f5c-9d82-44c2-92e3-b5d2cad364f6",
    "count": 2
  }
}

POST/agent/supplier-payments/due

Due Payments

This endpoint lists the supplier payments your booking system reports as still due for an organisation, soonest due first. Each line is one instalment (deposit or balance) owed to a supplier for a booking element, as imported from the Vendor Payments Due report. It requires the suppliers:manage role.

Amounts are in the minor unit of the organisation's currency (amount, GBX pence). Where the supplier is paid in another currency, supplier_amount carries that figure in the minor unit of supplier_currency.

Parameters

  • Name
    organisationrequired
    Type
    string
    Description

    The organisation ID that you want to fetch due supplier payments for.

  • Name
    due_within
    Type
    integer
    Description

    Only return lines due on or before today plus this many days. 7 means due within the next week; 0 means due today. Between 0 and 3650.

  • Name
    overdue
    Type
    string
    Description

    How lines already past their due date are treated: include (default), exclude, or only.

  • Name
    supplier_id
    Type
    string
    Description

    Restrict to one supplier.

  • Name
    keyword
    Type
    string
    Description

    Matches the booking reference, customer name, supplier name or passenger name. Maximum 100 characters.

  • Name
    skip
    Type
    integer
    Description

    See the pagination section for details.

  • Name
    take
    Type
    integer
    Description

    Number of records to return. Defaults to 100, maximum 100. See the pagination section for details.

Returns

An array of due payment lines. Each line nests the booking, the supplier and the Booking Component it belongs to, and reports days_until_due (negative when overdue).

meta.summary totals the organisation's due lines regardless of the date filters (the supplier and keyword filters still apply): total, overdue, due_7_days and due_30_days each carry a count and an amount, alongside booking_count, supplier_count, earliest_due_date and reported_at (the print date of the latest report imported).

Request

POST
/agent/supplier-payments/due
import axios from 'axios';

const response = await axios.post(
  'https://api.felloh.com/agent/supplier-payments/due',
  {
    organisation: 'X9876',
    due_within: 7,
    overdue: 'include',
    take: 100
  },
  {
    headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer <YOUR TOKEN HERE>` }
  }
);

Response

{
  "data": [
    {
      "id": "0d92104e-fb69-45da-9347-17271e73655e",
      "status": "DUE",
      "payment_type": "Balance",
      "due_date": "2026-10-05",
      "days_until_due": 5,
      "payment_reference": "INV-88213",
      "passenger_name": "A Traveller",
      "product": "Hotel",
      "amount": 32280,
      "currency": "GBX",
      "supplier_currency": "EUR",
      "supplier_amount": 37500,
      "sell_amount": 41000,
      "snapshot_date": "2026-09-30",
      "updated_at": "2026-09-30T05:12:44.000Z",
      "booking": {
        "id": "1e2a0c8e-4d5e-4d1f-9b7a-2f1f7c1d1a11",
        "booking_reference": "9364",
        "customer_name": "Lead Passenger",
        "departure_date": "2026-11-01",
        "return_date": "2026-11-08",
        "destination": "Riga"
      },
      "supplier": {
        "id": "54969d6f-2695-4314-97a1-63e5696b4807",
        "name": "Hotel Riga"
      },
      "component": {
        "id": "7f3c0b4a-9c1e-4c8e-a4d2-0b1d2c3e4f55",
        "type": "Hotel",
        "due_amount": 32280,
        "paid_amount": 0
      }
    }
  ],
  "errors": [],
  "meta": {
    "code": 200,
    "reason": "OK",
    "message": "The request was successful",
    "request_id": "cdd40f5c-9d82-44c2-92e3-b5d2cad364f6",
    "count": 1,
    "summary": {
      "total": { "count": 651, "amount": 38790976 },
      "overdue": { "count": 126, "amount": 5796081 },
      "due_7_days": { "count": 19, "amount": 912340 },
      "due_30_days": { "count": 103, "amount": 6120055 },
      "booking_count": 183,
      "supplier_count": 144,
      "earliest_due_date": "2025-07-27",
      "reported_at": "2026-09-30"
    }
  }
}

POST/agent/suppliers/{id}

Fetch One

One supplier with its figures: booking elements (components: count, booking_count, amount, future_booking_count, future_amount, next_departure_date), the supplier payments imported from the booking system (payments.paid, payments.due with next_due_date, payments.overdue, each with count and amount) and how many bank accounts are on file for paying it (bank_accounts.count). Requires suppliers:manage.

Parameters

  • Name
    organisationrequired
    Type
    string
    Description

    The organisation ID the supplier belongs to.

Rename a supplier with POST /agent/suppliers/{id}/update and name.

Response

{
  "data": {
    "id": "54969d6f-2695-4314-97a1-63e5696b4807",
    "name": "Hotel Riga",
    "source_system": "DOLPHIN",
    "created_at": "2026-09-26T07:04:12.000Z",
    "components": { "count": 531, "booking_count": 210, "amount": 18734400, "future_booking_count": 6, "future_amount": 412000, "next_departure_date": "2026-10-04" },
    "payments": {
      "paid": { "count": 514, "amount": 18102200, "last_paid_at": "2026-09-17" },
      "due": { "count": 17, "amount": 632200, "next_due_date": "2026-10-05" },
      "overdue": { "count": 2, "amount": 41000 }
    },
    "bank_accounts": { "count": 1 }
  },
  "errors": [],
  "meta": { "code": 200, "reason": "OK", "message": "The request was successful" }
}

POST/bank/suppliers/{supplierID}/bank-accounts

Bank Accounts

The bank accounts an organisation pays a supplier into, used by Outbound Payments. One account per supplier is the default; the first one added becomes it. Requires suppliers:manage.

  • POST /bank/suppliers/{supplierID}/bank-accounts lists them.
  • PUT /bank/suppliers/{supplierID}/bank-accounts adds one.
  • POST /bank/suppliers/{supplierID}/bank-accounts/{id} updates one.
  • POST /bank/suppliers/{supplierID}/bank-accounts/{id}/default makes it the default.
  • POST /bank/suppliers/{supplierID}/bank-accounts/{id}/delete removes it (refused while payments to it are queued or in progress).

Fields

  • Name
    account_holder_namerequired
    Type
    string
    Description

    Name on the account, as the bank knows it (85 characters).

  • Name
    countryrequired
    Type
    string
    Description

    ISO 3166-1 alpha-2 country of the bank.

  • Name
    currencyrequired
    Type
    string
    Description

    ISO 4217 currency of the account.

  • Name
    sort_code / account_number
    Type
    string
    Description

    Required for GB accounts: 6-digit sort code and 8-digit account number.

  • Name
    iban / swift_bic / bank_code
    Type
    string
    Description

    Outside GB: an IBAN (plus BIC where the bank needs it), or a local account number and bank code.

  • Name
    beneficiary_type
    Type
    string
    Description

    Organisation (default, with company_name) or Individual (with first_name and last_name).

  • Name
    address
    Type
    object
    Description

    { street, city, region, postal_code, country } - required by the provider for international payments.

  • Name
    is_default
    Type
    boolean
    Description

    Make this the account the supplier is paid into by default.

Request

PUT
/bank/suppliers/{supplierID}/bank-accounts
import axios from 'axios';

const response = await axios.put(
  'https://api.felloh.com/bank/suppliers/54969d6f-2695-4314-97a1-63e5696b4807/bank-accounts',
  {
    organisation: 'X9876',
    account_holder_name: 'Hotel Riga Ltd',
    beneficiary_type: 'Organisation',
    company_name: 'Hotel Riga Ltd',
    country: 'GB',
    currency: 'GBP',
    sort_code: '123456',
    account_number: '12345678',
    is_default: true
  },
  { headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer <YOUR TOKEN HERE>` } }
);

Response

{
  "data": {
    "id": "b2f4d6e8-1a2b-4c3d-9e8f-0a1b2c3d4e5f",
    "supplier_id": "54969d6f-2695-4314-97a1-63e5696b4807",
    "account_holder_name": "Hotel Riga Ltd",
    "beneficiary_type": "Organisation",
    "company_name": "Hotel Riga Ltd",
    "first_name": null,
    "last_name": null,
    "country": "GB",
    "currency": "GBP",
    "sort_code": "123456",
    "account_number": "12345678",
    "iban": null,
    "swift_bic": null,
    "bank_code": null,
    "address": { "street": null, "city": null, "region": null, "postal_code": null, "country": null },
    "is_default": true,
    "created_at": "2026-09-30T14:00:00.000Z",
    "updated_at": "2026-09-30T14:00:00.000Z"
  },
  "errors": [],
  "meta": { "code": 201, "reason": "OK", "message": "The request was successful" }
}

PUT/agent/suppliers

Create One

This endpoint allows you to create a new supplier.

Parameters

  • Name
    organisationrequired
    Type
    string
    Description

    The organisation ID that you want to create the supplier in.

  • Name
    supplier_namerequired
    Type
    string
    Description

    The supplier name that you want to create.

Request

PUT
/agent/suppliers
import axios from 'axios';

const response = await axios.put(
  'https://api.felloh.com/agent/suppliers',
  {
    organisation: 'X9876',
    supplier_name: 'Bicknell Cruises'
  },
  {
    headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer <YOUR TOKEN HERE>` }
  }
);

Response

{
  "data": {
    "id": "02c31636-e311-4694-a128-d83abae12e26"
  },
  "errors": [],
  "meta": {
    "code": 200,
    "reason": "OK",
    "message": "The request was successful",
    "request_id": "cdd40f5c-9d82-44c2-92e3-b5d2cad364f6"
  }
}