FamGateway Python SDK
The official Python client library for FamGateway — 100% Free, Zero-Fee Peer-to-Peer UPI Payment Gateway for Indian Developers and Businesses.
Features
- Instant Dynamic UPI QR Codes — Get direct QR image URLs (
qr_url) to send directly in Telegram Bots or apps. - Deep UPI Intent Links —
upi://pay?...URLs for 1-tap payments in PhonePe, Google Pay, and Paytm. - Telegram Bot Friendly — Send QR codes directly to users inside Telegram chats without external browser redirects.
- Zero Transaction Fees — 100% peer-to-peer settlement directly into your FamPay / UPI ID.
- Instant Webhooks & Polling — Automated payment reconciliation via webhooks and status API.
Installation
pip install famgateway
Quickstart (3 Lines of Code)
from famgateway import FamGateway
# 1. Initialize client with your API Key
fg = FamGateway(api_key="your_famgateway_api_key")
# 2. Create a dynamic UPI payment order
order = fg.create_order(
amount=100.0,
customer_name="Aryan Gupta",
customer_phone="9876543210"
)
print("Order ID:", order.order_id)
print("Payable Amount: Rs.", order.payable_amount)
print("QR Code Image URL:", order.qr_url)
print("Deep UPI Intent:", order.upi_intent)
print("Hosted Checkout URL:", order.checkout_url)
# 3. Check order payment status
status = fg.get_status(order.order_id)
if status.is_paid:
print(f"Payment Captured! UTR: {status.utr}")
Telegram Bot Integration Example
Use famgateway to collect payments directly inside Telegram without any website redirect:
import telebot
from telebot.types import InlineKeyboardMarkup, InlineKeyboardButton
from famgateway import FamGateway
bot = telebot.TeleBot("YOUR_TELEGRAM_BOT_TOKEN")
fg = FamGateway(api_key="YOUR_FAMGATEWAY_API_KEY")
@bot.message_handler(commands=['buy'])
def handle_buy(message):
# 1. Create UPI payment order for Rs 50
order = fg.create_order(
amount=50.0,
customer_name=f"{message.from_user.first_name} ({message.from_user.id})"
)
# 2. Create inline pay button
markup = InlineKeyboardMarkup()
markup.row(
InlineKeyboardButton("Pay via UPI App", url=order.upi_intent),
InlineKeyboardButton("Web Checkout", url=order.checkout_url)
)
markup.row(
InlineKeyboardButton("Check Status", callback_data=f"check_{order.order_id}")
)
# 3. Send QR image directly in chat
bot.send_photo(
chat_id=message.chat.id,
photo=order.qr_url,
caption=f"Scan to Pay Rs {order.payable_amount}\n\nOrder ID: `{order.order_id}`",
reply_markup=markup
)
@bot.callback_query_handler(func=lambda call: call.data.startswith("check_"))
def handle_status(call):
order_id = call.data.split("_")[1]
status = fg.get_status(order_id)
if status.is_paid:
bot.answer_callback_query(call.id, "Payment Verified!", show_alert=True)
bot.send_message(call.message.chat.id, f"Payment received! Payer: {status.sender_name}, UTR: `{status.utr}`")
else:
bot.answer_callback_query(call.id, "Payment pending. Please complete the UPI payment.", show_alert=True)
bot.infinity_polling()
API Reference
FamGateway(api_key, base_url="https://famgateway.in", timeout=15)
Initializes the FamGateway client.
fg.create_order(amount, customer_name=None, customer_email=None, customer_phone=None, redirect_url=None, webhook_url=None)
Creates a new payment order and generates dynamic UPI QR details.
Returns OrderResponse object:
order.order_id(str): Unique order reference (e.g.fg_J2KVI0O8)order.amount(float): Base order amountorder.payable_amount(float): Reconciled payable amountorder.qr_url(str): Direct URL of the QR code imageorder.upi_intent(str): Deep link (upi://pay?...) for opening UPI appsorder.checkout_url(str): Hosted web checkout URLorder.upi_id(str): Receiver UPI IDorder.created_at_ist(str): Order generation timestamp (IST)order.expires_at_ist(str): Order expiry timestamp (IST)
fg.get_status(order_id)
Fast public polling check for an order.
fg.verify_order(order_id)
Full server-side payment verification with authenticated merchant credentials and instant IMAP sync.
Returns OrderStatus object:
status.status(str):'success','pending', or'expired'status.is_paid(bool):Trueif payment captured successfullystatus.is_pending(bool):Trueif awaiting customer paymentstatus.is_expired(bool):Trueif order timed out after 5 minutesstatus.utr(str|None): Bank 12-digit UTR / RRN referencestatus.transaction_id(str|None): FamPay transaction reference IDstatus.sender_name(str|None): Name of payer extracted from UPIstatus.payment_time(str|None): Payment confirmation timestamp
fg.verify_webhook(payload, signature)
Verifies the cryptographic HMAC-SHA256 signature (X-FamGateway-Signature) of incoming webhooks.
fg.simulate_payment(order_id)
Simulates a successful payment for sandbox / local development without real funds.
About & Legal
FamGateway is a developer-focused payment orchestration platform operated by ARYANISPE.
- Govt. MSME Registration:
UDYAM-BR-28-0050000(Ministry of MSME, Govt. of India) - Website: https://famgateway.in
- Support: support@famgateway.in
License
MIT License. Free for commercial and private use.
Metadata
Release files for famgateway 1.0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| famgateway-1.0.3.tar.gz | 11.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| famgateway-1.0.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 21.2 kB
Release files / famgateway-1.0.3.tar.gz
| Download URL | famgateway-1.0.3.tar.gz |
|---|---|
| Size | 11.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d3c21ba4af16872a40e8798785f4f3a868d3e218babe34c66d07cf8e2005ebb9
|
|
BLAKE2b-256 checksum How to use checksums |
5a77144a4a5c54e902a188fbd7c1fcebdca06028f9cdc3f17cd50f11bfa8a143
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.9
|
Release files / famgateway-1.0.3-py3-none-any.whl
| Download URL | famgateway-1.0.3-py3-none-any.whl |
|---|---|
| Size | 9.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ba35db862212bb35f5a8131f30e44d37835844f6ed3e3e907105004f3842affb
|
|
BLAKE2b-256 checksum How to use checksums |
5f6466ee3a35cec219e641b57f87a5238146a4d1d9383a818a19aa7589448f2f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.9
|