Skip to content

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.

GET /adr/banking/arrangements/{cdrArrangementId}/accounts/{accountId}

Breaking Change

Removed required field


Breaking Change

Removed optional field


Breaking Change

Added required field


Change

Added optional field


GET /adr/banking/arrangements/{cdrArrangementId}/accounts/{accountId}/transactions/{transactionId}

Breaking Change

New enum value added


Change

Added required field (within nppPayload)


Change

Added optional field




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:

  1. Change numeric parsing of tier bounds to string parsing
  2. Support tiers with non-numeric bounds (e.g., “1 - 2 months”)
  3. Update condition logic to iterate applicabilityConditionList (array) instead of reading singular applicabilityConditions

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 -> nested fixedAmount/rateBased/variable

Action:

Update JSON parsing to read from feeMethodUType + fixedAmount.amount / rateBased.rate / variable instead of flat fields.


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 -> nested fixedAmount/rateBased

Action:

Update JSON parsing to read from discountMethodUType + fixedAmount.amount / rateBased.rate instead of flat fields.


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 value nppPayload (previously only x2p101Payload)

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.


Added optional fields:

  • minimumPlanValueCurrency (string, CurrencyString) — currency for minimumPlanValue; defaults to AUD if absent
  • maximumPlanValueCurrency (string, CurrencyString) — currency for maximumPlanValue; defaults to AUD if absent

Action:

No migration required. Fields are optional and backward compatible. When absent, AUD should be assumed.


Updated field: rateApplicabilityType

New enum values added in v3.0.0:

  • NEW_CUSTOMER_TO_GROUP
  • ONLINE_ONLY
  • OTHER
  • MIN_PURCHASES
  • MAX_WITHDRAWALS
  • MAX_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.