# Policy Fee

## Concept

After a policy or an endorsement is issued, usually there is a need to synchronize relevant financial data to the billing or GL system. Such synchronization is usually based on the fee level. 

In order to facilitate such synchronization, the policy side usually needs to generate and persist a set of policy fee information. Therefore, if there's any error happening on the integration side, there will be a way to compensate or conduct reconciliation for these financial records.


## System Design

### Data Model

PolicyFee is a model which is designed separately from policy objects. All policy fee operations need to call endorsement APIs or separate APIs from the key proposal.

Users can locate the model and detailed field information in **Data Dictionary**.

![Overview](./image/policyfee/policy_fee_model.png)  

<div class="docs-note"><span class="docs-admonitions-text">note</span>

For the most part, users will only need two kinds of models: the PolicyFeeInfo and the PolicyFee. The relationship will be one PolicyFeeInfo to many PolicyFee. The following document will be written based on this assumption. If users have some special scenarios and think their requirements cannot be met, please feel free to contact InsureMO team for help.

</div>


### Relationship with Payment and Installment

PolicyFee is very different from policy payment and installment information in multiple aspects:

| Characteristics           | Payment and Installment           | Fee                         |
|---------------------------|---------------------------------|-----------------------------|
| Purpose                   | Customer facing                 | Billing system facing       |
| Information               | Customer selected and confirmed  | System internally generated |
| Part of Policy Object     | Yes                             | No                          |
| Part of Proposal/Endo API | Yes                             | No                          |
| Number of Records         | Small                           | Big                         |
| Relationship              | Source                          | Target                      |
  
For the most part, the system can only generate fee information based on policy payment and installment data which has been generated before. 


## Sample Fee Transformation

For any fee generation, we  suggest users directly take the Installment model as the base model even though there could be no installment at all.

Then there should be a data mapping to transform everything in the Installment model into the PolicyFee model.

Let's assume there is a policy with 12 installments. Its transformation process comprises two steps.

1. Dynamic transformation: Determine numbers of fee records

When transforming the Installment model to the PolicyFee model, their relationship will be one-to-many. This depends on how much key fee information fields are present in the installments. 

Let's assume the system needs to capture beforeVat, Vat, InstallmentFee (Interest), InstallmentAmount (DuePremium plus Interest) and commission. While the Installment model will only generate one record, the PolicyFee model will generate five records. All these different installment-related premium fields will be mapped to different pieces of fee records for fee types and fee amounts.


2. Fixed transformation

Apart from the structural fee type and amount, some other information fields are also important for the PolicyFee model to capture.

For the Installment model, the important information fields can be due date or sequence number of installment. For other modes, the fields can be payer or payee information which can be taken from policy customers or sales channels. A multi-currency conversion is also very important.

The following table shows some examples of fee transformation analysis. Users need to add more criteria during their business requirement gathering stage and clearly map all the fields.


| Fee Type | Model       | FeeAmount         | FeeAmountLocal         | PayerPayeeName                                     | PayerPayeePartyCode                              | InstallmentPeriodSeq |
|----------|-------------|-------------------|------------------------|----------------------------------------------------|--------------------------------------------------|----------------------|
| 100501   | Installment | BeforeVatPremium  | BeforeVatPremiumLocal  | PolicyCustomerList.CustomerName(IsPolicyHolder=Y) | PolicyCustomerList.CustomerNo (IsPolicyHolder=Y) | InstallmentPeriodSeq |
| 100400   | Installment | Vat               | VatLocal               | PolicyCustomerList.CustomerName(IsPolicyHolder=Y) | PolicyCustomerList.CustomerNo (IsPolicyHolder=Y) | InstallmentPeriodSeq |
| 100101   | Installment | InstallmentAmount | InstallmentAmountLocal | PolicyCustomerList.CustomerName(IsPolicyHolder=Y) | PolicyCustomerList.CustomerNo (IsPolicyHolder=Y) | InstallmentPeriodSeq |
| 700001   | Installment | InstallmentFee   | InstallmentFeeLocal   | PolicyCustomerList.CustomerName(IsPolicyHolder=Y) | PolicyCustomerList.CustomerNo (IsPolicyHolder=Y) | InstallmentPeriodSeq |

