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

# Submit LRS Verification

> Submit a payment's remitter, purpose, documents, declarations and collected TCS to run LRS checks and advance it.



## OpenAPI

````yaml POST /pg/lrs/verify/
openapi: 3.0.0
info:
  title: Eximpe Payment Gateway API
  description: >-
    API for payment processing and order management through Eximpe payment
    gateway. This specification is for v3 API version.
  license:
    name: Proprietary
  version: 3.0.0
servers:
  - url: https://api-pacb-uat.eximpe.com
    description: Payment Gateway Sandbox URL
security:
  - clientAuth: []
    clientSecretAuth: []
    apiVersionHeader: []
tags:
  - name: Card Tokens
  - name: Merchants
  - name: Orders
  - name: Payment Links
  - name: Payments
  - name: Refunds
  - name: Settlements
  - name: Subscriptions
  - name: Virtual Bank Accounts
    description: Create and manage ICICI virtual accounts and read collected payments.
paths:
  /pg/lrs/verify/:
    post:
      tags:
        - LRS
      summary: Submit a payment's LRS verification details
      description: >-
        After a credit lands and the payment is created, submit the remitter,
        purpose, invoice, address, contact, declarations, supporting documents
        and the collected TCS. We run the checks (declarations, documents,
        sender-name match, TCS, money-match), post the payment to the buyer's
        LRS counter and advance it to **Under Review** — or leave it in **Action
        Required** (with a `missing` list) or **On Hold** (sender is not the PAN
        holder). `primary_person` is required when the remitter's `relation` is
        not `SELF`.


        **PSP callers must send `X-Merchant-ID`** naming the settling
        sub-merchant.
      operationId: v3_post_pg_lrs_verify_
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - payment_id
                - purpose_code
                - remitter
                - invoice
                - address
                - contact
                - tcs
                - declarations
                - documents
              properties:
                payment_id:
                  type: string
                  description: ID of the payment created for the credit.
                  example: PAY_1a2b3c4d5e
                purpose_code:
                  type: string
                  description: FEMA purpose code for the remittance.
                  example: S0305
                tcs_threshold_breached:
                  type: boolean
                  default: false
                  description: >-
                    Buyer's self-declaration that Rs.10L LRS was already crossed
                    this FY.
                  example: false
                remitter:
                  type: object
                  required:
                    - pan
                    - name
                    - dob
                    - relation
                  properties:
                    pan:
                      type: string
                      description: >-
                        Remitter PAN. Verified inline (needs name + dob) if not
                        already verified.
                      example: ABCDE1234F
                    name:
                      type: string
                      description: Remitter's full name as per PAN.
                      example: John Doe
                    dob:
                      type: string
                      format: date
                      description: Remitter's date of birth (YYYY-MM-DD).
                      example: '1990-01-01'
                    relation:
                      type: string
                      enum:
                        - SELF
                        - PARENT
                        - GUARDIAN
                        - SPOUSE
                        - SIBLING
                        - OTHER
                      description: Remitter's relation to the person the remittance is for.
                      example: SELF
                primary_person:
                  type: object
                  description: >-
                    Details of the person the remittance is for. Required when
                    `relation` is not `SELF`.
                  properties:
                    name:
                      type: string
                      example: Jane Doe
                    dob:
                      type: string
                      format: date
                      example: '2005-06-15'
                    passport_number:
                      type: string
                      example: M1234567
                invoice:
                  type: object
                  required:
                    - number
                    - date
                    - amount
                  properties:
                    number:
                      type: string
                      example: INV-2025-0091
                    date:
                      type: string
                      format: date
                      example: '2025-07-01'
                    amount:
                      type: number
                      example: 1200000
                address:
                  type: object
                  required:
                    - address1
                    - city
                    - state
                    - pincode
                  properties:
                    address1:
                      type: string
                      example: 12 MG Road
                    city:
                      type: string
                      example: Bengaluru
                    state:
                      type: string
                      example: Karnataka
                    pincode:
                      type: string
                      example: '560001'
                contact:
                  type: object
                  required:
                    - email
                    - mobile
                  properties:
                    email:
                      type: string
                      format: email
                      example: john@example.com
                    mobile:
                      type: string
                      example: '9876543210'
                tcs:
                  type: number
                  description: TCS collected from the buyer, in INR rupees.
                  example: 4000
                declarations:
                  type: object
                  required:
                    - resident_in_india
                    - lrs
                    - tcs
                    - source_of_funds
                  description: >-
                    All four must be true for the payment to clear checks;
                    otherwise it stays in Action Required.
                  properties:
                    resident_in_india:
                      type: boolean
                      example: true
                    lrs:
                      type: boolean
                      example: true
                    tcs:
                      type: boolean
                      example: true
                    source_of_funds:
                      type: boolean
                      example: true
                documents:
                  type: array
                  description: >-
                    Supporting documents for the purpose code. Upload each via
                    POST /pg/lrs/documents first, then reference it here.
                  items:
                    type: object
                    required:
                      - type
                      - ref
                    properties:
                      type:
                        type: string
                        description: Document type (same value used at upload).
                        enum:
                          - fee_invoice
                          - offer_letter
                          - passport
                          - relationship_declaration
                          - student_id_or_visa
                          - student_id
                        example: offer_letter
                      ref:
                        type: string
                        description: '`ref` returned by the document upload.'
                        example: a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d
                linked_payment_id:
                  type: string
                  nullable: true
                  description: >-
                    When this credit tops up an earlier LRS payment, the earlier
                    payment's ID.
                  example: null
                reason:
                  type: string
                  enum:
                    - REMAINING_AMOUNT
                    - TCS_PAYMENT
                  nullable: true
                  description: >-
                    Why this credit is a top-up of an earlier payment (audit
                    label). Only valid together with `linked_payment_id` —
                    sending `reason` without it returns 400.
                  example: null
            example:
              payment_id: PAY_1a2b3c4d5e
              purpose_code: S0305
              tcs_threshold_breached: false
              remitter:
                pan: ABCDE1234F
                name: John Doe
                dob: '1990-01-01'
                relation: SELF
              invoice:
                number: INV-2025-0091
                date: '2025-07-01'
                amount: 1200000
              address:
                address1: 12 MG Road
                city: Bengaluru
                state: Karnataka
                pincode: '560001'
              contact:
                email: john@example.com
                mobile: '9876543210'
              tcs: 4000
              declarations:
                resident_in_india: true
                lrs: true
                tcs: true
                source_of_funds: true
              documents:
                - type: offer_letter
                  ref: a1b2c3d4-5e6f-7a8b-9c0d-1e2f3a4b5c6d
                - type: fee_invoice
                  ref: b2c3d4e5-6f7a-8b9c-0d1e-2f3a4b5c6d7e
      responses:
        '200':
          description: Verification details processed.
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: Verification details processed
                  data:
                    type: object
                    properties:
                      payment_id:
                        type: string
                        example: PAY_1a2b3c4d5e
                      status:
                        type: string
                        enum:
                          - under_review
                          - action_required
                          - on_hold
                        description: Resulting payment state.
                        example: under_review
                      tcs_check:
                        type: string
                        enum:
                          - match
                          - mismatch
                          - n/a
                        example: match
                      missing:
                        type: array
                        items:
                          type: string
                        description: >-
                          Fields/checks still outstanding when status is
                          `action_required`.
                        example: []
                      outstanding:
                        type: string
                        description: Shortfall still owed (INR), if any.
                        example: '0.00'
                      reason:
                        type: string
                        nullable: true
                        description: >-
                          Machine reason when not advanced (e.g.
                          PURPOSE_CODE_NOT_ALLOWED, PAN_NOT_VERIFIED).
                        example: null
              examples:
                under_review:
                  summary: Cleared to Under Review
                  value:
                    success: true
                    message: Verification details processed
                    data:
                      payment_id: PAY_1a2b3c4d5e
                      status: under_review
                      tcs_check: match
                      missing: []
                      outstanding: '0.00'
                      reason: null
                action_required:
                  summary: Action Required — TCS short
                  value:
                    success: true
                    message: Verification details processed
                    data:
                      payment_id: PAY_1a2b3c4d5e
                      status: action_required
                      tcs_check: mismatch
                      missing:
                        - tcs
                        - outstanding
                      outstanding: '5000.00'
                      reason: null
                on_hold:
                  summary: On Hold — sender is not the PAN holder
                  value:
                    success: true
                    message: Verification details processed
                    data:
                      payment_id: PAY_1a2b3c4d5e
                      status: on_hold
                      tcs_check: n/a
                      missing: []
                      outstanding: '0.00'
                      reason: SENDER_NOT_PAN_HOLDER
        '400':
          description: Invalid request — validation error or business rule failure.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v3_ErrorResponse'
        '500':
          description: Unexpected error processing verification details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/v3_ErrorResponse'
      security:
        - clientAuth: []
          clientSecretAuth: []
          merchantAuth: []
          apiVersionHeader: []
