RefundTransaction API Operation (NVP)

APILegacyLast updated: March 16th 2023, @ 11:23:55 am


Important: NVP/SOAP is a legacy integration method. We accept new integrations and support existing integrations, but there are newer solutions. If you're starting an integration, we recommend our latest solutions.

Issues a full or partial refund to the PayPal account holder associated with a transaction.

The default refund period is 180 days from the transaction date.

If you refund a payment for goods or services, there are no fees to make the refund, but the fees you originally paid as the seller are not returned to you. The amount of the refunded payment will be deducted from your PayPal account.

Instead, merchants can manually issue a credit to the buyer by logging into their PayPal account; for PayPal payments, a credit can be issued by clicking Send Money. Alternatively, merchants can use the MassPay API to credit PayPal accounts or utilize the DoNonReferencedCredit API operation to issue a credit to a card without referencing the original transaction.

For more about refunds, see All about refunds at PayPal.

RefundTransaction request message

RefundTransaction request fields

FieldDescription

METHOD

(Required) Must be RefundTransaction.

TRANSACTIONID

(Required) Unique identifier of the transaction to be refunded.

Character length and limitations: 17 characters. Orders transactions have 19 characters.

PAYERID

(Optional) Encrypted PayPal customer account identification number. Supported only for Point of Sale transactions.

Character length and limitations: 13 single-byte alphanumeric characters.

INVOICEID

(Optional) Your own invoice or tracking ID number.

Character length and limitations: 127 single-byte alphanumeric characters.

REFUNDTYPE

Type of refund you are making. Value is:

  • Full — Full refund (default).

  • Partial — Partial refund.

AMT

(Optional) Refund amount. Required if the value of RefundType is Partial.

Note: If the value of RefundType is Full, do not set the amount unless you want to refund more than 100% of the original transaction amount.

Character length and limitations: Value is typically a positive number that cannot exceed nine (9) digits in SOAP request/response for USD, CLP, or JPY or the per transaction limit for the currency. It includes no currency symbol. Most currencies require two decimal places. The decimal separator must be a period (.), and the optional thousands separator must be a comma (,). Some currencies do not allow decimals. For details, see the currency codes page.

CURRENCYCODE

(Optional) Currency code of the refund transaction. If this field is not passed, the currency code of the original transaction is used. It is an ISO 4217 3-letter currency code, for example, USD for US Dollars.

Character length and limitations: Three single-byte characters.

NOTE

(Optional) Custom memo about the refund.

Character length and limitations: 255 single-byte alphanumeric characters.

REFUNDSOURCE

(Optional) Type of PayPal funding source (balance or eCheck) that can be used for auto refund. Value is:

  • any — The merchant does not have a preference. Use any available funding source.

  • instant — Use the merchant's balance as the funding source.

  • eCheck — The merchant prefers using the eCheck funding source. If the merchant's PayPal balance can cover the refund amount, use the PayPal balance.

Note: This field does not apply to point-of-sale transactions.

Available since version 82.0.

REFUNDADVICE

(Deprecated) Flag indicates the buyer received store credit for a given transaction. Supported only for Point of Sale transactions and is one of the following values:

  • true — The buyer was already given store credit for a given transaction.

  • false — The buyer was not given store credit for a given transaction.

Available since version 85.0.

MSGSUBID

(Optional) A message ID that uniquely identifies the request. This ID can later be used to request the latest results for a previous request without generating a new request. Examples of this include requests due to timeouts or errors during the original request.

Character length and limitations: String of up to 38 single-byte characters.

Available since version 92.0.

Merchant store details fields

Note: These fields are only supported for Point of Sale transactions.

FieldDescription

STOREID

Identifier of the merchant store at which the refund is given. This field is required for point-of-sale transactions.

Character length and limitations: 50 single-byte characters.

Available since version 82.0.

TERMINALID

(Optional) ID of the terminal.

Character length and limitations: 50 single-byte characters.

Available since version 82.0.

RefundTransaction response message

RefundTransaction response fields

FieldDescription

REFUNDTRANSACTIONID

Unique transaction ID of the refund.

Character length and limitations: 17 characters. Orders transactions have 19 characters.

FEEREFUNDAMT

The refunded amount of the PayPal transaction fees (all or part of the variable fee). PayPal's transaction fees for merchants typically consist of a variable fee and a fixed fee. For example, for a $100 payment amount, if the standard per transaction fee is the sum of a variable fee of 2.9% plus a fixed fee of $0.30, the fees would be $2.90 + $0.30. For a full refund of $100.00, the FEEREFUNDAMT is 2.90, or 100% of the variable fee.