## Generate PolicyFee and PrePay via Rule V2

The Rule domain (V2) of the platform provides domains for generating PolicyFee/PrePay. The system automatically creates PolicyFee/PrePay objects, and users create Rules based on these domains to assign or update specific business data in PolicyFee/PrePay objects.

### Domain Introduction

NB_PrePay_Mapping, Endo_PrePay_Mapping are used for PrePay generation. The system generates PrePayInfo objects by default, and users assign values to or update fields in PrePayInfo within Rules, for example: PrePay.EffectiveDate = EffectiveDate. 

NB_PolicyFee_Mapping，Endo_PolicyFee_Mapping are used for PolicyFee generation. The system generates PolicyFeeInfo objects and PolicyFeeInstallmentList objects by default. If it is necessary to add a PolicyFee object to PolicyFeeInfo, the DSL attachChildModel can be used. For example, to add a PolicyFee child object to a PolicyFeeInfo object, you can write: "def feeItem = attachChildModel(PolicyFeeInfo, 'PolicyFee', 'PolicyFee');". Afterwards, assign values to the fields of feeItem, such as feeItem.FeeType = "100101".

The table below shows which API each domain is invoked through, along with the request data of the API.

| **Domain**             | API                                                                          | RequestBody             | RequestParam                                    |
|------------------------|------------------------------------------------------------------------------|-------------------------|-------------------------------------------------|
| NB_PrePay_Mapping      | POST {{server}}/api/platform/proposal/core/proposal/v2/generatePrePay        | Policy policy           | String needPersist , defaultValue = N           |
| NB_PrePay_Mapping      | POST {{server}}/api/platform/proposal/core/proposal/v2/generatePayByPolicyId | null                    | Long policyId ;String needPersist , defaultValue = N |
| Endo_PrePay_Mapping    | POST {{server}}/api/platform/endo/core/endo/v2/generatePrePay                | Endorsement endorsement | String needPersist , defaultValue = N           |
| Endo_PrePay_Mapping    | POST {{server}}/api/platform/endo/core/endo/v2/generatePrePayByEndoId        | null                    | Long policyId ;String needPersist , defaultValue = N |
| NB_PolicyFee_Mapping   | POST {{server}}/api/platform/pa/core/policy/v2/generatePolicyFeeInfo         | Policy policy           | String needPersist , defaultValue = N           |
| Endo_PolicyFee_Mapping | POST {{server}}/api/platform/endo/core/endo/v2/generatePolicyFeeInfo         | Endorsement endorsement | String needPersist , defaultValue = N           |


## API List for Policy Prepay

* POST {{server}}/api/platform/proposal/core/prepay/v1/create
* POST {{server}}/api/platform/proposal/core/prepay/v1/update
* GET {{server}}/api/platform/proposal/core/prepay/v1/getNewbizPrePay?policyId={{policyId}}
* GET {{server}}/api/platform/proposal/core/prepay/v1/getEndorsementPrePay?endoId={{endoId}}
* GET {{server}}/api/platform/proposal/core/prepay/v1/load?policyId={{policyId}}
* GET {{server}}/api/platform/proposal/core/prepay/v1/queryPendingPrePayForMasterPolicySettlement?policyId={{masterPolicyId}}


###  Policy Prepay Create API

#### For Policy

