Cashfin Business Python SDK
Official Python SDK for the Cashfin Business API. Manage payments, invoices, subscriptions, shop, CRM, purchases, and marketing from your Python application.
Installation
pip install cashfin-business-sdk
Quick Start
import os
from cashfin_sdk.main import CashfinSDK
os.environ["CASHFIN_CLIENT_SECRET"] = "cs_your_client_secret"
os.environ["CASHFIN_BASE_URL"] = "https://api.cashfin.africa"
sdk = CashfinSDK()
Usage
Payments
# M-Pesa STK push
sdk.business.payment.request_stk_push(
phone_number="+254712345678",
ref_id="order-001",
amount=500
)
# Transactions
sdk.business.transactions.list(page=1, limit=20, status="completed")
sdk.business.transactions.get("transaction_id")
# Receipts
sdk.business.receipts.list()
sdk.business.receipts.get("receipt_id")
# Payment links
sdk.business.payment_links.create(title="Website Payment", amount=1000)
sdk.business.payment_links.list()
sdk.business.payment_links.get("link_id")
# Invoices
sdk.business.invoices.create(
customerid="customer_id",
items=[{"itemid": "prod_id", "quantity": 1, "rate": 1000}],
duedate="2025-12-31"
)
sdk.business.invoices.list()
sdk.business.invoices.get("invoice_id")
sdk.business.invoices.update("invoice_id", status="paid")
# Subscriptions
sdk.business.subscriptions.create(
customerid="customer_id",
items=[{"itemid": "plan_id", "quantity": 1, "rate": 500}],
billingcycle="monthly",
autorenew=True
)
sdk.business.subscriptions.get("sub_id")
sdk.business.subscriptions.cancel("sub_id")
sdk.business.subscriptions.pause("sub_id")
sdk.business.subscriptions.resume("sub_id")
sdk.business.subscriptions.generate_invoice("sub_id")
Shop
# Products
sdk.business.products.list(status="published", type="product")
sdk.business.products.get("product_id")
sdk.business.products.create(title="T-Shirt", price=1500, stock=100)
sdk.business.products.update("product_id", price=1200, stock=80)
# Product categories
sdk.business.categories.list()
sdk.business.categories.create(title="Apparel")
sdk.business.categories.update("category_id", status="archived")
# Orders
sdk.business.orders.checkout(
items=[{"itemid": "prod_id", "quantity": 2, "rate": 1500}],
customeremail="buyer@example.com"
)
sdk.business.orders.list(status="processing")
sdk.business.orders.get("order_id")
CRM
# Customers
sdk.business.customers.create(
name="Jane Doe",
email="jane@example.com",
phone="254712345678",
country="Kenya",
currency="KES"
)
sdk.business.customers.list(search="jane")
sdk.business.customers.get("customer_id")
sdk.business.customers.update("customer_id", company="Acme Ltd")
# Contacts
sdk.business.contacts.create(name="John Smith", email="john@example.com")
sdk.business.contacts.list()
sdk.business.contacts.get("contact_id")
# Leads
sdk.business.leads.create(name="Alice", source="website", budget=50000)
sdk.business.leads.list(status="new")
# Quotes (read-only)
sdk.business.quotes.list(status="sent")
sdk.business.quotes.get("quote_id")
# Contracts (read-only)
sdk.business.contracts.list(status="active")
sdk.business.contracts.get("contract_id")
# Bookings (read-only)
sdk.business.bookings.list(status="scheduled")
sdk.business.bookings.get("booking_id")
# Appointments (read-only)
sdk.business.appointments.list(status="active")
sdk.business.appointments.get("appointment_id")
Purchases
# Vendors
sdk.business.vendors.create(name="Office Supplies Co", type="business", phone="254700000000")
sdk.business.vendors.list()
sdk.business.vendors.get("vendor_id")
sdk.business.vendors.update("vendor_id", city="Nairobi")
# Expenses
sdk.business.expenses.create(title="Office rent", amount=30000, expensedate="2025-01-01")
sdk.business.expenses.list(status="approved")
sdk.business.expenses.get("expense_id")
# Bills
sdk.business.bills.create(
title="Electricity bill",
amount=5000,
billdate="2025-01-01",
duedate="2025-01-15"
)
sdk.business.bills.list()
sdk.business.bills.get("bill_id")
# Purchase orders
sdk.business.purchase_orders.create(
title="Q1 stock order",
orderdate="2025-01-01",
deliverydate="2025-01-20"
)
sdk.business.purchase_orders.list()
sdk.business.purchase_orders.get("po_id")
Marketing
# Campaigns (read-only)
sdk.business.campaigns.list(medium="email", status="sent")
sdk.business.campaigns.get("campaign_id")
# Marketing lists
sdk.business.marketing_lists.create(name="Newsletter", type="email")
sdk.business.marketing_lists.list()
sdk.business.marketing_lists.get("list_id")
sdk.business.marketing_lists.add_contact(
list_id="list_id",
email="subscriber@example.com",
firstname="Bob"
)
Environment Variables
| Variable | Description |
|---|---|
CASHFIN_CLIENT_SECRET |
Your API client secret (from Cashfin Dashboard) |
CASHFIN_BASE_URL |
API base URL (default: https://api.cashfin.africa) |
Development
# Install UV
pip install uv
# Install dependencies
uv sync
# Run tests
uv run python -m pytest
Metadata
Release files for cashfin-business-sdk 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| cashfin_business_sdk-0.2.1.tar.gz | 9.7 kB | Without provenance | Details for cashfin_business_sdk-0.2.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| cashfin_business_sdk-0.2.1-py3-none-any.whl | Python 3 | none | any | Details for cashfin_business_sdk-0.2.1-py3-none-any.whl |
Total release size: 32.6 kB
Release files / cashfin_business_sdk-0.2.1.tar.gz
| Download URL | cashfin_business_sdk-0.2.1.tar.gz |
|---|---|
| Size | 9.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f285b1369c6e37561b2c0a923cec350bf12fa96bce7699d5555a898ae2c5def3
|
|
BLAKE2b-256 checksum How to use checksums |
5789c3ce3b4d57797770e426e66b8f053a14f74f3993fd3ffc19fad1e099806c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.16
|
Release files / cashfin_business_sdk-0.2.1-py3-none-any.whl
| Download URL | cashfin_business_sdk-0.2.1-py3-none-any.whl |
|---|---|
| Size | 22.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9413e3d85ea60a637f0afb6347574646db09629d55b89f5ea9f66447aee4cb3d
|
|
BLAKE2b-256 checksum How to use checksums |
ef527a3dde93bf303792aea86622b96e03bbcbb8fa6ed5809b80bfcc89cb2914
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.16
|
Security for cashfin-business-sdk 0.2.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.