---
title: "Create payment session"
method: POST
path: "/v1/payment-sessions"
tags: ["Payment Sessions"]
---

# Create payment session

`POST /v1/payment-sessions`

Creates a new Payment Session.

## Headers

- `Merchant-Id` string, required

## Request body

- CreationRequest
  - `amount` MoneyWithType, required
    - `value` integer, required — The amount in currency's smallest unit.
    - `currency` string, required — ISO 4217 3-letter currency code.
    - `type` 'MAX' | 'EXACT' | 'VARIABLE' — Defines if the provided 'amount' is a maximum value or an exact value. This field is relevant only for recurring payments.
  - `amountType` 'MAX' | 'EXACT' | 'VARIABLE' — Defines if the provided 'amount' is a maximum value or an exact value. This field is relevant only for recurring payments.
  - `consumer` ConsumerWithCountry, required
    - `name` string — The consumer name. This is a required field for a payment charge. If you already collect the consumer’s name in the checkout, it’s recommended to always use this parameter to avoid duplicate fields.
    - `email` string — The consumer email.
    - `phone` string — The consumer phone number.
    - `country` string, required — 2-letter ISO code of the country where the payment instrument or account has been issued or established (for example GB, US, DE).
    - `locale` string — The locale describing the preferred language of the consumer
    - `taxIdentification` string — The consumer's tax identification number, like CUIT in Argentina, CPF in Brazil, RUT in Chile, NIF in Spain or Portugal, Numéro fiscal in France, and Codice Fiscale in Italy, or the equivalent tax identifier applicable in the consumer's country.
    - `merchantConsumerReference` string — The merchant provided consumer reference.
    - `billingAddress` Address
      - `street` string, required
      - `city` string, required
      - `region` string
      - `postalCode` string — Required for countries that use postal codes. This field can be omitted for the following country codes: AO,AI,AG,AW,BS,BZ,BJ,BM,BO,BQ,BW,CF,TD,KM,CG,CD,CK,CI,CW,DJ,DM,TL,GQ,ER,FJ,TF,GA,GM,GY,GD,HK,HM,IO,MO,MH,MS,NR,NU,NF,PW,PA,WS,KN,LC,VC,ST,SC,SL,SX,SB,SS,GS,SH,TC,TK,TO,TV,UG,AE,VA,VU,YE,ZW
      - `country` string, required — ISO 3166-1 alpha-2 Country Code
    - `client` Client
      - `ip` string — The IP address of the client
      - `userAgent` string — The user agent of the client device
  - `recurring` boolean, required — Indicates whether this is a recurring payment which needs the creation of a payment-agreement.
  - `webhooksUrl` string — The URL to which the agreement state changes will be notified
  - `authenticationSettings` union[]
    - union
      - object
        - `type` 'REDIRECT', required — The REDIRECT authentication type settings.
        - `settings` RedirectAuthenticationSettingsDetails — The REDIRECT authentication settings
          - `returnUrl` string — The URL to which the consumer is redirected after completing an action, such as a payment or authentication flow
      - object
        - `type` 'EXTERNAL_3DS', required — The `EXTERNAL_3DS` authentication type.
        - `settings` ExternalThreeDs
          - `authenticationStatus` 'SUCCESS' | 'ATTEMPT_ACKNOWLEDGED' | 'FAILED' | 'AUTHENTICATION_UNAVAILABLE' — The 3DS authentication status code.
          - `authenticationStatusReason` 'CARD_AUTHENTICATION_FAILED' | 'UNKNOWN_DEVICE' | 'UNSUPPORTED_DEVICE' | 'EXCEEDS_AUTHENTICATION_FREQUENCY_LIMIT' | 'EXPIRED_CARD' | 'INVALID_CARD_NUMBER' | 'INVALID_TRANSACTION' | 'NO_CARD_RECORD' | 'SECURITY_FAILURE' | 'STOLEN_CARD' | 'SUSPECTED_FRAUD' | 'TRANSACTION_NOT_PERMITTED_TO_CARDHOLDER' | 'CARDHOLDER_NOT_ENROLLED_IN_SERVICE' | 'TRANSACTION_TIMED_OUT_AT_THE_ACS' | 'LOW_CONFIDENCE' | 'MEDIUM_CONFIDENCE' | 'HIGH_CONFIDENCE' | 'VERY_HIGH_CONFIDENCE' | 'EXCEEDS_ACS_MAXIMUM_CHALLENGES' | 'NON_PAYMENT_TRANSACTION_NOT_SUPPORTED' | 'THREE_RI_TRANSACTION_NOT_SUPPORTED' — The 3DS authentication status reason.
          - `authenticationValue` string — The 3DS authentication CAVV.
          - `authenticationAlgorithm` string — The 3DS authentication CAVV algorithm used.
          - `authenticationMode` 'SCA' | 'FRICTIONLESS' — The 3DS authentication mode.
          - `eci` string — The 3DS authentication ECI.
          - `version` string — The 3DS authentication version.
          - `externalId` string — The 3DS authentication transaction identifier.
          - `externalAcsId` string — The 3DS universally unique transaction identifier assigned by the ACS to identify a single transaction. Canonical format as defined in IETF RFC 4122.
          - `score` string — The 3DS score.
          - `challenge` Challenge
            - `preference` 'NO_PREFERENCE' | 'NO_CHALLENGE_REQUESTED' | 'CHALLENGE_REQUESTED' | 'CHALLENGE_MANDATED' | 'DATA_ONLY' — The 3DS authentication challenge initialization preference.
            - `outcome` 'CHALLENGE' | 'FRICTIONLESS' | 'DATA_ONLY' — The 3DS authentication challenge outcome.
            - `exemptionReason` 'LOW_VALUE' | 'LOW_RISK' | 'TRUSTED_BENEFICIARY' | 'FIXED_RECURRING' — The 3DS authentication challenge exemption reason.
            - `cancellationReason` 'CARDHOLDER_CANCELLED' | 'REQUESTOR_CANCELLED' | 'TRANSACTION_ABANDONED' | 'TRANSACTION_TIMEOUT_ACS_OTHER' | 'TRANSACTION_TIMEOUT_ACS_CREQ_NOT_RECEIVED' | 'TRANSACTION_ERROR' | 'UNKNOWN' — The 3DS challenge cancellation indicator.Mandatory for CB transactions.
      - object
        - `type` '3DS', required — The `3DS` authentication type.
        - `settings` ThreeDsAuthenticationSettingsDetails
          - `returnUrl` string — The URL to which the consumer is redirected after completing the 3D Secure authentication flow.
          - `preference` 'CHALLENGE' | 'FRICTIONLESS' — The preferred 3D Secure authentication flow.
      - object
        - `type` 'SCAN_CODE', required — The SCAN_CODE authentication type.
        - `settings` ScanCodeAuthenticationSettingsDetails
          - `scanBy` string, date-time — Custom expiry date in ISO 8601 format.
      - object
        - `type` 'MULTI_FACTOR', required — The MULTI_FACTOR authentication type.
        - `settings` MultiFactorAuthenticationSettingsDetails
          - `verificationCode` string — Code generated to authenticate the user.
      - object
        - `type` 'APP_NOTIFICATION', required — The APP_NOTIFICATION authentication type.
        - `settings` AppNotificationAuthenticationSettingsDetails
          - `instrumentProviderIdentity` string — App identifier, for instance email, phone number
  - `paymentDescriptor` string — The payment descriptor (arbitrary string). May be presented to the consumer.
  - `merchantPaymentChargeReference` string — The merchant payment charge reference.
  - `merchantPaymentAgreementReference` string — The merchant payment agreement reference.
  - `paymentAgreementId` string — ID of an existing payment-agreement with the consumer
  - `order` Order
    - `orderItems` OrderItem[] — The list of order items.
      - `sku` string — The order item SKU.
      - `category` string — The order item category.
      - `name` string, required — The order item name.
      - `quantity` integer, required — The order item quantity.
      - `amount` integer, required — The amount to pay for each individual item in the payment charge currency's smallest unit.
    - `shippingAddress` Address
      - `street` string, required
      - `city` string, required
      - `region` string
      - `postalCode` string — Required for countries that use postal codes. This field can be omitted for the following country codes: AO,AI,AG,AW,BS,BZ,BJ,BM,BO,BQ,BW,CF,TD,KM,CG,CD,CK,CI,CW,DJ,DM,TL,GQ,ER,FJ,TF,GA,GM,GY,GD,HK,HM,IO,MO,MH,MS,NR,NU,NF,PW,PA,WS,KN,LC,VC,ST,SC,SL,SX,SB,SS,GS,SH,TC,TK,TO,TV,UG,AE,VA,VU,YE,ZW
      - `country` string, required — ISO 3166-1 alpha-2 Country Code
    - `industryData` AirlineIndustryData[] — The list of industry specific data.
      - `type` 'AIRLINE', required — The AIRLINE industry data type.
      - `details` AirlineDetails, required
        - `pnr` string — The passenger number record
        - `numberOfPassengers` integer — The number of passengers
        - `airlineCode` string — The airline code
        - `passengerEmail` string — The passenger email
        - `passengerPhone` string — The passenger phone number
        - `passengerName` string — The passenger name
        - `carrierCode` string — The airline carrier code
        - `tripSegments` AirlineTripSegment[] — The trip segment details
          - `fareBasisCode` string — The fare basis code
          - `departureAirportCode` string — The departure airport code
          - `destinationAirportCode` string — The destination airport code
          - `flightNumber` string — The flight number
          - `departureDate` string, date — The departure date
          - `flightCarrierCode` string — The flight carrier code
          - `segmentId` string — The trip segment ID
    - `orderReferenceNumber` string — The merchant's internal order reference (if different from merchantPaymentChargeReference)
    - `totalTaxAmount` integer — The total tax value paid by the consumer for the order (in same currency units as specified by amount.currency)
    - `installmentPlan` InstallmentPlan
      - `numberOfInstallments` integer, required — The number of installments the consumer will split the payment into.
  - `initialPaymentCharge` InitialPaymentCharge
    - `initiator` 'MERCHANT' | 'CONSUMER' — The charge initiator
    - `paymentDescriptor` string — The transaction descriptor (arbitrary string). May be presented to the consumer.
    - `amount` Money, required — The operation amount
      - `value` integer, required — The monetary value to be charged or processed, expressed in the smallest currency unit (e.g., cents for EUR).
      - `currency` string, required — The three-letter ISO 4217 currency code representing the currency in which the amount is denominated
    - `autoCapture` boolean — Indicates whether the payment charge should be automatically captured after a successful authorization.
    - `merchantPaymentChargeReference` string — The merchant payment charge reference. Aka, Transaction Reference.
    - `webhooksUrl` string — The URL to which the payment charge state changes will be notified
    - `labels` object — Custom labels associated with the initial payment charge.
  - `frequency` Frequency
    - `type` 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'YEARLY' | 'UNSCHEDULED', required — The type of frequency between consecutive payment charges.
    - `interval` integer — The interval between consecutive payment charges. The unit of the interval depends on the frequency type. For example, if type is MONTHLY and interval is 3, it means every 3 months.
  - `startDate` string, date-time — The start date of the agreement
  - `endDate` string, date-time — The end date of the agreement
  - `autoCapture` boolean — Indicates whether the payment charge should be automatically captured after a successful authorization.
  - `labels` object — Custom labels associated with the payment charge or agreement.

## Response `200`

OK

## Other responses

- `400` — Invalid request.

---

[API](https://skmtc.net/ppro/apis/payment-charges.md) · [All operations](https://skmtc.net/ppro/apis/payment-charges/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/ppro/payment-charges/versions/112e8bb4c815/schema)
