Menu

Fast Access

Use Fast Access to quickly disburse funds to a shopper, meaning they'll receive the funds within 30 minutes.

Fast Access is currently available for Visa payouts from Visa Direct, and Mastercard payments from Mastercard Send. The process is very similar for both Visa and Mastercard, but there are some differences.

How it works

Prerequisite:

  1. Submit aCard checking requestto see whether the shopper's issuing bank can process Fast Access. This is for Visa Direct only. If you use Mastercard Send, go direct to step 2.
  2. Submit aFast Access Disbursement request, there is one type for Visa Direct, another type for Mastercard Send:
    1. If the shopper's bank supports Fast Access, and the scheme approves the request, the shopper receives 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 to set upOrder Notificationsso 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/Mastercard Send, and we're waiting for a response. PUSH_PENDING transactions usually update to PUSH_APPROVED or PUSH_REFUSED within 45 minutes for Visa Direct, and within 10 minutes for Mastercard Send. If no definitive resolution is received within 48 hours then transactions move to an error state.

Note: Never re-submit transactions with a PUSH_PENDING status as this may cause a duplicate payment that cannot be cancelled or reversed. Once sent to Visa, the push cannot be cancelled. Mastercard have a way to reverse duplicate transactions, but it's much easier to avoid duplicate transactions in the first place.

PUSH_APPROVEDVisa Direct or Mastercard Send have approved the Fast Access disbursement request.
Your shopper 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 or Mastercard's daily reporting.
PUSH_REFUSEDThe Fast Access disbursement request was refused. Some of the reasons could be:
  • The card issuer declined the disbursement
  • Visa or Mastercard declined the request because the issuing bank did not respond
  • The transaction type is not allowed for the requesting or recipient country
ERRORSome of the possible errors could occur because:
  • We received a conclusive response from Visa or Mastercard that confirms the request failed
  • We didn't get a conclusive response from Visa within 48 hours (20 minutes for Mastercard Send).

Note: If a response is not received from Visa Direct within 2 minutes the transaction status changes to PUSH_PENDING. The same thing happens to Mastercard Send transactions, but the time taken is 30 seconds. We will contact Visa Direct and Mastercard Send for 48 hours to try to obtain a conclusive response.

Card check

Note: At present, Card check is not available for Mastercard Send.

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 - Visa Direct only

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 - Visa Direct only

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>

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: Visa Direct only - You can include ashopper tokenor amerchant tokeninstead of the PAN in your disbursement request.

Request with PAN - Visa Direct

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 PAN - Mastercard Send

This request is identical to the one for Visa Direct above, except for an additional mandatory field called <cardAddress> and its associated subfields.

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>5100080000000000</cardNumber>
                <expiryDate>
                  <date month="06" year="2021"/>
                </expiryDate>
                <cardHolderName>Mr J Smith</cardHolderName>
                <cardAddress>
                  <address>
                    <firstName>Joe</firstName>
                    <lastName>Smith</lastName>
                    <address1>34 Cambridge Chase</address1>
                    <address2/>
                    <postalCode>CB2 3NE</postalCode>
                    <city>Cambridge</city>
                    <state>Cambridgeshire</state>
                    <countryCode>GB</countryCode>
                  </address>
                </cardAddress>
              </cardDetails>
            </paymentInstrument>
          </recipient>
        </FF_DISBURSE-SSL>
        <session shopperIPAddress="127.0.0.1" id="ssn383716214"/>
      </paymentDetails>
      <shopper>
        <shopperEmailAddress>js@email-address.com</shopperEmailAddress>
        <browser>
          <acceptHeader>text/html</acceptHeader>
          <userAgentHeader>Mozilla/5.0 ...</userAgentHeader>
        </browser>
      </shopper>
    </order>
  </submit>
</paymentService>

Data validation - Mastercard Send

ScenarioBehaviour
Merchant address1 contains only a numeric value e.g. "1"WPG response is "merchant.address.address1 field must not contain only digits."
Recipient address contains only a numeric value e.g. "1"

Note: To produce the recipient address, WPG concatenates address1, address2, and address3. We use the recipient address to perform validation.

WPG response is "recipient.address.address1 field must not contain only digits."
Sender address contains only a numeric value e.g. "1"

Note: To produce the sender address, WPG concatenates address1, address2, and address3. Use this sender address to perform validation.

WPG response is "sender.address.address1 field must not contain only digits."

Request with token - Visa Direct only

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>

Visa Direct Merchants and shoppers based in Canada only

If you are a merchant based in Canada, or one of your cardholders uses a card issued in Canada, then you must include an address set of fields with the disbursement request.

Merchants outside Canada making disbursements to cards issued outside Canada can include address information, but there is no requirement to do so. See the table:

Merchant domicileCard issuer countryAddress data
CanadaCanadaMandatory
CanadaRest of the worldMandatory
Rest of the worldCanadaMandatory
Rest of the worldRest of the worldOptional

