Banking API - v2 to v3
Migrating from v2.0.1 to v3.0.0
This document describes the changes introduced in version 3.0.0 of the Adatree Banking API. It covers schema changes and the steps you need to take to migrate your integration.
Endpoint Changes
Section titled “Endpoint Changes”/adr/banking/arrangements/{cdrArrangementId}/accounts/{accountId} Breaking Change
Removed required field
Breaking Change
Removed optional field
data.depositRates.tiers.applicabilityConditionsdata.depositRates.tiers.maximumValuedata.lendingRates.tiers.applicabilityConditionsdata.lendingRates.tiers.maximumValuedata.fees.accrualFrequencydata.fees.accruedRatedata.fees.amountdata.fees.balanceRatedata.fees.transactionRatedata.fees.discounts.accruedRatedata.fees.discounts.amountdata.fees.discounts.balanceRatedata.fees.discounts.feeRatedata.fees.discounts.transactionRate
Breaking Change
Added required field
Change
Added optional field
/adr/banking/arrangements/{cdrArrangementId}/accounts/{accountId}/transactions/{transactionId} Breaking Change
New enum value added
Change
Added required field (within nppPayload)
Change
Added optional field
data.extendedData.nppPayloaddata.extendedData.nppPayload.endToEndIddata.extendedData.nppPayload.purposeCodedata.extendedData.nppPayload.servicedata.extendedData.nppPayload.serviceVersion
Schema Changes
Section titled “Schema Changes”1. BankingProductRateTierV3
Section titled “1. BankingProductRateTierV3”Old (v2.0.1):
{ "name": "Term 12-24 Months", "unitOfMeasure": "MONTH", "minimumValue": 12, "maximumValue": 24, "minimumValueString": "12", "maximumValueString": "24", "applicabilityConditions": { "rateApplicabilityType": "OTHER", "additionalInfo": "..." }, "applicabilityConditionList": [ { "rateApplicabilityType": "OTHER", "additionalInfo": "..." } ]}New (v3.0.0):
{ "name": "Term 12-24 Months", "unitOfMeasure": "MONTH", "minimumValueString": "12", "maximumValueString": "24", "applicabilityConditionList": [ { "rateApplicabilityType": "OTHER", "additionalInfo": "..." } ]}Removed required fields:
minimumValue(numeric, deprecated)
Removed optional fields:
maximumValue(numeric, deprecated)applicabilityConditions(singular, deprecated)
Added required field:
minimumValueString(string — promoted from optional to required)
Added optional fields:
maximumValueString(string)applicabilityConditionList(array of conditions, replaces singular)
Action:
Consumers must:
- Change numeric parsing of tier bounds to string parsing
- Support tiers with non-numeric bounds (e.g., “1 - 2 months”)
- Update condition logic to iterate
applicabilityConditionList(array) instead of reading singularapplicabilityConditions
2. BankingProductFee
Section titled “2. BankingProductFee”Old (v2.0.1):
{ "name": "Monthly Fee", "feeType": "PERIODIC", "amount": "15.00", "balanceRate": null, "transactionRate": null, "accruedRate": null, "accrualFrequency": null, "feeMethodUType": "fixedAmount", "fixedAmount": { "amount": "15.00" }, "currency": "AUD"}New (v3.0.0):
{ "name": "Monthly Fee", "feeType": "PERIODIC", "feeMethodUType": "fixedAmount", "fixedAmount": { "amount": "15.00" }, "currency": "AUD"}Removed optional fields:
amount(deprecated)balanceRate(deprecated)transactionRate(deprecated)accruedRate(deprecated)accrualFrequency(deprecated)
New Structure
- Discriminator
feeMethodUType-> nestedfixedAmount/rateBased/variable
Action:
Update JSON parsing to read from feeMethodUType + fixedAmount.amount / rateBased.rate / variable instead of flat fields.
3. BankingProductDiscount
Section titled “3. BankingProductDiscount”Old (v2.0.1):
{ "description": "Loyalty Discount", "discountType": "BALANCE", "amount": "0.50", "balanceRate": null, "transactionRate": null, "accruedRate": null, "feeRate": null, "discountMethodUType": "FIXED_AMOUNT", "fixedAmount": { "amount": "0.50" }}New (v3.0.0):
{ "description": "Loyalty Discount", "discountType": "BALANCE", "discountMethodUType": "FIXED_AMOUNT", "fixedAmount": { "amount": "0.50" }}Removed optional fields:
amount(deprecated)balanceRate(deprecated)transactionRate(deprecated)accruedRate(deprecated)feeRate(deprecated)
New Structure
- Discriminator
discountMethodUType-> nestedfixedAmount/rateBased
Action:
Update JSON parsing to read from discountMethodUType + fixedAmount.amount / rateBased.rate instead of flat fields.
4. BankingTransactionDetail_extendedData
Section titled “4. BankingTransactionDetail_extendedData”Old (v2.0.1):
{ "extensionUType": "x2p101Payload", "x2p101Payload": { "extendedDescription": "extended description of a transaction", "endToEndId": "end-to-endid-for-payment", "purposeCode": "payment-purpose-npp" }, "service": "X2P1.01"}New (v3.0.0):
{ "extensionUType": "nppPayload", "x2p101Payload": { "extendedDescription": "extended description of a transaction", "endToEndId": "end-to-endid-for-payment", "purposeCode": "payment-purpose-npp" }, "nppPayload": { "extendedDescription": "extended description of a transaction", "endToEndId": "end-to-endid-for-payment", "purposeCode": "payment-purpose-npp", "service": "X2P1", "serviceVersion": "03" }, "service": "X2P1.01"}Added enum value:
extensionUType: new valuenppPayload(previously onlyx2p101Payload)
Added required field (within nppPayload):
extendedDescription(string)
Added optional fields (within nppPayload):
endToEndId(string)purposeCode(string)service(enum:X2P1,IFTI,BSCT,CATSCT)serviceVersion(string, two-digit version e.g."03")
Action:
Add handling for extensionUType: "nppPayload" and parse the nppPayload object accordingly. Existing x2p101Payload handling remains unchanged.
5. BankingLoanLessorInstalmentPlan
Section titled “5. BankingLoanLessorInstalmentPlan”Added optional fields:
minimumPlanValueCurrency(string, CurrencyString) — currency forminimumPlanValue; defaults to AUD if absentmaximumPlanValueCurrency(string, CurrencyString) — currency formaximumPlanValue; defaults to AUD if absent
Action:
No migration required. Fields are optional and backward compatible. When absent, AUD should be assumed.
6. BankingProductRateCondition
Section titled “6. BankingProductRateCondition”Updated field: rateApplicabilityType
New enum values added in v3.0.0:
NEW_CUSTOMER_TO_GROUPONLINE_ONLYOTHERMIN_PURCHASESMAX_WITHDRAWALSMAX_WITHDRAWAL_AMOUNT
Action:
Ensure your implementation does not reject unknown rateApplicabilityType values. If your code validates against a hardcoded enum list, add the new values.