Note: PayPal does not refund the fixed per transaction fee, which is typically $0.30 in the U.S. or its equivalent for your country. See PayPal Merchant Fees for more information.
For partial refunds, a percentage of the variable fee is refunded, equivalent to the percentage of the refund from the original payment amount. In this example, for a partial refund of $50.00, the FEEREFUNDAMT is 1.45.

Character length and limitations: Value is typically a positive number that cannot exceed nine (9) digits in SOAP request/response for USD, CLP, or JPY or the per transaction limit for the currency. It includes no currency symbol. Most currencies require two decimal places. The decimal separator must be a period (.), and the optional thousands separator must be a comma (,). Some currencies do not allow decimals. For details, see the currency codes page.

GROSSREFUNDAMT

Amount refunded to the buyer in this refund transaction. For example, a buyer originally made a $100.00 payment, the buyer was refunded $20.00 a week ago and is refunded $30.00 in this transaction. The gross refund amount is $30.00, only the amount refunded in this transaction.

Character length and limitations: Value is typically a positive number that cannot exceed nine (9) digits in SOAP request/response for USD, CLP, or JPY or the per transaction limit for the currency. It includes no currency symbol. Most currencies require two decimal places. The decimal separator must be a period (.), and the optional thousands separator must be a comma (,). Some currencies do not allow decimals. For details, see the currency codes page.

NETREFUNDAMT

Amount deducted from your PayPal account to make this refund. This is the GrossRefundAmount minus the FEEREFUNDAMT.

Character length and limitations: Value is typically a positive number that cannot exceed nine (9) digits in SOAP request/response for USD, CLP, or JPY or the per transaction limit for the currency. It includes no currency symbol. Most currencies require two decimal places. The decimal separator must be a period (.), and the optional thousands separator must be a comma (,). Some currencies do not allow decimals. For details, see the currency codes page.

TOTALREFUNDEDAMOUNT

Total amount refunded so far from the original payment. For example, a buyer originally made a $100.00 payment, the buyer was refunded $20.00 a week ago and is refunded $30.00 in this transaction. The TOTALREFUNDEDAMOUNT is $50.00.

Character length and limitations: Value is typically a positive number that cannot exceed nine (9) digits in SOAP request/response for USD, CLP, or JPY or the per transaction limit for the currency. It includes no currency symbol. Most currencies require two decimal places. The decimal separator must be a period (.), and the optional thousands separator must be a comma (,). Some currencies do not allow decimals. For details, see the currency codes page.

Available since version 67.0.

CURRENCYCODE

An ISO 4217 3-letter currency code, for example, USD for US Dollars.

Character length and limitations: Three single-byte characters.

MSGSUBID

(Optional) A message ID that uniquely identifies the request. This ID can later be used to request the latest results for a previous request without generating a new request. Examples of this include requests due to timeouts or errors during the original request.

Character length and limitations: String of up to 38 single-byte characters.

Available since version 92.0.

RefundInfoType fields

FieldDescription

REFUNDSTATUS

ns:PaymentStatusCodeType

Status of the refund. Value is:

  • none — returned if the refund transaction fails (ACK=Failure).

  • instant

  • delayed

Available since version 84.0.

PENDINGREASON

Reason that the refund payment status is delayed. Value is:

  • none — The refund status is instant.

  • echeck — The refund status is delayed.

  • regulatoryreview — The payment is pending while we make sure it meets regulatory requirements. You will be contacted again in 24-72 hours with the outcome of the review.

Available since version 84.0.

Deprecated Fields

The following fields are deprecated. Replacement fields are noted when available.

Deprecated RefundTransaction request fields

Deprecated fieldReplacement fieldSince Version/Date

SHIPPINGAMT

(No replacement)

(Optional) The amount of shipping paid.

March 2019

TAXAMT

(No replacement)

(Optional) The amount of tax paid.

March 2019

Deprecated InvoiceItemType fields

Deprecated fieldReplacement fieldSince Version/Date

L_INVOICEITEMNAMEn

(No replacement)

(Optional) A human readable item name.

Character length and limitations: 127 single-byte characters.

You can specify multiple items in each request. The character n, in the field name, should be replaced with an integer between 0 and 15, inclusive. For example, if you are passing only one item in the request, then replace n with the digit 0 in all field names containing an n. When passing information about multiple items, the items must be ordered sequentially.

March 2019

L_DESCRIPTIONn

(No replacement)

(Optional) A human readable item description.

Character length and limitations: 127 single-byte characters.

