Last Updated: 11 April 2024 | Change Log

Pay with EFT

Authorize an EFT payment and initiate a settlement request with one call.

Take a sale

POST your request to the direct:sale action link.

Sale example request


EFT sale request body:

    "transactionReference": "unique-transactionReference",
    "merchant": {
      "entity": "an-entity"
    "instruction": {
      "narrative": {
        "line1": "trading name"
      "paymentInstrument": {
        "type": "bankAccountCA",
        "accountType": "checking|savings|corporate|corporateSavings",
        "accountNumber": "01234567890123456",
        "routingNumber": "01234567",
        "checkNumber": "012345678901234",
        "companyName": "for corporate accounts only",
        "billingAddress": {
          "firstName": "John",
          "lastName": "Johnson",
          "address1": "100 King Street W",
          "address2": "Suite 5350",
          "address3": "53rd Floor",
          "postalCode": "M5H 4C7",
          "city": "Toronto",
          "state": "ON",
          "countryCode": "CA"
      "value": {
        "currency": "CAD",
        "amount": 250

Parameter descriptions

transactionReferenceThe unique transaction reference for this sale. Up to 15 characters, digits only.
merchant.entityUsed to route the sale request in Access Worldpay, created as part of on-boarding.
instructionThe object that contains all the payment information related to the sale request.
instruction.narrative.line1This field is visible in the customer's bank statement.
instruction.paymentInstrumentAn object that contains bank account details.
paymentInstrument.typeThe type of payment instrument, must be "bankAccountCA" for EFT.
paymentInstrument.accountTypePossible values: checking, savings, corporate, corporateSavings.
paymentInstrument.accountNumberAccount number of direct debit account.
paymentInstrument.routingNumberRouting number of direct debit account.
paymentInstrument.checkNumberCheck number of the direct debit account.
paymentInstrument.companyNameCompany name if a corporate account.
paymentInstrument.billingAddressAn object containing the billing address information. If included you must send at least:
paymentInstrument.billingAddress.firstNameAn identifier for the firstName being used.
paymentInstrument.billingAddress.lastNameAn identifier for the lastName being used.
paymentInstrument.billingAddress.address1An identifier for the address1 being used.
paymentInstrument.billingAddress.address2An identifier for the address2 being used.
paymentInstrument.billingAddress.address3An identifier for the address3 being used.
paymentInstrument.billingAddress.postalCodeAn identifier for the postalCode being used.
paymentInstrument.billingAddress.cityAn identifier for the city being used.
paymentInstrument.billingAddress.stateAn identifier for the state being used.
paymentInstrument.billingAddress.countryCodeAn identifier for the countryCode being used.
instruction.valueAn object that contains the value of the sale.
instruction.value.currencyAn identifier for the currency being used.
instruction.value.amountAn identifier for the amount being used.

Sale response

Best Practice

Access Worldpay returns a WP-CorrelationId in the headers of service responses. We highly recommend you log this. The WP-CorrelationId is used by us to examine individual service requests.

Successful payment

You receive:

  • an HTTP code 201
  • an "outcome": "sentForSettlement"
  • links to reverse or query your payment

Refused payment

You receive:

  • an HTTP code 201
  • an "outcome": "refused"
  1. Authorized
  2. Refused
    "outcome": "sentForSettlement",
    "_links": {
        "direct:events": {
            "href": ""
        "direct:reversal": {
            "href": ""
        "curies": [{
            "name": "direct",
            "href": "{rels}",
            "templated": true

In case of an error, you can get further information in our error reference.

Next steps

Manage your payment