simulation

Simulate effects of voluntary purchase

Changed on

Simulates the financial effect of voluntary purchase of additional pension benefits for the provided parameters (retirement age, purchase amount etc.)

If the specified purchase amount is higher the maximum allowed purchase amount, it will be reduced to the allowed amount. The simulation result contains the effective purchase amount.

For periodic payments, the simulation assumes that the payments are made with the specified payment size and payment frequency until the maximum purchase amount has been exhausted or the retirement date has been reached (whichever is first).

If the retirement date is reached before the purchase amount is exhausted, the returned effective purchase amount will be lower than both the requested and the maximum purchase amount.

Using a very high amount (e.g. CHF 10 million), it is possible to query the maximum purchase amount and the maximum additional pension at once.

post/policies/{policyId}/purchase-simulation

Request

  • Base URL
    https://pension.common-api.ch
  • URL
    https://pension.common-api.ch/policies/{policyId}/purchase-simulation
  • Auth
    OAuth 2
    Authorization code: https://example.com/oauth/authorize
    Token URL: https://example.com/oauth/token scopes: read:basic_pension_data

Path parameters

policyIdstring required

Technical ID of policy used in API calls.

Example:Pol_56789-2024

Technical policy ID.

Request body

totalAmountnumber required

Purchase amount in CHF. For periodic purchases, the sum of all payments.

datestring date

Date of the (first) payment. If omitted: tomorrow.

paymentFrequencyinteger

Number of payments per year. Possible values:

  • 0: One-time payment
  • 1: Annual payment
  • 2: Semi-annual payment
  • 4: Quarterly payment
  • 12: Monthly payment
paymentSizenumber

The size of individual periodic payments. If omitted, 0 or equal to 'amount', a one-time payment is assumed.

retirementAgeinteger

Planned retirement age (in month since birth). If omitted, the regular payment age is assumed.

Example request

{
  "totalAmount": 10000,
  "date": "2018-04-13",
  "paymentSize": 10000,
  "retirementAge": 780
}

Response

Simulation result.

Example response

