Easy Labs
SDKsPythonResources

Refunds

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

Refunds are reversals on an existing transfer. The Python SDK does not expose a top-level client.refunds namespace — refunds live on the Transfers resource as client.transfers.create_refund(...).

No standalone client.refunds.* namespace ships in 0.1.x.

Methods

create_refund (on transfers)

reversal = client.transfers.create_refund(
    "tr_123",
    refund_amount=500,                     # cents; partial allowed
    tags={"reason": "broken_widget"},
    idempotency_key="refund-tr_123-1",
)

Returns the reversal as a Transfer object (the API models reversals as transfers in the opposite direction). Pass refund_amount equal to the original transfer's amount for a full refund.

Object shape

The reversal is a Transfer — see Transfers for the field list.

The most relevant fields on a reversal:

FieldNotes
idThe reversal's own ID.
typeDistinguishes reversal vs. original transfer.
state"PENDING", "SUCCEEDED", "FAILED".
amountThe refunded amount (positive integer, cents).
failure_code / failure_messagePopulated if the reversal fails.

Examples

Full refund on a transfer

original = client.transfers.retrieve("tr_123")
reversal = client.transfers.create_refund(
    original.id,
    refund_amount=original.amount,
    idempotency_key=f"refund-{original.id}-full",
)
assert reversal.state in {"PENDING", "SUCCEEDED"}

Partial refund with a reason tag

client.transfers.create_refund(
    "tr_123",
    refund_amount=500,
    tags={"reason": "shipping_damage", "ticket": "SUP-4421"},
    idempotency_key="refund-tr_123-shipping",
)

Idempotent refund from a webhook handler

def on_dispute_won(event):
    dispute = event.data
    client.transfers.create_refund(
        dispute["transfer_id"],
        refund_amount=dispute["amount"],
        idempotency_key=f"refund-dispute-{dispute['id']}",
    )

On this page