Skip to main content

Official Python SDK for the PawPayments Native V2 API

Project description

PawPayments — Python SDK

Official Python SDK for the PawPayments Native V2 API. Ships both a synchronous client (PawPayments, built on requests) and an asynchronous one (AsyncPawPayments, built on httpx).

Install

pip install pawpayments

Requires Python 3.9+.

Quickstart (sync)

from pawpayments import PawPayments

paw = PawPayments(api_key="…")

invoice = paw.invoices.create(
    amount=25,
    fiat_currency="USD",
    billing_type="STATIC",
    asset="usdt_tron",
    description="Pro plan, 1 month",
    notify_url="https://example.com/paw/webhook",
)
print(invoice["payment_url"])

Quickstart (async)

import asyncio
from pawpayments import AsyncPawPayments


async def main():
    async with AsyncPawPayments(api_key="…") as paw:
        invoice = await paw.invoices.create(
            amount=25,
            fiat_currency="USD",
            billing_type="STATIC",
            asset="usdt_tron",
        )
        print(invoice["payment_url"])


asyncio.run(main())

Resources

Group Methods
paw.assets list()
paw.rates get(base=, assets=)
paw.balance get()
paw.invoices create(**), get(id), list(**), notify(id)
paw.payouts create(**, uniq_id=), get(id), list(**), batch(items, uniq_id=)
paw.ledger list(type=, ...)
paw.notifications list(**), test(url=)
paw.permanent create(**), get(id), list(**), deactivate(id)

payouts.create and payouts.batch accept an optional uniq_id for explicit idempotency (UUIDv4). When omitted the SDK generates one with uuid.uuid4(). A repeated uniq_id within 2 hours yields a 409. Payout requests use address. Invoice responses expose address_to and may include address_from.

Each payout (and each batch item) accepts an optional fee_bearer of "merchant" or "client" to choose who covers the network fee — defaults to "merchant":

paw.payouts.create(
    address="T…",
    amount=50,
    fiat_currency="USD",
    asset="usdt_tron",
    fee_bearer="client",
)

Webhook verification

from flask import Flask, request, abort
from pawpayments import Webhook

app = Flask(__name__)


@app.post("/paw/webhook")
def webhook():
    raw = request.get_data()
    sig = request.headers.get("X-Paw-Signature", "")
    if not Webhook.verify_raw_body(raw, sig, API_KEY):
        abort(401)
    payload = Webhook.parse_payload(raw)
    # …handle the invoice update…
    return "", 200

Errors

from pawpayments import PawPaymentsApiError

try:
    paw.invoices.create(...)
except PawPaymentsApiError as exc:
    print(exc.code, exc.http_status, str(exc), exc.details)

Testing

  • pytest tests/test_webhook.py — signature unit tests + PHP-interop parity.
  • PAW_API_KEY=… pytest tests/test_live.py tests/test_negative.py — live happy-path + negative-case suites against https://api.pawpayments.com. Tests skip when PAW_API_KEY is absent.

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

pawpayments-2.0.1.tar.gz (9.1 kB view details)

Uploaded Source

Built Distribution

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

pawpayments-2.0.1-py3-none-any.whl (11.2 kB view details)

Uploaded Python 3

File details

Details for the file pawpayments-2.0.1.tar.gz.

File metadata

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

File hashes

Hashes for pawpayments-2.0.1.tar.gz
Algorithm Hash digest
SHA256 f07594affeee781c09510b8112478559ceee7943585f545653cf14fec35dc389
MD5 ce7f350860a52bc4b6005130c0c9b411
BLAKE2b-256 6a1cfb98843b1cbca97b7caea946bf3b63cb403c156241f81d060c3d40ac99d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for pawpayments-2.0.1.tar.gz:

Publisher: release.yml on PawPayments/python-sdk

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

File details

Details for the file pawpayments-2.0.1-py3-none-any.whl.

File metadata

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

File hashes

Hashes for pawpayments-2.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 65f2f34cb83b3d920c516f79a4f855fe64647d10d26275695c0c9dae1b81cb6d
MD5 9348e1f46e4e1d01981818cec8d20dce
BLAKE2b-256 13ff59e2c49a131948d5d578b4fa8bde62b219dab4be214d7064816076e7977b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pawpayments-2.0.1-py3-none-any.whl:

Publisher: release.yml on PawPayments/python-sdk

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