##### Policy Prepay Create API - Request Sample
```
{
    "@type": "PrePayInfo-PrePayInfo",
    "BizTransType": "P",
    "ProductCode": "TBTI",
    "EffectiveDate": "{{EffectiveDate}}",
    "AgentCode": "{{scCode}}",
    "PolicyId": "{{policyIdForPrePay}}",
    "PolicyNo": "{{policyNoForPrePay}}",
    "BizTransNo": "{{policyNoForPrePay}}",
    "BookCurrencyCode": "CNY",
    "PremiumCurrencyCode": "CNY",
    "OrgCode": "10002",
    "IsBcpPaidUp": "N",
    "IsBcpPosted": "N",
    "IsCancelled": "N",
    "PaymentNo": "{{$randomInt}}{{$randomInt}}{{$randomInt}}{{$randomInt}}",
    "PremiumBookExchangeRate": 1,
    "DuePremium": "{{dueForFee}}"
}

```
#### Policy Prepay Create API - Response Sample
```
{
    "@pk": 11665570360,
    "@type": "PrePayInfo-PrePayInfo",
    "AgentCode": "XXXXX000000000XXX",
    "BizTransNo": "POTBTI00005240",
    "BizTransType": "P",
    "BookCurrencyCode": "CNY",
    "BusinessObjectId": 350022051,
    "DuePremium": 38.52,
    "EffectiveDate": "2025-12-01",
    "InsertBy": 10000080991017,
    "InsertTime": "2025-12-08T14:59:21.707",
    "IsBcpPaidUp": "N",
    "IsBcpPosted": "N",
    "IsCancelled": "N",
    "OrgCode": "10002",
    "PaymentNo": "87882972108",
    "PolicyId": "11665570330,E040CE2CFDE2557411665DDECB357A23",
    "PolicyNo": "POTBTI00005240",
    "PrePayId": 11665570360,
    "PremiumBookExchangeRate": 1,
    "PremiumCurrencyCode": "CNY",
    "ProductCode": "TBTI",
    "UpdateBy": 10000080991017,
    "UpdateTime": "2025-12-08T14:59:21.707"
}

```

#### For Endorsement

##### Policy Prepay Create API - Request Sample
```
{
    "@type": "PrePayInfo-PrePayInfo",
    "BizTransType": "P",
    "ProductCode": "TBTI",
    "EffectiveDate": "{{EffectiveDate}}",
    "AgentCode": "{{scCode}}",
    "EndorsementId": "{{endoIdForPrePay}}",
    "EndorsementNo": "{{endoNoForPrePay}}",
    "PolicyId": "{{policyIdForPrePay}}",
    "BizTransNo": "{{endoNoForPrePay}}",
    "BookCurrencyCode": "CNY",
    "PremiumCurrencyCode": "CNY",
    "OrgCode": "10002",
    "IsBcpPaidUp": "N",
    "IsBcpPosted": "N",
    "IsCancelled": "N",
    "PaymentNo": "{{$randomInt}}{{$randomInt}}{{$randomInt}}{{$randomInt}}",
    "PremiumBookExchangeRate": 1,
    "DuePremium": "{{dueEndoForPrePay}}"
}
```
##### Policy Prepay Create API - Respone Sample
```
{
    "@pk": 11665580046,
    "@type": "PrePayInfo-PrePayInfo",
    "AgentCode": "XXXXX000000000XXX",
    "BizTransNo": "POTBTI00005240-001",
    "BizTransType": "P",
    "BookCurrencyCode": "CNY",
    "BusinessObjectId": 350022051,
    "DuePremium": -38.52,
    "EffectiveDate": "2025-12-01",
    "EndorsementId": 11665690002,
    "EndorsementNo": "POTBTI00005240-001",
    "InsertBy": 10000080991017,
    "InsertTime": "2025-12-08T15:13:24.708",
    "IsBcpPaidUp": "N",
    "IsBcpPosted": "N",
    "IsCancelled": "N",
    "OrgCode": "10002",
    "PaymentNo": "93339134429",
    "PolicyId": "11665570330,E040CE2CFDE2557411665DDECB357A23",
    "PrePayId": 11665580046,
    "PremiumBookExchangeRate": 1,
    "PremiumCurrencyCode": "CNY",
    "ProductCode": "TBTI",
    "UpdateBy": 10000080991017,
    "UpdateTime": "2025-12-08T15:13:24.708"
}
```

###  Policy Prepay Update API