{
  "pensionStatementAfterChange": {
    "employer": {
      "employerName": "Acrea AG",
      "employerId": "CHE115873291",
      "industry": "information technology and management consulting"
    },
    "pensionPlans": [
      {
        "contractType": "mand",
        "planName": "Basisplan",
        "optionalSavingsPlanName": "Sparplan 2",
        "planId": "Plan_XY4284_425"
      }
    ],
    "pensionProvider": {
      "providerName": "Omnifund",
      "portalName": "Omni Portal",
      "portalUrl": "www.omnifund.ch",
      "providerAddress": {
        "countryCode": "CH",
        "postalCode": "3944",
        "street": "Brandstrasse 2",
        "town": "Unterbäch",
        "poBox": "PO Box 42"
      },
      "providerId": "CHE123456789"
    },
    "pensionStatementType": "regular",
    "personId": "JohnDoe_1234",
    "personalPensionDetails": {
      "earliestRetirementAge": 696,
      "financing": {
        "contributionSavingsEmployer": 4025,
        "contributionSavingsInsuredPerson": 4025
      },
      "homeOwnershipAvailableForWithdrawal": 31000,
      "ordinaryRetirementAge": 780,
      "regularPurchaseMaxAmount": 48392.45,
      "retirementCapital": {
        "balanceMandatoryReferenceDate": 38942.15,
        "balanceReferenceDate": 53842.5,
        "interestRates": {
          "interestRateEnvelopingProjection": 3.175,
          "interestRateEnvelopingPurchase": 3.175,
          "interestRateEnvelopingSaving": 3.175,
          "interestRateMandatoryProjection": 3.175,
          "interestRateMandatoryPurchase": 3.175,
          "interestRateMandatorySaving": 3.175,
          "interestRateSupplementaryProjection": 3.175,
          "interestRateSupplementaryPurchase": 3.175,
          "interestRateSupplementarySaving": 3.175
        },
        "lastYearDevelopment": {
          "balanceBeginningLastYear": 100000,
          "balanceEndLastYear": 106000,
          "interestCreditLastYear": 2000,
          "interestRatesLastYear": {
            "interestRateEnvelopingProjection": 3.175,
            "interestRateEnvelopingPurchase": 3.175,
            "interestRateEnvelopingSaving": 3.175,
            "interestRateMandatoryProjection": 3.175,
            "interestRateMandatoryPurchase": 3.175,
            "interestRateMandatorySaving": 3.175,
            "interestRateSupplementaryProjection": 3.175,
            "interestRateSupplementaryPurchase": 3.175,
            "interestRateSupplementarySaving": 3.175
          },
          "oldAgeCreditLastYear": 4000,
          "totalDepositsLastYear": 5000,
          "totalWithdrawalsLastYear": 5000
        },
        "projectedRetirementBenefits": [
          {
            "capitalBalance": 378832.05,
            "capitalBalanceMandatory": 284832.15,
            "retirementAge": 756,
            "capitalBalanceNoInterest": 331285.25,
            "capitalBalanceNoInterestMandatory": 248862.65,
            "conversionRateEnveloping": 6.3,
            "conversionRateMandatory": 6.8,
            "conversionRateSupplementary": 5.5,
            "pension": 22835
          }
        ],
        "balanceEndCurrentYear": 56325.25,
        "balanceMandatoryEndCurrentYear": 40846.6,
        "transferredCapital": 45210.25,
        "transferredCapitalMandatory": 32840.55
      },
      "riskBenefits": {
        "childPensionDisability": 5382,
        "lumpSumWithoutPensionBenefits": 92834,
        "minimalLumpSumWithPensionBenefits": 74383,
        "orphanPensionDeath": 5382,
        "partnerPensionDeath": 24817,
        "pensionDisability": 40213
      },
      "salaryData": {
        "declaredSalary": 78000,
        "employmentLevel": 100,
        "insuredSalaryMandatory": 59215,
        "insuredSalaryRetirement": 59215,
        "insuredSalaryRisk": 59215
      },
      "vestedBenefits": {
        "capitalAtMarriage": 28483.35,
        "capitalAtMarriageMandatory": 23863.15,
        "capitalFirstCommunicatedDate": "2018-04-13",
        "divorceWithdrawals": [
          {
            "date": "2018-04-13"
          }
        ],
        "homeOwnershipWithdrawals": [
          {
            "date": "2018-04-13"
          }
        ],
        "pledges": [
          {
            "amount": 20000,
            "amountMandatory": 20000,
            "pledgee": "UBS AG",
            "pledgeeAddress": {
              "countryCode": "CH",
              "postalCode": "3944",
              "street": "Brandstrasse 2",
              "town": "Unterbäch",
              "poBox": "PO Box 42"
            }
          }
        ],
        "referenceDate": "2018-04-13",
        "voluntaryPurchases": [
          {
            "date": "2018-04-13"
          }
        ]
      },
      "homeOwnershipAvailableForPledge": 50000
    },
    "referenceDate": "2018-04-13",
    "timeStamp": "2018-04-13T11:11:11Z",
    "languageCode": "de",
    "pensionStatementId": "550e8450-e59b-21d4-a346-442215440560",
    "pensionStatementNo": "PS_ID_6789-ABC"
  },
  "pensionStatementBeforeChange": {
    "employer": {
      "employerName": "Acrea AG",
      "employerId": "CHE115873291",
      "industry": "information technology and management consulting"
    },
    "pensionPlans": [
      {
        "contractType": "mand",
        "planName": "Basisplan",
        "optionalSavingsPlanName": "Sparplan 2",
        "planId": "Plan_XY4284_425"
      }
    ],
    "pensionProvider": {
      "providerName": "Omnifund",
      "portalName": "Omni Portal",
      "portalUrl": "www.omnifund.ch",
      "providerAddress": {
        "countryCode": "CH",
        "postalCode": "3944",
        "street": "Brandstrasse 2",
        "town": "Unterbäch",
        "poBox": "PO Box 42"
      },
      "providerId": "CHE123456789"
    },
    "pensionStatementType": "regular",
    "personId": "JohnDoe_1234",
    "personalPensionDetails": {
      "earliestRetirementAge": 696,
      "financing": {
        "contributionSavingsEmployer": 4025,
        "contributionSavingsInsuredPerson": 4025
      },
      "homeOwnershipAvailableForWithdrawal": 31000,
      "ordinaryRetirementAge": 780,
      "regularPurchaseMaxAmount": 48392.45,
      "retirementCapital": {
        "balanceMandatoryReferenceDate": 38942.15,
        "balanceReferenceDate": 53842.5,
        "interestRates": {
          "interestRateEnvelopingProjection": 3.175,
          "interestRateEnvelopingPurchase": 3.175,
          "interestRateEnvelopingSaving": 3.175,
          "interestRateMandatoryProjection": 3.175,
          "interestRateMandatoryPurchase": 3.175,
          "interestRateMandatorySaving": 3.175,
          "interestRateSupplementaryProjection": 3.175,
          "interestRateSupplementaryPurchase": 3.175,
          "interestRateSupplementarySaving": 3.175
        },
        "lastYearDevelopment": {
          "balanceBeginningLastYear": 100000,
          "balanceEndLastYear": 106000,
          "interestCreditLastYear": 2000,
          "interestRatesLastYear": {
            "interestRateEnvelopingProjection": 3.175,
            "interestRateEnvelopingPurchase": 3.175,
            "interestRateEnvelopingSaving": 3.175,
            "interestRateMandatoryProjection": 3.175,
            "interestRateMandatoryPurchase": 3.175,
            "interestRateMandatorySaving": 3.175,
            "interestRateSupplementaryProjection": 3.175,
            "interestRateSupplementaryPurchase": 3.175,
            "interestRateSupplementarySaving": 3.175
          },
          "oldAgeCreditLastYear": 4000,
          "totalDepositsLastYear": 5000,
          "totalWithdrawalsLastYear": 5000
        },
        "projectedRetirementBenefits": [
          {
            "capitalBalance": 378832.05,
            "capitalBalanceMandatory": 284832.15,
            "retirementAge": 756,
            "capitalBalanceNoInterest": 331285.25,
            "capitalBalanceNoInterestMandatory": 248862.65,
            "conversionRateEnveloping": 6.3,
            "conversionRateMandatory": 6.8,
            "conversionRateSupplementary": 5.5,
            "pension": 22835
          }
        ],
        "balanceEndCurrentYear": 56325.25,
        "balanceMandatoryEndCurrentYear": 40846.6,
        "transferredCapital": 45210.25,
        "transferredCapitalMandatory": 32840.55
      },
      "riskBenefits": {
        "childPensionDisability": 5382,
        "lumpSumWithoutPensionBenefits": 92834,
        "minimalLumpSumWithPensionBenefits": 74383,
        "orphanPensionDeath": 5382,
        "partnerPensionDeath": 24817,
        "pensionDisability": 40213
      },
      "salaryData": {
        "declaredSalary": 78000,
        "employmentLevel": 100,
        "insuredSalaryMandatory": 59215,
        "insuredSalaryRetirement": 59215,
        "insuredSalaryRisk": 59215
      },
      "vestedBenefits": {
        "capitalAtMarriage": 28483.35,
        "capitalAtMarriageMandatory": 23863.15,
        "capitalFirstCommunicatedDate": "2018-04-13",
        "divorceWithdrawals": [
          {
            "date": "2018-04-13"
          }
        ],
        "homeOwnershipWithdrawals": [
          {
            "date": "2018-04-13"
          }
        ],
        "pledges": [
          {
            "amount": 20000,
            "amountMandatory": 20000,
            "pledgee": "UBS AG",
            "pledgeeAddress": {
              "countryCode": "CH",
              "postalCode": "3944",
              "street": "Brandstrasse 2",
              "town": "Unterbäch",
              "poBox": "PO Box 42"
            }
          }
        ],
        "referenceDate": "2018-04-13",
        "voluntaryPurchases": [
          {
            "date": "2018-04-13"
          }
        ]
      },
      "homeOwnershipAvailableForPledge": 50000
    },
    "referenceDate": "2018-04-13",
    "timeStamp": "2018-04-13T11:11:11Z",
    "languageCode": "de",
    "pensionStatementId": "550e8450-e59b-21d4-a346-442215440560",
    "pensionStatementNo": "PS_ID_6789-ABC"
  }
}

