Skip to main content

bepaid

Python client for the bePaid payment API (bepaid.by).

Covers the Gateway API (card payments, tokenization, capture, void, refunds), the hosted Checkout API, and the Direct/APM API (alternative payment methods). Built on httpx and pydantic.

Install

uv add bepaid
# or
pip install bepaid

Requires Python 3.10+.

Usage

from bepaid import BepaidClient
from bepaid.models import PaymentRequest, CreditCardRaw

client = BepaidClient("shop_id", "secret_key")

# amounts are strings in minor units, e.g. "700" = 7.00 BYN
payment = client.create_payment(
    PaymentRequest(
        amount="700",
        currency="BYN",
        test=True,
        description="Order #123",
        tracking_id="order-123",
        credit_card=CreditCardRaw(
            number="4242424242424242",
            verification_value="123",
            holder="John Smith",
            exp_month=10,
            exp_year=2030,
            save_card=True,
        ),
    )
)

Async

AsyncBepaidClient mirrors the synchronous API and supports async with:

from bepaid import AsyncBepaidClient

async with AsyncBepaidClient("shop_id", "secret_key") as client:
    payment = await client.create_payment(...)

# or without the context manager:
client = AsyncBepaidClient("shop_id", "secret_key")
try:
    payment = await client.create_payment(...)
finally:
    await client.aclose()

BepaidClient is a thin synchronous wrapper around AsyncBepaidClient (each call runs on a fresh event loop, so it does not reuse connections); prefer the async client inside an asyncio application.

Authorization with 3-D Secure

auth = client.create_authorization(AuthorizationRequest(amount=700, currency="BYN", ...))
# redirect the customer to auth.redirect_url, then poll for the result:
tx = client.get_transaction(auth.uid)

Hosted checkout

checkout = client.create_checkout(
    CheckoutRequest(
        transaction_type="payment",
        order=CheckoutOrder(currency="BYN", amount=700, description="Order #123"),
        settings=CheckoutSettings(
            return_url="https://example.com/return",
            notification_url="https://example.com/webhook",
        ),
    )
)
# redirect the customer to checkout.redirect_url

Tokenization

token = client.create_token(
    CreateTokenRequest(
        number="4200000000000000",
        holder="John Smith",
        exp_month="05",
        exp_year="2028",
        contract=["recurring"],
    )
)
# store token.token, use it later without re-entering card details

APM payments (Direct API)

apm = client.create_apm_payment(
    ApmPaymentRequest(
        amount=700,
        currency="BYN",
        payment_method={"type": "erip", "service_no": "0000000001"},
    )
)

Webhooks

from bepaid.client import verify_webhook_auth
from bepaid.models import WebhookNotification

assert verify_webhook_auth(authorization_header, shop_id, secret_key)
notification = WebhookNotification.model_validate_json(raw_body)

API coverage

Group Operations
Gateway create_payment, create_authorization, capture, void, refund, get_transaction, create_p2p
Tokens create_token
Checkout create_checkout, get_checkout_status, validate_apple_pay
Direct create_apm_payment, apm_refund, apm_full_refund, confirm_apm_payment
Subscriptions create_customer, get_customer, list_customers, create_plan, get_plan, list_plans, create_subscription, get_subscription, cancel_subscription
Webhooks verification + payload parsing (transaction & subscription)

License

MIT

Download files

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

Source Distribution

bepaid-0.3.0.tar.gz (7.1 kB view details)

Uploaded Source

Built Distribution

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

bepaid-0.3.0-py3-none-any.whl (8.5 kB view details)

Uploaded Python 3

File details

Details for the file bepaid-0.3.0.tar.gz.

File metadata

  • Download URL: bepaid-0.3.0.tar.gz
  • Upload date:
  • Size: 7.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for bepaid-0.3.0.tar.gz
Algorithm Hash digest
SHA256 82aea70548c941ba81df142d36e7e09e592bce5e1b777c3bfa5201bb729def8d
MD5 62372e7ef7ddc2136350c8c80902fe29
BLAKE2b-256 6faf5590b3dbedf366f2aa1a345d815cdedf27866863f3c4a319359bd8ceb518

See more details on using hashes here.

File details

Details for the file bepaid-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: bepaid-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 8.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for bepaid-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e43147df2a0fc1b1391b0d0cceaa9762ed35e8c7dfd12aa718ef8423044ba55c
MD5 23060adbd116a65169bedcee8edf013d
BLAKE2b-256 132c70aa5cdd3638acf8a285ad09d32f90b82c06de79e622e33e6168c1ed749c

See more details on using hashes here.

Release history Release notifications | RSS feed

0.5.11

2 files

0.5.10

2 files

0.5.9

2 files

0.5.8

2 files

0.5.7

2 files

0.5.6

2 files

0.5.5

2 files

0.5.4

2 files

0.5.3

2 files

0.5.2

2 files

0.5.1

2 files

0.5.0

2 files

0.4.0

2 files

This release

0.3.0 This release

2 files

0.2.1

2 files

0.2.0

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page