Installation & Configuration

The official Python SDK for the Felloh payments API. Use it to manage bookings, transactions, payment links, and all other Felloh resources from your Python backend.

- PyPI Package

- Github Repository


Installation

The SDK requires Python 3.10 or later. It uses httpx for async HTTP requests.

Install the SDK

pip install felloh

Quick Start

Import the FellohClient class and create an instance with your API keys. The client is fully async and handles authentication, token management, retries, and pagination automatically.

Your API keys can be created and managed from the Felloh dashboard. See the API Keys resource for managing keys programmatically.

Quick Start

import asyncio
from felloh import FellohClient
from felloh.types import FellohConfig

client = FellohClient(FellohConfig(
    public_key="your-public-key",
    private_key="your-private-key",
))

async def main():
    bookings = await client.bookings.list({
        "organisation": "your-org-id",
    })
    print(bookings["data"])
    await client.close()

asyncio.run(main())

Configuration Options

The FellohConfig dataclass accepts the following options.

Parameters

  • Name
    public_keyrequired
    Type
    str
    Description

    Your Felloh public API key.

  • Name
    private_keyrequired
    Type
    str
    Description

    Your Felloh private API key.

  • Name
    base_url
    Type
    str
    Description

    Base URL for the Felloh API. Defaults to https://api.felloh.com.

  • Name
    timeout
    Type
    float
    Description

    Request timeout in seconds. Defaults to 30.0.

  • Name
    max_retries
    Type
    int
    Description

    Number of automatic retries on 5xx or network errors. Defaults to 2. Uses exponential backoff.

  • Name
    token_refresh_buffer
    Type
    int
    Description

    Seconds before token expiry to proactively refresh. Defaults to 60.

  • Name
    logger
    Type
    callable
    Description

    Optional callback invoked after every HTTP request for logging and observability. Receives a LogEntry object.

Full Configuration

from felloh import FellohClient
from felloh.types import FellohConfig

client = FellohClient(FellohConfig(
    public_key="your-public-key",
    private_key="your-private-key",
    base_url="https://api.felloh.com",
    timeout=30.0,
    max_retries=2,
    token_refresh_buffer=60,
    logger=lambda entry: print(
        f"{entry.method} {entry.url} → "
        f"{entry.status_code} ({entry.duration_ms:.0f}ms)"
    ),
))

Token Management

The SDK automatically handles JWT token acquisition and refresh. Tokens are cached in memory and proactively refreshed before expiry based on the token_refresh_buffer setting. No manual token management is needed.

If a request receives a 401 response, the SDK will automatically refresh the token and retry the request once. Token refreshes are serialised using an asyncio.Lock to prevent concurrent refresh requests.


Available Resources

Every resource on the Felloh API is accessible through an attribute on the client instance.

ResourceClient AttributeDocumentation
Organisationsclient.organisationsOrganisations
Bookingsclient.bookingsBookings
Booking Componentsclient.booking_componentsBooking Components
Transactionsclient.transactionsTransactions
Customersclient.customersCustomers
Payment Linksclient.payment_linksPayment Links
Ecommerceclient.ecommerceEcommerce
Refundsclient.refundsRefunds
Chargesclient.chargesCharges
Chargebacksclient.chargebacksChargebacks
Credit Notesclient.credit_notesCredit Notes
Suppliersclient.suppliersSuppliers
Beneficiariesclient.beneficiariesBeneficiaries
Disbursementsclient.disbursementsDisbursements
Ledgerclient.ledgerLedger
Acquirer Settlementclient.batchesAcquirer Settlement
API Keysclient.api_keysAPI Keys
Auditclient.auditAudit
AISPclient.aispAISP
Scheduled Paymentsclient.scheduled_paymentsScheduled Payments
Enumsclient.enumsEnums