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

# Process — Retail Card Present

> Push disbursement for retail card-present configured clients.



## OpenAPI

````yaml specs/ingopay-process-retail-card-present.yaml POST /gateway/process--retail
openapi: 3.0.3
info:
  title: IngoPay API — Push Method Retail Card-Present
  description: >
    Submit a request to push funds at a physical retail location where card
    track data is captured at point of sale.


    This spec covers retail card-present disbursements for card (`CA`) and bill
    payment (`BP`) account types. These transactions originate at a physical
    point-of-sale terminal where card track data is read directly from the card.


    **`account_type` determines the payment type:**

    - `CA` — Debit or credit card (card-present).

    - `BP` — Bill payment (card-present).


    **Client configuration determines field requirements:**

    - `store_id`, `clerk_id`, `terminal_id` — Required when the client is
      configured as a retail participant (`retail` flag enabled in client
      configuration). Always provide these for card-present integrations.

    - `retail_location{}` — Required when the client is configured with the
      retail location flag (`retail_object` flag enabled in client
      configuration), independent of the `retail` flag. Applicable to `CA`
      account type only — not used for `BP`. Contact your Ingo integration
      manager to confirm your configuration.


    > **Assume Success:** Clients should assume success for any Process request
    where a response was not received from Ingo Payments, including assumption
    of normal settlement. Any consumer funds associated with the transaction
    should be accounted for aligning with normal successful transaction
    processing.


    > **Log Transaction ID:** Log the Ingo `transaction_id` and
    `participant_unique_id1` for every transaction — Ingo Payment Services will
    request these values for any support interactions.
  version: '11'
  contact:
    name: Ingo Money Developer Support
    url: https://developers.ingomoney.com
servers:
  - url: https://payapi-sandbox.ingo.money
    description: Sandbox
  - url: https://payapi.ingo.money
    description: Production
security:
  - HmacAuth: []
paths:
  /gateway/process--retail:
    post:
      tags:
        - Push Payments
      summary: Push funds at a retail card-present terminal
      description: >
        Initiates a push disbursement at a physical retail location using card
        track data captured at point of sale and a token from a prior Verify
        call. Set `account_type` to `CA` for card or `BP` for bill payment.
      operationId: processRetailCardPresent
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProcessRetailCardPresentRequest'
            examples:
              card_present_ca:
                summary: Card present — account_type CA
                value:
                  participant_id: 12345
                  account_type: CA
                  amount: 101
                  customer_account_token: ca875cce-58c0-46a0-8f14-676190cc7df6
                  source_of_funds: 4
                  recipient_phone: '1231231234'
                  participant_unique_id1: fb746578-c4c3-498f-b398-1ff07b4fe2ff
                  participant_unique_id2: 77d6b010-eab4-44dc-9a27-6ffa4838c9f2
                  track1: >-
                    %B4111111111111111^ROCKETS/JOHNNY^2612101000000000000000000000000?
                  track2: ;4111111111111111=26121010000000000000?
                  store_id: STORE-001
                  clerk_id: CLK-007
                  terminal_id: TERM-042
                  retail_location:
                    location_name: ABC Retail
                    location_id: LOC-1234
                    location_address: 100 Innovation Way
                    location_city: Anytown
                    location_state: GA
                    location_zip: '00000'
                  ledger:
                    api_key: lk_live_abc123xyz
                    user_id: usr_00456
                    entity_type: program
                    entity_id: ent_00789
                  timestamp: 1579832224
                  version: 11
              card_present_bp:
                summary: Card present — account_type BP
                value:
                  participant_id: 12345
                  account_type: BP
                  amount: 1010.5
                  customer_account_token: a74eacf4-32e8-4081-b69c-565a89dd6cf1
                  source_of_funds: 4
                  recipient_phone: '1231231234'
                  participant_unique_id1: f8f68709-8e5d-4c19-8ca0-2eaffef4ec57
                  participant_unique_id2: 257b5bae-d52f-42e2-8f2c-0700d8d7a7a5
                  track1: >-
                    %B4111111111111111^ROCKETS/JOHNNY^2612101000000000000000000000000?
                  track2: ;4111111111111111=26121010000000000000?
                  store_id: STORE-001
                  clerk_id: CLK-007
                  terminal_id: TERM-042
                  timestamp: 1579832224
                  version: 11
      responses:
        '200':
          description: Payment accepted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProcessRetailCardPresentResponse'
              example:
                status: 100
                client_message: Success
                data:
                  estimated_posting_time: Payment will post within 5 minutes.
                  estimated_posting_date: 04/21/2026
                  transaction_id: 2361541
                  request_timestamp: 1579832290
                  customer_account_token: ca875cce-58c0-46a0-8f14-676190cc7df6
                  participant_unique_id1: fb746578-c4c3-498f-b398-1ff07b4fe2ff
                  participant_unique_id2: 77d6b010-eab4-44dc-9a27-6ffa4838c9f2
                time: '1.2044'
        '400':
          description: Validation error — check request body
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                status: 710
                client_message: Issuer Declined - Customer should contact card issuer
                data:
                  request_timestamp: 1579832290
