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

# Push SKIS persons

> Add a batch of persons to a SKIS submission.

<Note>
  Each person carries your own `clientPersonId`, echoed back in the result, with every debt they owe you attached. It must be unique within the submission, and it is how you update or delete them later. Send the optional `Idempotency-Key` header to make a retried batch safe.
</Note>


## OpenAPI

````yaml post /reports/mai55/v1/submissions/{submissionId}/skis/persons
openapi: 3.1.0
info:
  title: MAI55 REST API
  description: >
    <p>REST API for reporting MAI55 data to the Lithuanian State Tax
    Inspectorate. Open a submission for a

    reporting year, push the reportable persons under its id, then submit it to
    the tax authority.</p>


    <p>A submission carries exactly one sub-report, chosen with
    <code>type</code>: <strong>SIPL</strong> (account

    incomes), <strong>SLIK</strong> (account balances) or <strong>SKIS</strong>
    (outstanding debt

    agreements).</p>
  version: 0.0.1
servers:
  - url: https://api.rrc.dev.finventi.com
    description: Development
  - url: https://api.rrc.finventi.com
    description: Production
security:
  - bearer-jwt: []
tags:
  - name: Submissions
  - name: SLIK
  - name: SKIS
  - name: SIPL
paths:
  /reports/mai55/v1/submissions/{submissionId}/skis/persons:
    post:
      tags:
        - SKIS
      summary: Push SKIS persons
      description: >-
        Adds a batch of persons to a SKIS submission, keyed by your
        `clientPersonId`. Push each person with every debt they owe you
        attached; each person becomes exactly one reportable person entry. In a
        submission, pushing a `clientPersonId` already present replaces it. In a
        correction this adds persons the tax authority has not seen -- one it
        holds is rejected, and must be amended with PUT or withdrawn with
        DELETE. A person you withdrew earlier may be pushed again under the same
        `clientPersonId`: the tax authority no longer holds them, so they are
        reported afresh rather than as a correction. Persons that fail are
        reported individually and the rest of the batch is still saved.
      operationId: postSkisPersons
      parameters:
        - name: Idempotency-Key
          in: header
          description: >-
            Client-provided idempotency key. UUID v4 suggested, max 255
            characters. If provided, duplicate requests with the same key return
            the cached response.
          schema:
            type: string
            maxLength: 255
        - name: submissionId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/SkisPerson'
            examples:
              PostSkisPersonsRequest:
                $ref: '#/components/examples/PostSkisPersonsRequest'
        required: true
      responses:
        '201':
          description: All persons saved
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PersonResult'
              examples:
                PostSkisPersons201:
                  $ref: '#/components/examples/PostSkisPersons201'
        '207':
          description: Partial success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PersonResult'
              examples:
                PostSkisPersons207:
                  $ref: '#/components/examples/PostSkisPersons207'
        '400':
          description: All failed, or the submission does not carry SKIS data
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PersonResult'
              examples:
                PostSkisPersons400:
                  $ref: '#/components/examples/PostSkisPersons400'
