---
title: "Submit Systematic Program Transaction"
url: "https://developers.zinnia.com/apis/policy-transactions-1-0-2/versions/d0006570-ab9d-464e-814f-d120ba425e84/operations/systematicProgram1"
---

> Full API specification: https://developers.zinnia.com/apis/policy-transactions-1-0-2/versions/d0006570-ab9d-464e-814f-d120ba425e84.md

# Submit Systematic Program Transaction

`POST` `/policy/v1/transactions/{planCode}/{policyNumber}/systematicprograms`

Operation ID: `systematicProgram1`

## Path parameters

- `planCode` (string, required)
- `policyNumber` (string, required)

## Request body (required)

Content types: `application/json`

## Responses

- `202` - Success
- `400` - Systematic Program Failure Response
- `500` - Internal server error. Please check server logs for more details.

## OpenAPI definition

```yaml
openapi: 3.1.0
info:
  title: Zinnia Policy Transactions API.
  version: 1.0.8
servers:
  - url: https://dev.api.zinnia.io
    description: DEV Environment
  - url: https://qa.api.zinnia.io
    description: QA Environment
paths:
  /policy/v1/transactions/{planCode}/{policyNumber}/systematicprograms:
    post:
      x-kong-plugin-pre-function:
        config:
          access:
            - >
              local path = kong.request.get_path()

              local new_path = path:gsub("^/policy/v1/transactions",
              "/bpm/v1/policies")

              kong.service.request.set_path(new_path)
      tags:
        - Financial Transactions
      summary: Submit Systematic Program Transaction
      operationId: systematicProgram1
      parameters:
        - name: planCode
          in: path
          required: true
          schema:
            type: string
        - name: policyNumber
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/SystematicProgramSubmitRequest"
      responses:
        "202":
          description: Success
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/TransactionAcceptedResponse"
        "400":
          description: Systematic Program Failure Response
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PolicyTransactionResponse"
              examples:
                failure:
                  $ref: "#/components/examples/transactionFailureResponse"
        "500":
          description: Internal server error. Please check server logs for more details.
      security:
        - Auth0: []
security:
  - Auth0: []
components:
  schemas:
    SystematicProgramSubmitRequest:
      type: object
      allOf:
        - $ref: "#/components/schemas/SystematicProgramUpdate"
      properties:
        caseId:
          type: string
          example: CA0000007389
          description: Zinnia Live Case ID
        externalTransactionId:
          type: string
          description: Transaction ID from external system
          example: A12345
        externalArrangementId:
          type: string
          description: Arrangement ID from external system
          example: B45678
    TransactionAcceptedResponse:
      type: object
      properties:
        correlationId:
          type: string
          example: 3a2a3435-2089-4b81-9959-e0d569ccf4f0
          description: Unique identifier which used by every system to trace the request
        caseId:
          type: string
          example: CA0000369469
          description: Zinnia Live Case ID
        caseStatus:
          type: string
          example: IN_PROGRESS
          description: Zinnia Live Case Status
        pdfId:
          type: string
          description: Identifier for the generated or associated PDF document (e.g.
            OnBase document number). Returned on systematic program setup and
            update submit when available.
          example: DOC-10004567
    PolicyTransactionResponse:
      type: object
      properties:
        status:
          type: string
          enum:
            - success
            - failure
        errors:
          type: array
          items:
            $ref: "#/components/schemas/Errors"
    SystematicProgramUpdate:
      type: object
      properties:
        correlationId:
          type: string
          example: 657b717b7dcf554abf9ef067
          description: The unique ID to track transaction request across all systems
        effectiveDate:
          type: string
          format: date
          pattern: ([0-9]{4})-([0-9]{2})-([0-9]{2})
          description: Date (with pattern "yyyy-mm-dd") when the transaction was
            originally scheduled or expected to happen, can be a non-business
            day
        reverseInitiator:
          type: boolean
          description: Property to isolate source transaction(s) that initiated the reversal
        authorizationManual:
          type: boolean
          description: Indicates manual authorization handling may apply for this submission
        isFractionalAmountAuthorized:
          type: boolean
          description: Indicates whether fractional amount authorization applies for this
            systematic program update
        contactMFA:
          $ref: "#/components/schemas/SystematicProgramContactMfa"
        agent:
          $ref: "#/components/schemas/SystematicProgramNamedParty"
        policyHolder:
          $ref: "#/components/schemas/SystematicProgramNamedParty"
        taxWithholdingInstructions:
          type: array
          items:
            $ref: "#/components/schemas/TaxWithholdingInstructions"
        fundAllocation:
          $ref: "#/components/schemas/AdhocFundAllocation"
        fundDistributions:
          type: array
          items:
            $ref: "#/components/schemas/AdhocFundDistributions"
        featureTransactionProduct:
          $ref: "#/components/schemas/FeatureTransactionProduct"
        submittedDate:
          type: string
          format: date-time
          description: When the transaction was submitted (ISO-8601)
          example: 2026-02-27T11:55:17Z
        currency:
          type: string
          description: ISO 4217 currency code
          example: USD
        systematicProgram:
          $ref: "#/components/schemas/AdhocSystematicProgram"
      required:
        - effectiveDate
        - systematicProgram
    Errors:
      type: object
      properties:
        errorCode:
          type: string
          example: INVALID_REQUEST
          description: This is the error code generated by BPM system
        attribute:
          type: string
        error:
          type: string
          description: This is the error generated by BPM system
        resolution:
          type: string
          description: Resolution generated by BPM system to resolve the error
    SystematicProgramContactMfa:
      type: object
      description: Contact channels for multi-factor authentication on systematic
        program transactions
      properties:
        email:
          type: string
          format: email
          example: mfa.user@example.com
        mobile:
          type: string
          description: Mobile number (E.164 or display format)
          example: "+12025550199"
    SystematicProgramNamedParty:
      type: object
      description: Named participant (e.g. servicing agent or policy holder context on
        the request)
      properties:
        primaryId:
          type: string
          example: servicing.agent@example.com
        name:
          type: string
          example: Example Agent
    TaxWithholdingInstructions:
      type: object
      properties:
        partyId:
          type: string
          example: Party_PI_1
          description: Impacted Party in the event of financial transaction
        taxWithholdingType:
          $ref: "#/components/schemas/TaxWithholdingType"
        taxRateToUse:
          $ref: "#/components/schemas/TaxRateToUse"
        filingStatus:
          $ref: "#/components/schemas/FilingStatus"
        dollar:
          type: number
          format: double
          example: 10
          description: Requested amount value
        percentage:
          type: number
          format: double
          example: 50
          description: Requested percentage value
        exemptions:
          type: number
          format: int32
          example: 0
          description: Requested exemptions value
        taxJurisdiction:
          type: string
          example: USA
          description: Requested amount value
      required:
        - partyId
        - taxWithholdingType
        - taxRateToUse
    AdhocFundAllocation:
      type: object
      properties:
        allocationOption:
          $ref: "#/components/schemas/AllocationOption"
      required:
        - allocationOption
    AdhocFundDistributions:
      type: object
      properties:
        fundId:
          type: string
        fundName:
          type: string
        totalFundValue:
          type: number
        requestedAmount:
          type: number
        fundDistributionSegments:
          type: array
          items:
            type: object
            properties:
              segmentId:
                type: string
              currentAmount:
                type: number
              requestedAmount:
                type: number
    FeatureTransactionProduct:
      type: object
      description: Product-level transaction classification accompanying the
        systematic program request
      properties:
        transactionType:
          type: string
          example: ONETIMEWITHDRAWAL
        transactionSubtype:
          type: string
          example: SPECIFIEDAMOUNT
    AdhocSystematicProgram:
      type: object
      properties:
        paymentForm:
          $ref: "#/components/schemas/PaymentForm"
        arrangementType:
          $ref: "#/components/schemas/ArrangementType"
        amountType:
          $ref: "#/components/schemas/AmountType"
        amount:
          type: number
          format: double
          example: 5
          description: Requested amount value
        fractionalAmount:
          type: number
          format: double
          example: 0.5
          description: Fractional portion of the requested amount
        frequency:
          $ref: "#/components/schemas/Frequency"
        startDate:
          type: string
          format: date
          description: Date (with pattern "yyyy-mm-dd")
        endDate:
          type: string
          format: date
          description: Date (with pattern "yyyy-mm-dd")
        previousProgramDate:
          type: string
          format: date
          description: Date (with pattern "yyyy-mm-dd")
        nextProgramDate:
          type: string
          format: date
          description: Date (with pattern "yyyy-mm-dd")
        disbursementType:
          $ref: "#/components/schemas/DisbursementType"
        party:
          $ref: "#/components/schemas/BaseAdhocParty"
        parties:
          type: array
          items:
            $ref: "#/components/schemas/AdhocDisbursementParty"
      required:
        - paymentForm
        - arrangementType
    TaxWithholdingType:
      type: string
      enum:
        - FEDERAL
        - STATE
        - NRA
        - BACKUP
    TaxRateToUse:
      type: string
      enum:
        - NOWITHHOLDINGELECTED
        - USEVALUESENTERED
        - NOWITHHOLDINGALLOWED
        - USEDEFAULTTABLE
        - ADDITIONALWITHHOLDING
      description: How tax rate should be applied for withholding
    FilingStatus:
      type: string
      enum:
        - SINGLE
        - DOMESTICPARTNERSHIP
        - DEFAULT
        - MARRIED
        - HEADOFHOUSEHOLD
        - MARRIEDFILINGSEPARATELY
        - WIDOWED
        - DIVORCED
    AllocationOption:
      type: string
      enum:
        - PRORATA
        - DOLLAR
        - SPECIFYPERCENTAGE
        - SPECIFIEDFUNDS
        - SPECIFIEDSEGMENTS
        - DEFAULT
        - PECKINGORDER
        - EARNINGSONLY
      description: Defines the format of how the funds are removed, i.e. dollar,
        percentage, pro-rata, etc.
    PaymentForm:
      type: string
      enum:
        - DTCC
        - CREDITCARD
        - ACH
        - CHECK
        - WIRE
        - EXCHANGE
        - EFT
      description: Mode of payment
    ArrangementType:
      type: string
      enum:
        - PAYMENT
        - WITHDRAWAL
        - LOANREPAYMENT
        - REQUIREDMINIMUMDISTRIBUTION
        - PAYOUT
      description: The type of payment such as fixed or flexible
    AmountType:
      type: string
      enum:
        - AMOUNT
        - PERCENTAGE
        - MAX
        - FREEWITHDRAWALAMOUNT
        - WITHDRAWALUNTILBASIS
        - EARNINGSONLY
        - PRORATA
      description: Amount Type selected by user. Following is dropdown list 1. Amount
        -- If selected user should be able to enter Amount for Transaction
        Amount field 2. Percent -- If selected user should be able to enter
        Percentage for Transaction Amount field 3. Max -- If selected user
        should NOT be able to enter Amount. Auto calculated using Maximum
        Withdrawal Amount. 4. Free Withdrawal Amount -- If selected user should
        NOT be able to enter Amount. Auto calcualted using Free Withdrawal
        Amount. 5. Withdraw Until Basis ---- If selected user should NOT be able
        to enter Amount. Auto calcualted using Cost Basis.
    Frequency:
      type: string
      enum:
        - DAILY
        - EVERYTWOWEEKS
        - MONTHLY
        - SEMIANNUAL
        - BIANNUAL
        - QUARTERLY
        - ANNUAL
        - SINGLEPAYMENT
        - DEFAULT
      description: frequency
    DisbursementType:
      type: string
      enum:
        - GROSS
        - NET
        - NETNET
      description: The type of amount for  withdrawal such as Gross or Net
    BaseAdhocParty:
      type: object
      properties:
        partyId:
          type: string
          example: Party_PI_1
          description: Impacted Party in the event of financial transaction
        bankId:
          type: string
          example: Bank_1
          description: Comes in Acord 103
    AdhocDisbursementParty:
      type: object
      properties:
        partyRole:
          $ref: "#/components/schemas/PartyRole"
        partyId:
          type: string
          description: Pending Review by Product Team
          example: Party_PI_1
        paymentForm:
          $ref: "#/components/schemas/PaymentForm"
        allocationPercentage:
          type: number
          format: double
          description: At Policy Level for Each Applicable Fund (Everly there is only one
            Fixed) Therefore this be 100%
          example: 100
        bankId:
          type: string
          example: Bank_1
          description: Comes in Acord 103
        addressId:
          type: string
          example: "1"
          description: Address Id
        forBenefitOfOrForFurtherCredit:
          type: string
          example: TBD
          description: FBO - For Benefit Of, FFC - For Further Credit. To notate a second
            beneficiary or to designate a person or organization when funds are
            disbursed out.
      required:
        - partyId
        - paymentForm
        - allocationPercentage
    PartyRole:
      type: string
      enum:
        - OWNER
        - PRIMARYBENEFICIARY
        - CONTINGENTBENEFICIARY
        - INSURED
        - PAYOR
        - PAYEE
        - AGENT
        - THIRDPARTYDESIGNEE
      description: Party Role
  examples:
    transactionFailureResponse:
      value:
        status: failure
        errors:
          - errorCode: INVALID_REQUEST
            attribute: ""
            error: Amount request is invalid.
            resolution: Please check the One Time Premium Amount and submit the request
              again.
          - errorCode: INVALID_REQUEST
            attribute: ""
            error: Party information does not match with information in the Zahara system.
            resolution: Please validate the party information and submit the request again.
  securitySchemes:
    Auth0:
      type: openIdConnect
      openIdConnectUrl: https://login.uat.zinnia.com/.well-known/openid-configuration
      x-kong-security-openid-connect:
        config:
          run_on_preflight: true
          scopes_claim:
            - https://uat.api.zinnia.io/permissions
          audience_claim:
            - aud
          audience_required:
            - https://uat.api.zinnia.io
          client_id:
            - client_id
          auth_methods:
            - bearer
        enabled: true
        protocols:
          - grpc
          - grpcs
          - http
          - https
```
