Easy Labs
SDKsPythonResources

Payment Links

Payment Links — methods, parameters, and examples for easy-sdk (pip).

Payment links are pre-configured, hosted checkout URLs you can share over email, chat, or social — useful when you don't want to build a checkout UI yourself. Each link can charge once or be reused, optionally capped by payment_limit.

Namespace: client.payment_links.

Methods

create

link = client.payment_links.create(
    items=[{"price_id": "price_abc", "quantity": 1}],
    payment_limit=1,
    branding_overrides={"primary_color": "#0a84ff"},
    tags={"campaign": "newsletter-jan"},
    idempotency_key="link-newsletter-jan",
)
print(link.id)              # use this id to look up the full link

Returns: CreatePaymentLinkResponse (just { id }). All other fields are accepted via **kwargs.

list

links = client.payment_links.list(limit=50, offset=0)

Returns list[PaymentLink].

retrieve

link = client.payment_links.retrieve("plink_123")

update

link = client.payment_links.update(
    "plink_123",
    payment_limit=10,
    branding_overrides={"primary_color": "#ff3b30"},
)

delete

client.payment_links.delete("plink_123")

Returns None (HTTP 204).

list_payments

payments = client.payment_links.list_payments("plink_123", limit=50)

Returns the raw data payload (a list of payment / transfer objects) as a dict — passed through verbatim from the API.

Object shape

PaymentLink:

FieldType
idstr
statestr | None
payment_countint | None
payment_limitint | None
branding_overridesdict[str, Any] | None
tagsdict[str, Any] | None
created_atstr | None
updated_atstr | None

Examples

link = client.payment_links.create(
    items=[{"price_id": "price_abc", "quantity": 1}],
    payment_limit=1,
)
share_url = f"https://pay.itseasy.co/{link.id}"
send_invoice_email(customer_email, url=share_url)
link = client.payment_links.create(
    items=[{"price_id": "price_promo", "quantity": 1}],
    tags={"promo": "spring-2026"},
)

# Later — pull every payment that used it
payments = client.payment_links.list_payments(link.id, limit=200)
client.payment_links.update("plink_123", payment_limit=0)

On this page