**Last updated**: 13 March 2026 | [**Change log**](/access/products/apms/changelog/)

# 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

`POST` `https://try.access.worldpay-bsh.securedataplatform.com/payments/alternative/direct/sale`

#### EFT sale request body:


```json
{
    "transactionReference": "unique-transactionReference",
    "merchant": {
      "entity": "default"
    },
    "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

| Parameter | Required | Description |
|  --- | --- | --- |
| `transactionReference` | ✅ | The unique transaction reference for this sale. Up to 15 characters, digits only. |
| `merchant.entity` | ✅ | Used to route the sale request in Access Worldpay, created as part of on-boarding. |
| `instruction` | ✅ | The object that contains all the payment information related to the sale request. |
| `instruction.narrative.line1` | ✅ | This field is visible in the customer's bank statement. |
| `instruction.paymentInstrument` | ✅ | An object that contains bank account details. |
| `paymentInstrument.type` | ✅ | The type of payment instrument, must be "bankAccountCA" for EFT. |
| `paymentInstrument.accountType` | ✅ | Possible values: checking, savings, corporate, corporateSavings. |
| `paymentInstrument.accountNumber` | ✅ | Account number of direct debit account. |
| `paymentInstrument.routingNumber` | ✅ | Routing number of direct debit account. |
| `paymentInstrument.checkNumber` | ❌ | Check number of the direct debit account. |
| `paymentInstrument.companyName` | ❌ | Company name if a corporate account. |
| `paymentInstrument.billingAddress` | ❌ | An object containing the billing address information. **If included you must send** at least:`address1``city`[`countryCode`](/access/products/reference/supported-countries-currencies#iso-country-codes)`postalCode` |
| `paymentInstrument.billingAddress.firstName` | ❌ | An identifier for the `firstName` being used. |
| `paymentInstrument.billingAddress.lastName` | ❌ | An identifier for the `lastName` being used. |
| `paymentInstrument.billingAddress.address1` | ❌ | An identifier for the `address1` being used. |
| `paymentInstrument.billingAddress.address2` | ❌ | An identifier for the `address2` being used. |
| `paymentInstrument.billingAddress.address3` | ❌ | An identifier for the `address3` being used. |
| `paymentInstrument.billingAddress.postalCode` | ✅ | An identifier for the `postalCode` being used. |
| `paymentInstrument.billingAddress.city` | ✅ | An identifier for the `city` being used. |
| `paymentInstrument.billingAddress.state` | ❌ | An identifier for the `state` being used. |
| `paymentInstrument.billingAddress.countryCode` | ✅ | An identifier for the `countryCode` being used. |
| `instruction.value` | ✅ | An object that contains the value of the sale. |
| `instruction.value.currency` | ✅ | An identifier for the `currency` being used. |
| `instruction.value.amount` | ✅ | An 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](/access/products/apms/20230601/paydirect/manage-payment#reversal) or [query](/access/products/card-payments/v6/query-a-payment) your payment


### Refused payment

You receive:

* an HTTP code `201`
* an `"outcome": "refused"`


Authorized

```json
{
    "outcome": "sentForSettlement",
    "_links": {
        "direct:events": {
            "href": "https://try.access.worldpay-bsh.securedataplatform.com/payments/alternative/direct/events/linkData"
        },
        "direct:reversal": {
            "href": "https://try.access.worldpay-bsh.securedataplatform.com/payments/alternative/direct/reversals/linkData"
        },
        "curies": [{
            "name": "direct",
            "href": "https://try.access.worldpay-bsh.securedataplatform.com/rels/payments/alternative/direct/{rels}",
            "templated": true
        }]
    }
}
```

Refused

```json
{
    "outcome": "refused",
    "_links": {
        "direct:events": {
            "href": "https://try.access.worldpay-bsh.securedataplatform.com/payments/alternative/direct/events/{linkData}"
        },
        "curies": [{
            "name": "direct",
            "href": "https://try.access.worldpay-bsh.securedataplatform.com/rels/payments/alternative/direct/{rel}",
            "templated": true
        }]
    }
}
```

Note
In case of an error, you can get further information in our [error reference](/access/products/reference/worldpay-error-responses).

**Next steps**

[Manage your payment](/access/products/apms/20230601/paydirect/manage-payment)