Bank wire API

With the HTTP API for Bankoverschrijving you can generate a unique transaction number. When your customer transfers money to DigiWallet citing this transaction number, we can match the payment to your shop and report a status.


Payment in 3 steps:

  1. Start the payment via DigiWallet by calling an URL with all the details of the payment. DigiWallet gives you the link for the payment and a transaction ID. (Start API) ;
  2. Show the visitor the information that is needed to complete the payment (Betaalinstructie);
  3. Once payment has been processed, which is approximately 2 days after the payment an acknowledgment is sent. You can check the status with the 'Check API' (Check API);

Start API Request payment


Before starting the payment, you have to call the Start API. You will receive a transaction number and bank account, with instructions you can use to make the payment.

Invoke the following URL with a GET or POST:

https://transaction.digiwallet.nl/bankwire/start

The following parameters (* = required):

Variable Explanation Example
ver* API version, this is version 2 2
rtlo* Shop ID (also known as subaccount or layoutcode) to which the payment has to be made 93393
amount* Amount in eurocents: Minimum 84 , Maximum 1000000 (€0.84 - €10,000.00) 1000
description* Description of the transaction: this will apear on the customer's bank statement. Use only letters or numbers, max. 32 characters Webshop order #1234
reporturl* Report URL: called after every payment (from server to server) by means of a POST. Even if the full amount is not paid you will get feedback when you receive a payment. You can check here if the payment was completed and process further.
If parameters are sent:
  • trxid: order number
  • rtlo: shop ID (layoutcode)
  • amountdue: Owed amount in cents
  • amountpaid: Payment amount in cents
  • checksum: md5 one behind another:
    trxidrtloamoutdueamountpaidsalt.
    Example (salt is e381277):
    $checksum = md5($_POST["trxid"].$_POST["rtlo"].$_POST["amountdue"].$_POST["amountpaid"]."e381277");
To secure that the status return is coming from DigiWallet you should always call to Check API . The output of the report URL will not be visible to the customer. The customer is redirected to the return URL.
https://www.myshop.nl /reportOrder
returnurl* Return URL: the customer will recieve a payment confirmation after the payment if you pass us the customers email address. Inside the payment confirmation mail is a return URL. The transaction number is passed to the return URL as trxid.
Example: https://www.myshop.nl/thankYouPage?trxid=30626804185492
https://www.myshop.nl /thankYouPage
email Email address of the customer. When filled in, we will send a payment confirmation by email to your customer. test@example.com
salt* Salt: a random series of numbers of which the checksum is calculated, which is included in the report URL. Up to 32 characters. e381277
customer_cname Name of the customer. If an incoming amount can't be placed, this can help us sort it out. Karel Raaijmakers
customer_cbank IBAN of the customer. If an incoming amount can't be placed, this can help us sort it out. NL20RABO02873663091
customer_invoice Sometimes your customers accidentally mention your invoice number instead of the mandatory, generated transaction number.
If we know the original invoice number, we can sort it out.
3011001
userip IP address of the customer: not mandatory, but is useful in detecting any problems. 213.76.8.33
test Whether to use the DigiWallet Test Panel.
When enabled, the launch URL is a link to the Test Panel, where no real money will be charged.
Note that when you have your outlet set to test-mode through the DigiWallet Dashboard, this parameter will be forced to 1.

Remember to turn off this option when the site goes live. The default is, test mode off.
"1" or "0"

* Note: The preprodtest parameter is not available for BankWire.

You will then get result in the following:

resultaatcode   transactie-nummer | rekeningnummer | IBAN | BIC | begunstigde | naam bank

Example

000000 XXXX-XX-YY-ZZZZ|5940.74.231|NL44ABNA0594074231|ABNANL2A|St. Derdengelden DigiWallet|ABN Amro
Based on the data, you can display or send the payment instruction to your customer for the transfer.
See further for the payment instruction.


If test-mode is enabled, you will receive the DigiWallet Test Panel URL at the end:

resultaatcode   transactie-nummer | rekeningnummer | IBAN | BIC | begunstigde | naam bank | test-panel-URL

Example

000000 XXXX-XX-YY-ZZZZ|5940.74.231|NL44ABNA0594074231|ABNANL2A|St. Derdengelden DigiWallet|ABN Amro|https://pay.digiwallet.nl/test-transaction?transactionID=11315050&paymethod=BWI&hash=8a14c5c04f37311fgs3411e26cc4e0c0582427bad3f43f12c3af43710c74e1d31
In this case, you will have to perform a redirect to the Test Panel.


Possible result codes:

