Fast Access

Warning: This functionality is not yet available for general use. Before integrating, ensure that you've been in contact with your Relationship Manager.

Quickly disburse funds to a shopper, meaning they'll receive the funds within 30 minutes.

Fast Access is currently only available for Visa payouts via Visa Direct.

On this page:

How it works

Prerequisite:

  1. Submit aCard checking requestto see whether the shopper's issuing bank can process Fast Access
  2. Submit aFast Access Disbursement request:
    1. If the shopper's bank supports Fast Access, and the scheme approves the request, the shopper will receive the funds within 30 minutes
    2. If the shopper's bank doesn't support Fast Access, and the scheme approves the request, the shopper will receive the funds in the standard payout time scales (usually 1-3 business days)
  3. We'll send the request to the scheme
  4. We'll return the outcome to you

    Note: If there is no conclusive response from the scheme we return a pending outcome. We continue to query the scheme and update the payment status when we get a conclusive response. You need set up order notifications so you are aware of payment status updates for pending payments.

The payment flow

We have introduced new payment statuses for Fast Access:

Fast Access flow

StatusMeaning
PUSH_REQUESTEDWe've received the Fast Access disbursement request.
PUSH_PENDINGWe've sent the Fast Access disbursement request to Visa Direct, and we're waiting for a response. If no definitive resolution is received within 48 hours then the transaction moves to error. PUSH_PENDING transactions usually update to PUSH_APPROVED or PUSH_REFUSED within 45 minutes.

Note: Transactions with a PUSH_PENDING status must not be re-submitted as this could result in a duplicate payment that cannot be cancelled or reversed. Once sent to Visa, the push cannot be cancelled.

PUSH_APPROVEDVisa Direct have approved the Fast Access disbursement request.
Your customer will receive funds within 30 minutes if their issuer is Fast Access enabled, or within standard timescales if not.
PUSH_SETTLEDThe transaction has been reconciled with Visa’s daily reporting.
PUSH_REFUSEDThe Fast Access disbursement request was refused. The reason could be:
  • The card issuer declined the disbursement
  • Visa declined the request because the issuing bank did not respond
  • Disbursements are not allowed in the requesting country
ERRORCould occur because:
  • We received a conclusive response from Visa confirming the request failed
  • We didn't get a conclusive response from Visa within 48 hours

Note: If a response is not received from Visa Direct within 2 minutes the transaction will change to PUSH_PENDING. We will inquire to Visa Direct for 48 hours to try to obtain a conclusive response.

Card check

To check if a shopper's bank can accept Fast Access, send the following inquiry to us. For information about the parameters, seeReference.

Note: You can include a PAN,shopper tokenor amerchant tokenin your inquiry.

Inquiry with PAN

Copied!
<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE paymentService PUBLIC "-//WorldPay//DTD WorldPay PaymentService v1//EN"
   "http://dtd.worldpay.com/paymentService_v1.dtd">
 <paymentService version="1.4" merchantCode="YOUR_MERCHANT_CODE">
   <inquiry>
     <cardCheckInquiry>
       <paymentDetails>
         <FF_DISBURSE-SSL>
           <recipient>
             <paymentInstrument>
               <cardDetails>
                 <cardNumber>4444333322221111</cardNumber>
                 <expiryDate>
                   <date month="06" year="2019"/>
                 </expiryDate>
                 <cardHolderName>Mr C Holder</cardHolderName>
               </cardDetails>
             </paymentInstrument>
           </recipient>
         </FF_DISBURSE-SSL>
       </paymentDetails>
     </cardCheckInquiry>
   </inquiry>
 </paymentService>

Inquiry with token

Copied!
<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE paymentService PUBLIC "-//WorldPay//DTD WorldPay PaymentService v1//EN"
   "http://dtd.worldpay.com/paymentService_v1.dtd">
 <paymentService version="1.4" merchantCode="YOUR_MERCHANT_CODE">
   <inquiry>
     <cardCheckInquiry>
       <paymentDetails>
         <FF_DISBURSE-SSL>
           <recipient tokenScope= "shopper">
           <!-- <tokenScope> is optional. Possible values "shopper" and "merchant". If not supplied, default is "shopper". -->
             <paymentTokenID>9919101952268163869</paymentTokenID>
             <authenticatedShopperID>VDFFTEST3</authenticatedShopperID>
             <!-- do not include <authenticatedShopperID> element for merchant token -->
           </recipient>
         </FF_DISBURSE-SSL>
       </paymentDetails>
     </cardCheckInquiry>
   </inquiry>
 </paymentService>