#### Policy Prepay Update API - Request Sample
```
{
    "@pk": 11665570360,
    "@type": "PrePayInfo-PrePayInfo",
    "AgentCode": "XXXXX000000000XXX",
    "BizTransNo": "POTBTI00005240",
    "BizTransType": "P",
    "BookCurrencyCode": "CNY",
    "BusinessObjectId": 350022051,
    "DuePremium": 38.52,
    "EffectiveDate": "2025-12-01",
    "InsertBy": 10000080991017,
    "InsertTime": "2025-12-08T14:59:21.707",
    "IsBcpPaidUp": "N",
    "IsBcpPosted": "N",
    "IsCancelled": "Y",
    "OrgCode": "10002",
    "PaymentNo": "87882972108",
    "PolicyId": "11665570330,E040CE2CFDE2557411665DDECB357A23",
    "PolicyNo": "POTBTI00005240",
    "PrePayId": 11665570360,
    "PremiumBookExchangeRate": 1,
    "PremiumCurrencyCode": "CNY",
    "ProductCode": "TBTI",
    "UpdateBy": 10000080991017,
    "UpdateTime": "2025-12-08T14:59:21.707"
}

```
#### Policy Prepay Update API - Response Sample
```
{
    "@pk": 11665570360,
    "@type": "PrePayInfo-PrePayInfo",
    "AgentCode": "XXXXX000000000XXX",
    "BizTransNo": "POTBTI00005240",
    "BizTransType": "P",
    "BookCurrencyCode": "CNY",
    "BusinessObjectId": 350022051,
    "DuePremium": 38.52,
    "EffectiveDate": "2025-12-01",
    "InsertBy": 10000080991017,
    "InsertTime": "2025-12-08T14:59:22",
    "IsBcpPaidUp": "N",
    "IsBcpPosted": "N",
    "IsCancelled": "Y",
    "OrgCode": "10002",
    "PaymentNo": "87882972108",
    "PolicyId": "11665570330,E040CE2CFDE2557411665DDECB357A23",
    "PolicyNo": "POTBTI00005240",
    "PrePayId": 11665570360,
    "PremiumBookExchangeRate": 1,
    "PremiumCurrencyCode": "CNY",
    "ProductCode": "TBTI",
    "UpdateBy": 10000080991017,
    "UpdateTime": "2025-12-08T15:04:26.670"
}

```

###  Policy Prepay getNewbizPrePay API

#### Policy Prepay getNewbizPrePay API - Response Sample
```
{
    "@pk": 11665570360,
    "@type": "PrePayInfo-PrePayInfo",
    "AgentCode": "XXXXX000000000XXX",
    "BizTransNo": "POTBTI00005240",
    "BizTransType": "P",
    "BookCurrencyCode": "CNY",
    "BusinessObjectId": 350022051,
    "DuePremium": 38.52,
    "EffectiveDate": "2025-12-01",
    "InsertBy": 10000080991017,
    "InsertTime": "2025-12-08T14:59:22",
    "IsBcpPaidUp": "N",
    "IsBcpPosted": "N",
    "IsCancelled": "Y",
    "OrgCode": "10002",
    "PaymentNo": "87882972108",
    "PolicyId": "11665570330,E040CE2CFDE2557411665DDECB357A23",
    "PolicyNo": "POTBTI00005240",
    "PrePayId": 11665570360,
    "PremiumBookExchangeRate": 1,
    "PremiumCurrencyCode": "CNY",
    "ProductCode": "TBTI",
    "UpdateBy": 10000080991017,
    "UpdateTime": "2025-12-08T15:04:27"
}

```
###  Policy Prepay getEndorsementPrePay API

#### Policy Prepay getEndorsementPrePay API - Response Sample
```
{
    "@pk": 11665580046,
    "@type": "PrePayInfo-PrePayInfo",
    "AgentCode": "XXXXX000000000XXX",
    "BizTransNo": "POTBTI00005240-001",
    "BizTransType": "P",
    "BookCurrencyCode": "CNY",
    "BusinessObjectId": 350022051,
    "DuePremium": -38.52,
    "EffectiveDate": "2025-12-01",
    "EndorsementId": 11665690002,
    "EndorsementNo": "POTBTI00005240-001",
    "InsertBy": 10000080991017,
    "InsertTime": "2025-12-08T15:13:25",
    "IsBcpPaidUp": "N",
    "IsBcpPosted": "N",
    "IsCancelled": "N",
    "OrgCode": "10002",
    "PaymentNo": "93339134429",
    "PolicyId": "11665570330,E040CE2CFDE2557411665DDECB357A23",
    "PrePayId": 11665580046,
    "PremiumBookExchangeRate": 1,
    "PremiumCurrencyCode": "CNY",
    "ProductCode": "TBTI",
    "UpdateBy": 10000080991017,
    "UpdateTime": "2025-12-08T15:13:25"
}

```
###  Policy Prepay load API

