---
title: "Create Payment"
method: POST
path: "/payments"
tags: ["Payments"]
---

# Create Payment

`POST /payments`

This operation is used to initiate a Payment.

## Request body

- CreatePaymentRequest — Request body, used to initiate a payment
  - `idempotencyKey` string, required — A Unique Identifier that is required for handling idempotent requests. Note: Moneris encourages the use of UUID Version 4 in APIs as an idempotency key."
  - `orderId` string, nullable — Indicates the merchant-defined transaction identifer or order ID. Identifiers are unique for every Purchase, Pre-Authorization and Independent Refund transaction **Note**: No two transactions of these types may have the same order ID. Field only accepts alphanumerical characters, dashes and underscores.
  - `invoiceNumber` string, nullable — Submits a unique value to identify a transaction that is logged by Moneris Solutions.
  - `amount` object, required — This amount includes the surcharge fee.
    - `amount` integer, required — Amount
    - `currency` string, iso-4217, required — Provides the three letter currency code according the ISO 4217 standard. For a complete list of currency codes, visit: https://en.wikipedia.org/wiki/ISO_4217
  - `amountDetails` AmountDetails, nullable — Contains information pertaining to the subtotal, tip, and surcharge amounts of a Payment
    - `subTotalAmount` SubTotalAmount, nullable — Sub total amount for the transaction. Note: The value must be in cents. Therefore $10.59 must be sent as 1059.
      - `amount` integer, required — Amount
      - `currency` string, iso-4217, required — Provides the three letter currency code according the ISO 4217 standard. For a complete list of currency codes, visit: https://en.wikipedia.org/wiki/ISO_4217
    - `tipAmount` TipAmount, nullable — Total tip amount for the transaction. Note: The value must be in cents. Therefore $10.59 must be sent as 1059
      - `amount` integer, required — Amount
      - `currency` string, iso-4217, required — Provides the three letter currency code according the ISO 4217 standard. For a complete list of currency codes, visit: https://en.wikipedia.org/wiki/ISO_4217
    - `surchargeAmount` object, nullable — Monetary amount. Note: The value must be in cents. Therefore $10.59 must be sent as 1059.
      - `amount` integer, required — Amount
      - `currency` string, iso-4217, required — Provides the three letter currency code according the ISO 4217 standard. For a complete list of currency codes, visit: https://en.wikipedia.org/wiki/ISO_4217
  - `convenienceFee` ConvenienceFee, nullable — Allows merchants to apply an additional charge to a customer's bill (with their consent) for the convenience of being able to pay for goods and services using an alternative payment channel.
    - `amount` Money, required — Monetary amount. Note: The value must be in cents. Therefore $10.59 must be sent as 1059.
      - `amount` integer, required — Amount
      - `currency` string, iso-4217, required — Provides the three letter currency code according the ISO 4217 standard. For a complete list of currency codes, visit: https://en.wikipedia.org/wiki/ISO_4217
  - `customerId` string, nullable — The unique identifier of the customer.
  - `customerReference` string, nullable — Unique Identification for the Customer. This can be an identifier generated from a merchant-defined identifier.
  - `paymentMethod` union, required — Used to collect payment data needed to execute the transaction. Can also be used to collect and save customer payment instruments on file.
    - object — Use existing unique payment method identifier.
      - `paymentMethodSource` 'PAYMENT_METHOD_ID' | 'CARD' | 'TEMPORARY_TOKEN' | 'PERMANENT_TOKEN' | 'APPLE_PAY_ENCRYPTED' | 'APPLE_PAY_DECRYPTED' | 'GOOGLE_PAY_ENCRYPTED' | 'GOOGLE_PAY_DECRYPTED', required — The source of Payment Method being used. It can be: - The Id of a Payment Method already created. - Permanent Token. - Temporary Token. - Card. - E-Wallet.
      - `paymentMethodId` string, required — Unique Identifier of the payment method.
      - `storePaymentMethod` 'DO_NOT_STORE' | 'CARDHOLDER_INITIATED' | 'MERCHANT_INITIATED' — Store this payment method created through this payment for future use. - DO_NOT_STORE: Payment method will not be stored. - CARDHOLDER_INITIATED: Payment method to be stored and can only re-used with cardholder's consent. Limited to store, pre-authorisation, and card validations." - MERCHANT_INITIATED: Payment method to be stored and can be reused without the cardholder's consent. For example, subscriptions.
      - `credentialOnFileInformation` object, nullable — Contains fields related to the Credential on File (CoF)
        - `paymentIndicator` 'UNSCHEDULED_CREDENTIAL_ON_FILE' | 'RECURRING' | 'MERCHANT_INITIATED' | 'VARIABLE_RECURRING' | 'CUSTOMER_INITIATED', required — Indicates the current or intended use of the credentials - **UNSCHEDULED_CREDENTIAL_ON_FILE**: unscheduled Credential on File (first transactions only) - **RECURRING**: recurring transaction - **MERCHANT_INITIATED**: unscheduled merchant-initiated transaction - **VARIABLE_RECURRING**: recurring variable payment transaction - **CUSTOMER_INITIATED**: unscheduled customer-initiated transaction
        - `paymentInformation` 'FIRST' | 'SUBSEQUENT', required — Describes whether the transaction is the first or subsequent in the series
        - `issuerId` string, nullable — Displays a unique identifier for the card holder's stored credentials. This information is returned from the card brand when processing a Credential on File transaction.
        - `originalAmount` OriginalAmount, nullable — Original amount for the first transaction in the series. Note: The value must be in cents. Therefore $10.59 must be sent as 1059
          - `amount` integer, required — Amount
          - `currency` string, iso-4217, required — Provides the three letter currency code according the ISO 4217 standard. For a complete list of currency codes, visit: https://en.wikipedia.org/wiki/ISO_4217
    - object — Payment Method details. Note: If defined, this will result in the creation of Payment Method as defined in the Payment Method API.
      - `card` Card, required — Card details
        - `cardNumber` string, required — Identifies the customer's credit or debit card number (Primary Account Number).
        - `expiryMonth` integer, required — Card expiration month. Format must be MM
        - `expiryYear` integer, required — Displays the card expiration year. Accepted format: YYYY
        - `cardSecurityCode` string, required — CVD value located on credit card. The CVD value (supplied by the cardholder) must only be passed to the payment gateway. Under no circumstances may it be stored for subsequent use or displayed as part of the receipt information.
      - `cardholderInformation` CardholderInformation, nullable — Information about the holder of the card.
        - `cardholderName` string, required — Cardholder name
        - `companyName` string, nullable — Identifies the associated company name
      - `contactDetails` ContactDetails, nullable — Contact details
        - `phoneNumber` string, nullable — Phone number.
        - `email` string, email, nullable — Contains the customer's email address. For standard email protocols, visit: https://www.rfc-editor.org/rfc/rfc5322
      - `billingAddress` object, nullable — The postal address including street, town/city, province, and postal code. Optionally an unit number can be provided.
        - `unitNumber` string, nullable — Unit number
        - `streetNumber` string, nullable — Street number
        - `streetName` string, nullable — Street name
        - `city` string, nullable — Identifies the city.
        - `province` string, iso-3166-2, nullable — Province or state ISO 3166-2 code
        - `postalCode` string, nullable — Postal or zip code
        - `country` string, iso-3166, nullable — Provides the two letter country code according the ISO 3166-1 alpha-2 standard. For a complete list of country codes, visit: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2.
      - `paymentMethodSource` 'PAYMENT_METHOD_ID' | 'CARD' | 'TEMPORARY_TOKEN' | 'PERMANENT_TOKEN' | 'APPLE_PAY_ENCRYPTED' | 'APPLE_PAY_DECRYPTED' | 'GOOGLE_PAY_ENCRYPTED' | 'GOOGLE_PAY_DECRYPTED', required — The source of Payment Method being used. It can be: - The Id of a Payment Method already created. - Permanent Token. - Temporary Token. - Card. - E-Wallet.
      - `customData` CustomData, nullable — Merchant can send custom meta data with the transaction in this object. Moneris will echo these values back in response.
      - `storePaymentMethod` 'DO_NOT_STORE' | 'CARDHOLDER_INITIATED' | 'MERCHANT_INITIATED' — Store this payment method created through this payment for future use. - DO_NOT_STORE: Payment method will not be stored. - CARDHOLDER_INITIATED: Payment method to be stored and can only re-used with cardholder's consent. Limited to store, pre-authorisation, and card validations." - MERCHANT_INITIATED: Payment method to be stored and can be reused without the cardholder's consent. For example, subscriptions.
      - `credentialOnFileInformation` object, nullable — Contains fields related to the Credential on File (CoF)
        - `paymentIndicator` 'UNSCHEDULED_CREDENTIAL_ON_FILE' | 'RECURRING' | 'MERCHANT_INITIATED' | 'VARIABLE_RECURRING' | 'CUSTOMER_INITIATED', required — Indicates the current or intended use of the credentials - **UNSCHEDULED_CREDENTIAL_ON_FILE**: unscheduled Credential on File (first transactions only) - **RECURRING**: recurring transaction - **MERCHANT_INITIATED**: unscheduled merchant-initiated transaction - **VARIABLE_RECURRING**: recurring variable payment transaction - **CUSTOMER_INITIATED**: unscheduled customer-initiated transaction
        - `paymentInformation` 'FIRST' | 'SUBSEQUENT', required — Describes whether the transaction is the first or subsequent in the series
        - `issuerId` string, nullable — Displays a unique identifier for the card holder's stored credentials. This information is returned from the card brand when processing a Credential on File transaction.
        - `originalAmount` OriginalAmount, nullable — Original amount for the first transaction in the series. Note: The value must be in cents. Therefore $10.59 must be sent as 1059
          - `amount` integer, required — Amount
          - `currency` string, iso-4217, required — Provides the three letter currency code according the ISO 4217 standard. For a complete list of currency codes, visit: https://en.wikipedia.org/wiki/ISO_4217
    - object — Payment Method details. Note: If defined, this will result in the creation of Payment Method as defined in the Payment Method API.
      - `temporaryToken` string, required — Created when a temporary token is created and returned. This acts as a unique profile identifier, and is a required value for temporary token transactions.
      - `cardholderInformation` CardholderInformation, nullable — Information about the holder of the card.
        - `cardholderName` string, required — Cardholder name
        - `companyName` string, nullable — Identifies the associated company name
      - `contactDetails` ContactDetails, nullable — Contact details
        - `phoneNumber` string, nullable — Phone number.
        - `email` string, email, nullable — Contains the customer's email address. For standard email protocols, visit: https://www.rfc-editor.org/rfc/rfc5322
      - `billingAddress` object, nullable — The postal address including street, town/city, province, and postal code. Optionally an unit number can be provided.
        - `unitNumber` string, nullable — Unit number
        - `streetNumber` string, nullable — Street number
        - `streetName` string, nullable — Street name
        - `city` string, nullable — Identifies the city.
        - `province` string, iso-3166-2, nullable — Province or state ISO 3166-2 code
        - `postalCode` string, nullable — Postal or zip code
        - `country` string, iso-3166, nullable — Provides the two letter country code according the ISO 3166-1 alpha-2 standard. For a complete list of country codes, visit: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2.
      - `paymentMethodSource` 'PAYMENT_METHOD_ID' | 'CARD' | 'TEMPORARY_TOKEN' | 'PERMANENT_TOKEN' | 'APPLE_PAY_ENCRYPTED' | 'APPLE_PAY_DECRYPTED' | 'GOOGLE_PAY_ENCRYPTED' | 'GOOGLE_PAY_DECRYPTED', required — The source of Payment Method being used. It can be: - The Id of a Payment Method already created. - Permanent Token. - Temporary Token. - Card. - E-Wallet.
      - `customData` CustomData, nullable — Merchant can send custom meta data with the transaction in this object. Moneris will echo these values back in response.
      - `storePaymentMethod` 'DO_NOT_STORE' | 'CARDHOLDER_INITIATED' | 'MERCHANT_INITIATED' — Store this payment method created through this payment for future use. - DO_NOT_STORE: Payment method will not be stored. - CARDHOLDER_INITIATED: Payment method to be stored and can only re-used with cardholder's consent. Limited to store, pre-authorisation, and card validations." - MERCHANT_INITIATED: Payment method to be stored and can be reused without the cardholder's consent. For example, subscriptions.
      - `credentialOnFileInformation` object, nullable — Contains fields related to the Credential on File (CoF)
        - `paymentIndicator` 'UNSCHEDULED_CREDENTIAL_ON_FILE' | 'RECURRING' | 'MERCHANT_INITIATED' | 'VARIABLE_RECURRING' | 'CUSTOMER_INITIATED', required — Indicates the current or intended use of the credentials - **UNSCHEDULED_CREDENTIAL_ON_FILE**: unscheduled Credential on File (first transactions only) - **RECURRING**: recurring transaction - **MERCHANT_INITIATED**: unscheduled merchant-initiated transaction - **VARIABLE_RECURRING**: recurring variable payment transaction - **CUSTOMER_INITIATED**: unscheduled customer-initiated transaction
        - `paymentInformation` 'FIRST' | 'SUBSEQUENT', required — Describes whether the transaction is the first or subsequent in the series
        - `issuerId` string, nullable — Displays a unique identifier for the card holder's stored credentials. This information is returned from the card brand when processing a Credential on File transaction.
        - `originalAmount` OriginalAmount, nullable — Original amount for the first transaction in the series. Note: The value must be in cents. Therefore $10.59 must be sent as 1059
          - `amount` integer, required — Amount
          - `currency` string, iso-4217, required — Provides the three letter currency code according the ISO 4217 standard. For a complete list of currency codes, visit: https://en.wikipedia.org/wiki/ISO_4217
    - object — Payment Method details. Note: If defined, this will result in the creation of Payment Method as defined in the Payment Method API.
      - `permanentToken` string, required — Created when a temporary token is created and returned. This acts as a unique profile identifier, and is a required value for temporary token transactions.
      - `cardholderInformation` CardholderInformation, nullable — Information about the holder of the card.
        - `cardholderName` string, required — Cardholder name
        - `companyName` string, nullable — Identifies the associated company name
      - `contactDetails` ContactDetails, nullable — Contact details
        - `phoneNumber` string, nullable — Phone number.
        - `email` string, email, nullable — Contains the customer's email address. For standard email protocols, visit: https://www.rfc-editor.org/rfc/rfc5322
      - `billingAddress` object, nullable — The postal address including street, town/city, province, and postal code. Optionally an unit number can be provided.
        - `unitNumber` string, nullable — Unit number
        - `streetNumber` string, nullable — Street number
        - `streetName` string, nullable — Street name
        - `city` string, nullable — Identifies the city.
        - `province` string, iso-3166-2, nullable — Province or state ISO 3166-2 code
        - `postalCode` string, nullable — Postal or zip code
        - `country` string, iso-3166, nullable — Provides the two letter country code according the ISO 3166-1 alpha-2 standard. For a complete list of country codes, visit: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2.
      - `paymentMethodSource` 'PAYMENT_METHOD_ID' | 'CARD' | 'TEMPORARY_TOKEN' | 'PERMANENT_TOKEN' | 'APPLE_PAY_ENCRYPTED' | 'APPLE_PAY_DECRYPTED' | 'GOOGLE_PAY_ENCRYPTED' | 'GOOGLE_PAY_DECRYPTED', required — The source of Payment Method being used. It can be: - The Id of a Payment Method already created. - Permanent Token. - Temporary Token. - Card. - E-Wallet.
      - `customData` CustomData, nullable — Merchant can send custom meta data with the transaction in this object. Moneris will echo these values back in response.
      - `storePaymentMethod` 'CARDHOLDER_INITIATED' | 'MERCHANT_INITIATED' — Store this payment method created through this payment for future use. - CARDHOLDER_INITIATED: Payment method to be stored and can only re-used with cardholder's consent. Limited to store, pre-authorisation, and card validations." - MERCHANT_INITIATED: Payment method to be stored and can be reused without the cardholder's consent. For example, subscriptions.
      - `credentialOnFileInformation` CredentialOnFileInformation, required — Contains fields related to the Credential on File (CoF)
        - `paymentIndicator` 'UNSCHEDULED_CREDENTIAL_ON_FILE' | 'RECURRING' | 'MERCHANT_INITIATED' | 'VARIABLE_RECURRING' | 'CUSTOMER_INITIATED', required — Indicates the current or intended use of the credentials - **UNSCHEDULED_CREDENTIAL_ON_FILE**: unscheduled Credential on File (first transactions only) - **RECURRING**: recurring transaction - **MERCHANT_INITIATED**: unscheduled merchant-initiated transaction - **VARIABLE_RECURRING**: recurring variable payment transaction - **CUSTOMER_INITIATED**: unscheduled customer-initiated transaction
        - `paymentInformation` 'FIRST' | 'SUBSEQUENT', required — Describes whether the transaction is the first or subsequent in the series
        - `issuerId` string, nullable — Displays a unique identifier for the card holder's stored credentials. This information is returned from the card brand when processing a Credential on File transaction.
        - `originalAmount` OriginalAmount, nullable — Original amount for the first transaction in the series. Note: The value must be in cents. Therefore $10.59 must be sent as 1059
          - `amount` integer, required — Amount
          - `currency` string, iso-4217, required — Provides the three letter currency code according the ISO 4217 standard. For a complete list of currency codes, visit: https://en.wikipedia.org/wiki/ISO_4217
    - object — Payment Method details. Note: If defined, this will result in the creation of Payment Method as defined in the Payment Method API.
      - `cardholderInformation` CardholderInformation, nullable — Information about the holder of the card.
        - `cardholderName` string, required — Cardholder name
        - `companyName` string, nullable — Identifies the associated company name
      - `contactDetails` ContactDetails, nullable — Contact details
        - `phoneNumber` string, nullable — Phone number.
        - `email` string, email, nullable — Contains the customer's email address. For standard email protocols, visit: https://www.rfc-editor.org/rfc/rfc5322
      - `billingAddress` object, nullable — The postal address including street, town/city, province, and postal code. Optionally an unit number can be provided.
        - `unitNumber` string, nullable — Unit number
        - `streetNumber` string, nullable — Street number
        - `streetName` string, nullable — Street name
        - `city` string, nullable — Identifies the city.
        - `province` string, iso-3166-2, nullable — Province or state ISO 3166-2 code
        - `postalCode` string, nullable — Postal or zip code
        - `country` string, iso-3166, nullable — Provides the two letter country code according the ISO 3166-1 alpha-2 standard. For a complete list of country codes, visit: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2.
      - `paymentMethodSource` 'PAYMENT_METHOD_ID' | 'CARD' | 'TEMPORARY_TOKEN' | 'PERMANENT_TOKEN' | 'APPLE_PAY_ENCRYPTED' | 'APPLE_PAY_DECRYPTED' | 'GOOGLE_PAY_ENCRYPTED' | 'GOOGLE_PAY_DECRYPTED', required — The source of Payment Method being used. It can be: - The Id of a Payment Method already created. - Permanent Token. - Temporary Token. - Card. - E-Wallet.
      - `customData` CustomData, nullable — Merchant can send custom meta data with the transaction in this object. Moneris will echo these values back in response.
      - `applicationPrimaryAccountNumber` string, required — The unique identifier for the primary account number for the payment card.
      - `expiryMonth` integer, required — Card expiration month. Format must be MM
      - `expiryYear` integer, required — Displays the card expiration year. Accepted format: YYYY
      - `deviceManufacturerIdentifier` string, nullable — Hex-encoded device manufacturer identifier
      - `dataType` 'THREE_D_SECURE' | 'EMV', required — Only available to Canada integrations. Applies to merchants using their own API for transaction payload encryptions and is mandatory for INTERAC® e-Commerce Apple Pay and Google Pay transactions.
      - `cryptogram` string, required — Token cryptogram or encoded Base64 for Interac Wallets.
      - `cardBrand` 'MASTERCARD' | 'VISA' | 'AMERICAN_EXPRESS' | 'INTERAC' | 'DISCOVER', required — Card Brand.
      - `walletEcommerceIndicator` string, nullable — ECI Indicator as provided by the Wallet.
      - `walletIndicator` 'IN_APPLICATION' | 'IN_BROWSER', required — Only available to Canada integrations. Applies to merchants using their own API for transaction payload encryptions for Apple Pay and Google Pay transactions. **NOTE**: This field is mandatory for wallet transactions and is case senstive."
      - `storePaymentMethod` 'DO_NOT_STORE' | 'CARDHOLDER_INITIATED' | 'MERCHANT_INITIATED' — Store this payment method created through this payment for future use. - DO_NOT_STORE: Payment method will not be stored. - CARDHOLDER_INITIATED: Payment method to be stored and can only re-used with cardholder's consent. Limited to store, pre-authorisation, and card validations." - MERCHANT_INITIATED: Payment method to be stored and can be reused without the cardholder's consent. For example, subscriptions.
      - `credentialOnFileInformation` object, nullable — Contains fields related to the Credential on File (CoF)
        - `paymentIndicator` 'UNSCHEDULED_CREDENTIAL_ON_FILE' | 'RECURRING' | 'MERCHANT_INITIATED' | 'VARIABLE_RECURRING' | 'CUSTOMER_INITIATED', required — Indicates the current or intended use of the credentials - **UNSCHEDULED_CREDENTIAL_ON_FILE**: unscheduled Credential on File (first transactions only) - **RECURRING**: recurring transaction - **MERCHANT_INITIATED**: unscheduled merchant-initiated transaction - **VARIABLE_RECURRING**: recurring variable payment transaction - **CUSTOMER_INITIATED**: unscheduled customer-initiated transaction
        - `paymentInformation` 'FIRST' | 'SUBSEQUENT', required — Describes whether the transaction is the first or subsequent in the series
        - `issuerId` string, nullable — Displays a unique identifier for the card holder's stored credentials. This information is returned from the card brand when processing a Credential on File transaction.
        - `originalAmount` OriginalAmount, nullable — Original amount for the first transaction in the series. Note: The value must be in cents. Therefore $10.59 must be sent as 1059
          - `amount` integer, required — Amount
          - `currency` string, iso-4217, required — Provides the three letter currency code according the ISO 4217 standard. For a complete list of currency codes, visit: https://en.wikipedia.org/wiki/ISO_4217
    - object — Payment Method details. Note: If defined, this will result in the creation of Payment Method as defined in the Payment Method API.
      - `cardholderInformation` CardholderInformation, nullable — Information about the holder of the card.
        - `cardholderName` string, required — Cardholder name
        - `companyName` string, nullable — Identifies the associated company name
      - `contactDetails` ContactDetails, nullable — Contact details
        - `phoneNumber` string, nullable — Phone number.
        - `email` string, email, nullable — Contains the customer's email address. For standard email protocols, visit: https://www.rfc-editor.org/rfc/rfc5322
      - `billingAddress` object, nullable — The postal address including street, town/city, province, and postal code. Optionally an unit number can be provided.
        - `unitNumber` string, nullable — Unit number
        - `streetNumber` string, nullable — Street number
        - `streetName` string, nullable — Street name
        - `city` string, nullable — Identifies the city.
        - `province` string, iso-3166-2, nullable — Province or state ISO 3166-2 code
        - `postalCode` string, nullable — Postal or zip code
        - `country` string, iso-3166, nullable — Provides the two letter country code according the ISO 3166-1 alpha-2 standard. For a complete list of country codes, visit: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2.
      - `paymentMethodSource` 'PAYMENT_METHOD_ID' | 'CARD' | 'TEMPORARY_TOKEN' | 'PERMANENT_TOKEN' | 'APPLE_PAY_ENCRYPTED' | 'APPLE_PAY_DECRYPTED' | 'GOOGLE_PAY_ENCRYPTED' | 'GOOGLE_PAY_DECRYPTED', required — The source of Payment Method being used. It can be: - The Id of a Payment Method already created. - Permanent Token. - Temporary Token. - Card. - E-Wallet.
      - `customData` CustomData, nullable — Merchant can send custom meta data with the transaction in this object. Moneris will echo these values back in response.
      - `displayName` string, required — Display Name
      - `cardBrand` 'MASTERCARD' | 'VISA' | 'AMERICAN_EXPRESS' | 'INTERAC' | 'DISCOVER', required — Card Brand.
      - `applePayVersion` 'EC_V1' | 'RSA_V1', required — Version information about the payment token. - EC_V1: For ECC-encrypted data - RSA_V1: For RSA-encrypted data
      - `data` string, byte, required — Encrypted payment data. Base64 encoded as a string.
      - `signature` string, required — Signature of the payment and header data, Base64 encoded as a string. The signature includes the signing certificate, its intermediate CA certificate, and information about the signing algorithm. Can be a detached PKCS #7 signature, Base64 encoded as a string
      - `publicKeyHash` string, required — Hash of the X.509 encoded public key bytes of the merchant’s certificate. Can be either a base64 encoded or SHA-256 Hash string.
      - `ephemeralPublicKey` string, byte, required — Ephemeral public key bytes. Only for RSA_v1. Can be either a base64 encoded string or X.509 bytes.
      - `applePayTransactionId` string, required — The Apple Pay unique identifier for a transaction such as an in-app purchase, restored in-app purchase, or subscription renewal.
      - `walletIndicator` 'IN_APPLICATION' | 'IN_BROWSER', required — Only available to Canada integrations. Applies to merchants using their own API for transaction payload encryptions for Apple Pay and Google Pay transactions. **NOTE**: This field is mandatory for wallet transactions and is case senstive."
      - `storePaymentMethod` 'DO_NOT_STORE' | 'CARDHOLDER_INITIATED' | 'MERCHANT_INITIATED' — Store this payment method created through this payment for future use. - DO_NOT_STORE: Payment method will not be stored. - CARDHOLDER_INITIATED: Payment method to be stored and can only re-used with cardholder's consent. Limited to store, pre-authorisation, and card validations." - MERCHANT_INITIATED: Payment method to be stored and can be reused without the cardholder's consent. For example, subscriptions.
      - `credentialOnFileInformation` object, nullable — Contains fields related to the Credential on File (CoF)
        - `paymentIndicator` 'UNSCHEDULED_CREDENTIAL_ON_FILE' | 'RECURRING' | 'MERCHANT_INITIATED' | 'VARIABLE_RECURRING' | 'CUSTOMER_INITIATED', required — Indicates the current or intended use of the credentials - **UNSCHEDULED_CREDENTIAL_ON_FILE**: unscheduled Credential on File (first transactions only) - **RECURRING**: recurring transaction - **MERCHANT_INITIATED**: unscheduled merchant-initiated transaction - **VARIABLE_RECURRING**: recurring variable payment transaction - **CUSTOMER_INITIATED**: unscheduled customer-initiated transaction
        - `paymentInformation` 'FIRST' | 'SUBSEQUENT', required — Describes whether the transaction is the first or subsequent in the series
        - `issuerId` string, nullable — Displays a unique identifier for the card holder's stored credentials. This information is returned from the card brand when processing a Credential on File transaction.
        - `originalAmount` OriginalAmount, nullable — Original amount for the first transaction in the series. Note: The value must be in cents. Therefore $10.59 must be sent as 1059
          - `amount` integer, required — Amount
          - `currency` string, iso-4217, required — Provides the three letter currency code according the ISO 4217 standard. For a complete list of currency codes, visit: https://en.wikipedia.org/wiki/ISO_4217
    - object — Payment Method details. Note: If defined, this will result in the creation of Payment Method as defined in the Payment Method API.
      - `cardholderInformation` CardholderInformation, nullable — Information about the holder of the card.
        - `cardholderName` string, required — Cardholder name
        - `companyName` string, nullable — Identifies the associated company name
      - `contactDetails` ContactDetails, nullable — Contact details
        - `phoneNumber` string, nullable — Phone number.
        - `email` string, email, nullable — Contains the customer's email address. For standard email protocols, visit: https://www.rfc-editor.org/rfc/rfc5322
      - `billingAddress` object, nullable — The postal address including street, town/city, province, and postal code. Optionally an unit number can be provided.
        - `unitNumber` string, nullable — Unit number
        - `streetNumber` string, nullable — Street number
        - `streetName` string, nullable — Street name
        - `city` string, nullable — Identifies the city.
        - `province` string, iso-3166-2, nullable — Province or state ISO 3166-2 code
        - `postalCode` string, nullable — Postal or zip code
        - `country` string, iso-3166, nullable — Provides the two letter country code according the ISO 3166-1 alpha-2 standard. For a complete list of country codes, visit: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2.
      - `paymentMethodSource` 'PAYMENT_METHOD_ID' | 'CARD' | 'TEMPORARY_TOKEN' | 'PERMANENT_TOKEN' | 'APPLE_PAY_ENCRYPTED' | 'APPLE_PAY_DECRYPTED' | 'GOOGLE_PAY_ENCRYPTED' | 'GOOGLE_PAY_DECRYPTED', required — The source of Payment Method being used. It can be: - The Id of a Payment Method already created. - Permanent Token. - Temporary Token. - Card. - E-Wallet.
      - `customData` CustomData, nullable — Merchant can send custom meta data with the transaction in this object. Moneris will echo these values back in response.
      - `gatewayMerchantId` string, nullable — Gateway unique store id
      - `messageExpiration` string, date-time, nullable — Date and time at which the message expires. Integrators should reject any message that's expired.
      - `messageId` string, nullable — A unique ID that identifies the message in case it needs to be revoked or located at a later time.
      - `walletSource` 'CARD' | 'TOKENIZED_CARD', required — The type of the payment credential. Supported values are: - CARD - TOKENIZED_CARD
      - `cardBrand` 'MASTERCARD' | 'VISA' | 'AMERICAN_EXPRESS' | 'INTERAC', required — Card Network.
      - `walletIndicator` 'IN_APPLICATION' | 'IN_BROWSER', required — Only available to Canada integrations. Applies to merchants using their own API for transaction payload encryptions for Apple Pay and Google Pay transactions. **NOTE**: This field is mandatory for wallet transactions and is case senstive."
      - `cardDetails` GooglePayDecryptedCardDetails, required — The payment credential itself. The format of this object is determined by the paymentMethod
        - `personalAccountNumber` string, required — The personal account number charged. This string contains only digits.
        - `expiryMonth` integer, required — Card expiration month. Format must be MM
        - `expiryYear` integer, required — Displays the card expiration year. Accepted format: YYYY
        - `authenticationMethod` string, nullable — The authentication method of the card transaction. Must be forwarded as provided by Google Pay.
        - `cryptogram` string, nullable — Token cryptogram or encoded Base64 for Interac Wallets.
        - `walletEcommerceIndicator` string, nullable — ECI Indicator as provided by the Wallet.
      - `storePaymentMethod` 'DO_NOT_STORE' | 'CARDHOLDER_INITIATED' | 'MERCHANT_INITIATED' — Store this payment method created through this payment for future use. - DO_NOT_STORE: Payment method will not be stored. - CARDHOLDER_INITIATED: Payment method to be stored and can only re-used with cardholder's consent. Limited to store, pre-authorisation, and card validations." - MERCHANT_INITIATED: Payment method to be stored and can be reused without the cardholder's consent. For example, subscriptions.
      - `credentialOnFileInformation` object, nullable — Contains fields related to the Credential on File (CoF)
        - `paymentIndicator` 'UNSCHEDULED_CREDENTIAL_ON_FILE' | 'RECURRING' | 'MERCHANT_INITIATED' | 'VARIABLE_RECURRING' | 'CUSTOMER_INITIATED', required — Indicates the current or intended use of the credentials - **UNSCHEDULED_CREDENTIAL_ON_FILE**: unscheduled Credential on File (first transactions only) - **RECURRING**: recurring transaction - **MERCHANT_INITIATED**: unscheduled merchant-initiated transaction - **VARIABLE_RECURRING**: recurring variable payment transaction - **CUSTOMER_INITIATED**: unscheduled customer-initiated transaction
        - `paymentInformation` 'FIRST' | 'SUBSEQUENT', required — Describes whether the transaction is the first or subsequent in the series
        - `issuerId` string, nullable — Displays a unique identifier for the card holder's stored credentials. This information is returned from the card brand when processing a Credential on File transaction.
        - `originalAmount` OriginalAmount, nullable — Original amount for the first transaction in the series. Note: The value must be in cents. Therefore $10.59 must be sent as 1059
          - `amount` integer, required — Amount
          - `currency` string, iso-4217, required — Provides the three letter currency code according the ISO 4217 standard. For a complete list of currency codes, visit: https://en.wikipedia.org/wiki/ISO_4217
    - object — Payment Method details. Note: If defined, this will result in the creation of Payment Method as defined in the Payment Method API.
      - `cardholderInformation` CardholderInformation, nullable — Information about the holder of the card.
        - `cardholderName` string, required — Cardholder name
        - `companyName` string, nullable — Identifies the associated company name
      - `contactDetails` ContactDetails, nullable — Contact details
        - `phoneNumber` string, nullable — Phone number.
        - `email` string, email, nullable — Contains the customer's email address. For standard email protocols, visit: https://www.rfc-editor.org/rfc/rfc5322
      - `billingAddress` object, nullable — The postal address including street, town/city, province, and postal code. Optionally an unit number can be provided.
        - `unitNumber` string, nullable — Unit number
        - `streetNumber` string, nullable — Street number
        - `streetName` string, nullable — Street name
        - `city` string, nullable — Identifies the city.
        - `province` string, iso-3166-2, nullable — Province or state ISO 3166-2 code
        - `postalCode` string, nullable — Postal or zip code
        - `country` string, iso-3166, nullable — Provides the two letter country code according the ISO 3166-1 alpha-2 standard. For a complete list of country codes, visit: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2.
      - `paymentMethodSource` 'PAYMENT_METHOD_ID' | 'CARD' | 'TEMPORARY_TOKEN' | 'PERMANENT_TOKEN' | 'APPLE_PAY_ENCRYPTED' | 'APPLE_PAY_DECRYPTED' | 'GOOGLE_PAY_ENCRYPTED' | 'GOOGLE_PAY_DECRYPTED', required — The source of Payment Method being used. It can be: - The Id of a Payment Method already created. - Permanent Token. - Temporary Token. - Card. - E-Wallet.
      - `customData` CustomData, nullable — Merchant can send custom meta data with the transaction in this object. Moneris will echo these values back in response.
      - `cardBrand` 'MASTERCARD' | 'VISA' | 'AMERICAN_EXPRESS' | 'INTERAC', required — Card Brand.
      - `signature` string, required — Verifies that the message came from Google. It's base64-encoded, and created with ECDSA by the intermediate signing key.
      - `googlePayProtocolVersion` string, required — Identifies the encryption or signing scheme under which the message is created. It allows the protocol to evolve over time, if needed. Must be fowarded as provided by Google Pay.
      - `signedMessage` string, required — A JSON object serialized as an HTML-safe string that contains the encryptedMessage, ephemeralPublicKey, and tag. It's serialized to simplify the signature verification process.
      - `walletIndicator` 'IN_APPLICATION' | 'IN_BROWSER', required — Only available to Canada integrations. Applies to merchants using their own API for transaction payload encryptions for Apple Pay and Google Pay transactions. **NOTE**: This field is mandatory for wallet transactions and is case senstive."
      - `storePaymentMethod` 'DO_NOT_STORE' | 'CARDHOLDER_INITIATED' | 'MERCHANT_INITIATED' — Store this payment method created through this payment for future use. - DO_NOT_STORE: Payment method will not be stored. - CARDHOLDER_INITIATED: Payment method to be stored and can only re-used with cardholder's consent. Limited to store, pre-authorisation, and card validations." - MERCHANT_INITIATED: Payment method to be stored and can be reused without the cardholder's consent. For example, subscriptions.
      - `credentialOnFileInformation` object, nullable — Contains fields related to the Credential on File (CoF)
        - `paymentIndicator` 'UNSCHEDULED_CREDENTIAL_ON_FILE' | 'RECURRING' | 'MERCHANT_INITIATED' | 'VARIABLE_RECURRING' | 'CUSTOMER_INITIATED', required — Indicates the current or intended use of the credentials - **UNSCHEDULED_CREDENTIAL_ON_FILE**: unscheduled Credential on File (first transactions only) - **RECURRING**: recurring transaction - **MERCHANT_INITIATED**: unscheduled merchant-initiated transaction - **VARIABLE_RECURRING**: recurring variable payment transaction - **CUSTOMER_INITIATED**: unscheduled customer-initiated transaction
        - `paymentInformation` 'FIRST' | 'SUBSEQUENT', required — Describes whether the transaction is the first or subsequent in the series
        - `issuerId` string, nullable — Displays a unique identifier for the card holder's stored credentials. This information is returned from the card brand when processing a Credential on File transaction.
        - `originalAmount` OriginalAmount, nullable — Original amount for the first transaction in the series. Note: The value must be in cents. Therefore $10.59 must be sent as 1059
          - `amount` integer, required — Amount
          - `currency` string, iso-4217, required — Provides the three letter currency code according the ISO 4217 standard. For a complete list of currency codes, visit: https://en.wikipedia.org/wiki/ISO_4217
  - `ecommerceIndicator` 'MAIL_TELEPHONE_ORDER_SINGLE' | 'MAIL_TELEPHONE_ORDER_RECURRING' | 'MAIL_TELEPHONE_ORDER_INSTALMENT' | 'MAIL_TELEPHONE_ORDER_UNKNOWN' | 'AUTHENTICATED_ECOMMERCE' | 'NON_AUTHENTICATED_ECOMMERCE' | 'SSL_MERCHANT' — Describes the category of e-commerce transaction being processed.
  - `automaticCapture` boolean — - **true**: (Default) will prompt Moneris to capture the payment when it is authorized. This performs a Purchase transaction. - **false**: will prompt Moneris to place a hold on the funds when the payment is authorized. This performs a Pre-Authorization transaction.
  - `incrementalAuthorization` boolean — This flag is used for processing the Pre-Authorization transaction as an Incremental Authorization transaction.
  - `customData` object, nullable — Merchant can send custom meta data with the transaction in this object. Moneris will echo these values back in response.
  - `dynamicDescriptor` string, nullable — Merchant defined description sent on a per-transaction basis that will appear on the credit card statement. Dependent on the card Issuer, the statement will typically show the dynamic descriptor appended to the merchant's existing business name separated by the '/' character. **Note**: The combined length of the merchant's business name, forward slash '/' character, and the dynamic descriptor may not exceed 22 characters.
  - `threeDSecureData` union — Data related to 3-D Secure
    - object
      - `threeDSecureAuthenticationId` string, required — Used to identify API resources which may be required for future follow-on transactions; i.e. Refunds, Corrections, Completions, Reversals, etc.
    - object
      - `threeDSecureAuthenticationValue` string, nullable, required — **CAVV**: Cardholder Authentication Verification Value Provided during a payment request to authenticate the card user.
      - `threeDSecureVersion` string, required — Required when sending a 3-D Secure version 2.0+ transaction. If no value is provided, default to V1.
      - `threeDSecureServerTransactionId` string, uuid, required — Indicates information required when sending a version 3-D Secure 2.0+ transaction. This data is obtained from a CAVV Lookup Request or MPI 3DS Authentication Request transaction.
      - `threeDSecureDirectoryServerTransactionId` string, uuid, required — Universally unique transaction identifier assigned by the 3DS Directory Server (DS) to identify a single transaction.
  - `installmentPlanInformation` InstallmentPlanInformation, nullable — Installment plan details, if an installment plan is selected
    - `planId` string, required — Visa-generated identifier for an Installment plan.
    - `planIdReference` string, required — A Visa-generated, alphanumeric, unique, and short human-readable friendly name for Installment Plan.
    - `planTermsAndConditionsVersion` string, required — Installment Plan Terms and Conditions Version. Version of the Terms & Conditions accepted by the consumer. The version is auto-incremented every time an update is made to the Plan by the issuer.
  - `multiCurrencyPricing` MultiCurrencyPricingTransactionRequest, nullable — Multi-Currency Pricing (MCP) Object
    - `multiCurrencyPricingOptIn` 'OPT_IN', required — Indicates if Multi-Currency Pricing is to be used for this transaction.
    - `multiCurrencyPricingRateLookupId` string, nullable — Used to identify API resources which may be required for future follow-on transactions; i.e. Refunds, Corrections, Completions, Reversals, etc.
  - `ipv4` string, ipv4, nullable — Internet Protocol version 4 (IPv4).
  - `ipv6` string, ipv6, nullable — Internet Protocol version 6 (IPv6).