components:
  schemas:
    v3_ErrorResponse:
      type: object
      required:
        - success
        - error
      properties:
        success:
          type: boolean
          description: Indicates if the request was successful
        error:
          $ref: '#/components/schemas/v3_ErrorDetails'
    v3_ErrorDetails:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: string
          description: Error code (e.g., ERR_ORDER_002)
        message:
          type: string
          description: Error message
        details:
          type: object
          description: Detailed validation error information with field-specific errors
          additionalProperties:
            type: string
            description: Error message for the specific field
  securitySchemes:
    clientAuth:
      type: apiKey
      name: X-Client-ID
      in: header
      description: >-
        **Client Application ID** - Your unique application identifier used to
        authenticate API requests. You can find your Client ID in the Developer
        Settings section of the merchant dashboard.
      x-displayName: Client ID
      x-example: your-client-id
    clientSecretAuth:
      type: apiKey
      name: X-Client-Secret
      in: header
      description: >-
        **Client Secret Key** - Your secret key used alongside the Client ID for
        secure authentication. Keep this confidential and never expose it in
        client-side code. Available in the Developer Settings section of the
        merchant dashboard.
      x-displayName: Client Secret
      x-example: your-client-secret
    apiVersionHeader:
      type: apiKey
      name: X-API-Version
      in: header
      description: >-
        **API Version** - Specifies which version of the API to use (e.g.,
        '1.X.X', '2.X.X', or '3.X.X'). This header allows you to control which
        API version your integration uses. Default version information is
        available in the Developer Settings.
      x-displayName: API Version
      x-example: 3.0.0
    merchantAuth:
      type: apiKey
      name: X-Merchant-ID
      in: header
      description: >-
        **Merchant Identifier** - The unique ID for the merchant account. This
        is required for PSP (Payment Service Provider) merchants who manage
        multiple merchant accounts. You can find merchant IDs in the Merchant
        Management section of the dashboard.
      x-displayName: Merchant ID
      x-example: your-merchant-id

````