Kushki Charges API

Direct charge against a previously created card token

OpenAPI Specification

kushki-charges-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Kushki Card Payments Branches Charges API
  description: 'Card-not-present REST API for the Kushki regional non-banking acquirer.

    Card numbers are tokenized client-side by Kushki.js Hosted Fields or the

    iOS / Android SDKs and the resulting `transactionToken` is exchanged

    server-side for a charge, pre-authorization, capture, or void.

    '
  version: 1.0.0
  contact:
    name: Kushki
    url: https://kushkipagos.com/
    email: dev@kushkipagos.com
  license:
    name: Kushki API Terms
    url: https://kushkipagos.com/legal
servers:
- url: https://api.kushkipagos.com
  description: Production
- url: https://api-uat.kushkipagos.com
  description: UAT / Sandbox
- url: https://api-stg.kushkipagos.com
  description: Staging
security:
- PublicMerchantId: []
- PrivateMerchantId: []
tags:
- name: Charges
  description: Direct charge against a previously created card token
paths:
  /card/v1/charges:
    post:
      summary: Kushki Create Card Charge
      description: Charge a previously tokenized card in a single step. Returns a ticketNumber used for void or refund.
      operationId: createCardCharge
      tags:
      - Charges
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChargeRequest'
            example:
              token: 0aabF1aae450476cb7547bda5bdfc11d
              amount:
                subtotalIva: 0
                subtotalIva0: 1000
                ice: 0
                iva: 0
                currency: USD
              fullResponse: true
      responses:
        '200':
          description: Charge approved
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChargeResponse'
        4XX:
          $ref: '#/components/responses/ErrorResponse'
  /card/v1/deferred:
    post:
      summary: Kushki Create Deferred Card Charge
      description: Charge a card with deferred/installment terms. Specify months and rate_of_interest per the issuer's deferred catalog.
      operationId: createDeferredCharge
      tags:
      - Charges
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeferredChargeRequest'
      responses:
        '200':
          description: Deferred charge approved
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChargeResponse'
        4XX:
          $ref: '#/components/responses/ErrorResponse'
components:
  schemas:
    ContactDetails:
      type: object
      properties:
        firstName:
          type: string
        lastName:
          type: string
        documentType:
          type: string
          enum:
          - CC
          - NIT
          - CE
          - DNI
          - RUT
          - CURP
          - RFC
          - RUC
          - CPF
          - CNPJ
        documentNumber:
          type: string
        email:
          type: string
          format: email
        phoneNumber:
          type: string
    Amount:
      type: object
      required:
      - subtotalIva
      - subtotalIva0
      - iva
      - currency
      properties:
        subtotalIva:
          type: number
          description: Subtotal taxed at IVA / VAT.
        subtotalIva0:
          type: number
          description: Subtotal at 0% IVA / VAT.
        ice:
          type: number
          description: ICE (Ecuadorian excise tax). Use 0 if not applicable.
          default: 0
        iva:
          type: number
          description: IVA / VAT amount.
        extraTaxes:
          type: object
          additionalProperties:
            type: number
          description: Country-specific extra taxes (e.g. propina, tasaAeroportuaria, agenciaDeViaje).
        currency:
          type: string
          enum:
          - USD
          - COP
          - PEN
          - CLP
          - MXN
          - BRL
    DeferredChargeRequest:
      allOf:
      - $ref: '#/components/schemas/ChargeRequest'
      - type: object
        required:
        - months
        properties:
          months:
            type: integer
            minimum: 1
            maximum: 48
          interestRate:
            type: number
    ChargeResponse:
      type: object
      properties:
        ticketNumber:
          type: string
        transactionReference:
          type: string
        approvedTransactionAmount:
          type: number
        currencyCode:
          type: string
        approvalCode:
          type: string
        token:
          type: string
        rrn:
          type: string
        responseText:
          type: string
        responseCode:
          type: string
        details:
          type: object
          properties:
            transactionId:
              type: string
            transactionStatus:
              type: string
            cardHolderName:
              type: string
            paymentBrand:
              type: string
            bin:
              type: string
            lastFourDigits:
              type: string
            cardType:
              type: string
            cardCountry:
              type: string
    Error:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
    ChargeRequest:
      type: object
      required:
      - token
      - amount
      properties:
        token:
          type: string
        amount:
          $ref: '#/components/schemas/Amount'
        months:
          type: integer
          description: Installment count for deferred payments.
        deferred:
          type: object
          properties:
            months:
              type: integer
            graceMonths:
              type: integer
            creditType:
              type: string
        contactDetails:
          $ref: '#/components/schemas/ContactDetails'
        metadata:
          type: object
          additionalProperties: true
        fullResponse:
          type: boolean
          default: false
        threeDomainSecure:
          type: object
          description: 3DS 2.0 authentication payload (eci, cavv, xid, directoryServerTransactionId).
  responses:
    ErrorResponse:
      description: Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    PublicMerchantId:
      type: apiKey
      in: header
      name: Public-Merchant-Id
      description: Client-side merchant key. Used by Kushki.js and mobile SDKs to tokenize cards. Never use server-side for charging.
    PrivateMerchantId:
      type: apiKey
      in: header
      name: Private-Merchant-Id
      description: Server-side merchant key. Required for charge, capture, void, refund, subscription, and payout calls.