Cashfree Payment Gateway Python SDK

5.0.6 · active · verified Wed Mar 25

Official Cashfree Payment Gateway Python SDK. Current version: 5.0.6 (Mar 2026). THREE packages on PyPI causing confusion: 'cashfree-sdk' (0.1.3 — beta, NOT recommended for production by Cashfree), 'cashfree_pg' (5.0.6 — correct current PG SDK), 'cashfree' (1.0.1 — unrelated package). Use cashfree_pg. API version string must be passed to every API call. Supports SANDBOX and PRODUCTION environments. Amount in rupees (float) — unlike Razorpay which uses paise.

Warnings

Install

Imports

Quickstart

Cashfree PG Python SDK — create and fetch order.

# pip install cashfree_pg
from cashfree_pg.api_client import Cashfree
from cashfree_pg.models.create_order_request import CreateOrderRequest
from cashfree_pg.models.customer_details import CustomerDetails
from cashfree_pg.models.order_meta import OrderMeta

# Initialize — get keys from dashboard.cashfree.com
cashfree = Cashfree(
    XEnvironment=Cashfree.SANDBOX,
    XClientId='TEST_APP_ID',
    XClientSecret='TEST_SECRET_KEY'
)

x_api_version = '2023-08-01'  # pass to every API call

# Create order
customer = CustomerDetails(customer_id='cust_001', customer_phone='9999999999')
meta = OrderMeta(return_url='https://yourapp.com/callback?order_id={order_id}')

request = CreateOrderRequest(
    order_amount=499.00,   # rupees, not paise
    order_currency='INR',
    customer_details=customer,
    order_meta=meta
)

try:
    response = cashfree.PGCreateOrder(x_api_version, request, None, None)
    print('Order ID:', response.data.order_id)
    print('Payment URL:', response.data.payment_link)
except Exception as e:
    print('Error:', e)

# Fetch order status
try:
    order = cashfree.PGFetchOrder(x_api_version, response.data.order_id, None)
    print('Status:', order.data.order_status)
except Exception as e:
    print('Error:', e)

view raw JSON →