You can specify multiple items in each request. The character n, in the field name, should be replaced with an integer between 0 and 15, inclusive. For example, if you are passing only one item in the request, then replace n with the digit 0 in all field names containing an n. When passing information about multiple items, the items must be ordered sequentially.

March 2019

L_EANn

(No replacement)

(Optional) The International Article Number or Universal Product Code (UPC) for the item. An empty string is allowed.

Character length and limitations: 17 single-byte characters.

You can specify multiple items in each request. The character n, in the field name, should be replaced with an integer between 0 and 15, inclusive. For example, if you are passing only one item in the request, then replace n with the digit 0 in all field names containing an n. When passing information about multiple items, the items must be ordered sequentially.

March 2019

L_SKUn

(No replacement)

(Optional) The Stock-Keeping Unit or other identification code assigned to the item.

Character length and limitations: 64 single-byte characters.

You can specify multiple items in each request. The character n, in the field name, should be replaced with an integer between 0 and 15, inclusive. For example, if you are passing only one item in the request, then replace n with the digit 0 in all field names containing an n. When passing information about multiple items, the items must be ordered sequentially.

March 2019

L_PRICEn

(No replacement)

(Optional) The total price of this item.

Character length and limitations:

Value is typically a positive number that cannot exceed nine (9) digits in SOAP request/response for USD, CLP, or JPY or the per transaction limit for the currency. It includes no currency symbol. Most currencies require two decimal places. The decimal separator must be a period (.), and the optional thousands separator must be a comma (,). Some currencies do not allow decimals. For details, see the currency codes page.

You can specify multiple items in each request. The character n, in the field name, should be replaced with an integer between 0 and 15, inclusive. For example, if you are passing only one item in the request, then replace n with the digit 0 in all field names containing an n. When passing information about multiple items, the items must be ordered sequentially.

March 2019

L_PRICECURRENCYCODEn

(No replacement)

(Conditional) Required if L_PRICEn is passed. The currency code of L_PRICEn.

Character length and limitations:

You can specify multiple items in each request. The character n, in the field name, should be replaced with an integer between 0 and 15, inclusive. For example, if you are passing only one item in the request, then replace n with the digit 0 in all field names containing an n. When passing information about multiple items, the items must be ordered sequentially.

March 2019

L_ITEMPRICEn

(No replacement)

(Optional) The price for one item.

Character length and limitations:

Value is typically a positive number that cannot exceed nine (9) digits in SOAP request/response for USD, CLP, or JPY or the per transaction limit for the currency. It includes no currency symbol. Most currencies require two decimal places. The decimal separator must be a period (.), and the optional thousands separator must be a comma (,). Some currencies do not allow decimals. For details, see the currency codes page.

You can specify multiple items in each request. The character n, in the field name, should be replaced with an integer between 0 and 15, inclusive. For example, if you are passing only one item in the request, then replace n with the digit 0 in all field names containing an n. When passing information about multiple items, the items must be ordered sequentially.

March 2019

L_ITEMPRICECURRENCYCODEn

(No replacement)

(Conditional) Required if L_ITEMPRICEn is passed. The currency code of L_ITEMPRICEn.

Character length and limitations:

You can specify multiple items in each request. The character n, in the field name, should be replaced with an integer between 0 and 15, inclusive. For example, if you are passing only one item in the request, then replace n with the digit 0 in all field names containing an n. When passing information about multiple items, the items must be ordered sequentially.

March 2019

L_ITEMCOUNTn

(No replacement)

(Conditional) Required if L_ITEMCOUNTUNITn is passed. Quantity of the item. Must be positive.

Character length and limitations:

You can specify multiple items in each request . The character n, in the field name, should be replaced with an integer between 0 and 15, inclusive. For example, if you are passing only one item in the request, then replace n with the digit 0 in all field names containing an n. When passing information about multiple items, the items must be ordered sequentially.

March 2019

L_ITEMCOUNTUNITn

(No replacement)

(Conditional) Required if L_ITEMCOUNTn is passed. Unit of measure for the L_ITEMCOUNTn.

Character length and limitations:

You can specify multiple items in each request. The character n, in the field name, should be replaced with an integer between 0 and 15, inclusive. For example, if you are passing only one item in the request, then replace n with the digit 0 in all field names containing an n. When passing information about multiple items, the items must be ordered sequentially.

March 2019

L_TAXRATEn

(No replacement)

(Optional) The tax percentage applied to the item. This is only displayed in the receipt and is not used in pricing calculations.

Character length and limitations:

