Last updated: 01 September 2026 | Change log
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 online card payments using our Card Payments API.
All payment requests where the cardholder actively participates in the flow are Customer Initiated Transactions (CITs).
POST to our customerInitiatedTransactions endpoint to authorize a payment.
Click the tabs below to see all the mandatory fields for the supported paymentInstrument parameters.
POST https://try.access.worldpay.com/cardPayments/customerInitiatedTransactions
{
"transactionReference": "Memory265-13/08/1876",
"channel": "ecom",
"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
}
}
}
}A unique reference generated by you that is used to identify a payment throughout its lifecycle.
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
Interaction between the cardholder and you. Supply a value of ecom to process an eCommerce authorization. Supply a value of moto to process an authorization as a Mail Order or Telephone Order transaction. Note: 3DS authentication cannot be supplied for MOTO payments.
An object that contains information about the merchant.
An object that contains all information related to the payment.
Used to apply the SCA exemption in the payment request and update the FraudSight data model to benefit future payments.
If using either the FraudSight or Exemptions API you must provide this.
An object containing authentication details.
An object containing shipping details.
An object containing details about the order.
Additional transaction recipient data.
Additional customer data.
For more information about the accepted payment instruments, see our dedicated guidance:
If you are storing your customer's payment details for future use, you must indicate this using the customerAgreement object. Additionally, you can use our Tokens API to store your customer's card details via Worldpay tokens or network tokens.
Important: You must have consent from your customer to store their card details.
You must also indicate when a card that you have stored previously is being used in a subsequent payment.
Example use cases:
- First card on file: a payment where the customer opts to store their card on your website for faster checkout on future purchases (i.e. express checkout).
- Subsequent card on file: a payment where the customer selects a card that they have previously stored with you for an express checkout flow.
- First payment in a subscription agreement.
- First payment in an installment plan.
Subsequent subscription or installment payments must be sent using our merchant initiated transactions endpoint, since these payments are not directly initiated by the cardholder.
Strong Customer Authentication (SCA) is mandatory when storing payment details. You must include 3DS authentication or an SCA Exemption when a stored card is being used for the first time.
Example card on file requests:
{
"transactionReference": "Memory265-13/08/1876",
"channel": "ecom",
"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
},
"cvc": "123"
},
"customerAgreement":{
"type": "cardOnFile",
"storedCardUsage": "first"
}
},
"authentication": {
"threeDS": {
"eci": "05",
"authenticationValue": "MAAAAAAAAAAAAAAAAAAAAAAAAA3=",
"transactionId": "a09b446d-5c0d-4003-9c99-21fb73d75999",
"version": "2.2.0"
}
}
}Example first subscription requests:
{
"transactionReference": "Memory265-13/08/1876",
"channel": "ecom",
"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
},
"cvc": "123"
},
"customerAgreement":{
"type": "subscription",
"storedCardUsage": "first"
}
},
"authentication": {
"threeDS": {
"eci": "05",
"authenticationValue": "MAAAAAAAAAAAAAAAAAAAAAAAAA3=",
"transactionId": "a09b446d-5c0d-4003-9c99-21fb73d75999",
"version": "2.2.0"
}
}
}| Parameter | Required? | Description |
|---|---|---|
instruction.customerAgreement | ❌ | An object containing details about processing agreements made with your customer, i.e.:
|
customerAgreement.type | ✅ | The processing arrangement agreed with your customer. Possible values:
|
customerAgreement.storedCardUsage | Mandatory for types:
| Possible values:
|
customerAgreement.installmentType | Mandatory where customerAgreement.type = installment | Possible values:
|
You can request that payment authorizations are automatically sent for settlement (sometimes referred to as "capture") by setting requestAutoSettlement.enabled to true in your /cardPayments/customerInitiatedTransactions request.
To manually request settlement at a time of your choosing, set requestAutoSettlement.enabled to false. You can then use the cardPayments:settle or cardPayments:partialSettle next action link returned in your response message to send the full authorized amount or a partial amount for settlement.
Payment Authorizations automatically expire after a set time period. The time period can be as little as three days, and depends on a number of parameters such as your region, Merchant Category Code (MCC), and the payment purpose. Please refer to card scheme documentation for the authorization expiry time periods for each scenario.
Network Tokens are format-preserving representations of a cardNumber (Primary Account Number, or PAN: the long card number, usually on the front of a card). This means that, like a cardNumber, network tokens are usually 16-digits in length.
Some benefits of using network tokens:
- Increased authorization rates
- Reduced card scheme fees in some regions
- Increased security given a new cryptogram must be provisioned for each customer initiated payment
- Network tokens remain unaltered if the underlying card expires and is re-issued
See our guidance on how to Create a Network Token.
When using network tokens in Customer Initiated Transactions, you must include the cryptogram. This can be obtained from our Tokens API or your Token provider.
Example network token requests:
{
"transactionReference": "Memory265-13/08/1876",
"channel": "ecom",
"merchant": {
"entity": "default"
},
"instruction": {
"requestAutoSettlement": {
"enabled": false
},
"narrative": {
"line1": "Mind Palace"
},
"value": {
"currency": "GBP",
"amount": 250
},
"paymentInstrument": {
"type": "card/networkToken",
"tokenNumber": "4444333322221111",
"expiryDate": {
"month": 5,
"year": 2035
}
}
},
"authentication": {
"networkToken": {
"cryptogram": "MAAAAAAAAAAAAAAAAAAAAAAAAAB=",
"eci": "05"
}
}
}| Parameter | Required | Description |
|---|---|---|
authentication.networkToken | ✅ | An object containing network token verification details. |
authentication.networkToken.cryptogram | ✅ | The single-use cryptogram provisioned for this payment. |
authentication.networkToken.eci | ❌ | Electronic Commerce Indicator (ECI). Indicates the outcome of the network token verification.
|
If using the FraudSight API you must apply the riskProfile from the assessment response in the card payment request. This links the risk assessment to the payment and allows the data model to mature and identify future fraudulent transactions.
See linking the FraudSight assessment for details.
"riskProfile": "https://try.access.worldpay.com/riskProfile/ewogICJ2IiA6IDEsC"Apply your Worldpay granted exemption (from Exemptions or FraudSight) using the riskProfile. This allows the exemption to be applied to your payment authorization.
"riskProfile": "https://try.access.worldpay.com/riskProfile/ewogICJ2IiA6IDEsC"To use exemptions granted by a 3rd party Transaction Risk Analysis (TRA) tool.
This is not enabled by default, please contact your Worldpay Implementation Manager.
Do not send externally granted TRA exemptions without approval from us and confirmation that we have fully enabled it.
"exemption": {
"type": "external",
"request": {
"placement": "authentication",
"type": "lowRisk"
}
}This is not enabled by default, please contact your Worldpay Implementation Manager.
If 3DS suffers from a recognized downstream outage, you can apply an authenticationOutage exemption. Liability shift is not offered, but it increases the chance of an authorized outcome.
"exemption": {
"type": "authenticationOutage"
}Complete an authentication request using our 3DS API to get the details required to prove that 3DS has taken place.
{
"transactionReference": "Memory265-13/08/1876",
"channel": "ecom",
"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
}
}
},
"authentication": {
"threeDS": {
"eci": "05",
"authenticationValue": "MAAAAAAAAAAAAAAAAAAAAAAAA3=",
"transactionId": "a09b446d-5c0d-4003-9c99-21fb73d75999",
"version": "2.2.0"
}
}
}You cannot re-use the authenticationValue in multiple authorization requests. Re-using the authenticationValue will result in issuer declines and may incur fees.
3DS data cannot be supplied for MOTO transactions.
| Parameter | Required | Description |
|---|---|---|
authentication.threeDS | ✅ | An object containing the result of your customer's verification. For more details see 3DS verification. |
authentication.threeDS.version | ✅ | The version of 3DS used to process the transaction. Possible values for 3DS2:
Note Required for Mastercard's Identity Check transactions in Authorization. |
authentication.threeDS.eci | ✅ | Electronic Commerce Indicator (ECI). Indicates the outcome of the 3DS verification.
|
authentication.threeDS.authenticationValue | ✅ | Required, if threeDS.eci value is 01, 02, 05 or 06.A cryptographic value that provides evidence of the outcome of a 3DS verification.
threeDS.authenticationValue must be 28 digits max and must be base64-encoded. |
authentication.threeDS.transactionId | ✅ | Required, if threeDS.eci value is 01, 02, 05 or 06.A unique authentication transaction identifier, generated by the issuer. For version 3DS2: transactionId follows RFC 4122 UUID standard and is 36 characters in length. |
authentication.threeDS.cryptogramAlgorithm | ❌ | Indicates the algorithm used to generate the cryptogram. For Cartes Bancaires authorizations only. |
authentication.threeDS.challengePreference | ❌ | Indicates the preferred challenge behavior.
For Cartes Bancaires authorizations only. |
authentication.threeDS.authenticationFlow | ❌ |
For Cartes Bancaires authorizations only. |
authentication.threeDS.status | ❌ | Indicates the outcome of the authentication or verification request.
For Cartes Bancaires authorizations only. |
authentication.threeDS.statusReason | ❌ | Provides further information relating to the outcome of the authentication. Returned for failed authentications only. For Cartes Bancaires authorizations only. |
authentication.threeDS.cancellationIndicator | ❌ | An indicator as to why the authentication was cancelled.
For Cartes Bancaires authorizations only. |
authentication.threeDS.networkScore | ❌ | The global score calculated by the Cartes Bancaires scoring platform. For Cartes Bancaires authorizations only. |
authentication.threeDS.brand | ❌ | The card brand used in the authentication. For Cartes Bancaires authorizations only. |
authentication.threeDS.exemptionCode | ❌ | A code indicating the authentication exemption reason.
For Cartes Bancaires authorizations only. |
Account Updater
Reduce declines and improve your customer's experience by automatically retrieving updated card details in real time.
Co-branded Cards
Take payments from cards that carry multiple card brands.
Financial Services (MCC 6012/6051)
Supply additional mandatory data if you offer financial services, debt repayments, or consumer bill payments.
Funding Transactions (AFT)
Take Account Funding Transactions (AFTs) to pull funds from a card account to another destination.
Airline data
Supply detailed airline itinerary data to achieve several cost and efficiency benefits.
Corporate Purchasing Data (Level 2 / 3)
Submit additional order, tax, and line item data in your payment authorization and settlement requests where your customer is using a commercial or purchasing card.
Latin America Payments
Take payments in Latin America, including regional installment plan options, combo cards, and supplying customer document references.
MOTO transactions
Take Mail Order/ Telephone Order payments.
Accept authorizations for partial amounts.
View all features
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.
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 either:
- settle, partially settle, cancel, or query a payment when
requestAutoSettlementwas set tofalsein the authorization request and theoutcomeis"authorized" - refund, partially refund, reverse or query a payment when
requestAutoSettlementwas set totruein the authorization request and theoutcomeis"Sent for Settlement"
- settle, partially settle, cancel, or query a payment when
- a
paymentInstrumentobject
We return the "paymentInstrument" object, if we are able to provide information related to the underlying card used in the authorization request.
If we return the paymentInstrument object, there is no guarantee that each field listed below will be returned with every transaction.
| Parameter | Description |
|---|---|
paymentInstrument.type | The type of paymentInstrument. E.g.:
|
paymentInstrument.brand | The card brand. Sometimes referred to as the network or scheme. E.g.:
|
paymentInstrument.cardBin | The card bin. E.g.:444433 Note this may contain the * character. |
paymentInstrument.lastFour | The 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.month | The card expiry month. E.g.: 11 |
paymentInstrument.expiryDate.year | The card expiry year. E.g.: 2025 |
paymentInstrument.fundingType | How the card is funded. E.g.:
|
paymentInstrument.category | Whether the card is classed as a consumer card or a card for commercial use. E.g.:
|
paymentInstrument.countryCode | The 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.issuerName | The name of the card issuer. E.g.: Some Issuer PLC. |
paymentInstrument.paymentAccountReference | The 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.debitNetwork | The debit network that the transaction was routed through. Returned optionally for subscribing merchants. See our API reference for all possible values. |
If you follow a Marketplace flow, ensure you now split your payment through our Split Payments API, to guarantee an automated payout to the party.
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
refusalCodecontaining either our standard refusal codes or the rawCode (if enabled) - a
refusalDescriptionwhich 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)
- an exemption result and reason (only if you supplied a risk profile to request an SCA exemption)
- a
paymentInstrumentobject
{
"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. You only receive this, if you set "requestAutoSettlement" to false in your initial request.
Alternatively you can cache the response and use the link to settle the payment later.
In case of an error, you can get further information in our error reference.
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:
| Parameter | Description |
|---|---|
riskFactors.type | Returns avs, cvc or riskProfile |
riskFactors.detail | For avs only.Returns postcode or address |
riskFactors.risk | Returns notChecked, notMatched, notSupplied or verificationFailed |
An exemption result and reason if a risk profile was included in your authorization request.
The table below describes the response parameters:
| Parameter | Description |
|---|---|
exemption.result | Returns honored, outOfScope, rejected or unknown |
exemption.reason |
|
The issuer responds with a soft decline (refusal code 65), if no exemption has been applied to the payment. The next logical step for this is to proceed with 3DS authentication.
Next steps
Settle a payment
Refund a payment
Cancel a payment
Reverse a payment