An example of this code with an address set of fields is in the Request - Visa Direct Canada only drop-down below.

Fast Access Payouts to mobile wallets - Visa Direct only

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>

Here is an example of a PUSH_APPROVED notification from Mastercard Send:

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>MCS_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>MastercardSend</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 - Visa Direct

Card NumbercardTypebillingCurrencyCodeissuerCountryCodefastFundsdisbursementBlockedgamblingDisbursementBlockedschemeSupportedByFfs
4444333322221111CGBPGBTrueFalseFalseTrue
4917300800000000CGBPGBFalseFalseFalseTrue
4911830000000CEURNLTrueFalseFalseTrue
4462030000000000CEURNLFalseFalseFalseTrue
4917610000000000CAUDAUTrueFalseFalseTrue
4484070000000000CAUDAUFalseFalseFalseTrue
4835140000000031DEURGBTrueFalseFalseTrue
4815100000000013DGBPGBTrueFalseFalseTrue
4815100000000005DRONGBTrueFalseFalseTrue
4815100000000021DBGNGBTrueFalseFalseTrue
4815100000000039DCADGBTrueFalseFalseTrue
815100000000047DNZDGBTrueFalseFalseTrue
4815100000000054DUSDGBTrueFalseFalseTrue
4815100000000062DDKKGBTrueFalseFalseTrue
4815100000000070DHUFGBTrueFalseFalseTrue
4815100000000088DSEKGBTrueFalseFalseTrue
4815100000000237DRONGBTrueFalseTrueTrue
4855100000000030DEURDETrueFalseFalseTrue
4815100000000096DRONROTrueFalseFalseTrue
4815100000000104DBGNBGTrueFalseFalseTrue
4815100000000146DDKKDKTrueFalseFalseTrue
4815100000000153DHUFHUTrueFalseFalseTrue
4815100000000161DSEKSETrueFalseFalseTrue
4815100000000302DEURDETrueFalseFalseTrue
4815100000000278DCADDETrueFalseFalseTrue
4815100000000286DNZDDETrueFalseFalseTrue
4815100000000294DUSDDETrueFalseFalseTrue
4815100000000195DGBPDETrueFalseFalseTrue
4815100000000245DRONROTrueFalseTrueTrue
4917610000000000CAUDAUTrueFalseFalseTrue
4815100000000211DGBPAUTrueFalseFalseTrue
4815100000000229DEURAUTrueFalseFalseTrue
4815100000000260DEURAUTrueFalseTrueTrue
Any otherCGBPGBFalseTrueTrueTrue

Disbursement cardHolderName magic values - Visa Direct

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 - Visa Direct

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

Magic card values - Fast Funds Enabled - Mastercard Send

Card numberCard TypeBilling currency codeIssuer country codeFast funds availability
5551593000060000MCCGBPGBTrue
5551593000060026MCCGBPGBFalse
Any otherMCCGBPGBFalse

Magic card values - Cardholder name for the payment status - Mastercard Send

Cardholder nameHTTP statusAction codeResponse codeReasonScheme responsePayment status
APPROVED200 OK005Approved or completed successfullyAPPROVEDPUSH_APPROVED
REFUSED200 OK055Do not honorDECLINEDPUSH_REFUSED
ERROR06200 OK065System errorERRORERROR
APPROVED07200 OK075PENDINGPENDINGPUSH_PENDING then PUSH_APPROVED
APPROVED08200 OK085Honor with IDAPPROVEDPUSH_APPROVED
APPROVED10200 OK105Partial approvalAPPROVEDPUSH_APPROVED
REFUSED54200 OK545Expired cardDECLINEDPUSH_REFUSED
PENDINGAPPROVED504 GATEWAY_TIMEOUTPENDINGPUSH_PENDING then PUSH_APPROVED
PENDINGREFUSED504 GATEWAY_TIMEOUTPENDINGPUSH_PENDING then PUSH_REFUSED
ERROR403 FORBIDDENERRORERROR
Any other200 OK005Approved and completed successfullyAPPROVEDPUSH_APPROVED

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 - Visa Direct

ParameterM/O/CDescription
<inquiry>
<cardCheckInquiry>
MandatoryTells us you're checking a card to see if Fast Access transactions 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 - Visa Direct

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

Visa Direct

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.

Mastercard Send

This response is for Mastercard Send. There is an extra mandatory <cardAddress> field and its associated subfields.

ParameterM/O/CDescription
<cardAddress>MandatoryInclude the following subfields - <address>, <firstName>, <lastName>, <address1>, <address2>, <address3>, <postalCode>, <city>, and <countryCode>.
<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.

Disbursement response

These responses are the same for Visa Direct and Mastercard Send.

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 digit code from Visa that provides more information about the response. SeeAction Code (actionCode)for more information.
<responseCode>A one digit response code 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.

f## 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

Note: The above screenshot is for Visa Direct, but is the same for Mastercard Send, except for the brand-protocol field.

Card check request failure

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