You can specify multiple items in each request. The character n, in the field name, should be replaced with an integer between 0 and 15, inclusive. For example, if you are passing only one item in the request, then replace n with the digit 0 in all field names containing an n. When passing information about multiple items, the items must be ordered sequentially.

March 2019

L_ADDITIONALFEESnTYPEm

(No replacement)

(Conditional) Required if L_ADDITIONALFEESnAMTm or L_ADDITIONALFEESnCURRENCYm is passed. The type of additional fees applied for this item.

Character length and limitations:

You can specify multiple items in each request. The character n, in the field name, should be replaced with an integer between 0 and 15, inclusive. For example, if you are passing only one item in the request, then replace n with the digit 0 in all field names containing an n. When passing information about multiple items, the items must be ordered sequentially.

This field also allows you to pass an array of information for each item. The character m, in the field name, is the nested array index and should be replaced with an integer. In other words, you can have multiple m values for each n value. Replace m with 0 for the first value you pass. If passing more than one value, make sure the integers used are sequential.

Allows up to 16 additional fees per item; m can range from 0 to 15.

March 2019

L_ADDITIONALFEESnAMTm

(No replacement)

(Conditional) Required if L_ADDITIONALFEESnTYPEm or L_ADDITIONALFEESnCURRENCYm is passed. The amount of additional fees applied for this item.

Character length and limitations:

Value is typically a positive number that cannot exceed nine (9) digits in SOAP request/response for USD, CLP, or JPY or the per transaction limit for the currency. It includes no currency symbol. Most currencies require two decimal places. The decimal separator must be a period (.), and the optional thousands separator must be a comma (,). Some currencies do not allow decimals. For details, see the currency codes page.

You can specify multiple items in each request. The character n, in the field name, should be replaced with an integer between 0 and 15, inclusive. For example, if you are passing only one item in the request, then replace n with the digit 0 in all field names containing an n. When passing information about multiple items, the items must be ordered sequentially.

This field also allows you to pass an array of information for each item. The character m, in the field name, is the nested array index and should be replaced with an integer. In other words, you can have multiple m values for each n value. Replace m with 0 for the first value you pass. If passing more than one value, make sure the integers used are sequential.

Allows up to 16 additional fees per item; m can range from 0 to 15.

March 2019

L_ADDITIONALFEESnCURRENCYm

(No replacement)

(Conditional) Required if L_ADDITIONALFEESnTYPEm or L_ADDITIONALFEESnAMTm is passed. The currency code of the additional fees applied for this item.

Character length and limitations:

You can specify multiple items in each request. The character n, in the field name, should be replaced with an integer between 0 and 15, inclusive. For example, if you are passing only one item in the request, then replace n with the digit 0 in all field names containing an n. When passing information about multiple items, the items must be ordered sequentially.

This field also allows you to pass an array of information for each item. The character m, in the field name, is the nested array index and should be replaced with an integer. In other words, you can have multiple m values for each n value. Replace m with 0 for the first value you pass. If passing more than one value, make sure the integers used are sequential.

Allows up to 16 additional fees per item; m can range from 0 to 15.

March 2019

L_MPNn

(No replacement)

(Optional) Manufacturer part number.

Character length and limitations:

You can specify multiple items in each request. The character n, in the field name, should be replaced with an integer between 0 and 15, inclusive. For example, if you are passing only one item in the request, then replace n with the digit 0 in all field names containing an n. When passing information about multiple items, the items must be ordered sequentially.

March 2019

L_ISBNn

(No replacement)

(Optional) International Standard Book Number. Reference International Standard Book Number.

Character length and limitations: 32 single-byte characters.

March 2019

L_PLUn

(No replacement)

(Optional) Price Look-Up code. Reference https://en.wikipedia.org/wiki/Price_Look-Up_code.

Character length and limitations: Five single-byte characters.

March 2019

L_MODELNUMBERn

(No replacement)

(Optional) The item manufacturer's model number.

Character length and limitations: 32 single-byte characters.

You can specify multiple items in each request. The character n, in the field name, should be replaced with an integer between 0 and 15, inclusive. For example, if you are passing only one item in the request, then replace n with the digit 0 in all field names containing an n. When passing information about multiple items, the items must be ordered sequentially.

March 2019

L_STYLENUMBERn

(No replacement)

(Optional) The item manufacturer's style number.

Character length and limitations: 32 single-byte characters.

You can specify multiple items in each request. The character n, in the field name, should be replaced with an integer between 0 and 15, inclusive. For example, if you are passing only one item in the request, then replace n with the digit 0 in all field names containing an n. When passing information about multiple items, the items must be ordered sequentially.

March 2019

Additional information