Verifone Ecom Payments API
The Ecom Payments API from Verifone — 10 operation(s) for ecom payments.
The Ecom Payments API from Verifone — 10 operation(s) for ecom payments.
openapi: 3.0.1
info:
title: 3D Secure 3DS Authentication Ecom Payments 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: Ecom Payments
paths:
/api/v2/transactions/card:
post:
operationId: saleTransaction
summary: Initiate a payment
description: "Initiate a card payment or card verification request when amount is set to 0 (zero).\n\n <b>Transactions business models</b>\n\n| Business model | Transaction type | Shopper Interaction | Stored Credential Contract | Stored Credential Processing Model |\n| -------------- | ---------------- | ------------------- | ------------------ | -------------------------- |\n| Online purchase with shopper present | One-off online purchase without storing card payment details for future use.| `ECOMMERCE` | | |\n| Online purchase with shopper present | Online purchase where shopper agrees to store card details for future use. This can be a zero-value transaction account verification.| `ECOMMERCE` | | `CREDENTIAL_ON_FILE` |\n| Online purchase with shopper present | Online purchase where shopper uses previously stored card payment details.| `ECOMMERCE` | `ONE_CLICK` | `CREDENTIAL_ON_FILE` |\n| Subscriptions | Initial transaction to sign up for a subscription.| `ECOMMERCE` | | `RECURRING` |\n| Subscriptions | Subsequent subscription charge. | `ECOMMERCE` | `MERCHANT_INITIATED` | `RECURRING` |\n| Non-fixed in time contracts (such as auto account top-ups) | Initial transaction to sign up for the terms and conditions of later subsequent charges. | `ECOMMERCE` | | `UNSCHEDULED_CREDENTIAL_ON_FILE` |\n| Non-fixed in time contracts (such as auto account top-ups) | Subsequent charges as described in the initial terms and conditions during the sign-up transaction. | `ECOMMERCE` | `MERCHANT_INITIATED` | `UNSCHEDULED_CREDENTIAL_ON_FILE` |"
parameters:
- name: x-vfi-api-idempotencykey
required: false
in: header
schema:
type: string
description: A value you specify that uniquely identifies this transaction. This must be used to trigger a reversal if there is a timeout.
format: uuid
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/EncryptedCardPaymentRequest'
- $ref: '#/components/schemas/TokenPaymentRequest'
responses:
'201':
description: Ecommerce Payment Result
content:
application/json:
schema:
$ref: '#/components/schemas/EcomResponseCard'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestV2Docs'
'401':
description: Unauthorised
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedV2Docs'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenV2Docs'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundV2Docs'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalErrorV2Docs'
tags:
- Ecom Payments
/api/v2/transactions/wallet:
post:
operationId: walletTransaction
summary: Initiate a wallet payment using Google Pay or Apple Pay
description: "Initiate a card payment or card verification request when amount is set to 0 (zero).\n\n <b>Transactions business models</b>\n\n| Business model | Transaction type | Shopper Interaction | Stored Credential Contract | Token Preference or Reference | Stored Credential Request Type | Stored Credential Processing Model |\n| ------------------- | ---------------- | ------------------- | ------------------ | ------------------ | ---------------- | -------------------------- |\n| Online purchase with shopper present | One-off online purchase without storing card payment details for future use.| `ECOMMERCE` | | | | |\n| Online purchase with shopper present | Online purchase where shopper agrees to store card details for future use. This can be a zero-value transaction account verification.| `ECOMMERCE` | | `REUSE` | `SIGNUP` | `NONE` |\n| Subscriptions | Initial transaction to sign up for a subscription.| `ECOMMERCE` | | `REUSE` or `reuse_token` | `SIGNUP` | `RECURRING` |\n| Non-fixed in time contracts (such as auto account top-ups) | Initial transaction to sign up for the terms and conditions of later subsequent charges. | `ECOMMERCE` | | `REUSE` | `SIGNUP` | `NONE` |\n<p><i>Note</i>: To initiate a transaction with reference to previously stored credentials ( `CHARGE` ) use ``/v2/transactions/card`` endpoint instead.</p>"
parameters:
- name: x-vfi-api-idempotencykey
required: false
in: header
schema:
type: string
description: A value you specify that uniquely identifies this transaction. This must be used to trigger a reversal if there is a timeout.
format: uuid
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateWalletDto'
responses:
'201':
description: Wallet Result
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/VerificationAdvice'
- $ref: '#/components/schemas/EcomResponseCard'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestV2Docs'
'401':
description: Unauthorised
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedV2Docs'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenV2Docs'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundV2Docs'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalErrorV2Docs'
tags:
- Ecom Payments
/api/v2/apple-pay/validation:
post:
operationId: validationUrl
summary: Start payment session for Apple Pay wallet transactions
description: Create a merchant payment session
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ApplePayMerchantValidationDto'
responses:
'201':
description: The Apple Pay Validation Response.
content:
application/json:
schema:
type: object
description: object (Apple Pay opaque session object)
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestV2Docs'
'401':
description: Unauthorised
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedV2Docs'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenV2Docs'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundV2Docs'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalErrorV2Docs'
tags:
- Ecom Payments
/api/v2/transactions/vipps:
post:
tags:
- Ecom Payments
summary: Initiate a Vipps payment
description: Initiate a Vipps payment.
operationId: vippsTransaction
parameters:
- name: x-vfi-api-idempotencykey
required: false
in: header
schema:
type: string
description: A value you specify that uniquely identifies this transaction. This must be used to trigger a reversal if there is a timeout.
format: uuid
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/vippsPaymentInitiationRequest'
responses:
'201':
description: The Vipps Payment Initiation Response.
content:
application/json:
schema:
$ref: '#/components/schemas/vippsPaymentInitiationResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestV2Docs'
'401':
description: Unauthorised Request
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedV2Docs'
'403':
description: Forbidden Request
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenV2Docs'
'404':
description: Not Found Request
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundV2Docs'
'500':
description: Internal Error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalErrorV2Docs'
/api/v2/transactions/mobilepay:
post:
tags:
- Ecom Payments
summary: Initiate a MobilePay payment
description: Initiate a MobilePay payment.
operationId: mobilePayTransaction
parameters:
- name: x-vfi-api-idempotencykey
required: false
in: header
schema:
type: string
description: A value you specify that uniquely identifies this transaction. This must be used to trigger a reversal if there is a timeout.
format: uuid
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/mobilePayPaymentInitiationRequest'
responses:
'201':
description: The MobilePay Payment Initiation Response.
content:
application/json:
schema:
$ref: '#/components/schemas/mobilePayPaymentInitiationResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestV2Docs'
'401':
description: Unauthorised Request
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedV2Docs'
'403':
description: Forbidden Request
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenV2Docs'
'404':
description: Not Found Request
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundV2Docs'
'500':
description: Internal Error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalErrorV2Docs'
/api/v2/transactions/klarna:
post:
tags:
- Ecom Payments
summary: Initiate a Klarna payment.
description: Initiate a Klarna payment.
operationId: klarnaInitTransaction
parameters:
- name: x-vfi-api-idempotencykey
required: false
in: header
schema:
type: string
description: A value you specify that uniquely identifies this transaction. This must be used to trigger a reversal if there is a timeout.
format: uuid
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/klarnaPaymentInitiationRequest'
responses:
'201':
description: Klarna Initiate Payment Result.
content:
application/json:
schema:
$ref: '#/components/schemas/klarnaPaymentInitiationResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestV2Docs'
'401':
description: Unauthorised Request
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedV2Docs'
'403':
description: Forbidden Request
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenV2Docs'
'404':
description: Not Found Request
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundV2Docs'
'500':
description: Internal Error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalErrorV2Docs'
/api/v2/transactions/swish:
post:
tags:
- Ecom Payments
summary: Initiate a Swish payment
description: Initiate a Swish payment.
operationId: swishTransaction
parameters:
- name: x-vfi-api-idempotencykey
required: false
in: header
schema:
type: string
description: A value you specify that uniquely identifies this transaction. This must be used to trigger a reversal if there is a timeout.
format: uuid
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/swishPaymentInitiationRequest'
responses:
'201':
description: The Swish Payment Initiation Response.
content:
application/json:
schema:
$ref: '#/components/schemas/swishPaymentInitiationResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestV2Docs'
'401':
description: Unauthorised Request
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedV2Docs'
'403':
description: Forbidden Request
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenV2Docs'
'404':
description: Not Found Request
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundV2Docs'
'500':
description: Internal Error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalErrorV2Docs'
/api/v2/transactions/op-online-payment:
post:
tags:
- Ecom Payments
summary: Initiate a OP Online payment
description: Initiate a OP Online payment.
operationId: opOnlinePaymentTransaction
parameters:
- name: x-vfi-api-idempotencykey
required: false
in: header
schema:
type: string
description: A value you specify that uniquely identifies this transaction. This must be used to trigger a reversal if there is a timeout.
format: uuid
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/opOnlinePaymentInitiationRequest'
responses:
'201':
description: The OP Online Payment Initiation Response.
content:
application/json:
schema:
$ref: '#/components/schemas/opOnlinePaymentInitiationResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestV2Docs'
'401':
description: Unauthorised Request
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedV2Docs'
'403':
description: Forbidden Request
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenV2Docs'
'404':
description: Not Found Request
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundV2Docs'
'500':
description: Internal Error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalErrorV2Docs'
/api/v2/get-op-banks:
get:
tags:
- Ecom Payments
summary: Get a list of Banks supported by OP Online Payment
description: Get a list of Banks supported by OP Online Payment.
operationId: getOpBanks
responses:
'201':
description: The OP Online Payment list of Banks Response.
content:
application/json:
schema:
$ref: '#/components/schemas/opOnlinePaymentGetBanksResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestV2Docs'
'401':
description: Unauthorised Request
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedV2Docs'
'403':
description: Forbidden Request
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenV2Docs'
'404':
description: Not Found Request
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundV2Docs'
'500':
description: Internal Error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalErrorV2Docs'
/api/v2/transactions/affirm:
post:
tags:
- Ecom Payments
summary: Initiate a Affirm payment.
description: With Affirm, you will never owe more than you agree to up front. Instead, you’ll always get a flexible, transparent, and convenient way to pay over time.
operationId: affirmInitTransaction
parameters:
- name: x-vfi-api-idempotencykey
required: true
in: header
schema:
type: string
description: A value you specify that uniquely identifies this transaction. This must be used to trigger a reversal if there is a timeout.
format: uuid
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/affirmPaymentInitiationRequest'
responses:
'201':
description: The Affirm Initiation Response.
content:
application/json:
schema:
$ref: '#/components/schemas/affirmPaymentInitiationResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequestV2Docs'
'401':
description: Unauthorised Request
content:
application/json:
schema:
$ref: '#/components/schemas/UnauthorizedV2Docs'
'403':
description: Forbidden Request
content:
application/json:
schema:
$ref: '#/components/schemas/ForbiddenV2Docs'
'404':
description: Not Found Request
content:
application/json:
schema:
$ref: '#/components/schemas/NotFoundV2Docs'
'500':
description: Internal Error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalErrorV2Docs'
components:
schemas:
ecomPaymentResponse_issuer_instalment_result:
type: object
properties:
instalment_program:
type: string
description: The name of special program designated by scheme or issuer.
enum:
- MCINST
payment_option:
type: string
description: Available payment mode allowed by issuer for the transaction.
enum:
- FULL
- FULL_OR_INSTALMENT
- INSTALMENT
payment_plan_option:
type: array
description: The issuer may offer more than one instalment options within certain instalment programs.
items:
$ref: '#/components/schemas/paymentPlanOption'
number_of_instalments:
minimum: 0
type: integer
description: The number of individual parts that the total amount should be paid in.
min_number_of_instalments:
type: integer
description: The minimal number of individual parts that the total amount could be paid in, if choice is available.
max_number_of_instalments:
type: integer
description: The maximal number of individual parts that the total amount could be paid in, if choice is available.
interest_rate:
type: number
description: The interest rate.
format: float
annual_percentage_rate:
type: number
description: The interest rate expressed in Annual Percentage Rate.
format: float
handling_fee:
$ref: '#/components/schemas/amountDecimal'
down_payment_amount:
$ref: '#/components/schemas/amountDecimal'
instalment_amount:
$ref: '#/components/schemas/amountDecimal'
total_amount_with_cost:
$ref: '#/components/schemas/amountDecimal'
additionalProperties: false
description: Issuer-managed instalment response. May be used to inform on supported instalment options for the transaction in specific programs (e.g., Mastercard Instalment Payment Service).
LineItem:
title: Ecommerce basket line items
required:
- name
- quantity
- tax_rate
- total_amount
- total_tax_amount
type: object
properties:
image_url:
type: string
description: Image URL for the line item
name:
maxLength: 255
type: string
description: Descriptive name of the order line item
quantity:
type: integer
description: Quantity of the order line item
unit_price:
type: integer
description: Unit Price is charged without a decimal place e.g. $1.5 = 150. Currencies can have different decimals/exponentials, see Currencies Section for more details.
unit_price_tax:
type: integer
description: Unit Price Tax is charged without a decimal place e.g. $1.5 = 150. Currencies can have different decimals/exponentials, see Currencies Section for more details.
tax_rate:
type: number
description: Item Tax (VAT) Rate.
format: float
discount_amount:
type: integer
description: Discount inclusive of tax. This is charged without a decimal place e.g. $1.5 = 150. Currencies can have different decimals/exponentials, see Currencies Section for more details.
total_tax_amount:
type: integer
description: Total tax amount is charged without a decimal place e.g. $1.5 = 150. Currencies can have different decimals/exponentials, see Currencies Section for more details.
total_amount:
type: integer
description: Total Amount is charged without a decimal place e.g. $1.5 = 150. Currencies can have different decimals/exponentials, see Currencies Section for more details.
sku:
maxLength: 127
type: string
description: The stock keeping unit (SKU) for the item.
description:
maxLength: 127
type: string
description: The detailed item description.
category:
type: string
description: 'The item category type. <br /> The possible values are: <br /> * DIGITAL_GOODS - Goods that are stored, delivered, and used in their electronic format. This value is not currently supported for API callers that leverage the [PayPal for Commerce Platform](https://www.paypal.com/us/webapps/mpp/commerce-platform) product. <br /> * DIGITAL_GOODS - A tangible item that can be shipped with proof of delivery. <br />'
enum:
- DIGITAL_GOODS
- PHYSICAL_GOODS
description: The description of item(s) that was included in a transaction or purchase.
ThreeDSecure:
type: object
properties:
eci_flag:
type: string
title: Electronic Commerce Indicator.
enum:
- '00'
- '01'
- '02'
- '03'
- '04'
- '05'
- '06'
- '07'
enrolled:
type: string
title: The enrolment response status of Authentication eligibility from the Directory Server.
description: "Possible Values:\n Y - Yes, Bank is participating in 3-D Secure protocol and will return the ACSUrl.\n N - No, Bank is not participating in 3-D Secure protocol.\n U - Unavailable, the DS or ACS is not available for authentication at the time of the request.\n B - Bypass, merchant authentication rule is triggered to bypass authentication in this use case.\n NOTE: If the Enrolled value is NOT Y, then the Consumer is NOT eligible for Authentication."
cavv:
type: string
maxLength: 48
title: Cardholder Authentication Verification Value (CAVV)
description: Base64-encoded values of 28 or 32 characters. Hex-encoded values of 40 or 48 characters.
cavv_algorithm:
type: string
description: Indicates the algorithm used to generate the CAVV value.Please refer to the integration guide for information on its usage.
pares_status:
type: string
title: Authentication response code.
description: "Possible Values:\n Y - Successful Authentication.\n U - Unable to Complete Authentication\n A - Successful Attempts Transaction."
xid:
type: string
description: Transaction identifier resulting from authentication processing.Please refer to the integration guide for information on its usage.
ds_transaction_id:
type: string
title: The unique transaction identifier
description: The unique transaction identifier assigned by the Directory Server. Supported for 3D Secure v2 only.
threeds_version:
type: string
title: The 3DS version used to process the transaction.
enum:
- 1.0.2
- 2.1.0
- 2.2.0
affirmPaymentInitiationResponse:
title: Affirm Initiate Payment Result
type: object
properties:
id:
title: Transaction ID
type: string
description: The ID of the transaction.
format: uuid-flexible
checkout_id:
title: Checkout Id
description: A unique identifier representing the Payment Host checkout ID. This value is optional and available only in `MODAL` mode.
type: string
public_api_key:
description: The merchants public api key. This value is optional and available only in `MODAL` mode.
type: string
payment_url:
description: The payment URL can be used to redirect to transfer the money.
type: string
format: uri
amount:
type: integer
description: Amount is charged without a decimal place e.g. $1.5 = 150. Currencies can have different decimals/exponentials, see Currencies Section for more details. For Account Verification transactions, provide 0 as value for this field.
created_at:
type: string
format: date-time
description: The time at which the transaction was created.
customer:
description: The ID of a customer
type: string
merchant_reference:
type: string
description: A reference specified by the merchant to identify the transaction.
maxLength: 50
processor:
description: The name of the processor used for this transaction
type: string
default: AFFIRM
payment_product:
description: The payment product corresponding to this transaction
type: string
default: AFFIRM
payment_product_type:
$ref: '#/components/schemas/PaymentProductType'
status:
type: string
description: The outcome of the payment request.
title: Ecommerce Transaction Status
enum:
- INITIATED
- AUTHORIZED
- AUTHORIZATION_VOIDED
- CANCELLED
- CUSTOMER_ACCEPTED
- REFUNDED
- FAILED
- PENDING
- DECLINED
- SETTLEMENT_CANCELLED
- SETTLEMENT_REQUESTED
- SETTLEMENT_SUBMITTED
- SETTLEMENT_COMPLETED
- SETTLEMENT_PARTIAL
- SETTLEMENT_DECLINED
- VOIDED
- UNKNOWN
status_reason:
type: string
description: Message provided by the 3rd party service as additional information, when the transaction does not succeed.
geo_location:
type: array
description: The latitude / longitude resolved from the customer's ip address.
items:
type: number
city:
type: string
description: The city resolved from the customer's ip address.
country_code:
title: Country Code
type: string
description: The [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) country code.<blockquote><strong>Note:</strong> The country code for Great Britain is <code>GB</code> and not <code>UK</code> as is used in that country's top-level domain names.</blockquote>.
TokenPreferenceDto:
type: object
properties:
token_scope:
type: string
title: Token Scope
description: The token scope under which this token was created.
format: uuid
reuse_token_type:
title: Reuse Token Type
description: 'The type of Reuse Token. This indicates if the reuse token is an internal Verifone type or an external Third-Party type.<br>
**Note**: `reuse_token_details` is **mandatory** when `reuse_token_type` is set to `TAVE` or `CHASE`.
'
type: string
enum:
- CHASE
- INTERNAL
# --- truncated at 32 KB (187 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/verifone/refs/heads/main/openapi/verifone-ecom-payments-api-openapi.yml