## Response `201`

Payment operation created successfully.

- Payment — Returns a processed payment
  - `paymentId` string, required — Unique Identification for the Payment
  - `merchantId` string, required — Thirteen character long identification provided to merchants by Moneris.
  - `orderId` string, nullable — Indicates the merchant-defined transaction identifer or order ID. Identifiers are unique for every Purchase, Pre-Authorization and Independent Refund transaction **Note**: No two transactions of these types may have the same order ID. Field only accepts alphanumerical characters, dashes and underscores.
  - `invoiceNumber` string, nullable — Submits a unique value to identify a transaction that is logged by Moneris Solutions.
  - `transactionDateTime` string, date-time, required — Indicates the date and time of the transaction.
  - `createdAt` string, date-time, required — Time at which the object was created
  - `modifiedAt` string, date-time, nullable — Time at which the object was modified
  - `amount` object, required — This amount excludes surcharge, application and convenience fee.
    - `amount` integer, required — Amount
    - `currency` string, iso-4217, required — Provides the three letter currency code according the ISO 4217 standard. For a complete list of currency codes, visit: https://en.wikipedia.org/wiki/ISO_4217
  - `authorizedAmount` object, required — This represents the funds that are held by the authorization on the payment method.
    - `amount` integer, required — Amount
    - `currency` string, iso-4217, required — Provides the three letter currency code according the ISO 4217 standard. For a complete list of currency codes, visit: https://en.wikipedia.org/wiki/ISO_4217
  - `capturableAmount` object, required — Remaining amount that can still be captured.
    - `amount` integer, required — Amount
    - `currency` string, iso-4217, required — Provides the three letter currency code according the ISO 4217 standard. For a complete list of currency codes, visit: https://en.wikipedia.org/wiki/ISO_4217
  - `amountDetails` AmountDetails, nullable — Contains information pertaining to the subtotal, tip, and surcharge amounts of a Payment
    - `subTotalAmount` SubTotalAmount, nullable — Sub total amount for the transaction. Note: The value must be in cents. Therefore $10.59 must be sent as 1059.
      - `amount` integer, required — Amount
      - `currency` string, iso-4217, required — Provides the three letter currency code according the ISO 4217 standard. For a complete list of currency codes, visit: https://en.wikipedia.org/wiki/ISO_4217
    - `tipAmount` TipAmount, nullable — Total tip amount for the transaction. Note: The value must be in cents. Therefore $10.59 must be sent as 1059
      - `amount` integer, required — Amount
      - `currency` string, iso-4217, required — Provides the three letter currency code according the ISO 4217 standard. For a complete list of currency codes, visit: https://en.wikipedia.org/wiki/ISO_4217
    - `surchargeAmount` object, nullable — Monetary amount. Note: The value must be in cents. Therefore $10.59 must be sent as 1059.
      - `amount` integer, required — Amount
      - `currency` string, iso-4217, required — Provides the three letter currency code according the ISO 4217 standard. For a complete list of currency codes, visit: https://en.wikipedia.org/wiki/ISO_4217
  - `convenienceFeeDetails` ConvenienceFeeDetails, nullable — Contains information about a Convenience Fee transaction.
    - `status` 'COMPLETED_CONVENIENCE_FEE_TRANSACTION' | 'PAYMENT_COMPLETED' | 'COMPLETED_VOID_TRANSACTION' | 'COMPLETED_REFUND_TRANSACTION' | 'COMPLETED_MERCHANT_INDEPENDENT_REFUND_TRANSACTION' | 'COMPLETED_MERCHANT_REFUND_TRANSACTION' | 'COMPLETED_FIRST_VOID_TRANSACTION' | 'PAYMENT_CANCELED', nullable — Indicates the status of the merchant and convenience fee transactions.
    - `amount` object, required — The expected Convenience Fee amount.
      - `amount` integer, required — Amount
      - `currency` string, iso-4217, required — Provides the three letter currency code according the ISO 4217 standard. For a complete list of currency codes, visit: https://en.wikipedia.org/wiki/ISO_4217
    - `rate` number, required — The Convenience Fee rate that has been defined on the merchant’s profile.
    - `feeType` 'FIXED_AMOUNT' | 'PERCENTAGE', required — The type of Convenience Fee that has been defined on the merchant’s profile.
  - `customerId` string, nullable — Unique Identification for the Customer
  - `customerReference` string, nullable — Unique Identification for the Customer. This can be an identifier generated from a merchant-defined identifier.
  - `paymentMethod` PaymentMethod, required — Payment method response object
    - `paymentMethodId` string, required — Unique Identifier of the payment method.
    - `merchantId` string, required — Thirteen character long identification provided to merchants by Moneris.
    - `cardholderInformation` CardholderInformation, nullable — Information about the holder of the card.
      - `cardholderName` string, required — Cardholder name
      - `companyName` string, nullable — Identifies the associated company name
    - `contactDetails` ContactDetails, nullable — Contact details
      - `phoneNumber` string, nullable — Phone number.
      - `email` string, email, nullable — Contains the customer's email address. For standard email protocols, visit: https://www.rfc-editor.org/rfc/rfc5322
    - `billingAddress` object, nullable — The postal address including street, town/city, province, and postal code. Optionally an unit number can be provided.
      - `unitNumber` string, nullable — Unit number
      - `streetNumber` string, nullable — Street number
      - `streetName` string, nullable — Street name
      - `city` string, nullable — Identifies the city.
      - `province` string, iso-3166-2, nullable — Province or state ISO 3166-2 code
      - `postalCode` string, nullable — Postal or zip code
      - `country` string, iso-3166, nullable — Provides the two letter country code according the ISO 3166-1 alpha-2 standard. For a complete list of country codes, visit: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2.
    - `paymentMethodInformation` CardPaymentMethodInformation, required — Details about the card used in the payment method.
      - `paymentMethodType` 'CARD', required — The type of Payment Method being used. It can be: - Card.
      - `paymentMethodSource` 'CARD' | 'TEMPORARY_TOKEN' | 'PERMANENT_TOKEN' | 'APPLE_PAY_ENCRYPTED' | 'APPLE_PAY_DECRYPTED' | 'GOOGLE_PAY_ENCRYPTED' | 'GOOGLE_PAY_DECRYPTED', required — The source of Payment Method being used. It can be: - The Id of a Payment Method already created. - Permanent Token. - Temporary Token. - Card. - E-Wallet.
      - `cardInformation` CardInformation, required — Information about the card being used for the transaction
        - `bankIdentificationNumber` string, nullable — **BIN**: Bank Identification Number Consists of the first six to eight digits of the Primary Account Number (PAN) and identifies the relevant payment network and the specific payment issuing institution.
        - `lastFour` string, nullable — Last 4 digits of the card.
        - `expiryMonth` integer — Card expiration month. Format must be MM
        - `expiryYear` integer — Displays the card expiration year. Accepted format: YYYY
        - `cardBrand` 'MASTERCARD' | 'VISA' | 'AMERICAN_EXPRESS' | 'JCB' | 'DISCOVER' | 'INTERAC' | 'UNIONPAY' | 'GIFT_MONERIS' | 'GIFT_DATACANDY' | 'GIFT_GIVEX' | 'null', nullable — Displays the card brand name associated with the card type.
        - `cardType` 'CREDIT' | 'DEBIT' | 'DOMESTIC_DEBIT' | 'PREPAID_RELOADABLE' | 'PREPAID_NON_RELOADABLE' | 'UNKNOWN' | 'GIFT' | 'LOYALTY' | 'FLEET' | 'CORPORATE', nullable — Specifies the intended card use; i.e. debit or credit.
        - `cardFingerprint` string, nullable — Unique card identifier. Fingerprinting randomly assigns identfiers for cards that share the same Primary Account Number (PAN) to easily identify when multiple payments methods are attached to the same underlying card, and assists merchants identify individual customers across various channels; i.e. loyalty programs.
        - `issuer` string, nullable — Card issuer.
      - `paymentAccountReference` string, nullable — Used to link Primary Account Number (PAN) based transactions and transactions on associated payment tokens without using the PAN as the linking mechanism.
      - `storePaymentMethod` 'DO_NOT_STORE' | 'CARDHOLDER_INITIATED' | 'MERCHANT_INITIATED', required — Store this payment method created through this payment for future use. - DO_NOT_STORE: Payment method will not be stored. - CARDHOLDER_INITIATED: Payment method to be stored and can only re-used with cardholder's consent. Limited to store, pre-authorisation, and card validations." - MERCHANT_INITIATED: Payment method to be stored and can be reused without the cardholder's consent. For example, subscriptions.
    - `createdAt` string, date-time, required — Time at which the object was created
    - `modifiedAt` string, date-time, nullable — Time at which the object was modified
    - `customData` CustomData, nullable — Merchant can send custom meta data with the transaction in this object. Moneris will echo these values back in response.
  - `paymentStatus` 'CANCELED' | 'DECLINED' | 'DECLINED_RETRY' | 'AUTHORIZED' | 'PROCESSING' | 'SUCCEEDED' | 'INCREMENTED' | 'PARTIALLY_COMPLETED', required — Payment Status description.
  - `transactionDetails` StatusDetails, required — Additional details about the transaction outcome.
    - `transactionUniqueId` string, nullable — Realtime transaction identifier from the host.
    - `isoResponseCode` string, required — Represents the Moneris response code for the equivalent International Organization for Standardization (ISO) response code.
    - `responseCode` string, required — "Details Transaction Response Codes: - **< 50**: Transaction approved - **> 50**: Transaction declined NULL: Transaction not sent for authorization For a complete list of definitions, refer to the Response Codes Table"
    - `authorizationCode` string, nullable — Contains a value generated by the authorizer for an approved financial transactions. This operates as the authorizing host's transaction identification.
    - `message` string, nullable — Displays response description returned from issuing institution. **NOTE**: This message should not be displayed on any cardholder facing materials. For receipt purposes, please refer to the Receipt Requirements"
    - `ecommerceIndicator` 'MAIL_TELEPHONE_ORDER_SINGLE' | 'MAIL_TELEPHONE_ORDER_RECURRING' | 'MAIL_TELEPHONE_ORDER_INSTALMENT' | 'MAIL_TELEPHONE_ORDER_UNKNOWN' | 'AUTHENTICATED_ECOMMERCE' | 'NON_AUTHENTICATED_ECOMMERCE' | 'SSL_MERCHANT', required — The ecommerce indicator (ECI) specifies the level of security that was used to obtain the cardholder's payment data. It is sent by the merchant and returned by the issuer. When returned in the response, it can be different from the value sent in the request in case transaction was downgraded by the issuer.
  - `verificationDetails` VerificationDetails, required — Result Codes for CVD, AVS, 3DS
    - `addressVerificationServiceResultCode` 'FULL_MATCH' | 'PARTIAL_MATCH' | 'NO_MATCH' | 'UNAVAILABLE' | 'null', nullable — Indicates the address verification result.
    - `cardSecurityCodeResultCode` 'MATCH' | 'NO_MATCH' | 'NOT_PROCESSED' | 'CVD_NOT_PRESENT' | 'NOT_CVD_PARTICIPANT' | 'AMEX_JCB_MATCH' | 'AMEX_JCB_INVALID' | 'OTHER' | 'null', nullable — Indicates the Card Security Code validation result. - **MATCH** - **NO_MATCH** - **NOT_PROCESSED** - **CVD_NOT_PRESENT** - **NOT_CVD_PRESENT** - **AMEX_JCB_MATCH** - **AMEX_JCB_INVALID** - **OTHER**"
    - `threeDSecureAuthenticationValueResultCode` 'AMEX_AEVV_FAILED_ATTEMPT_ISSUER_KEY' | 'AMEX_AEVV_FAILED_ATTEMPT_ISSUER_NOT_PARTICIPATING_NETWORK_KEY' | 'AMEX_AEVV_FAILED_ATTEMPT_PARTICIPATING_NOT_AVAILABLE_NETWORK_KEY' | 'AMEX_AEVV_FAILED_AUTHENTICATION_ISSUER_KEY' | 'AMEX_AEVV_PASSED_ATTEMPT_ISSUER_KEY' | 'AMEX_AEVV_PASSED_ATTEMPT_ISSUER_NOT_PARTICIPATING_NETWORK_KEY' | 'AMEX_AEVV_PASSED_ATTEMPT_PARTICIPATING_NOT_AVAILABLE_NETWORK_KEY' | 'AMEX_AEVV_PASSED_AUTHENTICATION_ISSUER_KEY' | 'AMEX_AEVV_UNCHECKED' | 'VISA_CAVV_NOT_PRESENT_OR_NOT_VERIFIED' | 'MASTERCARD_AUTHENTICATION_ATTEMPTED' | 'MASTERCARD_AUTHENTICATION_FAILED' | 'MASTERCARD_AUTHENTICATION_SUCCESSFUL' | 'VISA_CAVV_AUTHENTICATION_RESULTS_INVALID' | 'VISA_CAVV_FAILED_VALIDATION_ATTEMPTED' | 'VISA_CAVV_FAILED_VALIDATION_AUTHENTICATION' | 'VISA_CAVV_NOT_VALIDATED_ISSUER_NOT_PARTICIPATING' | 'VISA_CAVV_PASSED_VALIDATION_ATTEMPTED' | 'VISA_CAVV_PASSED_VALIDATION_AUTHENTICATION' | 'VISA_CAVV_PASSED_VALIDATION_INFO_ONLY' | 'VISA_CAVV_WAS_NOT_VALIDATED_ATTEMPTED' | 'VISA_CAVV_WAS_NOT_VALIDATED_AUTHENTICATION' | 'null', nullable — The Cardholder Authentication Verification Value (CAVV), the Account holder Authentication Value (AAV), and the American Express Verification Value (AEVV), are the values that allows Visa, Mastercard and American Express to validate the integrity of the Visa Secure, Mastercard Identity Check and American Express SafeKey transaction data. These values are passed back from the issuer to the merchant after the authentication has taken place. The merchant then integrates the CAVV/AAV/AEVV value into the authorization request using the Payment request with 3-D Secure transaction data.
  - `credentialOnFileResponse` CredentialOnFileResponse, nullable — Contains fields related to the Credential on File (CoF)
    - `originalAmount` OriginalAmount, nullable — Original amount for the first transaction in the series. Note: The value must be in cents. Therefore $10.59 must be sent as 1059
      - `amount` integer, required — Amount
      - `currency` string, iso-4217, required — Provides the three letter currency code according the ISO 4217 standard. For a complete list of currency codes, visit: https://en.wikipedia.org/wiki/ISO_4217
    - `issuerId` string, nullable — Displays a unique identifier for the card holder's stored credentials. This information is returned from the card brand when processing a Credential on File transaction.
  - `multiCurrencyPricingDetails` MultiCurrencyPricingDetails, nullable — Exchange rate for use in a subsequent MCP financial transaction
    - `cardholderAmount` Money, required — Monetary amount. Note: The value must be in cents. Therefore $10.59 must be sent as 1059.
      - `amount` integer, required — Amount
      - `currency` string, iso-4217, required — Provides the three letter currency code according the ISO 4217 standard. For a complete list of currency codes, visit: https://en.wikipedia.org/wiki/ISO_4217
    - `merchantSettlementAmount` object, required — The amount that will be paid to the merchant, in settlement currency
      - `amount` integer, required — Amount
      - `currency` string, iso-4217, required — Provides the three letter currency code according the ISO 4217 standard. For a complete list of currency codes, visit: https://en.wikipedia.org/wiki/ISO_4217
    - `multiCurrencyPricingExchangeRate` number, required — The foreign exchange rate (foreign currency to CAD) that will be used for the transaction
  - `refundDetails` RefundDetails, nullable — Refund details if any has occured.
    - `refunds` RefundReference[] — List of Refunds associated with this Payment
      - `refundId` string, required — Unique Identification for the Refund
      - `href` string, uri-reference, nullable — Refund Reference URL
    - `refundedAmount` Money, required — Monetary amount. Note: The value must be in cents. Therefore $10.59 must be sent as 1059.
      - `amount` integer, required — Amount
      - `currency` string, iso-4217, required — Provides the three letter currency code according the ISO 4217 standard. For a complete list of currency codes, visit: https://en.wikipedia.org/wiki/ISO_4217
  - `subscription` SubscriptionReference, nullable — Subscription reference, if this transaction is related to a subscription.
    - `subscriptionId` string, required — Unique Identification for the Subscription
    - `href` string, uri-reference, nullable — Subscription Reference URL
  - `installmentPlanDetails` InstallmentPlanDetails, nullable — Installment plan application results.
    - `planId` string, required — Visa-generated identifier for an Installment plan.
    - `planIdReference` string, required — A Visa-generated, alphanumeric, unique, and short human-readable friendly name for Installment Plan.
    - `planTermsAndConditionsVersion` string, required — Installment Plan Terms and Conditions Version. Version of the Terms & Conditions accepted by the consumer. The version is auto-incremented every time an update is made to the Plan by the issuer.
    - `planAcceptanceId` string, required — Visa-generated identifier for a plan acceptance.
    - `planStatus` 'ACCEPTED' | 'NEW' | 'CANCELED', required — Status of the Installment Plan.
    - `planProcessingResponseMessage` string, nullable — Installment plan processing response
  - `customData` CustomData, nullable — Merchant can send custom meta data with the transaction in this object. Moneris will echo these values back in response.
  - `incrementalAuthorizations` IncrementalAuthorization[] — List of all previous incremental authorizations.
    - `amount` Money, required — Monetary amount. Note: The value must be in cents. Therefore $10.59 must be sent as 1059.
      - `amount` integer, required — Amount
      - `currency` string, iso-4217, required — Provides the three letter currency code according the ISO 4217 standard. For a complete list of currency codes, visit: https://en.wikipedia.org/wiki/ISO_4217
    - `processedAt` string, date-time, required — Time at which the object was processed
  - `multipleCompletions` MultipleCompletion[] — List of all Multiple Completion transactions.
    - `amount` Money, required — Monetary amount. Note: The value must be in cents. Therefore $10.59 must be sent as 1059.
      - `amount` integer, required — Amount
      - `currency` string, iso-4217, required — Provides the three letter currency code according the ISO 4217 standard. For a complete list of currency codes, visit: https://en.wikipedia.org/wiki/ISO_4217
    - `processedAt` string, date-time, required — Time at which the object was processed
    - `finalCompletion` boolean, required — Indicates whether this is the last Completion request for a Payment. To indicate that additional Completions will be performed, please pass finalCompletion as false.

## Other responses

- `400` — Failed Payment operation result response
- `401` — Not authorized. The user does not have a valid API Key or Access Token.
- `403` — Forbidden. The user does not have permission to access the requested resource.
- `409` — Request could not be completed due to a conflict with resource state or existing idempotency key.
- `422` — Failed Payment operation result response
- `429` — Too Many Requests
- `500` — Unexpected error.
- `503` — Service Temporarily Unavailable

---

[API](https://skmtc.net/moneris/apis/moneris-api.md) · [All operations](https://skmtc.net/moneris/apis/moneris-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/moneris/moneris-api/revisions/edefcc925b74/schema)
