> ## Documentation Index
> Fetch the complete documentation index at: https://docs.slash.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create payment intent

> Create a payment intent for collection with the Slash Checkout SDK. When returned, the client secret authorizes browser bootstrap for only this payment intent and must not be logged or stored in browser persistence.



## OpenAPI

````yaml post /payments/payment-intent
openapi: 3.1.0
info:
  title: Slash Public API
  description: API description
  version: 0.0.1
  contact: {}
servers:
  - url: https://api.slash.com
    description: production
security:
  - api_key: []
  - partner_api_key: []
  - bearer: []
  - developer_application: []
paths:
  /payments/payment-intent:
    post:
      description: >-
        Create a payment intent for collection with the Slash Checkout SDK. When
        returned, the client secret authorizes browser bootstrap for only this
        payment intent and must not be logged or stored in browser persistence.
      parameters:
        - name: X-Idempotency-Key
          description: >-
            An optional unique key for this payment intent. Retrying the same
            request with the same key returns the previously created payment
            intent.
          in: header
          required: false
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                amount:
                  type: integer
                  minimum: 1
                  description: Payment amount in cents.
                currency:
                  type: string
                  description: ISO currency code for the payment.
                  enum:
                    - usd
                    - eur
                metadata:
                  type: object
                  description: >-
                    Merchant-defined metadata stored on the payment intent and
                    returned in payment intent responses.
                  additionalProperties: true
              required:
                - amount
                - currency
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/paths.payments.payment-intent._dto.PostResponse
                x-entrypoint:
                  virtualPath: paths/payments/payment-intent/_dto/PostResponse
                  sourcePath: paths/payments/payment-intent/_dto/PostResponse.yaml
                  title: PostResponse
                  origin: ./src/publicApi
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: TooManyRequests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - api_key: []
        - bearer: []
components:
  schemas:
    paths.payments.payment-intent._dto.PostResponse:
      type: object
      properties:
        paymentIntent:
          type: object
          properties:
            id:
              type: string
              description: Unique identifier for the payment intent.
            status:
              type: string
              description: Status of the payment intent.
              enum:
                - pending
                - processing
                - succeeded
                - failed
                - canceled
            amount:
              type: integer
              description: Payment amount in cents.
            currency:
              type: string
              description: ISO currency code for the payment.
              enum:
                - usd
                - eur
            metadata:
              type: object
              description: Merchant-defined metadata stored on the payment intent.
              additionalProperties: true
            createdAt:
              type: string
              format: date-time
              description: ISO-8601 timestamp the payment intent was created at.
            updatedAt:
              type: string
              format: date-time
              description: ISO-8601 timestamp the payment intent last changed status.
          required:
            - id
            - status
            - amount
            - currency
            - createdAt
            - updatedAt
        clientSecret:
          type: string
          description: >-
            Sensitive PaymentIntent-scoped browser capability. The plaintext is
            returned only in this response; Slash stores only its hash.
      required:
        - paymentIntent
      x-entrypoint:
        virtualPath: paths/payments/payment-intent/_dto/PostResponse
        sourcePath: paths/payments/payment-intent/_dto/PostResponse.yaml
        title: PostResponse
        origin: ./src/publicApi
      title: PostResponse
    Error:
      type: object
      properties:
        message:
          type: string
        name:
          type: string
        identifier:
          type: string
        rawStatus:
          type: number
        meta:
          type: object
          additionalProperties: true
      required:
        - message
        - name
        - identifier
        - rawStatus
      x-entrypoint:
        origin: ./src/publicApi
        sourcePath: ./src/publicApi/main.yaml
        title: Error
        virtualPath: components/Error
      title: Error
  securitySchemes:
    api_key:
      type: apiKey
      description: |
        API key authentication for public API requests.

        Keys come in two flavors:

        - *Legal-entity-scoped keys* are pinned to a single legal entity.
          Minted via the dashboard under a specific entity; every request
          acts on that entity.
        - *User-scoped keys* are pinned to a user and span every legal
          entity that user has access to. Every request made with a
          user-scoped key (except `GET /legal-entity`, which lists the
          legal entities the user can access) must include an
          `x-legal-entity` header naming the legal entity the request is
          operating on. Requests without the header are rejected with
          `400`. The authenticated user must have an active permission
          role on the supplied legal entity, otherwise the request is
          rejected with `403`.
      name: X-API-Key
      in: header
    partner_api_key:
      type: apiKey
      description: |
        Partner-program API key authentication.

        Keys are minted in the partner dashboard (Developers → API Keys),
        are scoped to a single partner program, and are prefixed with
        `sk_partner_`. Partner keys are only accepted by routes that
        declare this scheme; they are rejected by `api_key` routes and
        vice versa.
      name: X-API-Key
      in: header
    bearer:
      type: http
      scheme: bearer
    developer_application:
      type: http
      scheme: basic

````