Notifications

Receive asynchronous notifications advising you of the payment status.

Prerequisite

To enable notifications please contact your Implementation Manager. You must give us your notification endpoint for SOAP based notifications.

How does it work?

After you have submitted the payment and the status is "Accepted", the payment is sent to the respective downstream bank. The time required to complete this process is dependent on the payout partner and the route chosen. Due to this, the final response is an asynchronous notification.

We can send a SOAP RPC call to your website as an HTTPS POST. This is to notify you of successful, reversed or returned account, as well as sucessfull credits to your account.

You must respond to the notification (see respective "Rour Response" sections) or we will repost the same notification.

Important

You must ensure the following IP addresses are whitelisted to receive our notifications:
Try environment

  • 195.35.90.128/25 (195.35.90.129 to 195.35.90.253)
  • 195.35.91.128/25 (195.35.91.129 to 195.35.91.253)
Live environment
  • 195.35.90.0/25 (195.35.90.1 to 195.35.90.126)
  • 195.35.91.0/25 (195.35.91.1 to 195.35.91.126)

Payout Success:

This notification is sent when we have sent the payout successfully to the downstream payout partner and they are now processing the request. This means the payment has successfully passed our validation checks and you have been debited the funds needed to complete the transfer.

This notification doesn't confirm that funds have been settled to the beneficiary bank account.

Field NameDescriptionData Type/Format
originalPaymentInfo.ubrUnique reference associated with a payout.AN
originalPaymentInfo.entityUnique entity given during the onboarding process. This is the entity the funds are debited from.AN
originalPaymentInfo.apiRequestReferenceUnique reference for the request.String
originalPaymentInfo.transactionReferenceMerchant's unique reference for the payout request.AN
originalPaymentInfo.narrativeReference that may appear on the payee statement.String
originalPaymentInfo.countryCodeCountry of the payout destination.A
originalPaymentInfo.sourceCurrencyCurrency for the remitter account.A
originalPaymentInfo.sourceAmountAmount being sent by the remitter.N
originalPaymentInfo.targetCurrencyCurrency for the payee's account.A
originalPaymentInfo.targetAmountAmount being received by the payee.N
paymentResult.beneficiaryData.beneficiaryAccountNumberPayee bank account number. Either account number or IBAN must be provided.String
paymentResult.beneficiaryData.ibanPayee IBAN. Either account number or IBAN must be provided.AN
paymentResult.beneficiaryData.payeeName of the payee.AN
paymentResult.statementData.accountNumberPayee account number.String
paymentResult.statementData.transferTypeType of the transaction used to filter out statement's entries.String
paymentResult.statementData.postingDatePosting date of the specific statement item.DateTime in UTC format
paymentResult.statementData.fxRateRate applied for FX conversion.Number (Decimal)
paymentResult.statementData.statementNumberStatement number.Number (Integer)

Example Notification Success:

{
  "PaymentOutNotification": {
    "paymentDetails": {
      "originalPaymentInfo": {
        "ubr": "PO00SKZZ",
        "entity": "001812",
        "apiRequestReference": "Notification Test Stage 09/11/2023 07:34:32",
        "transactionReference": "Notification Test Stage 09/11/2023 07:34:32",
        "narrative": "",
        "countryCode": "US",
        "sourceCurrency": "USD",
        "sourceAmount": "1.07",
        "targetCurrency": "USD",
        "targetAmount": "0.00"
      },
      "paymentResult": {
        "beneficiaryData": {
          "beneficiaryAccountNumber": "12345678",
          "iban": "",
          "payee": "Notification Test Stage"
        },
        "statementData": {
          "accountNumber": "0018120000001001",
          "transferType": "PAYOUT",
          "postingDate": "2023-11-09T07:39:02",
          "fxRate": "",
          "statementNumber": "347"
        }
      }
    }
  }
}

Your Response

Field NameDescriptionData Type/Format
PaymentOutNotificationResultString up to 7 characters. Mandatory. Set to SUCCESS or ERROR.String
{
	"PaymentOutNotificationResponse": {
		"PaymentOutNotificationResult":"SUCCESS"
	}	
}

Payout Reversal:

