Skip to main content

Community SDK for parsing, validating, and generating Egyptian InstaPay payment links. Zero dependencies for the core API.

Project description

instapay-eg

instapay-eg logo

Community SDK for Egyptian InstaPay payment links.
Parse, validate, audit, and generate QR codes - with zero core dependencies.

PyPI Python CI Coverage License


What is instapay-eg?

instapay-eg is a Python SDK for working with Egyptian InstaPay payment links (https://ipn.eg/...).

InstaPay is Egypt's national instant payment network, built by the Egyptian Banks Company (EBC). Developers building Egyptian fintech applications - food delivery, e-commerce, booking platforms, freelance marketplaces - regularly need to:

  • Parse the multi-line share-sheet text the InstaPay app produces
  • Verify that a link is genuinely from InstaPay and not a phishing URL
  • Extract a user's handle for display or storage
  • Generate QR codes for payment requests
  • Integrate payment link validation into their Pydantic/FastAPI or Django models

This SDK solves all of that with a clean, typed, zero-dependency core API.

Features

Feature Details
🔍 Smart Parsing Extracts the URL from raw multi-line share-sheet text automatically
🛡️ Anti-Phishing Detects lookalike domains, homoglyph attacks, and injection payloads
🔬 Security Audit audit_link() returns a structured SecurityReport for logging
🏗️ Link Building build_link(handle) generates valid ipn.eg URLs programmatically
📱 QR Codes PNG, SVG, bytes, and base64 - covers every web and mobile use case
🤝 Pydantic v2 Annotated types (InstaPayLink, InstaPayHandle) for FastAPI schemas
🦄 Django InstaPayLinkField ORM field and InstaPayHandleFormField form field
💻 CLI instapay parse "...", instapay audit "...", instapay build --handle ...
100% Typed Full py.typed marker, passes strict type checking
🧪 100% Tested 100% branch coverage enforced in CI

Installation

=== "pip" bash pip install instapay-eg

=== "uv" bash uv add instapay-eg

With Optional Extras

# For Pydantic / FastAPI integration:
pip install "instapay-eg[pydantic]"

# For QR code generation:
pip install "instapay-eg[qrcode]"

# For Django integration:
pip install "instapay-eg[django]"

# Everything at once:
pip install "instapay-eg[all]"

Quick Demo

from instapay_eg import parse_text

# Paste the raw text from the InstaPay app share sheet:
raw = """
https://ipn.eg/S/alice/instapay/2DcFGv
Click the link to send money to
alice@instapay
Powered by InstaPay
"""

data = parse_text(raw)

print(data.link)            # https://ipn.eg/S/alice/instapay/2DcFGv
print(data.handle)          # alice
print(data.formatted_handle) # alice@instapay
print(data.raw_url_id)      # 2DcFGv
print(data.is_verified)     # True

Security Audit

from instapay_eg import audit_link

# Check a suspicious link:
report = audit_link("https://ipn.eg.evil.com/S/alice/instapay/fake")

print(report.is_safe)        # False
print(report.phishing_risk)  # True
print(report.failure_reason) # "Domain 'ipn.eg.evil.com' matches a known phishing pattern."

Pydantic / FastAPI

from fastapi import FastAPI
from pydantic import BaseModel
from instapay_eg.integrations.pydantic import InstaPayLink, InstaPayHandle

class PaymentRequest(BaseModel):
    # Users can paste raw share-sheet text - the link is extracted & verified automatically
    link: InstaPayLink
    recipient: InstaPayHandle

app = FastAPI()

@app.post("/payments")
async def create_payment(payment: PaymentRequest):
    return {"link": payment.link, "recipient": payment.recipient}

QR Code Generation

from instapay_eg.integrations.qrcode import qr_as_base64, save_qr

link = "https://ipn.eg/S/alice/instapay/2DcFGv"

# Return in a JSON API response - no file I/O needed:
b64 = qr_as_base64(link)
# → Use in HTML: <img src="data:image/png;base64,{b64}" />

# Or save to disk:
save_qr(link, "alice_payment_qr.png")

CLI

# Parse share-sheet text:
$ instapay parse "https://ipn.eg/S/alice/instapay/2DcFGv Click to pay..."
  Link:    https://ipn.eg/S/alice/instapay/2DcFGv
  Handle:  alice
  Format:  alice@instapay
  Safe:     Yes

# Audit a suspicious URL:
$ instapay audit "https://ipn.eg.evil.com/S/alice/instapay/fake"
  Status:    UNSAFE - DO NOT USE
  Phishing:  LOOKALIKE DOMAIN DETECTED

# Build a link from a handle:
$ instapay build --handle alice
  Generated URL: https://ipn.eg/S/alice/instapay

Documentation

Full documentation is available at mohamedmostafa259.github.io/instapay-eg.

Contributing

Contributions are welcome! Please read CONTRIBUTING.md first.

Disclaimer

This is an community-driven utility package. It is not affiliated with, endorsed by, or associated with the Egyptian Banks Company (EBC) or InstaPay Egypt.

License

MIT - see LICENSE for details.

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

instapay_eg-0.1.0.tar.gz (16.4 kB view details)

Uploaded Source

Built Distribution

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

instapay_eg-0.1.0-py3-none-any.whl (20.7 kB view details)

Uploaded Python 3

File details

Details for the file instapay_eg-0.1.0.tar.gz.

File metadata

  • Download URL: instapay_eg-0.1.0.tar.gz
  • Upload date:
  • Size: 16.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for instapay_eg-0.1.0.tar.gz
Algorithm Hash digest
SHA256 4e090bfea5b457d70a254f5da6110b4401aee496b618735be4a8633b2b7b6977
MD5 4f978c0945371719ce2d02704a2e188a
BLAKE2b-256 0505ca109d610014b99eb360eccb6c3cf408c848cc531ce7f99c78b304a20b23

See more details on using hashes here.

Provenance

The following attestation bundles were made for instapay_eg-0.1.0.tar.gz:

Publisher: publish.yml on MohamedMostafa259/instapay-eg

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file instapay_eg-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: instapay_eg-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 20.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for instapay_eg-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c11da44d27411cb4f730376ffc9c2367eda9173fc7e114bc6ad967c3065e7090
MD5 19aedb2097cd767ba774c979e440e985
BLAKE2b-256 406807bed7b55947311bf7368dec0dd938660f0456594f2152ebb13c3b93a1c5

See more details on using hashes here.

Provenance

The following attestation bundles were made for instapay_eg-0.1.0-py3-none-any.whl:

Publisher: publish.yml on MohamedMostafa259/instapay-eg

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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