worldline
Sign up

Offline Bank Transfer

Offline Bank Transfer

Intro

In pilot

Offline Bank Transfer is a European offline banking system, allowing your customers to transfer funds from their bank accounts to merchants via the SEPA Credit Transfer (SCT) scheme.

Bank Transfer is a highly accessible payment method for your customers across Europe, enabling you to receive your funds within 2 to 5 working days.
You invite your customers to open their online banking application. They authenticate and enter the bank transfer details, or scan a QR code with pre-filled data. Once we receive the funds into our collection account, we perform the reconciliation and confirm the transaction to you via a specific notification. You will be paid out the day after the funds are collected.

The integration is very easy, as it is integrated into the Hosted Checkout Page for Collect/Full Service merchants. Activation is done through your Collect/Full Service contract.

The customer's bank details (name and IBAN) are recorded once the transaction has been completed successfully. To comply with GDPR, you must inform your customers about this data collection if you store this information on your system.

Overview

Payment group:
Payment product id:
11
Key benefits
  • Low PCI requirements (no sensitive or personal data shared)
  • Available for all pan-European online banking solutions
  • Customer identification is received from the customer's bank
  • Allows partial/multiple/full refunds

Onboarding

To use Offline Bank Transfer in our live environment, sign a Full Service or a Collect contract with Worldline S.A./N.V. We will be happy to get you started.

Countries & currencies

Supported countries

Supported currencies

  • Euro (EUR)

Integration

We offer this payment methods for the following integration modes. Learn in our dedicated guides about their individual differences:

Find a high level overview in the "Process flows" chapter.

Depending on the integration mode, differences apply:

Hosted Checkout Page

Add the following properties to a standard CreateHostedCheckout request:

{
	"order": {
		"amountOfMoney": {
			"amount": 100,
			"currencyCode": "EUR"
		},
		"references":{
			"descriptor":"MerchantDescriptor"
		},
		"customer": {
			"contactDetails": {
				"emailAddress": "wile.e.coyote@acmelabs.com"
			}	
		}
	},
	"redirectPaymentMethodSpecificInput": {
		"paymentProductId":11,
		"redirectionData":{
			"returnUrl":"https://yourReturnUrl.com"
		}
	}
}
Property Remarks

order.amountOfMoney
     amount
     currencyCode

amount: The gross amount you want to charge for this order.
currencyCode: The ISO 4217 currency code for this amount.

order.references.descriptor

A dynamic descriptor appearing on your customers' bank statement.

Strongly recommended.

This will ensure that both you and your customers can associate the order with the bank transfer.

Upon redirecting your customers to the Hosted Checkout Page, our platform's will display a separate payment reference together with the bank data.
Our platform will use this value for matching your customers' payment with this order. Therefore, you customers must use this payment reference when making the transfer.

order.customer.contactDetails.emailAddress

Your customer's e-mail address. 

For every status update, our platform will send a separate email about the order's status.

Strongly recommended.

redirectPaymentMethodSpecificInput
     paymentProductId
     redirectionData.returnUrl

paymentProductId: The numeric identifier of the payment method on our platform. Find this id in the "Overview" chapter. It instructs our platform to send your customers directly to the payment form. If omitted, our platform sends your customers to the Hosted Checkout Page instead, allowing them to choose this or any other payment method that is active in your account.

returnUrl: The URL we redirect your customers to after the payment has been finalised.

Server-to-server

Add the following properties to a standard CreatePayment request:

{ 
	"order": {
		"amountOfMoney": { 
			"amount": 100, 
			"currencyCode": "EUR" 
		},
		"references": { 
			"descriptor": "MerchantDescriptor" 
		}
	},
	"redirectPaymentMethodSpecificInput": {
		"paymentProductId": 11,     
		"paymentProduct11SpecificInput": { 
			"skipEmailValidation" : true 
		}
	}
}
Property Remarks

order.amountOfMoney
     amount
     currencyCode

amount: The gross amount you want to charge for this order.
currencyCode: The ISO 4217 currency code for this amount.