#### Policy Prepay Update API - Response Sample

```
{
    "@pk": 11665570360,
    "@type": "PrePayInfo-PrePayInfo",
    "AgentCode": "XXXXX000000000XXX",
    "BizTransNo": "POTBTI00005240",
    "BizTransType": "P",
    "BookCurrencyCode": "CNY",
    "BusinessObjectId": 350022051,
    "DuePremium": 38.52,
    "EffectiveDate": "2025-12-01",
    "InsertBy": 10000080991017,
    "InsertTime": "2025-12-08T14:59:22",
    "IsBcpPaidUp": "N",
    "IsBcpPosted": "N",
    "IsCancelled": "Y",
    "OrgCode": "10002",
    "PaymentNo": "87882972108",
    "PolicyId": "11665570330,E040CE2CFDE2557411665DDECB357A23",
    "PolicyNo": "POTBTI00005240",
    "PrePayId": 11665570360,
    "PremiumBookExchangeRate": 1,
    "PremiumCurrencyCode": "CNY",
    "ProductCode": "TBTI",
    "UpdateBy": 10000080991017,
    "UpdateTime": "2025-12-08T15:04:27"
}

```

###  Policy Prepay queryPendingPrePayForMasterPolicySettlement API

#### Policy Prepay queryPendingPrePayForMasterPolicySettlement API - Response Sample
```


```

## API List for PolicyFee

* POST {{server}}/api/platform/pa/core/policyFeeInfo/v1/create
* POST {{server}}/api/platform/pa/core/policyFeeInfo/v1/update
* POST {{server}}/api/platform/pa/core/policyFeeInfo/v1/updatePolicyFeeInstallmentToSettled
* POST {{server}}/api/platform/pa/core/policyFeeInfo/v1/updatePolicyFeeInstallmentToUNSettled
* GET  {{server}}/api/platform/pa/core/policyFeeInfo/v1/loadForNewbiz?policyId={{policyId}}
* GET  {{server}}/api/platform/pa/core/policyFeeInfo/v1/loadForEndorsement?endoId={{endoId}}
* GET  {{server}}/api/platform/pa/core/policyFeeInfo/v1/queryPendingPolicyFeeInfoForMasterPolicySettlement?masterPolicyId={{masterPolicyId}}&maxDueDate={{maxDueDate}}&startFeeInfoId={{startFeeInfoId}}&maxRecords={{maxRecords}}

###  PolicyFeeInfo Create API

#### PolicyFeeInfo Create API - Request Sample
```
{
    "@type": "PolicyFeeInfo-PolicyFeeInfo",
    "BizTransType": "P",  //P-NB,E-Endo
    "ProductCode": "TBTI",
    "EffectiveDate": "2024-07-26",
    "ExpiryDate": "2024-08-09",
    "AgentCode": "XXXXX000051656XXX",
    "PolicyId": "10688110064,D96E50EC11468494C60D37A918F603C6",
    "PolicyNo": "POTBTI01242354",
    "BookCurrencyCode": "USD",
    "PremiumCurrencyCode": "USD",
    "OrgCode": "10002",
    "IsBcpPaidUp": "N",
    "IsCertificateSettled": "N",
    "PremiumBookExchangeRate": 1,
    "TotalBcpAmount": "38.52",
    "TotalBcpBeforeVatAmount": "35.67",
    "TotalBcpVatAmount": "2.85",
    "PayMethodCode": "100",
    "PayerPayeeName": "Test",
    "PolicyFeeList":[{
    	"@type": "PolicyFee-PolicyFee",
    	"PolicyId": "10688110064,D96E50EC11468494C60D37A918F603C6",
    	"FeeType": "100501",   //refer to coetable-BcpFeeType
    	"BeforeVatAmount": 35.67,
    	"FeeAmount": 38.52,
    	"Vat":  2.85,
    	"Commission":  10.7,
    	"BcpPaidAmount": 0,
    	"InstallmentPeriodSeq": 0,
    	"FeeSeq": 0,
    	"IsBcpPaidUp": "N"
      }]

```


