x402aff - Python
The x402aff kit (Python): an installable x402aff package with the one-object
Affiliation facade on top. This is the
implementation validated end-to-end on Base mainnet.
Install
pip install x402aff # from PyPI
pip install 'x402aff[cdp]' # with the CDP discovery extra
Or from a checkout / straight from git, to track unreleased changes:
pip install ./python # from a clone, at the repo root
pip install '.[cdp]' # from inside python/, with the CDP extra
pip install 'x402aff[cdp] @ git+https://github.com/MiroShark/x402aff@main#subdirectory=python'
The cdp extra adds cdp-sdk, needed only for the CDP-index discovery path
(monitor, aff.scan() / pending() / splits_payload()). Without it the
request-time payTo and payout-calldata paths work fine.
Vendoring instead of installing works too - copy python/x402aff/ into your
project as a subpackage; the modules import each other relatively, so nothing
needs rewriting and none of the generic names (split, monitor, resolver)
leak into your top-level namespace.
Use
from x402aff import Affiliation
aff = Affiliation(app_code="bc_yourcode", seller_payout="0xYourWallet")
# on your x402 route:
# pay_to=aff.pay_to per-request split, from the X-Builder-Code header
# extensions=aff.extensions declares your app code `a`
# release payouts, later (permissionless):
calls, balance = aff.release("bc_alice")
Full integration guide (money path, trust model, wiring, caveats):
../docs/INTEGRATION.md. The TypeScript port lives in
../ts/ and resolves the identical split address.
Modules
| File | Role |
|---|---|
__init__.py |
The package's public surface (from x402aff import Affiliation, …). |
affiliation.py |
Start here. The Affiliation facade wrapping everything below. |
builder_code.py |
Declare a; decode a/s/w off a settle tx. |
resolver.py |
Builder code → registered payout address (one eth_call). |
split.py |
Builder code + price → the split plan (recipients + bps). |
push_split.py |
The plan → 0xSplits calldata + counterfactual address. |
payto.py |
Request-time payTo resolver. Cached, never raises. |
distribute.py |
The (deploy + distribute) calldata to release a funded split. |
monitor.py |
Which splits hold distributable funds (via CDP's index). |
buyer_client.py |
Buyer-side extension that attaches s (via marked_service_codes). |
cdp_sql.py · queries.sql |
CDP SQL API client + attribution queries. |
Develop
pip install -e '.[cdp,dev]' # editable install with the CDP + test extras
pytest # runs tests/ against the x402aff package
Metadata
Release files for x402aff 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| x402aff-0.3.0.tar.gz | 48.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| x402aff-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 89.5 kB
Release files / x402aff-0.3.0.tar.gz
| Download URL | x402aff-0.3.0.tar.gz |
|---|---|
| Size | 48.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4b1841a049f12b28007479ebc2762339f0892e79c0038fcfb2846905ac01d951
|
|
BLAKE2b-256 checksum How to use checksums |
287bb064e116b074fe481474c836e7c8643242959edac422e1bab33743bcf75e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 26, 2026.
Transparency logRelease files / x402aff-0.3.0-py3-none-any.whl
| Download URL | x402aff-0.3.0-py3-none-any.whl |
|---|---|
| Size | 41.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9078284e329431acd28ffc5d09059e333ce7ff8133109b118f754d319b1c2986
|
|
BLAKE2b-256 checksum How to use checksums |
4d5e673e75f6cb31540cd8cd481f0d1d094e8f214b0dc41c333f212f0ce2a922
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 26, 2026.
Transparency log