order.references.descriptor

A dynamic descriptor appearing on your customers' bank statement.

Strongly recommended.

This will ensure that both you and your customers can associate the order with the bank transfer. Upon sending a CreatePayment request, our platform's response will contain property merchantAction.showFormData.paymentProduct11.
paymentReference. Our platform will generate its value independently from the descriptor.
Our platform will use paymentReference for matching your customers' payment with this order. Therefore, you customers must use this paymentReference when making the transfer. We advise you to use a combination of descriptor and paymentReference as payment reference on your checkout page/in your e-mail.

redirectPaymentMethodSpecificInput
    paymentProductId
    paymentProduct11SpecificInput.skipEmailValidation

paymentProductId: The numeric identifier of the payment method on our platform. Find this id in the "Overview" tab.

skipEmailValidation: Instructs our platform not to send e-mails to your customers about the order's status.
We strongly recommend setting this property to "true" so you can manage the communication with your customers. 

Find detailed information about this object and its properties in our CreateHostedCheckoutAPI/CreatePaymentAPI.

Process flows

  1. Your customers finalise an order in your shop and select Offline Bank Transfer.
  2. You send this CreateHostedCheckout request to our platform.
  3. You redirect your customers via the redirectUrl to a confirmation screen, displaying an e-mail input field.
  4. Your customers enter their e-mail address and click on “Proceed to pay”. We update the transaction to statusOutput.statusCode=46.
  5. Our platform redirects your customer to the payment screen, displaying your bank details and the order data as a QR code and in plain writing.
  6. Your customers make the bank transfer via their banking app, either by scanning the QR code or by manually entering the bank details and order data. They confirm the bank transfer by clicking on "Payment is done" on the payment screen.
  7. We redirect your customer to your returnUrl and update the transaction to statusOutput.statusCode=4.
  8. You request the intermediate transaction result (statusOutput.statusCode=4) from our platform via GetPaymentDetails/GetHostedCheckout or receive the result via webhooks.
  9. Your customers' bank transfers the funds to our colleting account via either a standard (within 1-2 days) or instant transfer (within a few minutes). We update the transaction to statusOutput.statusCode=9. If our collecting does not receive the funds within 5 calendar days, we will update the transaction to statusOutput.statusCode=2.
  10. You request the final transaction result from our platform via GetPaymentDetails/GetHostedCheckout or receive the result via webhooks.
  11. If the transaction was successful, you can deliver the goods / services.

Server-to-server

  1. Your customers finalise an order in your shop and select Offline Bank Transfer.
  2. You send this CreatePayment request to our platform.
  3. We update the transaction to statusOutput.statusCode=41. Our platform sends a response containing a merchantAction object. Depending on the how you want to define the payment flow, differences apply:

    a) You display a payment form on your checkout page or send an e-mail to the customer, containing the bank details as provided in
    merchantAction.showFormData.paymentProduct11,  including order.references.descriptor combined with merchantAction.showFormData.paymentProduct11.paymentReference.

    b) You display an EPC QR Code on your checkout page using merchantAction.showFormData.paymentProduct11.qrCode.

  4. Your customers make the bank transfer via their banking app, either by scanning the QR code or by manually entering the bank details. They confirm the bank transfer using a call-to-action element located on your checkout page.
  5. You request the intermediate transaction result (statusOutput.statusCode=41) from our platform via GetPaymentDetails or receive the result via webhooks.
  6. Your customers' bank transfers the funds to our colleting account via either a standard (within 1-2 days) or instant transfer (within a few minutes). We update the transaction to statusOutput.statusCode=9. If our collecting does not receive the funds within 5 calendar days, we will update the transaction to statusOutput.statusCode=2.
  7. You request the final transaction result from our platform via GetPaymentDetails or receive the result via webhooks.
  8. If the transaction was successful, you can deliver the goods / services.

Testing

Refer to our Test cases for test data and detailed instructions.

Was this page helpful?

Do you have any comments?

Thank you for your response.
New Feature

Try out our new chatbot and find answers to all your questions.