components:
  schemas:
    SkisPerson:
      type: object
      description: >-
        A person reported under SKIS, with every debt they owe you. The person
        is the unit of reporting: it becomes exactly one reportable person
        entry, and a correction replaces it whole, debts included.
      properties:
        clientPersonId:
          type: string
          description: >-
            Your own stable id for this person. Identifies them within the
            submission, so it must be unique across the persons you push, and it
            is how you address them on update and delete.
          example: CLIENT-000123
          maxLength: 255
          minLength: 0
        individual:
          $ref: '#/components/schemas/Individual'
        debts:
          type: array
          description: >-
            List of the person's debts. The total the person owes at the end of
            the reporting year is reported as the sum of their
            `reportableDebtAmount`, so it is derived from this list rather than
            sent.
          items:
            $ref: '#/components/schemas/Debt'
          maxItems: 1000
          minItems: 1
      required:
        - clientPersonId
        - debts
        - individual
    PersonResult:
      type: object
      description: Result of pushing, updating or deleting a single person
      properties:
        status:
          $ref: '#/components/schemas/Status'
        clientPersonId:
          type: string
          description: >-
            Your id for the person, echoed back to correlate this result with
            your record
          example: CLIENT-000123
        errors:
          type: array
          description: Why the person was rejected. Empty when accepted.
          items:
            $ref: '#/components/schemas/FieldError'
      required:
        - errors
        - status
    Individual:
      type: object
      description: >-
        A reportable natural person. Identify them either by Lithuanian personal
        code or, when they have none, by `otherIdentification` -- exactly one of
        the two.
      properties:
        firstName:
          type: string
          example: Jonas
          maxLength: 70
          minLength: 0
        lastName:
          type: string
          example: Jonaitis
          maxLength: 70
          minLength: 0
        personCode:
          type: string
          description: Lithuanian personal code, 11 digits
          example: 39001010000
          pattern: \d{11}
        otherIdentification:
          $ref: '#/components/schemas/OtherIdentification'
          description: Given instead of `personCode`.
      required:
        - firstName
        - lastName
    Debt:
      type: object
      description: >-
        One debt obligation of the person, as it stood at the end of the
        reporting year.
      properties:
        agreementNumber:
          type: string
          description: >-
            Number of the agreement, or of whatever other document evidences the
            debt.
          example: CR-2024-000123
          maxLength: 50
          minLength: 0
        agreementDate:
          type: string
          format: date
          description: Date the agreement was concluded.
          example: '2024-03-15'
        repaymentDate:
          type: string
          format: date
          description: Final repayment term of the debt. Must fall after `agreementDate`.
          example: '2029-03-15'
        debtKind:
          type: string
          description: >-
            Kind of debt -- line of credit, consumer credit, account credit,
            mortgage loan, factoring and so on.
          example: Consumer credit
          maxLength: 50
          minLength: 0
        debtAmount:
          type: number
          description: Debt amount stated in the agreement, in EUR.
          example: 15000
        reportableDebtAmount:
          type: number
          description: Amount still owed on 31 December of the reporting year, in EUR.
          example: 9800.5
        repaymentType:
          type: string
          description: >-
            How the debt is repaid -- periodic payments in equal amounts, end of
            term single payment and so on.
          example: Periodic payments in equal amounts
          maxLength: 50
          minLength: 0
        jointLiability:
          type: integer
          format: int32
          description: Number of people liable for the debt
          example: 2
          minimum: 2
        interestRate:
          type: number
          description: Interest rate of the debt, as a percentage.
          example: 7.5
      required:
        - agreementDate
        - agreementNumber
        - debtAmount
        - debtKind
        - interestRate
        - repaymentDate
        - repaymentType
        - reportableDebtAmount
    Status:
      type: string
      enum:
        - SUCCESS
        - FAILED
    FieldError:
      type: object
      description: Per-item validation/processing error
      properties:
        code:
          type: string
          description: >-
            Validation error code returned by the regulatory authority; only
            present for records that failed authority validation
          example: 51
        fields:
          type: array
          description: >-
            Fields that caused the error; may be empty for errors not tied to a
            single field (e.g. cross-field validation)
          example:
            - iban
          items:
            type: string
        message:
          type: string
          description: Human-readable error message
      required:
        - fields
    OtherIdentification:
      type: object
      description: Identification of a person who has no Lithuanian personal code.
      properties:
        identificationNumber:
          type: string
          description: >-
            The person's code where no Lithuanian personal code has been issued
            to them, or the number of the document identifying them.
          example: LV123456-78901
          maxLength: 50
          minLength: 0
        type:
          type: string
          description: What kind of number `identificationNumber` is.
          enum:
            - PERSON_CODE
            - TAX_PAYER_CODE
            - SOCIAL_SECURITY_NUMBER
            - DOCUMENT_NUMBER
            - OTHER
          example: DOCUMENT_NUMBER
        issuedBy:
          type: string
          description: >-
            ISO 3166-1 alpha-2 code of the country that issued the number or
            document. Give it when you hold it.
          example: LV
        documentType:
          $ref: '#/components/schemas/DocumentType'
          description: The document type the identification was taken from.
          example: LT_ID_CARD
        birthDate:
          type: string
          format: date
          description: >-
            Date of birth. The tax authority expects one whenever
            `identificationNumber` is given.
          example: '1990-01-01'
      required:
        - documentType
        - identificationNumber
        - type
    DocumentType:
      type: string
      enum:
        - UNKNOWN_DOCUMENT
        - LT_PASSPORT
        - BIRTH_CERTIFICATE
        - SOCIAL_INSURANCE_CERTIFICATE
        - DRIVERS_LICENSE
        - PENSIONER_CERTIFICATE
        - DISABILITY_CERTIFICATE
        - HEALTH_INSURANCE_CERTIFICATE
        - OFFICIAL_CERTIFICATE
        - EMPLOYEE_CERTIFICATE
        - LT_PERMANENT_RESIDENCE_PERMIT
        - BIRTH_RECORD
        - TRAVEL_DOCUMENT
        - CITIZENSHIP_RESTORATION_CERTIFICATE
        - LT_TEMPORARY_RESIDENCE_PERMIT
        - ACCREDITATION_CERTIFICATE
        - REFUGEE_TRAVEL_DOCUMENT
        - LT_ID_CARD
        - NON_LT_PASSPORT
        - SERVICE_PASSPORT
        - NATURAL_PERSON_INVITATION
        - VISA
        - FOREIGNER_REGISTRATION_CERTIFICATE
        - RETURN_CERTIFICATE
        - SEAFARER_PASSPORT
  examples:
    PostSkisPersonsRequest:
      value:
        - clientPersonId: CLIENT-000123
          individual:
            firstName: Jonas
            lastName: Jonaitis
            personCode: '39001010000'
          debts:
            - agreementNumber: CR-2024-000123
              agreementDate: '2024-03-15'
              repaymentDate: '2029-03-15'
              debtKind: Consumer credit
              debtAmount: 15000
              reportableDebtAmount: 9800.5
              repaymentType: Periodic payments in equal amounts
              interestRate: 7.5
            - agreementNumber: CR-2022-000777
              agreementDate: '2022-06-01'
              repaymentDate: '2042-06-01'
              debtKind: Mortgage loan
              debtAmount: 20000
              reportableDebtAmount: 15000
              repaymentType: Periodic payments in equal amounts
              jointLiability: 2
              interestRate: 3.2
        - clientPersonId: CLIENT-000124
          individual:
            firstName: Karl
            lastName: Kalnins
            otherIdentification:
              identificationNumber: LV123456-78901
              type: DOCUMENT_NUMBER
              issuedBy: LV
              documentType: LT_ID_CARD
              birthDate: '1986-03-22'
          debts:
            - agreementNumber: CR-2025-000901
              agreementDate: '2025-01-10'
              repaymentDate: '2027-01-10'
              debtKind: Line of credit
              debtAmount: 5000
              reportableDebtAmount: 4200
              repaymentType: End of term single payment
              interestRate: 9.9
        - clientPersonId: CLIENT-000125
          individual:
            firstName: Ona
            lastName: Onaite
            personCode: '48002020001'
          debts:
            - agreementNumber: CR-2023-000555
              agreementDate: '2023-09-01'
              repaymentDate: '2028-09-01'
              debtKind: Consumer credit
              debtAmount: 1200
              reportableDebtAmount: 800
              repaymentType: Periodic payments in equal amounts
              interestRate: 8.4
    PostSkisPersons201:
      value:
        - status: SUCCESS
          clientPersonId: CLIENT-000123
          errors: []
        - status: SUCCESS
          clientPersonId: CLIENT-000124
          errors: []
        - status: SUCCESS
          clientPersonId: CLIENT-000125
          errors: []
    PostSkisPersons207:
      value:
        - status: SUCCESS
          clientPersonId: CLIENT-000123
          errors: []
        - status: FAILED
          clientPersonId: CLIENT-000124
          errors:
            - fields:
                - debts[0]
              message: repaymentDate must be after agreementDate.
    PostSkisPersons400:
      value:
        - status: FAILED
          clientPersonId: CLIENT-000123
          errors:
            - fields:
                - individual
              message: Provide exactly one of personCode or otherIdentification.
  securitySchemes:
    bearer-jwt:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: >-
            https://auth.sandbox.finventi.com/realms/sti-connector/protocol/openid-connect/token
          scopes: {}

````