Changes

    • breaking

      the response property //// became optional for the status

    • breaking

      the response property //// became optional for the status

    • breaking

      the response property //// became optional for the status

    • breaking

      the response property //// became optional for the status

    • breaking

      the response property //// became optional for the status

    • breaking

      the response property //// became optional for the status

    • breaking

      the response property //// became optional for the status

    • breaking

      the response property ///// became optional for the status

    • breaking

      the response property //// became optional for the status

    • breaking

      the response property //// became optional for the status

    • breaking

      the response property //// became optional for the status

    • breaking

      the response property //// became optional for the status

    • breaking

      the response property //// became optional for the status

    • breaking

      the response property //// became optional for the status

    • breaking

      the response property //// became optional for the status

    • breaking

      the response property ///// became optional for the status

    • warning

      removed the optional property /// from the response with the status

    • warning

      removed the optional property /// from the response with the status

    • info

      added the optional property / to the response with the status

    • info

      added the optional property /// to the response with the status

    • info

      added the optional property / to the response with the status

    • info

      added the optional property /// to the response with the status

    • info

      the response property /// became required for the status

    • info

      the response property // became required for the status

    • info

      the response property /// became required for the status

    • info

      the response property // became required for the status

    • breaking

      the response property ///// became optional for the status

    • breaking

      the response property ///// became optional for the status

    • breaking

      the response property ///// became optional for the status

    • breaking

      the response property ///// became optional for the status

    • breaking

      the response property ///// became optional for the status

    • breaking

      the response property ///// became optional for the status

    • info

      added the non-success response with the status

    • info

      added the optional property // to the response with the status

    • info

      added the optional property /// to the response with the status

    • info

      added the optional property // to the response with the status

    • info

      added the optional property /// to the response with the status

    • info

      the response property /// became required for the status

    • info

      the response property /// became required for the status

    • info

      added the required property /// to the response with the status

    • info

      added the required property /// to the response with the status