Detached / Unlinked Refunds

A Detached or Unlinked Refund is one where the original PayPal transaction being refunded was processed using a payment provided other than PXP, and is typically used during a migration period once PXP begin processing a merchants Paypal transactions.

This should be used in conjunction with a migration file process so that PXP has knowledge of the Paypal Transactions that are available to Refund during the migration period. For more information, please contact your Account Manager.

Detached Refund Request

The Detached Refund request follows a similar format of a standard PayPal refund request

Resource: POST /api/v5/apmTransactions

Request Parameters

NameRequiredData TypeDescription
merchantIdMandatoryStringUnique Merchant Id provided by PXP
storeIdMandatoryStringUnique Store Id provided by PXP
userIdMandatoryStringA username allocated to a service user when the service is set up
typeMandatoryString"detached.refund".
Only detached refunds are supported at present
amountMandatoryStringThe monetary value of the transaction in minor units.
See Note1.
currencyCodeMandatoryStringThe currency of the transaction. A three character code in accordance with ISO 4217.
clientSystemTransactionIdMandatoryStringThe merchant’s own unique reference for the refund
parentTransactionIdMandatoryStringThis is the transaction Identifier from the original transaction to refund, specified in the migration process.
providerDiscretionaryDataOptionalStringThe merchant’s external facing order number with the consumer, which if supported, will be passed to the Provider as an additional descriptor.
apmDetails
apmProviderMandatoryStringThe alternative payment method provider name. There is value “PayPalV2”

Note1: The decimal separator/radix character used is the Period ('.') used to indicate decimal places. Other characters such as Comma (',') will not be recognised and may result in an unintended amount being processed.

Example:

{
  "merchantId": "PSH",
  "storeId": "PSH500000001",
  "userId": "PSH001",
  "type": "detached.refund",
  "amount": 1.00,
  "currencyCode": "USD",
  "clientSystemTransactionId": "PPRefund20250101090101",
  "parentTransactionId": "AP03536792",
  "providerDiscretionaryData": "detachedRefund.1",
  "apmdetails": {
    "apmProviderName": "paypalv2"
  }
}

Detached Refund Response(s)

Approved Responses

Response Parameters

NameData TypeDescription
StateStringTransaction state
providerResponseCodeStringThe Response code from the provider
providerAuthorizationIDStringPayment identifier
providerResponseMessageStringthe Response Message from the provider
currencyCodeStringThe currency of transaction.
clientSystemTransactionIdStringThe merchant’s own unique reference for the transaction.
responseMessageStringThe response message. may differ from providerResponseMessage
amountStringThe amount which was Refunded
apmDetails
apmProviderString"PayPal"

Some Example responses to a Detached Refund are:

Approved

{
    "state": "Approved",
    "providerResponseCode": "",
    "providerAuthorizationID": "1b648675-8654-4399-8193-c6ac3f54fbbf ",
    "providerResponseMessage": "Requested refund amount is 1.00 and actual refunded amount is 1.00.",
    "currencyCode": "USD",
    "clientSystemTransactionId": " PPRefund20250101090101",
    "apmdetails": {
        "apmProviderName": "PayPal"
    },
    "responseMessage": "Requested refund amount is 1.00 and actual refunded amount is 1.00.",
    "amount": "1.00"  
}

{
    "state": "Approved",
    "providerResponseCode": "",
    "providerAuthorizationID": "",
    "providerResponseMessage": "Requested refund amount is 15.00 and actual refunded amount is 2.00.",
    "currencyCode": "USD",
    "clientSystemTransactionId": "PPRefund2025010109010202",
    "apmdetails": {
        "apmProviderName": "PayPal"
    },
    "responseMessage": "Requested refund amount is 15.00 and actual refunded amount is 2.00.",
    "amount": "1.00"
}

Error Responses

Error Response Parameters

NameData TypeDescription
codeStringThe FaultResponseCode of the error
details
messageStringa more detailed description of the error where available.

RefundLimitExceeded

{
    "code": "4107940",
    "details": {
        "message": "RefundAmountExceeded Refund amount exceeded! Deposit amount = 40.0000; Refunded amount = 40.0000; Max refundable amount = 0.0000; Refund amount = 1.00"
    }
}

General Error

{
    "code": "4107940",
    "details": {
        "message": "SchemaValidationError The MerchantId field is required.”
    }
}