Verifone Customer API
Operations for creating, retrieving, updating, and deleting customer records.
Operations for creating, retrieving, updating, and deleting customer records.
openapi: 3.0.1
info:
title: 3D Secure 3DS Authentication Customer API
version: 3.43.0
description: Operations for listing and retrieving 3DS authentication records. Use these endpoints to query historical authentication results filtered by amount, currency, card, status, and more.
servers:
- url: https://emea.gsc.verifone.cloud/oidc/3ds-service
description: EMEA Production
- url: https://us.gsc.verifone.cloud/oidc/3ds-service
description: Americas Production
- url: https://nz.gsc.verifone.cloud/oidc/3ds-service
description: New Zealand Production
- url: https://cst.test-gsc.vfims.com/oidc/3ds-service
description: Global Sandbox
- url: https://uscst-gb.gsc.vficloud.net/oidc/3ds-service
description: Americas Sandbox
security:
- BearerAuth: []
- BasicAuth: []
tags:
- name: Customer
description: Operations for creating, retrieving, updating, and deleting customer records.
paths:
/v2/customer:
get:
tags:
- Customer
summary: List Customers
operationId: getV2Customer
parameters:
- name: search
in: query
required: true
description: "A filter query in [RSQL format](https://aboullaite.me/rsql/) to retrieve customers. The returned\ncustomers are limited to those that can be retrieved by the user.\n\n**Filterable fields:**\n\n| Criteria | Type | Operators |\n|---|---|---|\n| billing.address_1 | string | ==, !=, =in=, =out=, =regex= |\n| billing.address_2 | string | ==, !=, =in=, =out=, =regex= |\n| billing.address_3 | string | ==, !=, =in=, =out=, =regex= |\n| billing.city | string | ==, !=, =in=, =out=, =regex= |\n| billing.country_code | string | ==, !=, =in=, =out=, =regex= |\n| billing.first_name | string | ==, !=, =in=, =out=, =regex= |\n| billing.middle_name | string | ==, !=, =in=, =out=, =regex= |\n| billing.last_name | string | ==, !=, =in=, =out=, =regex= |\n| billing.phone | string | ==, !=, =in=, =out=, =regex= |\n| billing.postal_code | string | ==, !=, =in=, =out=, =regex= |\n| billing.state | string | ==, !=, =in=, =out=, =regex= |\n| company_name | string | ==, !=, =in=, =out=, =regex= |\n| company_registration_number | string | ==, !=, =in=, =out=, =regex= |\n| email_address | string | ==, !=, =in=, =out=, =regex= |\n| entity_id | string | ==, !=, =in=, =out=, =regex= |\n| id | string | ==, !=, =in=, =out=, =regex= |\n| phone_number | string | ==, !=, =in=, =out=, =regex= |\n| shipping.address_1 | string | ==, !=, =in=, =out=, =regex= |\n| shipping.address_2 | string | ==, !=, =in=, =out=, =regex= |\n| shipping.address_3 | string | ==, !=, =in=, =out=, =regex= |\n| shipping.city | string | ==, !=, =in=, =out=, =regex= |\n| shipping.country_code | string | ==, !=, =in=, =out=, =regex= |\n| shipping.first_name | string | ==, !=, =in=, =out=, =regex= |\n| shipping.middle_name | string | ==, !=, =in=, =out=, =regex= |\n| shipping.last_name | string | ==, !=, =in=, =out=, =regex= |\n| shipping.phone | number | ==, !=, =in=, =out=, =gt=, =ge=, =lt=, =le= |\n| shipping.postal_code | string | ==, !=, =in=, =out=, =regex= |\n| shipping.state | string | ==, !=, =in=, =out=, =regex= |\n| title | string | ==, !=, =in=, =out=, =regex= |\n| work_phone | string | ==, !=, =in=, =out=, =regex= |\n| tax.identifier | string | ==, !=, =in=, =out=, =regex= |\n| created_at | date | ==, !=, =in=, =out=, =gt=, =ge=, =lt=, =le= |\n| updated_at | date | ==, !=, =in=, =out=, =gt=, =ge=, =lt=, =le= |\n| language | string | ==, !=, =in=, =out=, =regex= |\n\n**Operators:**\n\n| Operator | Description |\n|---|---|\n| == | equal |\n| != | not equal |\n| =lt= | less than |\n| =le= | less than and equal to |\n| =gt= | greater than |\n| =ge= | greater than and equal to |\n| =regex= | pattern matching |\n| =in= | multiple arguments search |\n| =out= | exclude |\n| **;** | Logical AND |\n| **,** | Logical OR |\n\n**Note:** Logical AND (`;`) has higher precedence than Logical OR (`,`). Use parentheses `()` to\noverride operator precedence.\n\n**Examples:**\n\n /v2/customer?search=id==123&order_by=ASC&order_criteria=email_address&page_size=1&page_number=2\n\n /v2/customer?search=id==123435&order_by=DESC&order_criteria=billing.address_1&page_size=10&page_number=1\n\n /v2/customer?search=id==dg373&order_by=ASC&order_criteria=company_name&page_size=1&page_number=2"
schema:
type: string
- name: order_criteria
in: query
description: 'The field to order results by. If not specified, results are ordered by created date.
Allowed values: `billing.address_1`, `billing.address_2`, `billing.address_3`, `billing.city`,
`billing.country_code`, `billing.first_name`, `billing.middle_name`, `billing.last_name`,
`billing.phone`, `billing.postal_code`, `billing.state`, `company_name`,
`company_registration_number`, `email_address`, `entity_id`, `id`, `phone_number`,
`shipping.address_1`, `shipping.address_2`, `shipping.address_3`, `shipping.city`,
`shipping.country_code`, `shipping.first_name`, `shipping.last_name`, `shipping.phone`,
`shipping.postal_code`, `shipping.state`, `title`, `work_phone`, `tax.identifier`, `created_at`'
schema:
type: string
- name: order_by
in: query
description: The sort direction. Defaults to `DESC` if not specified.
schema:
type: string
enum:
- ASC
- DESC
- name: page_number
in: query
description: Page number to retrieve. Defaults to `1` if not specified.
schema:
minimum: 1
type: integer
- name: page_size
in: query
description: Number of results per page. Defaults to `50` if not specified.
schema:
minimum: 1
type: integer
responses:
'200':
description: Successful
content:
application/json:
schema:
$ref: '#/components/schemas/CustomerListResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
post:
tags:
- Customer
summary: Create Customer
operationId: postV2Customer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CustomerRequest'
required: true
responses:
'200':
description: Successful
content:
application/json:
schema:
$ref: '#/components/schemas/CustomerResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/v2/customer/{customerId}:
get:
tags:
- Customer
summary: Get Customer
operationId: getV2CustomerById
parameters:
- name: customerId
in: path
description: Customer UUID
required: true
schema:
type: string
format: uuid
responses:
'200':
description: Successful
content:
application/json:
schema:
$ref: '#/components/schemas/CustomerResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
post:
tags:
- Customer
summary: Update Customer
operationId: postV2CustomerById
parameters:
- name: customerId
in: path
description: Customer UUID
required: true
schema:
type: string
format: uuid
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CustomerRequest'
required: true
responses:
'200':
description: Successful
content:
application/json:
schema:
$ref: '#/components/schemas/CustomerResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
delete:
tags:
- Customer
summary: Delete Customer
operationId: deleteV2CustomerById
parameters:
- name: customerId
in: path
description: Customer UUID
required: true
schema:
type: string
format: uuid
responses:
'204':
description: Customer successfully deleted
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
components:
schemas:
Tax:
type: object
properties:
identifier:
pattern: ^[0-9]+$
type: string
maxLength: 9
description: 'An optional identifier of the document recipient:
- Personal ID (for individuals)
- Tax identification number (for businesses)'
Billing:
type: object
properties:
address_1:
maxLength: 40
type: string
description: 'Customer''s primary billing address information.
**Note:** Required for 3DS. Please refer to the 3D Secure API specification for format requirements.'
address_2:
maxLength: 40
type: string
description: Customer's secondary billing address information.
address_3:
maxLength: 40
type: string
description: Customer's third billing address information.
city:
maxLength: 28
type: string
description: 'Customer''s city on their billing address.
**Note:** Required for 3DS. Please refer to the 3D Secure API specification for format requirements.'
country_code:
type: string
description: 'Customer''s alpha-2 ISO 3166 country code (e.g. `US` for United States).
**Note:** Required for 3DS. Please refer to the 3D Secure API specification for format requirements.'
first_name:
maxLength: 22
type: string
description: 'Customer''s first name. **Required** when `company_name` is not provided.
**Note:** Required for 3DS. Please refer to the 3D Secure API specification for format requirements.'
middle_name:
maxLength: 22
type: string
description: Customer's middle name.
last_name:
maxLength: 22
type: string
description: 'Customer''s last name. **Required** when `company_name` is not provided.
**Note:** Required for 3DS. Please refer to the 3D Secure API specification for format requirements.'
phone:
maxLength: 25
pattern: ^[0-9\s\-+().-]+$
type: string
description: Customer's phone number for the billing address.
postal_code:
maxLength: 10
type: string
description: 'Customer''s postal code for their billing address.
**Note:** Required for 3DS unless a market or regional mandate restricts sending this information.'
state:
maxLength: 35
type: string
description: Customer's state or province for their billing address (e.g. `OH` for Ohio, `TX` for Texas).
CustomerRequest:
required:
- entity_id
type: object
properties:
billing:
$ref: '#/components/schemas/Billing'
company_name:
maxLength: 100
type: string
description: Company name of the customer. **Required** when `billing.first_name` and `billing.last_name` are not provided.
company_registration_number:
maxLength: 24
type: string
description: Unique identifier of the company recognised by the government. Known as CoC (Chamber of Commerce) number in some countries.
email_address:
maxLength: 255
type: string
format: email
description: 'Consumer''s email address.
**Field required for:** Klarna, PayPal
**Note:** Required for 3DS. Please refer to the 3D Secure API specification for format requirements.'
entity_id:
type: string
description: Entity ID on which the customer is created. The Entity ID can be found at the organisation level as Organisation ID (`Administration > Organizations > [Organization] > Organisation ID`).
phone_number:
maxLength: 25
pattern: ^[0-9\s\-+().-]+$
type: string
description: Cardholder's phone number.
shipping:
$ref: '#/components/schemas/Shipping'
title:
pattern: ^[a-zA-Z\-\s.]+$
maxLength: 120
type: string
description: Customer's title (e.g. `Mr`, `Mrs`, `Dr`).
work_phone:
maxLength: 25
pattern: ^[0-9\s\-+().-]+$
type: string
description: Consumer's work phone number.
tax:
$ref: '#/components/schemas/Tax'
language:
type: string
description: Customer language preference for Invoice documents. See [Localisation](https://docs.verifone.com/online-payments/checkout/localization) for details.
ErrorResponse:
type: object
properties:
code:
type: integer
description: A 3-digit code that uniquely identifies the error.
details:
type: object
description: Additional error details.
message:
type: string
description: A human-readable description of the error.
timestamp:
type: integer
description: Unix timestamp of when the error occurred.
CustomerResponse:
required:
- created_at
- entity_id
- id
- updated_at
type: object
properties:
id:
type: string
format: uuid
description: Customer UUID.
billing:
$ref: '#/components/schemas/Billing'
company_name:
maxLength: 100
type: string
description: Company name of the customer. **Required** when `billing.first_name` and `billing.last_name` are not provided.
company_registration_number:
maxLength: 24
type: string
description: Unique identifier of the company recognised by the government. Known as CoC (Chamber of Commerce) number in some countries.
email_address:
maxLength: 255
type: string
format: email
description: 'Consumer''s email address.
**Note:** Required for 3DS. Please refer to the 3D Secure API specification for format requirements.'
entity_id:
type: string
description: Entity ID on which the customer is created.
phone_number:
maxLength: 25
pattern: ^[0-9\s\-+().-]+$
type: string
description: Cardholder's phone number.
shipping:
$ref: '#/components/schemas/Shipping'
title:
pattern: ^[a-zA-Z\-\s.]+$
maxLength: 120
type: string
description: Customer's title (e.g. `Mr`, `Mrs`, `Dr`).
work_phone:
maxLength: 25
pattern: ^[0-9\s\-+().-]+$
type: string
description: Consumer's work phone number.
tax:
$ref: '#/components/schemas/Tax'
language:
type: string
description: Customer language preference for Invoice documents. See [Localisation](https://docs.verifone.com/online-payments/checkout/localization) for details.
created_at:
type: string
format: date-time
description: Timestamp when this customer was created.
updated_at:
type: string
format: date-time
description: Timestamp when this customer was last updated.
Shipping:
type: object
properties:
address_1:
maxLength: 40
type: string
description: 'Consumer''s primary shipping address information.
**Field required for:** Klarna, PayPal, Vipps, MobilePay, Google Pay, Apple Pay, Affirm, Swish'
address_2:
maxLength: 40
type: string
description: 'Consumer''s secondary shipping address information.
**Field required for:** PayPal'
address_3:
maxLength: 40
type: string
description: Consumer's third shipping address information.
city:
maxLength: 28
type: string
description: 'Consumer''s city on their shipping address.
**Field required for:** Klarna, PayPal, Vipps, MobilePay, Google Pay, Apple Pay, Affirm, Swish'
first_name:
maxLength: 22
type: string
description: 'Consumer''s first name.
**Field required for:** Klarna, Vipps, MobilePay'
middle_name:
maxLength: 22
type: string
description: Consumer's middle name.
last_name:
maxLength: 22
type: string
description: 'Consumer''s last name.
**Field required for:** Klarna, Vipps, MobilePay'
phone:
maxLength: 25
pattern: ^[0-9\s\-+().-]+$
type: string
description: 'Consumer''s phone number for the shipping address.
**Field required for:** Klarna, PayPal, Vipps, MobilePay'
country_code:
type: string
description: 'Consumer''s alpha-2 ISO 3166 country code (e.g. `US` for United States).
**Field required for:** Klarna, PayPal, Vipps, MobilePay, Google Pay, Apple Pay, Affirm, Swish'
postal_code:
maxLength: 10
type: string
description: 'Consumer''s postal code for their shipping address.
**Field required for:** Klarna, PayPal, Vipps, MobilePay, Google Pay, Apple Pay, Affirm, Swish'
state:
maxLength: 35
type: string
description: 'Consumer''s state or province for their shipping address (e.g. `OH` for Ohio, `TX` for Texas).
**Field required for:** Klarna, PayPal'
CustomerListResponse:
type: array
items:
$ref: '#/components/schemas/CustomerResponse'
securitySchemes:
BearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: 'JWT Bearer token. Pass as: `Authorization: Bearer <token>`. The JWT must be signed with your Verifone-provisioned private key and must include `entity_id`, `sub` (user_id), and `roles` claims.'
BasicAuth:
type: http
scheme: basic
description: 'HTTP Basic authentication. Pass base64-encoded `username:password` as: `Authorization: Basic <credentials>`.'