Result code Description
000000 Payment is prepared
DW_XE_0003 Validation failed, details: JSON-encoded array One or more fields failed to validate, you can decode the JSON array for a detailed analysis.
DW_IE_0002 Maximum retries at acquirer bank exceeded for primary and fallback The acquirer system did not respond multiple times in a row, indicating there might be a service disruption going on.
DW_IE_0006 System is busy, please retry later Internal systems are overloaded and DigiWallet is likely already working on resolving the problem.
DW_IE_0001 Unknown internal error Unknown internal error, mail to techsupport@targetmedia.eu to be sorted out.

Check in case of errors if the parameters are correctly taken from the documentation. If this seems to be the case. Please contact DigiWallet and mention the error message.

Payment Instruction Call to action


With the data you received from the Start API you can compose the payment instruction.

Example:


Thank you for ordering in our webshop!

You will receive your order as soon as we receive payment from the bank.
Would you be so friendly to transfer the total amount of € 12,34 to the bankaccount NL44ABNA0594074231 in name of St. Derdengelden DigiWallet* ?

State the payment feature XXXX-XX-YY-ZZZZ, this way the payment can be automatically processed.
As soon as this happens you shall receive a confirmation mail on test@example.com.

If it is necessary for payments abroad, then the BIC code from the bank ABNANL2A and the name of the bank is 'ABN AMRO Bank'. Make sure you choose for costs abroad for your own account(option: OUR), otherwise the amount comming in will be to low.

* Payment for our webstore is processed by TargetMedia. TargetMedia is certified as a Collecting Payment Service Provider by Currence. This means we set the highest security standards when is comes to security of payment for you as a customer and us as a webshop.


Check API Request payment status


Based on the transaction number you can check if the payment is actually made. After payment, the report URL underwater is invoked by the DigiWallet server. It also mentions the payment status, but for safety reasons we strongly recommend to always ask the status from DigiWallet.


Invoke the following URL with a GET or POST:

https://transaction.digiwallet.nl/bankwire/check

The following parameters (* = required):

Variable Explanation Example
rtlo* Shop ID (layoutcode) 93393
trxid* Transaction number 30626804185492
checksum* Checksum: The checksum is required to make sure that your request comes true. The checksum is calculated by: $ checksum = md5 ($trxid.$rtlo.'salt'); See also the reporturl heading above. Note, 'amount' does not in this case form part of the checksum calculation. 1d875cfd325e4...
test If you have started the transaction in test-mode, call the Check API in test-mode as well. Otherwise your transaction will not be found.

Note that when you have your outlet set to test-mode through the DigiWallet Dashboard, this parameter will be forced to 1.

Remember to turn off this option when the site goes live. The default is, test mode off.
1
once* If you fill in 1, then an OK status will be returned only once. If the URL mentioned above is invoked for the same transaction then a DW_SE_0028 Transaction already checked will follow. If you fill in '0' for once, a 000 000 OK status will always keep coming back. 0


If the payment is successfully completed, you will receive as answer:

000000 OK   verschuldigd bedrag | betaald bedrag


For example if the amount was € 7.50 and € 7.95 has been paid:

000000 OK|750|795

You should always check if the entire amount has been paid!
A second part payment on the same transaction number is not possible.

Error code Description
DW_SE_0020 Transaction has not been completed, try again later Transaction has not yet been completed, try again later
DW_SE_0021 Transaction has been cancelled Transaction has been cancelled
DW_SE_0022 Transaction has expired Transaction has expired (max. 10 minutes)
DW_SE_0023 Transaction could not be processed The transaction could not be processed
DW_XE_0003 Validation failed, details: JSON-encoded array One or more fields failed to validate, you can decode the JSON array for a detailed analysis.
DW_IE_0002 Maximum retries at acquirer bank exceeded for primary and fallback The acquirer system did not respond multiple times in a row, indicating there might be a service disruption going on.
DW_IE_0006 System is busy, please retry later Internal systems are overloaded and DigiWallet is likely already working on resolving the problem.
DW_IE_0001 Unknown internal error Unknown internal error, mail to techsupport@targetmedia.eu to be sorted out.

If you are using an older API version, some transaction status results are returned in a legacy format:

Error code Description
TP0010 Transaction not finished, try again later Transaction has not yet been completed, try again later
TP0013 Transaction was cancelled Transaction has been cancelled
TP0012 Transaction not finished and expired Transaction has expired (max. 10 minutes)
TP0011 Transaction failed The transaction could not be processed
TP0014 Already redeemed at datetime Already redeemed



Available in plugins

This payment method is supported in the following plugins: