Skip to content

Last updated: 01 September 2026 | Change log

Take repeat card payments


New API version

This documentation is for version 7 of the Card Payments API. If you're using version 6, you can find information on how to upgrade in our migration guide.

Take repeat card payments using our Card Payments API.

Merchant Initiated Transactions

You can take payments without the active participation of the customer according to an agreement previously made with the cardholder. These are known as Merchant Initiated Transactions (MITs).

POST to our merchantInitiatedTransactions endpoint to authorize a payment.

The requests below contain all the mandatory fields needed for a successful authorization request.

POST https://try.access.worldpay.com/cardPayments/merchantInitiatedTransactions

Note

Click the tabs below to see all the mandatory fields for all supported paymentInstrument parameters.

Merchant Initiated Transaction request body:

{
    "transactionReference": "Memory265-13/08/1876",
    "merchant": {
        "entity": "default"
    },
    "instruction": {
        "requestAutoSettlement": {
            "enabled": false
        },
        "narrative": {
            "line1": "Mind Palace"
        },
        "value": {
            "currency": "GBP",
            "amount": 250
        },
        "paymentInstrument": {
            "type": "card/plain",
            "cardNumber": "4444333322221111",
            "expiryDate": {
                "month": 5,
                "year": 2035
            }
        },
        "customerAgreement": {
            "type": "subscription",
            "schemeReference": "000000000000020005060720116005061"
        }
    }
}
Important

Before taking a Merchant Initiated Transaction, you must obtain prior agreement with the cardholder to store a card.

Note

You can use mobile wallets to process Merchant Initiated Transactions either:

  • by decrypting them yourself, or
  • by using the wallet payload that was converted into a Worldpay Token during the initial Customer Initiated Transaction

Schema (parameters)

