openapi: 3.0.1
info:
title: 3DS 3DS actions SplitPayments API
description: "Protect your business and meet regulatory requirements by verifying your customer's identity.\n\n__Authentication header__\n ```\n Authorization: {your_credentials}\n ```\nReplace `{your_credentials}` with your base64-encoded Basic Auth username and password given to your by your Worldpay Implementation Manager.\n
\n\nYou **must** use the `Authorization` header for any request you send to our 3DS API.\n\n__Accept/Content-Type header__\n ```\n Content-Type: application/vnd.worldpay.verifications.customers-v3.hal+json\n Accept: application/vnd.worldpay.verifications.customers-v3.hal+json\n ```\nWe use the Accept header to identify which version of our API you are using. You must use the Accept header for any request you send to our 3DS API.\n\nWe require the Content-Type header if the request you're sending includes a request body, and if the HTTP method is a `POST` or a `PUT`.\n
\n\n\n__DNS whitelisting__ \nWhitelist the following URLs:\n* `https://try.access.worldpay.com/`\n* `https://access.worldpay.com/`\n\nPlease ensure you use DNS whitelisting, not explicit IP whitelisting."
version: '3'
x-metadata:
category:
- 3DS
- SCA Exemptions
business:
- Enterprise
catalog-list: true
generated: false
servers:
- url: https://try.access.worldpay.com
description: Test (Try)
- url: https://access.worldpay.com
description: Live
security:
- BasicAuth: []
tags:
- name: SplitPayments
paths:
/splitPayments:
post:
summary: Create split payments request
description: Create a request allowing you to split your payment.
operationId: splitPayments
parameters:
- name: Content-Type
in: header
description: The Content-Type.
required: true
schema:
type: string
description: The Content-Type.
example: application/json
example: application/json
- name: WP-Api-Version
in: header
description: The API version.
required: true
schema:
type: string
description: The API version.
example: '2025-06-25'
example: '2025-06-25'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SplitRequest'
examples:
SplitPayment:
$ref: '#/components/examples/split'
required: true
responses:
'201':
description: Merchant Pay-in accepted
headers:
WP-CorrelationId:
example: c85762a8-93af-47e7-beae-345d3dddbe94
schema:
type: string
format: uuid
content:
application/json:
schema:
$ref: '#/components/schemas/SplitResponse'
examples:
Purchase:
$ref: '#/components/examples/split-201'
'400':
description: Bad request format or data
headers:
WP-CorrelationId:
example: c85762a8-93af-47e7-beae-345d3dddbe94
schema:
type: string
format: uuid
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseWithValidationErrors'
examples:
headerIsMissing:
$ref: '#/components/examples/400-headerIsMissing'
bodyIsEmpty:
$ref: '#/components/examples/400-bodyIsEmpty'
bodyIsNotJson:
$ref: '#/components/examples/400-bodyIsNotJson'
bodyDoesNotMatchSchema:
$ref: '#/components/examples/400-bodyDoesNotMatchSchema'
'401':
description: Un-authorized access, Insufficient permissions to fulfil request.
headers:
WP-CorrelationId:
example: c85762a8-93af-47e7-beae-345d3dddbe94
schema:
type: string
format: uuid
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse401'
examples:
unauthorizedAccess:
$ref: '#/components/examples/401-unauthorizedAccess'
headerHasInvalidValue:
$ref: '#/components/examples/401-headerHasInvalidValue'
headerIsMissing:
$ref: '#/components/examples/401-headerIsMissing'
'406':
description: The API version is not supported
headers:
WP-CorrelationId:
example: c85762a8-93af-47e7-beae-345d3dddbe94
schema:
type: string
format: uuid
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse406'
examples:
headerHasInvalidValue:
$ref: '#/components/examples/406'
'415':
description: Media type not supported
headers:
WP-CorrelationId:
example: c85762a8-93af-47e7-beae-345d3dddbe94
schema:
type: string
format: uuid
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse415'
examples:
headerHasInvalidValue:
$ref: '#/components/examples/415'
'422':
description: Wrong party info, or no balanceAccount
headers:
WP-CorrelationId:
example: c85762a8-93af-47e7-beae-345d3dddbe94
schema:
type: string
format: uuid
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse422'
examples:
fieldHasInvalidValue:
$ref: '#/components/examples/422-FieldHasInvalidValue'
fieldIsMissing:
$ref: '#/components/examples/422-FieldIsMissing'
'500':
description: internalErrorOccurred
headers:
WP-CorrelationId:
example: c85762a8-93af-47e7-beae-345d3dddbe94
schema:
type: string
format: uuid
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse500'
examples:
Internal server error:
$ref: '#/components/examples/500'
x-noTag: noTag
x-orderingPosition: '1'
tags:
- SplitPayments
/splitPayments/{splitPaymentId}/fulfillments:
post:
summary: Fully settle/refund a payment
description: Confirm a settlement/refund of all line items within a split payment.
operationId: fullCaptureFulfillments
parameters:
- name: splitPaymentId
in: path
required: true
schema:
type: string
minLength: 25
maxLength: 25
pattern: ^spl[A-Za-z0-9_-]{21}0$
example: spld1dcd2dee333cae1bfdea0
description: ID of the split payment.
- name: Content-Type
in: header
description: The Content-Type.
required: true
schema:
type: string
description: The Content-Type
example: application/json
example: application/json
- name: WP-Api-Version
in: header
description: The API version.
required: true
schema:
type: string
description: The API version.
example: '2025-06-25'
example: '2025-06-25'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/FulfillmentsRequest'
examples:
Full Settlement:
$ref: '#/components/examples/FulfillmentsRequest'
Full Refund:
$ref: '#/components/examples/RefundRequest'
required: true
responses:
'201':
description: Merchant Pay-in accepted
headers:
WP-CorrelationId:
example: c85762a8-93af-47e7-beae-345d3dddbe94
schema:
type: string
format: uuid
content:
application/json:
schema:
$ref: '#/components/schemas/FulfillmentsResponse'
examples:
Full Settlement:
$ref: '#/components/examples/fulfillments-201'
'400':
description: Bad request format or data
headers:
WP-CorrelationId:
example: c85762a8-93af-47e7-beae-345d3dddbe94
schema:
type: string
format: uuid
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseWithValidationErrors'
examples:
headerIsMissing:
$ref: '#/components/examples/400-headerIsMissing'
bodyIsEmpty:
$ref: '#/components/examples/400-bodyIsEmpty'
bodyIsNotJson:
$ref: '#/components/examples/400-bodyIsNotJson'
bodyDoesNotMatchSchema:
$ref: '#/components/examples/400-bodyDoesNotMatchSchema'
'401':
description: Un-authorized access, insufficient permissions to fulfil request
headers:
WP-CorrelationId:
example: c85762a8-93af-47e7-beae-345d3dddbe94
schema:
type: string
format: uuid
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse401'
examples:
unauthorizedAccess:
$ref: '#/components/examples/401-unauthorizedAccess'
headerHasInvalidValue:
$ref: '#/components/examples/401-headerHasInvalidValue'
headerIsMissing:
$ref: '#/components/examples/401-headerIsMissing'
'406':
description: The API version is not supported
headers:
WP-CorrelationId:
example: c85762a8-93af-47e7-beae-345d3dddbe94
schema:
type: string
format: uuid
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse406'
examples:
headerHasInvalidValue:
$ref: '#/components/examples/406'
'415':
description: Media type not supported
headers:
WP-CorrelationId:
example: c85762a8-93af-47e7-beae-345d3dddbe94
schema:
type: string
format: uuid
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse415'
examples:
headerHasInvalidValue:
$ref: '#/components/examples/415'
'500':
description: internalErrorOccurred
headers:
WP-CorrelationId:
example: c85762a8-93af-47e7-beae-345d3dddbe94
schema:
type: string
format: uuid
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse500'
examples:
Internal server error:
$ref: '#/components/examples/500'
x-orderingPosition: '2'
tags:
- SplitPayments
/splitPayments/{splitPaymentId}/items/{itemId}/fulfillments:
post:
summary: Partially settle/refund a payment
description: Confirm a settlement/refund of individual line items within a payment.
operationId: singItemCaptureFulfillments
parameters:
- name: splitPaymentId
in: path
required: true
schema:
type: string
minLength: 25
maxLength: 25
pattern: ^spl[A-Za-z0-9_-]{21}0$
example: spld1dcd2dee333cae1bfdea0
description: ID of the split payment.
- name: itemId
in: path
required: true
schema:
$ref: '#/components/schemas/ItemID'
description: ID of the line item listed in a split payment request.
- name: Content-Type
in: header
description: The Content-Type.
required: true
schema:
type: string
example: application/json
example: application/json
- name: WP-Api-Version
in: header
schema:
type: string
description: The API version.
example: '2025-06-25'
example: '2025-06-25'
required: true
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ItemFulfillmentsRequest'
examples:
Single Item Settlement:
$ref: '#/components/examples/FulfillmentRequestSingle'
Single Item Refund:
$ref: '#/components/examples/RefundRequest'
required: true
responses:
'201':
description: Merchant Pay-in accepted
headers:
WP-CorrelationId:
example: c85762a8-93af-47e7-beae-345d3dddbe94
schema:
type: string
format: uuid
content:
application/json:
schema:
$ref: '#/components/schemas/ItemFulfillmentsResponse'
examples:
Single Item Settlement:
$ref: '#/components/examples/fulfillments-201'
'400':
description: Bad request format or data
headers:
WP-CorrelationId:
example: c85762a8-93af-47e7-beae-345d3dddbe94
schema:
type: string
format: uuid
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponseWithValidationErrors'
examples:
headerIsMissing:
$ref: '#/components/examples/400-headerIsMissing'
bodyIsEmpty:
$ref: '#/components/examples/400-bodyIsEmpty'
bodyIsNotJson:
$ref: '#/components/examples/400-bodyIsNotJson'
bodyDoesNotMatchSchema:
$ref: '#/components/examples/400-bodyDoesNotMatchSchema'
'401':
description: Un-authorized access, insufficient permissions to fulfil request
headers:
WP-CorrelationId:
example: c85762a8-93af-47e7-beae-345d3dddbe94
schema:
type: string
format: uuid
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse401'
examples:
unauthorizedAccess:
$ref: '#/components/examples/401-unauthorizedAccess'
headerHasInvalidValue:
$ref: '#/components/examples/401-headerHasInvalidValue'
headerIsMissing:
$ref: '#/components/examples/401-headerIsMissing'
'406':
description: The API version is not supported
headers:
WP-CorrelationId:
example: c85762a8-93af-47e7-beae-345d3dddbe94
schema:
type: string
format: uuid
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse406'
examples:
headerHasInvalidValue:
$ref: '#/components/examples/406'
'415':
description: Media type not supported
headers:
WP-CorrelationId:
example: c85762a8-93af-47e7-beae-345d3dddbe94
schema:
type: string
format: uuid
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse415'
examples:
headerHasInvalidValue:
$ref: '#/components/examples/415'
'500':
description: internalErrorOccurred
headers:
WP-CorrelationId:
example: c85762a8-93af-47e7-beae-345d3dddbe94
schema:
type: string
format: uuid
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse500'
examples:
Internal server error:
$ref: '#/components/examples/500'
x-orderingPosition: '3'
tags:
- SplitPayments
components:
examples:
401-unauthorizedAccess:
value:
errorName: unauthorizedAccess
message: The provided secret does not contain valid authentication.
401-headerHasInvalidValue:
value:
errorName: headerHasInvalidValue
message: A header 'WP-CorrelationId' in the request does not contain an expected pattern.
RefundRequest:
value:
reference: 5D262CB9-57F2-4176-AA7C-B76A79284276
description: optional description of fulfillment
paymentCommandId: cmdJxsTja3Daad6dig338w2R0
transactionType: refund
400-bodyDoesNotMatchSchema:
value:
errorName: bodyDoesNotMatchSchema
message: There were field validation errors. The errors that occurred are within the validationErrors array.
validationErrors:
- errorName: fieldIsEmpty
message: must not be blank
jsonPath: domain
- errorName: fieldIsEmpty
message: must not be blank
jsonPath: subject
400-bodyIsEmpty:
value:
errorName: bodyIsEmpty
message: The body within the request is empty. A body is required to be non-empty.
FulfillmentsRequest:
value:
reference: 5D262CB9-57F2-4176-AA7C-B76A79284276
description: optional description of fulfillment
paymentCommandId: cmdJxsTja3Daad6dig338w2R0
transactionType: settle
422-FieldHasInvalidValue:
value:
errorName: fieldHasInvalidValue
message: The party with reference '{{input reference } }' is not active, please re-activate it before using it for payIns or payOuts.
'500':
value:
errorName: internalErrorOccurred
message: An error occurred within the service.
fulfillments-201:
value:
fulfillment: accepted
'415':
value:
errorName: headerHasInvalidValue
message: A header 'Content-Type' in the request does not contain an expected value. Content-type must be - application/vnd.worldpay.split-payments-service-v1+json
'406':
value:
errorName: headerHasInvalidValue
message: A header 'Accept' in the request does not contain an expected pattern. It must be application/json, or not set.
FulfillmentRequestSingle:
value:
reference: 5D262CB9-57F2-4176-AA7C-B76A79284276
description: optional description of fulfillment
paymentCommandId: cmdJxsTja3Daad6dig338w2R0
transactionType: settle
split-201:
value:
splitPaymentId: spl9wdyDYROy6-boa2mSFfn20
lineItems:
- itemId: itmZRsCU4vjopY6q9HH9znXQ0
itemReference: aaa1
- itemId: itmO9IHhLjjamTh9oHcR1wH-0
itemReference: bbb1
400-bodyIsNotJson:
value:
errorName: bodyIsNotJson
message: The body within the request is not a valid JSON. This body is required to be a valid JSON.
401-headerIsMissing:
value:
errorName: headerIsMissing
message: A required header field is missing.
400-headerIsMissing:
value:
errorName: headerIsMissing
message: A mandatory request header field is missing. The name of the missing request header field is %s.
422-FieldIsMissing:
value:
errorName: fieldIsMissing
message: There is no payoutInstrument for the settlement currency, to resolve this please create a payoutInstrument by calling POST /parties/{{this}}/payoutInstruments for the settlement currency.
split:
description: Example request for creating a split payment
value:
reference: 5D262CB9-57F2-4176-AA7C-B76A79284277
description: optional split payment description
fulfillment:
auto: false
paymentCommandId: cmdJxsTja3Daad6dig338w2R0
merchant:
entity: default
value:
currency: GBP
totalAmount: 10000
lineItems:
- itemReference: aaa1
partyReference: The Baker Street Café
amount: 9000
description: Item description
deductions:
- type: commission
value:
type: percentage
amount: 1
description: Deduction description
- itemReference: bbb1
partyReference: John Watson
amount: 1000
description: Item description
deductions:
- type: fee
value:
type: flat
amount: 200
description: Deduction description
schemas:
ValidationError:
required:
- errorName
- message
- jsonPath
type: object
properties:
errorName:
type: string
description: A machine and human readable error type for clarity and semantic understanding of the error.
enum:
- fieldIsNull
- fieldIsEmpty
- numberIsTooLarge
- numberIsTooSmall
- stringFailedRegexCheck
message:
type: string
description: A human readable message giving a corrective action for the error. *This is not for machine consumption*.
jsonPath:
type: string
description: The field presents the JSONPath of th element within the request body associated with the error.
SplitRequest:
required:
- reference
- fulfillment
- merchant
- value
- lineItems
properties:
reference:
type: string
description: Reference for the split payments generated by you.
description:
maxLength: 50
pattern: ^[a-zA-Z0-9 ,./-]*$
type: string
description: Text to appear on the customer's billing statement. Sometimes referred to as a billing descriptor. If this isn't set, the value from the merchant profile is used.
fulfillment:
$ref: '#/components/schemas/AutoFulfillment'
merchant:
$ref: '#/components/schemas/Merchant'
value:
$ref: '#/components/schemas/Value'
lineItems:
$ref: '#/components/schemas/LineItems'
Currency:
type: string
description: The [3 letter ISO-4217 currency code](/products/reference/supported-countries-currencies#iso-currency-codes).
example: GBP
pattern: ^[A-Z]{3}$
ErrorResponse406:
type: object
required:
- errorName
- message
properties:
errorName:
type: string
description: A header 'WP-Api-Version' or URL path in the request is misconfigured
message:
type: string
description: A human readable message giving a corrective action for the error. *This is not for machine consumption*.
LineItems:
type: array
items:
required:
- itemReference
- partyReference
- amount
type: object
properties:
itemReference:
maxLength: 64
minLength: 1
pattern: ^[-A-Za-z0-9_!@#$%()*=.:;?\[\]{}~`/+]*$
type: string
description: Unique reference generated by you to identify a line item.
partyReference:
maxLength: 64
minLength: 1
type: string
description: Unique reference generated by you to identify a party.
amount:
$ref: '#/components/schemas/Amount'
description:
maxLength: 50
pattern: ^[a-zA-Z0-9 ,./-]*$
type: string
description: Text to appear on the customer's billing statement. Sometimes referred to as a billing descriptor. If this isn't set, the value from the merchant profile is used.
deductions:
$ref: '#/components/schemas/Deductions'
SplitResp:
type: object
properties:
items:
$ref: '#/components/schemas/LineItemsResp'
ErrorResponse500:
type: object
required:
- errorName
- message
properties:
errorName:
type: string
enum:
- internalErrorOccurred
description: An error occurred within the service.
message:
type: string
description: A human readable message giving a corrective action for the error. *This is not for machine consumption*.
PaymentCommandID:
type: string
description: A unique ID generated by us for each lifecycle event on a payment. You have received this in the [response of your payment authorization request](/products/card-payments/openapi/other/authorize#other/authorize/t=response&c=201&path=&d=0/commandid) in our Card Payments API.
minLength: 25
maxLength: 25
pattern: ^cmd[A-Za-z0-9_-]{21}0$
Value:
required:
- currency
- totalAmount
type: object
properties:
currency:
$ref: '#/components/schemas/Currency'
totalAmount:
$ref: '#/components/schemas/TotalAmount'
ItemFulfillmentsResponse:
type: object
properties:
fulfillment:
type: string
description: Update status to fulfilled
FulfillmentsRequest:
required:
- paymentCommandId
- transactionType
type: object
properties:
reference:
maxLength: 64
minLength: 1
pattern: ^[-A-Za-z0-9_!@#$%()*=.:;?\[\]{}~`/+]*$
type: string
description: A reference generated by you to identify each lifecycle event of a payment.
description:
type: string
maxLength: 50
description: Description of the fulfillment
example: optional description of fulfillment
paymentCommandId:
$ref: '#/components/schemas/PaymentCommandID'
transactionType:
$ref: '#/components/schemas/TransactionType'
SplitResponse:
type: object
required:
- splitPaymentId
- lineItems
properties:
splitPaymentId:
$ref: '#/components/schemas/SplitPaymentID'
lineItems:
$ref: '#/components/schemas/SplitResp'
ErrorResponseWithValidationErrors:
type: object
required:
- errorName
- message
properties:
errorName:
type: string
enum:
- headerIsMissing
- headerHasInvalidValue
- bodyIsEmpty
- bodyIsNotJson
- bodyDoesNotMatchSchema
message:
type: string
description: A human readable message giving a corrective action for the error. *This is not for machine consumption*.
validationErrors:
type: array
description: If there were field validation errors, they will be collected in this array.
items:
$ref: '#/components/schemas/ValidationError'
Deductions:
type: array
items:
type: object
required:
- type
- value
properties:
type:
type: string
description: Type of deduction.
enum:
- commission
- fee
example: commission
value:
type: object
required:
- type
- amount
properties:
type:
type: string
description: Type of value.
enum:
- percentage
- flat
example: percentage
amount:
type: integer
example: 75
description: percentage or flat amount of the deduction. For example, 75 = 0.75% or £0.75
description:
type: string
maxLength: 50
description: Description of the deduction.
example: Deduction description
AutoFulfillment:
required:
- auto
- paymentCommandId
type: object
properties:
auto:
type: boolean
description: Set to 'true' for auto fulfillment, otherwise to 'false'
paymentCommandId:
$ref: '#/components/schemas/PaymentCommandID'
ItemFulfillmentsRequest:
required:
- paymentCommandId
- transactionType
type: object
properties:
reference:
maxLength: 64
minLength: 1
pattern: ^[-A-Za-z0-9_!@#$%()*=.:;?\[\]{}~`/+]*$
type: string
description: Command reference generated by you.
description:
type: string
maxLength: 50
description: Description of the fulfillment
example: optional description of fulfillment
paymentCommandId:
$ref: '#/components/schemas/PaymentCommandID'
transactionType:
$ref: '#/components/schemas/TransactionType'
Amount:
type: integer
example: 250
description: Implied decimal. For example, 250 GBP = £2.50
ErrorResponse401:
required:
- errorName
- message
type: object
properties:
errorName:
type: string
enum:
- unauthorizedAccess
- headerHasInvalidValue
- headerIsMissing
description: Un-authorized access, Insufficient permissions to fulfil request.
message:
type: string
description: A human readable message giving a corrective action for the error. *This is not for machine consumption*.
SplitPaymentID:
type: string
description: Unique reference generated by us to identify a split payment.
minLength: 25
maxLength: 25
pattern: ^spl[A-Za-z0-9_-]{21}0$
Merchant:
required:
- entity
type: object
properties:
entity:
maxLength: 64
minLength: 1
pattern: ^[-A-Za-z0-9_!@#$%()*=.:;?\[\]{}~`/+]*$
type: string
description: Used to route the request in Access Worldpay, created as part of on-boarding.
example: default
LineItemsResp:
type: array
items:
required:
- itemId
- itemReference
type: object
properties:
itemId:
$ref: '#/components/schemas/ItemID'
itemReference:
maxLength: 64
minLength: 1
pattern: ^[-A-Za-z0-9_!@#$%()*=.:;?\[\]{}~`/+]*$
type: string
description: Unique reference generated by you to identify a line item.
TransactionType:
type: string
description: Defines the type of payment lifecycle action.
enum:
- settle
- refund
example: settle
TotalAmount:
type: integer
example: 250
description: Implied decimal. For example, 250 GBP = £2.50.
ErrorResponse422:
type: object
required:
- errorName
- message
properties:
errorName:
type: string
enum:
- fieldIsMissing
- fieldHasInvalidValue
description: A machine and human readable error type for clarity and semantic understanding of the error.
example: fieldHasInvalidValue
message:
type: string
description: A human readable message giving a corrective action for the error. *This is not for machine consumption*.
ErrorResponse415:
type: object
required:
- errorName
- message
properties:
errorName:
type: string
description: A header 'Content-Type' in the request does not contain an expected value. Content-type must be - 'application/json'
message:
type: string
description: A human readable message giving a corrective action for the error. *This is not for machine consumption*.
FulfillmentsResponse:
type: object
properties:
fulfillment:
type: string
description: Update status to fulfilled
ItemID:
type: string
description: Unique reference generated by us to identify a line item.
minLength: 25
maxLength: 25
pattern: ^itm[A-Za-z0-9_-]{21}0$
securitySchemes:
BasicAuth:
type: http
scheme: basic