components:
  schemas:
    ProcessRetailCardPresentRequest:
      type: object
      required:
        - participant_id
        - account_type
        - amount
        - customer_account_token
        - source_of_funds
        - participant_unique_id1
        - timestamp
        - version
      description: >
        `store_id`, `clerk_id`, and `terminal_id` are required when the client
        is configured as a retail participant. `retail_location{}` is
        additionally required for `CA` account type when the client is
        configured with the retail location flag. Both are determined by
        client-level backend configuration — contact your Ingo integration
        manager to confirm your setup.
      properties:
        participant_id:
          type: integer
          description: Unique participant identifier assigned by Ingo.
          example: 12345
        account_type:
          type: string
          enum:
            - CA
            - BP
          minLength: 1
          description: >
            `CA` = card-present (debit or credit), `BP` = bill payment
            card-present.
          example: CA
        amount:
          type: number
          format: float
          minimum: 0.01
          description: Amount of the transaction.
          example: 101
        customer_account_token:
          type: string
          minLength: 1
          maxLength: 255
          description: >
            Token representing the account number and customer data as provided
            in the response from a previous Verify API call.
          example: ca875cce-58c0-46a0-8f14-676190cc7df6
        source_of_funds:
          type: integer
          enum:
            - 1
            - 2
            - 3
            - 4
          description: >
            Funding source indicator: 1 = Cash, 2 = Check, 3 = Combo of Cash &
            Check, 4 = Corp Disbursement.
          example: 4
        recipient_phone:
          type: string
          maxLength: 10
          nullable: true
          description: 10-digit recipient phone number.
          example: '1231231234'
        participant_unique_id1:
          type: string
          minLength: 1
          maxLength: 255
          description: >
            Participant assigned transaction ID for the process request. Value
            must be unique and may not contain NPI data. Used for idempotency —
            a duplicate value returns an idempotent response without initiating
            a new push request. Appears on daily reconciliation reports.
          example: fb746578-c4c3-498f-b398-1ff07b4fe2ff
        participant_unique_id2:
          type: string
          maxLength: 255
          nullable: true
          description: >
            Optional second participant assigned transaction ID. Does not appear
            on daily reconciliation reports.
          example: 77d6b010-eab4-44dc-9a27-6ffa4838c9f2
        track1:
          type: string
          maxLength: 255
          nullable: true
          pattern: >-
            ^(%B)([0-9]{12,22})([/^])([\s\S]*)([/^])([0-9]{2})([0-9]{2})([0-9]*)([?])$
          description: >
            URL-encoded Track 1 data from and including the beginning sentinel
            to and including the ending sentinel. Captured at point of sale.
          example: '%B4111111111111111^ROCKETS/JOHNNY^2612101000000000000000000000000?'
        track2:
          type: string
          maxLength: 255
          nullable: true
          pattern: ^(;)([0-9]{12,22})(=)([0-9]{2})([0-9]{2})([0-9])*([?])$
          description: >
            Track 2 data from and including the beginning sentinel to and
            including the ending sentinel. Captured at point of sale.
          example: ;4111111111111111=26121010000000000000?
        store_id:
          type: string
          minLength: 1
          maxLength: 255
          description: >
            Client assigned store ID. Required when the client is configured as
            a retail participant (`retail` flag enabled in client
            configuration).
          example: STORE-001
        clerk_id:
          type: string
          minLength: 1
          maxLength: 255
          description: >
            Client assigned clerk ID. Required when the client is configured as
            a retail participant (`retail` flag enabled in client
            configuration).
          example: CLK-007
        terminal_id:
          type: string
          minLength: 1
          maxLength: 255
          description: >
            Client assigned terminal ID. Required when the client is configured
            as a retail participant (`retail` flag enabled in client
            configuration).
          example: TERM-042
        retail_location:
          type: object
          description: >
            Client assigned retail location information. Required for `CA`
            account type when the client is configured with the retail location
            flag (`retail_object` flag enabled in client configuration). This
            flag is independent of the `retail` flag and must be confirmed with
            your Ingo integration manager. Not applicable for `BP` account type.
          required:
            - location_name
            - location_id
            - location_address
            - location_city
            - location_state
            - location_zip
          properties:
            location_name:
              type: string
              minLength: 1
              maxLength: 150
              description: Client assigned retail location name.
              example: ABC Retail
            location_id:
              type: string
              minLength: 1
              maxLength: 150
              description: Client assigned retail location ID.
              example: LOC-1234
            location_address:
              type: string
              minLength: 1
              maxLength: 150
              description: Client assigned retail location address.
              example: 456 Retail St.
            location_city:
              type: string
              minLength: 1
              maxLength: 150
              description: Client assigned retail location city.
              example: Atlanta
            location_state:
              type: string
              minLength: 2
              maxLength: 2
              pattern: >-
                ^(?:A[LKSZRAEP]|C[AOT]|D[EC]|F[LM]|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEHINOPST]|N[CDEHJMVY]|O[HKR]|P[ARW]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$
              description: >
                Client assigned retail location state (standard US postal
                abbreviation).
              example: GA
            location_zip:
              type: string
              minLength: 1
              maxLength: 10
              pattern: ^[0-9]{5}(?:-[0-9]{4})?$
              description: Client assigned retail location zip code.
              example: '30333'
        ledger:
          $ref: '#/components/schemas/Ledger'
        timestamp:
          type: integer
          format: int64
          description: Unix timestamp of the request.
          example: 1579832224
        version:
          type: integer
          description: API version of the request. Current version is 11.
          example: 11
    ProcessRetailCardPresentResponse:
      type: object
      properties:
        status:
          type: integer
          description: >
            Numeric code describing the status of the API request. 100 =
            Success.
          example: 100
        client_message:
          type: string
          description: Text description associated with the status code.
          example: Success
        data:
          type: object
          properties:
            estimated_posting_time:
              type: string
              description: Provided on success. Estimated posting time narrative.
              example: Payment will post within 5 minutes.
            estimated_posting_date:
              type: string
              description: Provided on success. Estimated posting date.
              example: 04/21/2026
            transaction_id:
              type: integer
              description: >
                Always provided on success and in certain failure conditions.
                Unique transaction identifier. Log this value — Ingo Payment
                Services will request it for support interactions.
              example: 2361541
            request_timestamp:
              type: integer
              format: int64
              description: Unix timestamp of the request.
              example: 1579832290
            customer_account_token:
              type: string
              description: Echo of value from request. Provided on success.
              example: ca875cce-58c0-46a0-8f14-676190cc7df6
            participant_unique_id1:
              type: string
              description: >
                Always provided on success and in certain failure conditions.
                Echo of value provided on request.
              example: fb746578-c4c3-498f-b398-1ff07b4fe2ff
            participant_unique_id2:
              type: string
              nullable: true
              description: >
                Provided on success and in certain failure conditions if sent on
                original request. Echo of value provided on request.
              example: 77d6b010-eab4-44dc-9a27-6ffa4838c9f2
        time:
          type: string
          description: Time in seconds to complete the request.
          example: '1.2044'
    ErrorResponse:
      type: object
      properties:
        status:
          type: integer
          example: 710
        client_message:
          type: string
          example: Issuer Declined - Customer should contact card issuer
        data:
          type: object
          properties:
            request_timestamp:
              type: integer
              format: int64
              example: 1579832290
    Ledger:
      type: object
      description: >
        Required for clients configured for ledger service. Exclude entirely if
        not applicable to your integration.
      required:
        - api_key
        - user_id
        - entity_type
        - entity_id
      properties:
        api_key:
          type: string
          minLength: 1
          maxLength: 100
          description: API key associated with the ledger program.
          example: lk_live_abc123xyz
        user_id:
          type: string
          minLength: 1
          maxLength: 100
          description: User ID associated with the ledger program.
          example: usr_00456
        entity_type:
          type: string
          minLength: 1
          maxLength: 50
          enum:
            - program
            - business
            - user
          description: >
            Entity type for the ledger. Accepted values: `program`, `business`,
            `user`.
          example: program
        entity_id:
          type: string
          maxLength: 100
          nullable: true
          description: Entity ID associated with the ledger.
          example: ent_00789
  securitySchemes:
    HmacAuth:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        HMAC-SHA512 signed Authorization header. See the Authentication page for
        the complete signing guide.

````