openapi: 3.0.1
info:
title: 3DS 3DS actions AchVerifications 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: AchVerifications
paths:
/achVerifications:
post:
summary: ACH verification
description: 'Successful account verification outcome.
'
operationId: ACH
parameters:
- $ref: '#/components/parameters/achAcceptHeader'
- $ref: '#/components/parameters/achContentTypeHeader'
requestBody:
content:
application/vnd.worldpay.achVerifications-v6+json:
schema:
$ref: '#/components/schemas/verifications_ach'
examples:
Successful account verification outcome.:
value:
merchant:
entity: default
transactionReference: '1234567'
paymentInstrument:
type: bankAccountUS
accountType: corporateSavings
accountNumber: '1234567890'
routingNumber: 011400495
companyName: companyName
billToAddress:
firstName: John
lastName: Smith
address1: address1
address2: address2
address3: address3
city: city
region: state
postalCode: postalCode
countryCode: US
telephoneNumber: '4085551212'
Refused account verification outcome.:
value:
merchant:
entity: default
transactionReference: '1234567'
paymentInstrument:
type: bankAccountUS
accountType: corporateSavings
accountNumber: '12345678901234567890'
routingNumber: 011400495
companyName: companyName
billToAddress:
firstName: John
lastName: Smith
address1: address1
address2: address2
address3: address3
city: city
region: state
postalCode: postalCode
countryCode: US
telephoneNumber: '4085551212'
responses:
'201':
description: The account verification has been successful.
content:
application/vnd.worldpay.achVerifications-v6+json:
schema:
$ref: '#/components/schemas/verifications_ach_201_response'
examples:
Successful account verification outcome.:
value:
outcome: verified
checkedAt: '2021-09-27T18:02:16.475Z'
Refused account verification outcome.:
value:
outcome: not verified
description: Invalid account number
checkedAt: '2021-09-27T18:02:16.475Z'
'400':
$ref: '#/components/responses/400'
'401':
$ref: '#/components/responses/401'
'404':
$ref: '#/components/responses/404'
'415':
$ref: '#/components/responses/415'
'500':
$ref: '#/components/responses/500'
tags:
- AchVerifications
components:
responses:
'500':
description: An error occurred processing the request on our side.
headers:
WP-CorrelationId:
schema:
type: string
description: Generated identifier for the request and response. When contacting support please include this.
example: 4c195ce9-3dbd-4bc8-9c94-3d3393842323
content:
application/json:
schema:
title: error500
type: object
required:
- errorName
- message
properties:
errorName:
type: string
enum:
- internalServerError
description: A machine and human readable error type for clarity and semantic understanding of the error.
example: internalServerError
message:
type: string
description: A human readable message giving a corrective action for the error. *This is not for machine consumption*
example: An internal server error occurred
'400':
description: Bad Request
headers:
WP-CorrelationId:
schema:
type: string
description: Generated identifier for the request and response. When contacting support please include this.
example: 4c195ce9-3dbd-4bc8-9c94-3d3393842323
content:
application/json:
examples:
Validation Error:
$ref: '#/components/examples/validationError'
Header Error:
$ref: '#/components/examples/headerError'
schema:
title: error400
type: object
required:
- errorName
- message
properties:
errorName:
type: string
enum:
- internalErrorOccurred
- headerIsMissing
- headerHasInvalidValue
- bodyIsEmpty
- bodyIsNotJson
- bodyDoesNotMatchSchema
description: A machine and human readable error type for clarity and semantic understanding of the error.
example: bodyDoesNotMatchSchema
message:
type: string
description: A human readable message giving a corrective action for the error. *This is not for machine consumption*
example: A JSON body matching the expected schema must be provided.
validationErrors:
type: array
description: If there were field validation errors, they will be collected in this array
items:
$ref: '#/components/schemas/validationError'
headerName:
type: string
description: If the header is missing or does not contain an expected value, this field will be populated with the incorrect header name.
example: Content-Type
'401':
description: Client is not authorized due to missing or invalid Authorization header.
headers:
WP-CorrelationId:
schema:
type: string
description: Generated identifier for the request and response. When contacting support please include this.
example: 4c195ce9-3dbd-4bc8-9c94-3d3393842323
content:
application/json:
schema:
title: error401
type: object
required:
- errorName
- message
- headerName
properties:
errorName:
type: string
description: A machine and human readable error type for clarity and semantic understanding of the error.
example: accessDenied
message:
type: string
description: A human readable message giving a corrective action for the error. *This is not for machine consumption*
example: Access to the requested resource has been denied
'404':
description: Not Found - unable to locate requested record
headers:
WP-CorrelationId:
schema:
type: string
description: Generated identifier for the request and response. When contacting support please include this.
example: 4c195ce9-3dbd-4bc8-9c94-3d3393842323
content:
application/vnd.worldpay.cardVerifications-v6+json:
schema:
title: error400
type: object
required:
- errorName
- message
properties:
errorName:
type: string
enum:
- resourceNotFound
description: A machine and human readable error type for clarity and semantic understanding of the error.
example: resourceNotFound
message:
type: string
description: A human readable message giving a corrective action for the error. *This is not for machine consumption*
example: Unable to verify the historic outcome from the data provided
example:
errorName: resourceNotFound
message: Unable to verify the historic outcome from the data provided
'415':
description: Invalid content-type HTTP header
headers:
WP-CorrelationId:
schema:
type: string
description: Generated identifier for the request and response. When contacting support please include this.
example: 4c195ce9-3dbd-4bc8-9c94-3d3393842323
content:
application/json:
schema:
title: error415
type: object
required:
- errorName
- message
properties:
errorName:
type: string
description: A machine and human readable error type for clarity and semantic understanding of the error.
example: headerHasInvalidValue
message:
type: string
description: A human readable message giving a corrective action for the error. *This is not for machine consumption*
example: A valid header must be provided.
headerName:
type: string
description: If the header is missing or does not contain an expected value, this field will be populated with the incorrect header name.
example: Content-Type
schemas:
checkedAt:
type: string
example: '2024-03-26T19:38:29.543195Z'
pattern: ^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})\.(\d{3,})Z$
verifications_ach:
required:
- merchant
- paymentInstrument
- transactionReference
type: object
properties:
merchant:
required:
- entity
type: object
properties:
entity:
type: string
description: Used to route the verification request in Access Worldpay, created as part of on-boarding.
paymentInstrument:
$ref: '#/components/schemas/bankAccountUS'
transactionReference:
type: string
firstName:
type: string
description: given name
maxLength: 85
minLength: 1
example: Alice
verifications_ach_201_response:
required:
- outcome
- checkedAt
- _links
type: object
properties:
outcome:
type: string
enum:
- verified
- not verified
description: This field indicates the status of the transaction.
description:
type: string
checkedAt:
$ref: '#/components/schemas/checkedAt'
postalCode:
type: string
description: Recipient's postal code.
maxLength: 15
minLength: 1
example: NW1 6XE
validationError:
type: object
required:
- errorName
- message
properties:
errorName:
type: string
description: A machine and human readable error type for clarity and semantic understanding of the error.
enum:
- fieldIsMissing
- fieldMustBeString
- fieldMustBeNumber
- fieldMustBeInteger
- fieldMustBeBoolean
- fieldMustBeObject
- fieldMustBeArray
- fieldIsNull
- fieldIsEmpty
- fieldHasInvalidValue
- fieldIsNotAllowed
- numberIsTooSmall
- integerIsTooLarge
- stringIsTooShort
- stringIsTooLong
- stringFailedRegexCheck
- panFailedLuhnCheck
- dateHasInvalidFormat
example: fieldIsNotAllowed
message:
type: string
description: A human readable message giving a corrective action for the error. *This is not for machine consumption*
example: Field at path is not allowed.
jsonPath:
type: string
description: This field represents the JSON path of the element within the request body associated with the error.
example: $.transactionRef
lastName:
type: string
description: surname
maxLength: 85
minLength: 1
example: Holmes
bankAccountUS:
required:
- type
- accountType
- accountNumber
- routingNumber
- billToAddress
type: object
properties:
type:
type: string
description: The type of payment instrument, must be "bankAccountUS" for ACH.
accountType:
type: string
enum:
- checking
- savings
- corporate
- corporateSavings
description: 'Possible values: checking, savings, corporate, corporateSavings.'
accountNumber:
type: string
description: Account number of direct debit account.
routingNumber:
type: string
description: Routing number of direct debit account.
companyName:
type: string
description: Company name if a corporate account.
billToAddress:
required:
- firstName
- lastName
- address1
- city
- region
- postalCode
- countryCode
- telephoneNumber
type: object
properties:
firstName:
$ref: '#/components/schemas/firstName'
lastName:
$ref: '#/components/schemas/lastName'
address1:
type: string
description: 'An identifier for the address1 being used. If included you must send at least: [address1, city, countyCode, postalCode].'
address2:
type: string
description: An identifier for the address2 being used.
address3:
type: string
description: An identifier for the address3 being used.
city:
type: string
description: An identifier for the city being used.
region:
type: string
description: An identifier for the region being used.
postalCode:
$ref: '#/components/schemas/postalCode'
countryCode:
type: string
description: The alpha-2 ISO-3166 country code of the address.
example: GB
pattern: ^[A-Z]{2}$
telephoneNumber:
type: string
description: An identifier for the telephoneNumber being used.
examples:
headerError:
value:
errorName: headerIsMissing
message: A valid header must be provided.
headerName: Content-Type
validationError:
value:
errorName: bodyDoesNotMatchSchema
message: A JSON body matching the expected schema must be provided.
validationErrors:
- errorName: fieldIsNotAllowed
message: Field at path is not allowed.
jsonPath: $.transactionRef
parameters:
achAcceptHeader:
name: Accept
in: header
required: true
schema:
type: string
example: application/vnd.worldpay.achVerifications-v6+json
achContentTypeHeader:
name: Content-Type
in: header
required: true
schema:
type: string
example: application/vnd.worldpay.achVerifications-v6+json
securitySchemes:
BasicAuth:
type: http
scheme: basic