Skip to main content

Official Python SDK for the PayBridgeNP payment gateway - accept eSewa, Khalti, and ConnectIPS through a single API

Project description

paybridge-np

Official Python SDK for the PayBridgeNP payment gateway. Accept eSewa, Khalti, and ConnectIPS through a single API.

Installation

pip install paybridge-np

Quick start

from paybridge_np import PayBridge

client = PayBridge(api_key="sk_live_...")  # from dashboard.paybridgenp.com

# Create a checkout session
session = client.checkout.create({
    "amount": 250000,        # NPR 2,500 in paisa
    "currency": "NPR",
    "returnUrl": "https://mystore.com/success",
    "cancelUrl": "https://mystore.com/cart",
    "metadata": {"orderId": "ORD-7842"},
    "customer": {
        "name": "Ram Shrestha",
        "email": "ram@example.com",
        "phone": "9841000000",
    },
})

# Redirect customer to hosted checkout
# session["checkout_url"] => https://paybridgenp.com/checkout/cs_xxx

Payments

# List payments
result = client.payments.list(limit=20)
payments = result["data"]

# Get a single payment
payment = client.payments.retrieve("pay_xxx")

Refunds

refund = client.refunds.create({
    "paymentId": "pay_xxx",
    "amount": 100000,  # NPR 1,000 in paisa
    "reason": "customer_request",
})

Webhooks

# Register an endpoint
endpoint = client.webhooks.create(
    url="https://mystore.com/webhooks/paybridge",
    events=["payment.succeeded", "payment.failed"],
)

# Verify a webhook signature (no client instance needed)
from paybridge_np.resources.webhooks import WebhooksResource

event = WebhooksResource.construct_event(
    body=raw_body,
    signature=request.headers["X-PayBridge-Signature"],
    secret="whsec_...",
)

Billing (Subscriptions)

# Create a plan
plan = client.plans.create({
    "name": "Pro Monthly",
    "amount": 99900,
    "intervalUnit": "month",
})

# Create a customer
customer = client.customers.create({
    "name": "Sita Gurung",
    "email": "sita@example.com",
})

# Subscribe
subscription = client.subscriptions.create({
    "customerId": customer["id"],
    "planId": plan["id"],
})

# List invoices
invoices = client.invoices.list(customer_id=customer["id"])

Sandbox mode

Use a sandbox API key (sk_sandbox_...) to test without real money. The SDK automatically routes to sandbox endpoints.

Error handling

from paybridge_np import PayBridgeError, AuthenticationError

try:
    session = client.checkout.create({...})
except AuthenticationError:
    print("Invalid API key")
except PayBridgeError as e:
    print(e, e.status_code)

Context manager

with PayBridge(api_key="sk_live_...") as client:
    session = client.checkout.create({...})
# HTTP client is closed automatically

Documentation

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

paybridge_np-0.4.0.tar.gz (13.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

paybridge_np-0.4.0-py3-none-any.whl (20.9 kB view details)

Uploaded Python 3

File details

Details for the file paybridge_np-0.4.0.tar.gz.

File metadata

  • Download URL: paybridge_np-0.4.0.tar.gz
  • Upload date:
  • Size: 13.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for paybridge_np-0.4.0.tar.gz
Algorithm Hash digest
SHA256 f3f87c6554f089a25a0d93fe9b9df5f81b32bffe474be3875f77d0e94c8db2d3
MD5 c773f110f4e311d1746d0337a4d95503
BLAKE2b-256 759ef259da84b4b90e18d3c3b01dc753a8998282845c7ed147e7508a1039fea5

See more details on using hashes here.

File details

Details for the file paybridge_np-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: paybridge_np-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 20.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for paybridge_np-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 04e66dd47a746bd08bab69bebd8332f8a02360f170f6128767d544b043bd67a3
MD5 5ed47d6b37537a6f02c2524fdf229977
BLAKE2b-256 d31e674d67b35cc9e64a1ecf741d2bdfeb6470f5b45949d996216f6e9302057c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page