#### PolicyFeeInfo Create API - Response Sample

```
{
    "@pk": 10676862609,
    "@type": "PolicyFeeInfo-PolicyFeeInfo",
    "AgentCode": "XXXXX000051656XXX",
    "BizTransType": "P",
    "BookCurrencyCode": "USD",
    "BusinessObjectId": 4600828,
    "EffectiveDate": "2024-07-26",
    "ExpiryDate": "2024-08-09",
    "FeeInfoId": 10676862609,
    "IsBcpPaidUp": "N",
    "IsBcpPosted": "N",
    "IsCancelled": "N",
    "IsCertificateSettled": "N",
    "IsGLPosted": "N",
    "OrgCode": "10002",
    "PayMethodCode": "100",
    "PayerPayeeName": "Test",
    "PolicyFeeList": [
        {
            "@pk": 10676862610,
            "@type": "PolicyFee-PolicyFee",
            "BcpPaidAmount": 0,
            "BeforeVatAmount": 35.67,
            "BusinessObjectId": 590793,
            "Commission": 10.7,
            "FeeAmount": 38.52,
            "FeeInfoId": 10676862609,
            "FeeSeq": 0,
            "FeeType": 100501,
            "InstallmentPeriodSeq": 0,
            "IsBcpPaidUp": "N",
            "PolicyFeeId": 10676862610,
            "PolicyId": "10688110064,D96E50EC11468494C60D37A918F603C6",
            "Vat": 2.85,
            "VatBook": 0
        }
    ],
    "PolicyId": "10688110064,D96E50EC11468494C60D37A918F603C6",
    "PolicyNo": "POTBTI01242354",
    "PremiumBookExchangeRate": 1,
    "PremiumCurrencyCode": "USD",
    "ProductCode": "TBTI",
    "TotalBcpAmount": 38.52,
    "TotalBcpBeforeVatAmount": 35.67,
    "TotalBcpVatAmount": 2.85
}

```
###  PolicyFeeInfo Update API

#### PolicyFeeInfo Update API - Request Sample

```
{
    "@pk": 10676862609,
    "@type": "PolicyFeeInfo-PolicyFeeInfo",
    "AgentCode": "XXXXX000051656XXX",
    "BizTransType": "P",
    "BookCurrencyCode": "USD",
    "BusinessObjectId": 4600828,
    "EffectiveDate": "2024-07-26",
    "ExpiryDate": "2024-08-09",
    "FeeInfoId": 10676862609,
    "IsBcpPaidUp": "N",
    "IsBcpPosted": "N",
    "IsCancelled": "N",
    "IsCertificateSettled": "N",
    "IsGLPosted": "N",
    "OrgCode": "10002",
    "PayMethodCode": "100",
    "PayerPayeeName": "Test Update",
    "PolicyFeeList": [
        {
            "@pk": 10676862610,
            "@type": "PolicyFee-PolicyFee",
            "BcpPaidAmount": 0,
            "BeforeVatAmount": 35.67,
            "BusinessObjectId": 590793,
            "Commission": 10.7,
            "FeeAmount": 38.52,
            "FeeInfoId": 10676862609,
            "FeeSeq": 0,
            "FeeType": 100501,
            "InstallmentPeriodSeq": 0,
            "IsBcpPaidUp": "N",
            "PolicyFeeId": 10676862610,
            "PolicyId": "10688110064,D96E50EC11468494C60D37A918F603C6",
            "Vat": 2.85,
            "VatBook": 0
        }
    ],
    "PolicyId": "10688110064,D96E50EC11468494C60D37A918F603C6",
    "PolicyNo": "POTBTI01242354",
    "PremiumBookExchangeRate": 1,
    "PremiumCurrencyCode": "USD",
    "ProductCode": "TBTI",
    "TotalBcpAmount": 38.52,
    "TotalBcpBeforeVatAmount": 35.67,
    "TotalBcpVatAmount": 2.85
}
```