The response is the same whether it comes from a PAN or shopper token inquiry:

Copied!
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE paymentService PUBLIC "-//WorldPay//DTD WorldPay PaymentService v1//EN"
"http://dtd.worldpay.com/paymentService_v1.dtd"&gt;
<paymentService version="1.4" merchantCode="YOUR_MERCHANT_CODE">
  <reply>
    <checkCardResponse>
      <cardType>C</cardType>
      <issuerCountryCode>GB</issuerCountryCode>
      <billingCurrencyCode>GBP</billingCurrencyCode>
      <disbursementBlocked>false</disbursementBlocked>
      <gamblingDisbursementBlocked>false</gamblingDisbursementBlocked>
      <schemeSupportedByFfs>true</schemeSupportedByFfs>
      <fastFunds>true</fastFunds> <!--If 'false', then it falls back to a standard payout-->
    </checkCardResponse>
  </reply>
</paymentService>

Note: If <fastFunds> is false, this means the shopper's bank cannot accept Fast Access and they will receive the funds within the normal payout time frame.

Disbursement

To payout to a shopper's card, submit the below request:

  • If the shopper's issuing bank supports Fast Access, and the request is approved, they'll be paid within 30 minutes
  • If the issuing bank does not support Fast Access, the payout will be paid in the standard time frame. For information about the parameters, seeReference.

    Note: You can include a PAN,shopper tokenor amerchant tokenin your disbursement request.

Request with PAN

Copied!
<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE paymentService PUBLIC "-//WorldPay//DTD WorldPay PaymentService v1//EN"
   "http://dtd.worldpay.com/paymentService_v1.dtd">
 <paymentService version="1.4" merchantCode="YOUR_MERCHANT_CODE">
   <submit>
     <order orderCode="YOUR_ORDER_CODE">
       <description>test order</description>
       <amount value="100" currencyCode="GBP" exponent="2"/>
       <orderContent>
         <![CDATA[]]>
       </orderContent>
       <paymentDetails>
         <FF_DISBURSE-SSL>
           <recipient>
             <paymentInstrument>
               <cardDetails>
                 <cardNumber>4444333322221111</cardNumber>
                 <expiryDate>
                   <date month="06" year="2019"/>
                 </expiryDate>
                 <cardHolderName>Mr C Holder</cardHolderName>
               </cardDetails>
             </paymentInstrument>
           </recipient>
         </FF_DISBURSE-SSL>
         <session shopperIPAddress="127.0.0.1" id="ssn15466416"/>
       </paymentDetails>
     </order>
   </submit>
 </paymentService>

Request with token

Copied!
<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE paymentService PUBLIC "-//WorldPay//DTD WorldPay PaymentService v1//EN"
   "http://dtd.worldpay.com/paymentService_v1.dtd">
 <paymentService version="1.4" merchantCode="YOUR_MERCHANT_CODE">
   <submit>
     <order orderCode="YOUR_ORDER_CODE">
       <description>test order</description>
       <amount value="100" currencyCode="GBP" exponent="2"/>
       <orderContent>
         <![CDATA[]]>
       </orderContent>
       <paymentDetails>
         <FF_DISBURSE-SSL>
           <recipient>
           <recipient tokenScope= "shopper">
           <!-- <tokenScope> is optional. Possible values "shopper" and "merchant". If not supplied, default is "shopper". -->
             <paymentTokenID>9919101952268163869</paymentTokenID>
             <authenticatedShopperID>VDFFTEST3</authenticatedShopperID>
             <!-- do not include <authenticatedShopperID> element for merchant token -->
           </recipient>
         </FF_DISBURSE-SSL>
         <session shopperIPAddress="127.0.0.1" id="ssn15466416"/>
       </paymentDetails>
     </order>
   </submit>
 </paymentService>

The response is the same whether it comes from a PAN or shopper token disbursement request:

Copied!
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE paymentService PUBLIC "-//WorldPay//DTD WorldPay PaymentService v1//EN"
"http://dtd.worldpay.com/paymentService_v1.dtd"&gt;
<paymentService version="1.4" merchantCode="YOUR_MERCHANT_CODE">
  <reply>
    <orderStatus orderCode="YOUR_ORDER_CODE">
      <payment>
        <paymentMethod>VDFF_DISBURSE-SSL</paymentMethod>
        <amount value="100" currencyCode="GBP" exponent="2" debitCreditIndicator="credit"/>
        <lastEvent>PUSH_APPROVED</lastEvent>
        <balance accountType="IN_PROCESS_PUSH_APPROVED">
          <amount value="100" currencyCode="GBP" exponent="2" debitCreditIndicator="debit"/>
        </balance>
        <schemeResponse>
          <schemeName>Visa Direct</schemeName>
          <actionCode>00</actionCode>
          <responseCode>5</responseCode>
          <transactionIdentifier>1519377960354</transactionIdentifier>
        </schemeResponse>
        <dateTime>
          <date year="2018" month="2" dayOfMonth="23" hour="10" minute="56" second="10"/>
        </dateTime>
        <fastFunds>true</fastFunds>
      </payment>
    </orderStatus>
  </reply>
</paymentService>

Fast Access Payouts to mobile wallets

Prerequisite: You're able to access the Device Payment Account Number (DPAN) for Apple Pay, Samsung Pay and Google Pay.

You can make Fast Access Visa Direct payout transactions to cards stored in the Apple Pay, Samsung Pay and Google Pay mobile wallet. To do this, you need to access the Device Payment Account Number (DPAN) by decrypting the payload that comes from Apple, Samsung or Google.

Payouts to a mobile wallet work in exactly the same way as a standard Fast Access payout, with the exception that you need to provide the DPAN within the <cardNumber> parameter in your request. For more information, seeApple Pay,Samsung PayandGoogle Pay.

Order Notifications

To correctly handle scenarios for timeouts and PUSH_PENDING statuses that are later updated you must useOrder notificationsso your system is up to date with our statuses.

Notification example:

Here's an example of a PUSH_APPROVED notification containing the <schemeResponse> data from Visa. If we receive it for the event, we'll add it to the notification:

Copied!
<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE paymentService PUBLIC "-//WorldPay//DTD WorldPay PaymentService v1//EN"
   "http://dtd.worldpay.com/paymentService_v1.dtd">
 <paymentService version="1.4" merchantCode="YOUR_MERCHANT_CODE">
   <notify>
     <orderStatusEvent orderCode="YOUR_ORDER_CODE">
       <payment>
         <paymentMethod>VDFF_DISBURSE-SSL</paymentMethod>
         <amount value="1000" currencyCode="GBP" exponent="2" debitCreditIndicator="credit"/>
         <lastEvent>PUSH_APPROVED</lastEvent>
         <balance accountType="IN_PROCESS_PUSH_APPROVED">
           <amount value="1000" currencyCode="GBP" exponent="2" debitCreditIndicator="credit"/>
         </balance>
         <schemeResponse> <!--Added if received-->
           <schemeName>VisaDirect</schemeName>
           <actionCode>00</actionCode>
           <responseCode>5</responseCode>
           <transactionIdentifier>1538047214954</transactionIdentifier>
         </schemeResponse>
         <dateTime>
           <date year="2018" month="6" dayOfMonth="20" hour="15" minute="27" second="34"/>
         </dateTime>
         <fastFunds>true</fastFunds>
       </payment>
       <journal journalType="PUSH_APPROVED">
         <bookingDate>
           <date dayOfMonth="20" month="06" year="2018"/>
         </bookingDate>
         <accountTx accountType="IN_PROCESS_PUSH_APPROVED" batchId="10">
           <amount value="1000" currencyCode="GBP" exponent="2" debitCreditIndicator="debit"/>
         </accountTx>
       </journal>
     </orderStatusEvent>
   </notify>
 </paymentService>

Test values

To test your Fast Access integration use these magic card values and cardholder names. For example, use REFUSED62 as the cardHolderName to simulate a shopper trying to use a restricted card.

Disbursement card magic values

Card NumbercardTypebillingCurrencyCodeissuerCountryCodefastFundsdisbursementBlockedgamblingDisbursementBlockedschemeSupportedByFfs
4444333322221111CGBPGBTrueFalseFalseTrue
4917300800000000CGBPGBFalseFalseFalseTrue
4911830000000CEURNLTrueFalseFalseTrue
4462030000000000CEURNLFalseFalseFalseTrue
4917610000000000CAUDAUTrueFalseFalseTrue
4484070000000000CAUDAUFalseFalseFalseTrue
Any otherCGBPGBFalseTrueTrueTrue

Disbursement cardHolderName magic values

Note: To simulate different statuses with tokenisation, create ashopper tokenormerchant tokenin secure test with the above test card numbers and the below values in <cardHolderName>.

