Create a Payment Intent

Creates a Payment Intent to track and confirm a customer payment from your server.

Use a Payment Intent when you are building a custom payment flow instead of hosted Checkout. The object records the amount, currency, customer, payment method, capture mode, and lifecycle status for the payment attempt.

By default, this endpoint creates the Payment Intent without confirming it. Set confirm=true to confirm it in the same request. When capture_method=manual is used with confirmation, Paypercut authorizes the payment and returns status=requires_capture; capture the authorized amount later with the Capture Payment Intent endpoint.

A Payment Intent can use a payment method that already belongs to the same customer, or a single-use payment method created by Elements or Express Checkout. If you set setup_future_usage, Paypercut prepares the payment method for future reuse after the customer completes any required authentication.

For hosted or embedded checkout, create a Checkout Session instead.

You can also search and review resulting payments in the Merchant Dashboard.

Related guides: Checkout Experience and Payment Intents

Query Parameters
  • expand
    Type: array string[]
Body·
required
application/json
  • amount
    Type: integer · Format: int64
    required

    Integer amount in minor units (e.g. cents) specific to the currency. Example: 100 for €1.00

  • currency
    Type: string ·
    required

    ISO 4217 currency codes (alpha3) supported for payments

  • payment_method
    Type: string ·

    Payment method to attach to this Payment Intent. The payment method must either belong to the same customer or be a single-use payment method created by an Elements or Express Checkout tokenization flow. If the Payment Intent is created without confirmation, the provided payment method is returned on the Payment Intent and can be used when confirming later.

  • payment_method_data
    Type: object ·
  • payment_method_options
    Type: object ·

    Payment method-specific configuration for this PaymentIntent.

  • customer
    Type: string ·
    max length:  
    100
  • capture_method
    Type: string enum

    Controls when funds are captured. Use automatic to capture after a successful authorization. Use manual to authorize during confirmation and capture later with the Capture Payment Intent endpoint.

    values
    • automatic

      Paypercut automatically captures funds when the customer authorizes the payment.

    • manual

      Place a hold on the funds when the customer authorizes the payment, but don't capture the funds until later.

  • confirm
    Type: boolean

    Set to true to attempt to confirm this PaymentIntent immediately. This parameter defaults to false. When creating and confirming a PaymentIntent at the same time, you can also provide the parameters available in the Confirm API.

  • off_session

    Indicates that the customer is not actively in your checkout flow during this payment attempt. Use true or one_off for customer-not-present unscheduled reuse, and recurring for scheduled recurring reuse of an eligible saved payment method. This parameter can only be used with confirm=true.

    • Type: boolean

      Indicates that the customer is not actively in your checkout flow during this payment attempt. Use true or one_off for customer-not-present unscheduled reuse, and recurring for scheduled recurring reuse of an eligible saved payment method. This parameter can only be used with confirm=true.

  • setup_future_usage
    Type: string | null · enum

    Indicates that you intend to make future payments with the Payment Intent's payment method. Use on_session when future payments will be made while the customer is present in your checkout flow. Use off_session when future payments may happen while the customer is not present, such as subscriptions or saved-card charges. If the Payment Intent has a customer, Paypercut can attach and promote a single-use payment method to that customer after the Payment Intent is confirmed and the customer completes any required authentication. When this value is provided during confirmation, it takes precedence over the value stored on the Payment Intent.

    values
    • off_session
    • on_session
  • metadata

    Metadata to attach to the Payment Intent. When the first Payment is created from this Payment Intent, this metadata is copied onto the Payment as its initial metadata snapshot.

    Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to metadata.

    • propertyName
      Type: string
Responses
  • application/json
  • application/json
  • application/json
  • application/json
  • application/json
Request Example for post/v1/payment_intents
curl https://api.paypercut.io/v1/payment_intents \
  --request POST \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
  --data '{
  "amount": 100,
  "currency": "EUR",
  "payment_method": "01K688H80Z3199KETHDJ4ZAFPS",
  "payment_method_data": {
    "type": "card",
    "card": {
      "cardholder_name": null,
      "brand": "",
      "country": null,
      "issuer": null,
      "display_brand": null,
      "exp_month": 1,
      "exp_year": 1,
      "fingerprint": null,
      "funding": "",
      "segment": "",
      "iin": "",
      "last4": "",
      "wallet": {
        "dynamic_last4": null,
        "type": "apple_pay"
      },
      "three_d_secure_usage": {
        "supported": true
      },
      "token_id": "",
      "token_intent_id": ""
    },
    "billing_details": {
      "email": null,
      "name": null,
      "phone": null,
      "address": {
        "city": null,
        "country": null,
        "line1": null,
        "line2": null,
        "postal_code": null,
        "state": null
      }
    }
  },
  "payment_method_options": {
    "type": "card",
    "card": {
      "three_d_secure": {
        "session_id": "",
        "ares_trans_status": "A",
        "cryptogram": "",
        "electronic_commerce_indicator": "01",
        "exemption_indicator": "low_risk",
        "requestor_challenge_indicator": "",
        "transaction_id": "",
        "version": "1.0.2"
      },
      "request_three_d_secure": "any"
    }
  },
  "customer": "01K755J9SV2364REVHB915Z2FW",
  "capture_method": "automatic",
  "confirm": true,
  "off_session": true,
  "setup_future_usage": "off_session",
  "metadata": {
    "additionalProperty": ""
  }
}'
{
  "amount": 100,
  "payment_method": "01K688H80Z3199KETHDJ4ZAFPS",
  "customer": {
    "created": "2026-07-03T10:37:04.295Z",
    "livemode": true,
    "email": null,
    "name": null,
    "phone": null,
    "preferred_locales": [
      "string"
    ],
    "address": {
      "city": null,
      "country": null,
      "line1": null,
      "line2": null,
      "postal_code": null,
      "state": null
    },
    "invoice_settings": {
      "default_payment_method": "01K688H80Z3199KETHDJ4ZAFPS"
    },
    "id": "string"
  },
  "capture_method": "automatic",
  "on_behalf_of": "string",
  "statement_descriptor": null,
  "setup_future_usage": "off_session",
  "id": "21210021c2855007efa2d657018",
  "created": "2026-07-03T10:37:04.295Z",
  "currency": {
    "iso": "usd",
    "scale": 2
  },
  "status": "canceled",
  "metadata": {
    "additionalProperty": "string"
  },
  "amount_capturable": 100,
  "amount_received": 100,
  "updated": "2026-07-03T10:37:04.295Z",
  "livemode": true,
  "next_action": {
    "redirect_to_url": {
      "return_url": null,
      "url": null
    },
    "type": "string",
    "three_d_secure": {
      "flow": "frictionless",
      "status_url": "https://api.yourco.com/v1/payment_intents/pi_123",
      "return_url": null,
      "message": {
        "allowed_origins": [
          "https://merchant.example.com"
        ]
      },
      "hint": {
        "scheme": "visa",
        "version": "2.2.0"
      },
      "idempotency_key": "string"
    }
  },
  "latest_payment": "01K755J9SV2364REVHB915Z2FW",
  "cancellation_reason": "abandoned",
  "canceled_at": null
}