#### PolicyFeeInfo Update API - Response Sample

```
{
    "@pk": 10676862609,
    "@type": "PolicyFeeInfo-PolicyFeeInfo",
    "AgentCode": "XXXXX000051656XXX",
    "BizTransType": "P",
    "BookCurrencyCode": "USD",
    "BusinessObjectId": 4600828,
    "EffectiveDate": "2024-07-26",
    "ExpiryDate": "2024-08-09",
    "FeeInfoId": 10676862609,
    "IsBcpPaidUp": "N",
    "IsBcpPosted": "N",
    "IsCancelled": "N",
    "IsCertificateSettled": "N",
    "IsGLPosted": "N",
    "OrgCode": "10002",
    "PayMethodCode": "100",
    "PayerPayeeName": "Test Update",
    "PolicyFeeList": [
        {
            "@pk": 10676862610,
            "@type": "PolicyFee-PolicyFee",
            "BcpPaidAmount": 0,
            "BeforeVatAmount": 35.67,
            "BusinessObjectId": 590793,
            "Commission": 10.7,
            "FeeAmount": 38.52,
            "FeeInfoId": 10676862609,
            "FeeSeq": 0,
            "FeeType": 100501,
            "InstallmentPeriodSeq": 0,
            "IsBcpPaidUp": "N",
            "PolicyFeeId": 10676862610,
            "PolicyId": "10688110064,D96E50EC11468494C60D37A918F603C6",
            "Vat": 2.85,
            "VatBook": 0
        }
    ],
    "PolicyId": "10688110064,D96E50EC11468494C60D37A918F603C6",
    "PolicyNo": "POTBTI01242354",
    "PremiumBookExchangeRate": 1,
    "PremiumCurrencyCode": "USD",
    "ProductCode": "TBTI",
    "TotalBcpAmount": 38.52,
    "TotalBcpBeforeVatAmount": 35.67,
    "TotalBcpVatAmount": 2.85
}

```


###  PolicyFeeInfo LoadForNewbiz API

#### PolicyFeeInfo LoadForNewbiz API - Response Sample

```
{
    "@pk": 10676862108,
    "@type": "PolicyFeeInfo-PolicyFeeInfo",
    "AgentCode": "XXXXX000051656XXX",
    "BizTransType": "P",
    "BookCurrencyCode": "USD",
    "BusinessObjectId": 4600828,
    "EffectiveDate": "2024-07-26",
    "ExpiryDate": "2024-08-09",
    "FeeInfoId": 10676862108,
    "IsBcpPaidUp": "N",
    "IsBcpPosted": "N",
    "IsCancelled": "N",
    "IsCertificateSettled": "N",
    "IsGLPosted": "N",
    "OrgCode": "10002",
    "PayMethodCode": "100",
    "PayerPayeeName": "Test",
    "PolicyFeeList": [
        {
            "@pk": 10676862109,
            "@type": "PolicyFee-PolicyFee",
            "BcpPaidAmount": 0,
            "BeforeVatAmount": 35.67,
            "BusinessObjectId": 590793,
            "Commission": 10.7,
            "FeeAmount": 38.52,
            "FeeInfoId": 10676862108,
            "FeeType": 100501,
            "InstallmentPeriodSeq": 0,
            "IsBcpPaidUp": "N",
            "PolicyFeeId": 10676862109,
            "PolicyId": "10688110064,D96E50EC11468494C60D37A918F603C6",
            "Vat": 2.85,
            "VatBook": 0
        }
    ],
    "PolicyId": "10688110064,D96E50EC11468494C60D37A918F603C6",
    "PolicyNo": "POTBTI01242354",
    "PremiumBookExchangeRate": 1,
    "PremiumCurrencyCode": "USD",
    "ProductCode": "TBTI"
}
```


