Refund
Refund objects allow you to refund a previously created charge that isn't refunded yet. Funds are refunded to the credit or debit card that's initially charged.
Related guide: Refunds
Summary
Types
@type destination_details() :: %{ optional(:affirm) => map() | nil, optional(:afterpay_clearpay) => map() | nil, optional(:alipay) => map() | nil, optional(:alma) => map() | nil, optional(:amazon_pay) => map() | nil, optional(:au_bank_transfer) => map() | nil, optional(:blik) => destination_details_blik() | nil, optional(:br_bank_transfer) => destination_details_br_bank_transfer() | nil, optional(:card) => destination_details_card() | nil, optional(:cashapp) => map() | nil, optional(:crypto) => destination_details_crypto() | nil, optional(:customer_cash_balance) => map() | nil, optional(:eps) => map() | nil, optional(:eu_bank_transfer) => destination_details_eu_bank_transfer() | nil, optional(:gb_bank_transfer) => destination_details_gb_bank_transfer() | nil, optional(:giropay) => map() | nil, optional(:grabpay) => map() | nil, optional(:jp_bank_transfer) => destination_details_jp_bank_transfer() | nil, optional(:klarna) => map() | nil, optional(:mb_way) => destination_details_mb_way() | nil, optional(:multibanco) => destination_details_multibanco() | nil, optional(:mx_bank_transfer) => destination_details_mx_bank_transfer() | nil, optional(:nz_bank_transfer) => map() | nil, optional(:p24) => destination_details_p24() | nil, optional(:paynow) => map() | nil, optional(:paypal) => destination_details_paypal() | nil, optional(:pix) => map() | nil, optional(:revolut) => map() | nil, optional(:sofort) => map() | nil, optional(:swish) => destination_details_swish() | nil, optional(:th_bank_transfer) => destination_details_th_bank_transfer() | nil, optional(:twint) => map() | nil, optional(:type) => String.t() | nil, optional(:us_bank_transfer) => destination_details_us_bank_transfer() | nil, optional(:wechat_pay) => map() | nil, optional(:zip) => map() | nil, optional(String.t()) => term() }
affirmafterpay_clearpayalipayalmaamazon_payau_bank_transferblikbr_bank_transfercardcashappcryptocustomer_cash_balanceepseu_bank_transfergb_bank_transfergiropaygrabpayjp_bank_transferklarnamb_waymultibancomx_bank_transfernz_bank_transferp24paynowpaypalpixrevolutsofortswishth_bank_transfertwinttype- The type of transaction-specific details of the payment method used in the refund (e.g.,card). An additional hash is included ondestination_detailswith a name matching this value. It contains information specific to the refund transaction. Max length: 5000.us_bank_transferwechat_payzip
@type destination_details_blik() :: %{ optional(:network_decline_code) => String.t() | nil, optional(:reference) => String.t() | nil, optional(:reference_status) => String.t() | nil, optional(String.t()) => term() }
network_decline_code- For refunds declined by the network, a decline code provided by the network which indicates the reason the refund failed. Max length: 5000. Nullable.reference- The reference assigned to the refund. Max length: 5000. Nullable.reference_status- Status of the reference on the refund. This can bepending,availableorunavailable. Max length: 5000. Nullable.
@type destination_details_br_bank_transfer() :: %{ optional(:reference) => String.t() | nil, optional(:reference_status) => String.t() | nil, optional(String.t()) => term() }
reference- The reference assigned to the refund. Max length: 5000. Nullable.reference_status- Status of the reference on the refund. This can bepending,availableorunavailable. Max length: 5000. Nullable.
@type destination_details_card() :: %{ optional(:reference) => String.t() | nil, optional(:reference_status) => String.t() | nil, optional(:reference_type) => String.t() | nil, optional(:type) => String.t() | nil, optional(String.t()) => term() }
reference- Value of the reference number assigned to the refund. Max length: 5000.reference_status- Status of the reference number on the refund. This can bepending,availableorunavailable. Max length: 5000.reference_type- Type of the reference number assigned to the refund. Max length: 5000.type- The type of refund. This can berefund,reversal, orpending. Possible values:pending,refund,reversal.
@type destination_details_crypto() :: %{ optional(:reference) => String.t() | nil, optional(String.t()) => term() }
reference- The transaction hash of the refund. Max length: 5000. Nullable.
@type destination_details_eu_bank_transfer() :: %{ optional(:reference) => String.t() | nil, optional(:reference_status) => String.t() | nil, optional(String.t()) => term() }
reference- The reference assigned to the refund. Max length: 5000. Nullable.reference_status- Status of the reference on the refund. This can bepending,availableorunavailable. Max length: 5000. Nullable.
@type destination_details_gb_bank_transfer() :: %{ optional(:reference) => String.t() | nil, optional(:reference_status) => String.t() | nil, optional(String.t()) => term() }
reference- The reference assigned to the refund. Max length: 5000. Nullable.reference_status- Status of the reference on the refund. This can bepending,availableorunavailable. Max length: 5000. Nullable.
@type destination_details_jp_bank_transfer() :: %{ optional(:reference) => String.t() | nil, optional(:reference_status) => String.t() | nil, optional(String.t()) => term() }
reference- The reference assigned to the refund. Max length: 5000. Nullable.reference_status- Status of the reference on the refund. This can bepending,availableorunavailable. Max length: 5000. Nullable.
@type destination_details_mb_way() :: %{ optional(:reference) => String.t() | nil, optional(:reference_status) => String.t() | nil, optional(String.t()) => term() }
reference- The reference assigned to the refund. Max length: 5000. Nullable.reference_status- Status of the reference on the refund. This can bepending,availableorunavailable. Max length: 5000. Nullable.
@type destination_details_multibanco() :: %{ optional(:reference) => String.t() | nil, optional(:reference_status) => String.t() | nil, optional(String.t()) => term() }
reference- The reference assigned to the refund. Max length: 5000. Nullable.reference_status- Status of the reference on the refund. This can bepending,availableorunavailable. Max length: 5000. Nullable.
@type destination_details_mx_bank_transfer() :: %{ optional(:reference) => String.t() | nil, optional(:reference_status) => String.t() | nil, optional(String.t()) => term() }
reference- The reference assigned to the refund. Max length: 5000. Nullable.reference_status- Status of the reference on the refund. This can bepending,availableorunavailable. Max length: 5000. Nullable.
@type destination_details_p24() :: %{ optional(:reference) => String.t() | nil, optional(:reference_status) => String.t() | nil, optional(String.t()) => term() }
reference- The reference assigned to the refund. Max length: 5000. Nullable.reference_status- Status of the reference on the refund. This can bepending,availableorunavailable. Max length: 5000. Nullable.
@type destination_details_paypal() :: %{ optional(:network_decline_code) => String.t() | nil, optional(String.t()) => term() }
network_decline_code- For refunds declined by the network, a decline code provided by the network which indicates the reason the refund failed. Max length: 5000. Nullable.
@type destination_details_swish() :: %{ optional(:network_decline_code) => String.t() | nil, optional(:reference) => String.t() | nil, optional(:reference_status) => String.t() | nil, optional(String.t()) => term() }
network_decline_code- For refunds declined by the network, a decline code provided by the network which indicates the reason the refund failed. Max length: 5000. Nullable.reference- The reference assigned to the refund. Max length: 5000. Nullable.reference_status- Status of the reference on the refund. This can bepending,availableorunavailable. Max length: 5000. Nullable.
@type destination_details_th_bank_transfer() :: %{ optional(:reference) => String.t() | nil, optional(:reference_status) => String.t() | nil, optional(String.t()) => term() }
reference- The reference assigned to the refund. Max length: 5000. Nullable.reference_status- Status of the reference on the refund. This can bepending,availableorunavailable. Max length: 5000. Nullable.
@type destination_details_us_bank_transfer() :: %{ optional(:reference) => String.t() | nil, optional(:reference_status) => String.t() | nil, optional(String.t()) => term() }
reference- The reference assigned to the refund. Max length: 5000. Nullable.reference_status- Status of the reference on the refund. This can bepending,availableorunavailable. Max length: 5000. Nullable.
@type next_action() :: %{ optional(:display_details) => next_action_display_details() | nil, optional(:type) => String.t() | nil, optional(String.t()) => term() }
display_detailstype- Type of the next action to perform. Max length: 5000.
@type next_action_display_details() :: %{ optional(:email_sent) => next_action_display_details_email_sent() | nil, optional(:expires_at) => integer() | nil, optional(String.t()) => term() }
email_sentexpires_at- The expiry timestamp. Format: Unix timestamp.
@type next_action_display_details_email_sent() :: %{ optional(:email_sent_at) => integer() | nil, optional(:email_sent_to) => String.t() | nil, optional(String.t()) => term() }
email_sent_at- The timestamp when the email was sent. Format: Unix timestamp.email_sent_to- The recipient's email address. Max length: 5000.
@type presentment_details() :: %{ optional(:presentment_amount) => integer() | nil, optional(:presentment_currency) => String.t() | nil, optional(String.t()) => term() }
presentment_amount- Amount intended to be collected by this payment, denominated inpresentment_currency.presentment_currency- Currency presented to the customer during payment. Max length: 5000.
@type t() :: %Stripe.Resources.Refund{ amount: integer(), balance_transaction: String.t() | Stripe.Resources.BalanceTransaction.t(), charge: String.t() | Stripe.Resources.Charge.t(), created: integer(), currency: String.t(), description: String.t() | nil, destination_details: destination_details() | nil, failure_balance_transaction: String.t() | Stripe.Resources.BalanceTransaction.t() | nil, failure_reason: String.t() | nil, id: String.t(), instructions_email: String.t() | nil, metadata: %{required(String.t()) => String.t()}, next_action: next_action() | nil, object: String.t(), payment_intent: String.t() | Stripe.Resources.PaymentIntent.t(), pending_reason: String.t() | nil, presentment_details: presentment_details() | nil, reason: String.t(), receipt_number: String.t(), source_transfer_reversal: String.t() | Stripe.Resources.TransferReversal.t(), status: String.t(), transfer_reversal: String.t() | Stripe.Resources.TransferReversal.t() }
amount- Amount, in cents (or local equivalent).balance_transaction- Balance transaction that describes the impact on your account balance. Nullable. Expandable.charge- ID of the charge that's refunded. Nullable. Expandable.created- Time at which the object was created. Measured in seconds since the Unix epoch. Format: Unix timestamp.currency- Three-letter ISO currency code, in lowercase. Must be a supported currency. Format: ISO 4217 currency code.description- An arbitrary string attached to the object. You can use this for displaying to users (available on non-card refunds only). Max length: 5000.destination_details- Expandable.failure_balance_transaction- After the refund fails, this balance transaction describes the adjustment made on your account balance that reverses the initial balance transaction. Expandable.failure_reason- Provides the reason for the refund failure. Possible values are:lost_or_stolen_card,expired_or_canceled_card,charge_for_pending_refund_disputed,insufficient_funds,declined,merchant_request, orunknown. Max length: 5000.id- Unique identifier for the object. Max length: 5000.instructions_email- For payment methods without native refund support (for example, Konbini, PromptPay), provide an email address for the customer to receive refund instructions. Max length: 5000.metadata- Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Nullable.next_action- Expandable.object- String representing the object's type. Objects of the same type share the same value. Possible values:refund.payment_intent- ID of the PaymentIntent that's refunded. Nullable. Expandable.pending_reason- Provides the reason for why the refund is pending. Possible values are:processing,insufficient_funds, orcharge_pending. Possible values:charge_pending,insufficient_funds,processing.presentment_details- Expandable.reason- Reason for the refund, which is either user-provided (duplicate,fraudulent, orrequested_by_customer) or generated by Stripe internally (expired_uncaptured_charge). Possible values:duplicate,expired_uncaptured_charge,fraudulent,requested_by_customer. Nullable.receipt_number- This is the transaction number that appears on email receipts sent for this refund. Max length: 5000. Nullable.source_transfer_reversal- The transfer reversal that's associated with the refund. Only present if the charge came from another Stripe account. Nullable. Expandable.status- Status of the refund. This can bepending,requires_action,succeeded,failed, orcanceled. Learn more about failed refunds. Max length: 5000. Nullable.transfer_reversal- This refers to the transfer reversal object if the accompanying transfer reverses. This is only applicable if the charge was created using the destination parameter. Nullable. Expandable.