It's possible for a payment to fail for a number of reasons outside of our control. There are two types of failures. This notification is sent when the downstream payout partner or the validation rules have rejected the payout. This notification also confirms the credit back to your account.

REVERSAL

The payout was rejected by:

  • Us due to an issue with routing the payment via one of our banks (for example, invalid bank data, no route available)
  • Our partner bank (for example, invalid bank data)

RETURN

The payout was accepted by our system and our partner bank, but was rejected by the beneficiary bank (for example, account doesn't exist, account closed). The PAYOUT_RETURN is typically processed as far as the beneficiary bank where it fails, and is subsequently returned by the same settlement route, which means it can be returned many days later.

Both of these failures result in your Worldpay account being credited.

Field NameDescriptionData Type/Format
originalPaymentInfo.ubrUnique reference associated with a payout.AN
originalPaymentInfo.entityUnique entity given during the onboarding process. This is the entity the funds are debited from.AN
originalPaymentInfo.apiRequestReferenceUnique reference for the request.String
originalPaymentInfo.transactionReferenceMerchant's unique reference for the payout request.AN
originalPaymentInfo.narrativeReference that may appear on the payee statement.String
originalPaymentInfo.countryCodeCountry of payout destinationA
originalPaymentInfo.sourceCurrencyCurrency for the remitter account.A
originalPaymentInfo.sourceAmountAmount being sent by the remitter.N
originalPaymentInfo.targetCurrencyCurrency for the payee's account.A
originalPaymentInfo.targetAmountAmount being received by the payee.N
paymentResult.beneficiaryData.beneficiaryAccountNumberPayee bank account number. Either account number or IBAN must be provided.String
paymentResult.beneficiaryData.ibanPayee IBAN. Either account number or IBAN must e provided.AN
paymentResult.beneficiaryData.payeeName of the payee.AN
credit.merchantAccountNumberYour account number. The first 6 characters indicate your entity (domain ID). The rest determines the specific account number.String
credit.itemNumberYour statement number.N
credit.statementIdYour statement ID.String (AN)
credit.postingDatePosting date of the specific statement item.DateTime in UTC format
credit.creditCurrencyCurrency for your Credit AccountA
credit.creditAmountAmount to be credited to you.N
credit.fxRateRate applied for FX conversion.Number (Decimal)
credit.transferTypeTransfer Type.String
debit.merchantAccountNumberPayee account number. The first 6 characters indicate your entity (domain ID). The rest determines the specific account number.String
debit.itemNumberPayee statement number.N
debit.statementIdPayee statement ID.String (AN)
debit.postingDatePosting date of the specific statement item.DateTime in UTC format
debit.debitCurrencyCurrency for the payee debit accountA
debit.debitAmountAmount to be debited from the payee account.N
debit.fxRateRate applied for FX conversion.Number (Decimal)
debit.transferTypeTransfer Type.String

Example Notification Reversal

{
  "PaymentOutReversalNotification": {
    "reversalInfo": {
      "originalPaymentInfo": {
        "ubr": "PO00SK2E",
        "entity": "001812",
        "apiRequestReference": "Notification Test Stage revs 09/11/2023 08:17:41",
        "transactionReference": "Notification Test Stage revs 09/11/2023 08:17:41",
        "narrative": "",
        "countryCode": "US",
        "sourceCurrency": "USD",
        "sourceAmount": "1.03",
        "targetCurrency": "USD",
        "targetAmount": "0.00"
      },
      "beneficiaryData": {
        "beneficiaryAccountNumber": "12345678",
        "iban": "",
        "payee": "Notification Test Stage revs"
      },
      "credit": {
        "merchantAccountNumber": "0018120000001001",
        "itemNumber": "349",
        "statementId": "7b6aa0f4-d87e-ee11-b58d-0050569b3804",
        "postingDate": "2023-11-09T08:21:19",
        "creditCurrency": "USD",
        "creditAmount": "1.03",
        "fxRate": "",
        "transferType": "PAYOUT REVERSAL"
      },
      "debit": {
        "merchantAccountNumber": "0018120000001001",
        "itemNumber": "348",
        "statementId": "b75fd3a5-d87e-ee11-b58d-0050569b3804",
        "postingDate": "2023-11-09T08:19:06",
        "debitCurrency": "USD",
        "debitAmount": "1.03",
        "fxRate": "",
        "transferType": "PAYOUT"
      }
    }
  }
}

Your Response

Field NameDescriptionData Type/Format
PaymentOutReversalNotificationResultString up to 7 characters. Mandatory. Set to SUCCESS or ERROR.String
{
	"PaymentOutReversalNotificationResponse": {
		"PaymentOutReversalNotificationResult":"SUCCESS"
	}	
}

Liquidity:

This notification is sent to advise, you have received the funds.

Field NameDescriptionData Type/Format
originalPaymentInfo.narrativeReference that may appear on the statement.AN
originalPaymentInfo.bankCurrencyCurrency of the payin bank account.AN
originalPaymentInfo.bankAmountAmount debited from the remitter's account.N
originalPaymentInfo.targetCurrencyCurrency in which the funda are deposited to.AN
originalPaymentInfo.targetAmountAmount of the deposited funds.N
originalPaymentInfo.countryCodeCountry of the payin destination.A
originalPaymentInfo.statementDescriptionDescription of the payin item on the statement.A
statementData.accountNumberAccount Number of the deposit account.String
statementData.transferTypeType of the transaction used to filter out statement entries.String
statementData.postingDatePosting date of the specific statement item.DateTime in UTC format
statementData.fxRateRate applied for FX conversion.Number (Decimal)
statementData.statementNumberStatement number for the deposit.Number (Integer)

Example Notification Liquidity:

{
  "PaymentNotification": {
    "paymentDetails": {
      "originalPaymentInfo": {
        "narrative": "",
        "bankCurrency": "USD",
        "bankAmount": "0.10",
        "targetCurrency": "GBP",
        "targetAmount": "0.07",
        "countryCode": "GB",
        "statementDescription": "TestData1"
      },
      "statementData": {
        "accountNumber": "0005400000001050",
        "transferType": "LIQUIDITY",
        "postingDate": "2023-11-09T09:01:39",
        "fxRate": "0.68160",
        "statementNumber": "240629"
      }
    }
  }
}

Your Response

Field NameDescriptionData Type/Format
PaymentNotificationResultString up to 7 characters. Mandatory. Set to SUCCESS or ERROR.String
{
	"PaymentNotificationResponse": {
		"PaymentNotificationResult":"SUCCESS"
	}	
}

Payin:

This notification is sent to advise, that your customer has received their funds.

Field NameDescriptionData Type/Format
originalPaymentInfo.narrativeReference that may appear on the statement.AN
originalPaymentInfo.bankCurrencyCurrency of the payin bank account.AN
originalPaymentInfo.bankAmountAmount debited from the remitter's account.N
originalPaymentInfo.targetCurrencyCurrency in which the funda are deposited to.AN
originalPaymentInfo.targetAmountAmount of the deposited funds.N
originalPaymentInfo.countryCodeCountry of the payin destination.A
originalPaymentInfo.statementDescriptionDescription of the payin item on the statement.A
statementData.accountNumberAccount Number of the deposit account.String
statementData.transferTypeType of the transaction used to filter out statement entries.String
statementData.postingDatePosting date of the specific statement item.DateTime in UTC format
statementData.fxRateRate applied for FX conversion.Number (Decimal)
statementData.statementNumberStatement number for the deposit.Number (Integer)

Example Notification Payin:

{
  "PaymentNotification": {
    "paymentDetails": {
      "originalPaymentInfo": {
        "narrative": "",
        "bankCurrency": "USD",
        "bankAmount": "0.10",
        "targetCurrency": "GBP",
        "targetAmount": "0.07",
        "countryCode": "GB",
        "statementDescription": "TestData1"
      },
      "statementData": {
        "accountNumber": "0005400000001050",
        "transferType": "LIQUIDITY",
        "postingDate": "2023-11-09T09:01:39",
        "fxRate": "0.68160",
        "statementNumber": "240629"
      }
    }
  }
}

Your Response

Field NameDescriptionData Type/Format
PaymentNotificationResultString up to 7 characters.Mandatory. Set to SUCCESS or ERROR.String
{
	"PaymentNotificationResponse": {
		"PaymentNotificationResult":"SUCCESS"
	}	
}