transactionReferencestring, [ 1 .. 64 ] characters(transactionReference)^[-A-Za-z0-9_!@#$%()*=.:;?\[\]{}~`/+]*$required

A unique reference generated by you that is used to identify a payment throughout its lifecycle.

orderReferencestring, [ 1 .. 64 ] characters(orderReference)^[-A-Za-z0-9_!@#$%()*=.:;?\[\]{}~/+]*$

A reference, generated by you, that you can apply to one or more payments according to your business needs. You may reuse the same reference across multiple payments, for example where:

  • the total amount for a single order is split across multiple payments
  • you use a single reference for each payment in a recurring agreement or split shipment scenario
Example:"order-12345"
merchantobjectrequired

An object that contains information about the merchant.

instructionobjectrequired

An object that contains all information related to the payment.

recipientobject(recipient)

Additional transaction recipient data.

shippingobject(shipping)

An object containing shipping details.

orderobject(order)

An object containing details about the order.

customerobject

Additional customer data.

industryDataobject(industryData)
riskProfilestring

Used to update the FraudSight data model to benefit future payments.

Example:"https://try.access.worldpay.com/riskProfile/{linkData}"

Enable additional features


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": "authorized" or "Sent for Settlement"
  • a paymentId - a unique identifier generated by us for a single payment. Generated at authorization, and maintained through successive payment actions
  • a commandId - a unique identifier generated by us for a single instance of an interaction (command) with our API
  • risk factors (only returned if issuer identifies conflict)
  • an exemption result and reason (only if you supplied a risk profile to request an SCA exemption)
  • an issuer authorization code
  • links to cancel, settle, partially settle or query your payment
  • a paymentInstrument

paymentInstrument

The "paymentInstrument" object is returned if we are able to provide information related to the underlying card used in the authorization request.

Note
Note that if the paymentInstrument object is returned, there is no guarantee that each field listed below will be returned with every transaction.

ParameterDescription
paymentInstrument.typeThe type of paymentInstrument. E.g.:
  • card/plain+masked
  • card/network+masked
  • card/network
paymentInstrument.brandThe card brand. Sometimes referred to as the network or scheme. E.g.:
  • visa
  • mastercard
  • amex
paymentInstrument.cardBinThe card bin. E.g.:
444433
Note
this may contain the * character.
paymentInstrument.lastFourThe last four digits of the card. E.g.:
1111
Note
this may contain the * character, where the card number is less than 16 digits.
paymentInstrument.expiryDate.monthThe card expiry month. E.g.:
11
paymentInstrument.expiryDate.yearThe card expiry year. E.g.:
2025
paymentInstrument.fundingTypeHow the card is funded. E.g.:
  • credit
  • debit
  • prepaid
  • deferredDebit
  • chargeCard
paymentInstrument.categoryWhether the card is classed as a consumer card or a card for commercial use. E.g.:
  • consumer
  • commercial
paymentInstrument.countryCodeThe alpha-2 ISO-3166 country code that the card was issued in. May return "N/A" where the country is unknown. E.g.:
GB
paymentInstrument.issuerNameThe name of the card issuer. E.g.:
Some Issuer PLC.
paymentInstrument.paymentAccountReferenceThe payment account reference (PAR) is a non-financial reference that uniquely identifies the underlying cardholder account. This allows you to correlate payments made with differing instruments (e.g. "card/plain" and "card/wallet+applepay"), where the same account funds the transaction. A PAR cannot be used to initiate a payment. E.g.:
ABC123DEF456GHI789JKL123MNO45
paymentInstrument.debitNetworkThe debit network that the transaction was routed through. Returned optionally for subscribing merchants. See our API reference for all possible values.

Refused payment

You receive:

  • an HTTP code 201
  • an "outcome": "refused"
  • a paymentId - a unique identifier generated by us for a single payment. Generated at authorization, and maintained through successive payment actions
  • a commandId - a unique identifier generated by us for a single instance of an interaction (command) with our API
  • a refusalCode containing either our standard refusal codes or the rawCode (if enabled)
  • a refusalDescription which gives additional context on the refusal
  • an advice code (only if returned by the card scheme and acquirer)
  • risk factors (only returned if issuer identifies conflict)
  • a paymentInstrument

Example response

{
    "outcome": "authorized",
    "paymentId": "pay-fh47sbnaKR28AuocN28x0",
    "commandId": "cmdfHx982Nbhsklg91hsvlrv0",
    "riskFactors": [
        {
            "type": "cvc",
            "risk": "notSupplied"
        },
        {
            "type": "avs",
            "risk": "notChecked",
            "detail": "address"
        },
        {
            "type": "avs",
            "risk": "notChecked",
            "detail": "postcode"
        }
    ],
    "issuer": {
        "authorizationCode": "12345A"
    },
    "scheme": {
        "reference": "060720116005060"
    },
    "paymentInstrument": {
        "type": "card/plain+masked",
        "cardBin": "444433",
        "lastFour": "1111",
        "category": "consumer",
        "expiryDate": {
            "month": 5,
            "year": 2035
        },
        "cardBrand": "visa",
        "fundingType": "credit",
        "issuerName": "Some Issuer PLC",
        "paymentAccountReference": "Q1HJZ28RKA1EBL470G9XYG90R5D3E"
    },
    "_links": {
        "cardPayments:cancel": {
            "href": "https://try.access.worldpay.com/payments/authorizations/cancellations/eyJrIjoiazNhYjYzMiI="
        },
        "cardPayments:partialCancel": {
            "href": "https://try.access.worldpay.com/payments/authorizations/cancellations/partials/eyJrIjoiazNhYjYzMiJ9"
        },
        "cardPayments:settle": {
            "href": "https://try.access.worldpay.com/payments/settlements/full/eyJrIjoiazNhYjYzMiI="
        },
        "cardPayments:partialSettle": {
            "href": "https://try.access.worldpay.com/payments/settlements/partials/eyJrIjoiazNhYjYzMiI="
        },
        "cardPayments:events": {
            "href": "https://try.access.worldpay.com/payments/events/eyJrIjoiazNhYjYzMiI="
        },
        "curies": [
            {
                "name": "cardPayments",
                "href": "https://try.access.worldpay.com/rels/cardPayments/{rel}",
                "templated": true
            }
        ]
    }
}

You can use the payments:settle action link to settle the payment straight away. Alternatively you can cache the response and use the link to settle the payment later.

Note

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

riskFactors

To reduce the probability of processing a fraudulent payment, supply your customer's billing address and cvc in your authorization request.

We check this with your customer's issuing bank and include any conflicts in our response.

The riskFactors array is returned only if there is a risk associated with the authorization request. The riskFactors array returns an object for avs, cvc or riskProfile only if this information was included in the authorization request and if any risk was identified.

The table below describes the response parameters:

ParameterDescription
riskFactors.typeReturns avs, cvc or riskProfile
riskFactors.detailFor avs only.
Returns postcode or address
riskFactors.riskReturns notChecked, notMatched, notSupplied or verificationFailed

Next steps

Settle a payment
Refund a payment
Cancel a payment
Reverse a payment