cardHolderNamePayment statusactionCoderesponseCode
APPROVEDPUSH_APPROVED005
REFUSEDPUSH_REFUSED015
REFUSED14PUSH_REFUSED145
REFUSED54PUSH_REFUSED545
REFUSED57PUSH_REFUSED575
REFUSED61PUSH_REFUSED615
REFUSED62PUSH_REFUSED625
PENDINGAPPROVEDPUSH_PENDING, then PUSH_APPROVED
PENDINGREFUSEDPUSH_PENDING, then PUSH_REFUSED
ERRORERROR
Any otherERROR

Magic card values - error simulation

Card numberError message
4895070000006687Invalid billing card currency code received from Visa.
4895070000007685Invalid issuer country code received from Visa.

Troubleshooting

What to provide when contacting us

If you need to contact us for assistance, use the Transaction Identifier to isolate the payment. You can find this in the MAI, by looking at the Payment Details of the transaction:

MAI payment details

Card check request failure

If you submit a card check request and do not get a response, you can just resubmit the request.

Disbursement request failure

If you submit a disbursement request and do not get a response, or receive a response other than PUSH_APPROVED or PUSH_REFUSED, then you must not re-submit the request as this could result in a duplicate payout which cannot be cancelled.

Instead you should wait until you receive an Order notification that the status has been updated. This usually arrives within 45 minutes and will be PUSH_APPROVED or PUSH_REFUSED, but it may take longer.

If you receive an ERROR response or notification you should contact Worldpay for this to be investigated.

XML Reference

It's worth familiarising yourself with thepayment request parameters, as we'll only cover the Fast Access-specific parameters here.

Card check request

ParameterM/O/CDescription
<inquiry>
<cardCheckInquiry>
MandatoryTells us you're checking a card to see if Fast Access are supported.
<FF_DISBURSE-SSL>MandatoryTells us you're doing a Fast Access request.
<recipient>ConditionalContains the <paymentInstrument> information, which includes the card details. SeePayment requests (Direct). Must be included when the PAN is used.

Note: Visa require the cardHolderName to be the name of the cardholder.

<paymentTokenID>ConditionalThe unique token identifier. Must be included when submitting a token disbursement request.
<authenticatedShopperID>ConditionalContains the shopper's unique ID. Must be included when submitting a token disbursement request.

Card check response

ParameterDescription
<cardCheckResponse>Parent element of <cardType>, <issuerCountryCode>, <billingCurrencyCode>, <disbursementBlocked>, <gamblingDisbursementBlocked>, <schemeSupportedByFfs> and <fastFunds>.
<cardType>The one character card type:
  • C - Credit
  • D - Debit
  • H - Charge
  • P - Prepaid
  • R - Deferred debit
<issuerCountryCode>Two character country code of the issuing bank. For example, GB.
<billingCurrencyCode>Three character currency code. For example, GBP.
<disbursementBlocked>Whether the disbursement of funds is blocked. Either true or false.
<gamblingDisbursementBlocked>Whether the disbursement of gambling funds is blocked by the cardholder's issuing bank. Either true or false.
<schemeSupportedByFfs>Whether we support Fast Access for the scheme. Either true or false.
<fastFunds>Whether the request resulted in a Fast Access disbursement. Either true or false. If false, then the shopper will not receive their funds within 30 minutes.

Disbursement request

ParameterM/O/CDescription
<FF_DISBURSE-SSL>MandatoryTells us you're doing a Fast Access request.
<recipient>ConditionalContains the <paymentInstrument> information, which includes the card details. SeePayment requests (Direct). Must be included when the PAN is used.

Note: Visa require the cardHolderName to be the name of the cardholder.

<paymentTokenID>ConditionalThe unique token identifier. Must be included when submitting a token disbursement request.
<authenticatedShopperID>ConditionalContains the shopper's unique ID. Must be included when submitting a token disbursement request.

Disbursement response

ParameterDescription
<schemeResponse>Parent element of <schemeName>, <actionCode>, <responsecode> and <transactionIdentifier>.
<schemeName>The name of the scheme we're communicating with. For example, Visa.
<actionCode>A two character code from Visa that provides more information about the response. SeeAction Code (actionCode)for more information.
<responseCode>A two character response code from Visa that shows the outcome of the original request. SeeResponse Codes (responseCode)for more information.
<transactionIdentifier>The identity of the transaction. This is created by Visa.
<fastFunds>Whether the shopper's card can support Fast Access.