Skip to main content
Version: v2

Recurrence service

The Recurrence service is intended to detect recurrent expenses\incomes. Among other things this covers:

  • Contract (rent, energy, telephone, internet, water, etc.)
  • Insurance (medical, home, liability, travel, life, etc.)
  • Subscriptions (streaming services, newspapers, magazines, etc.)
  • Contributions (sports, associations, school fees, etc.)
  • Taxes and charges (sewage costs, etc.)
  • Customer-to-customer (money transfers, etc.)
  • Income (salary, etc.)

Recurrence integration into Convert

Recurrence can be enabled on /convert by using the IncludeRecurrence flag in the headers of the request.

When set to true the Recurrence algorithm will be executed on the given transaction batch.

The Recurrence algorithm will only be executed if the Customer has the module enabled for Recurrence (Id 28).

When the IncludeRecurrence flag is enabled it will add 3 properties to each transaction that are recurrent:

  • RecurrenceSequence => In which sequence the recurrence belongs in

  • RecurrenceInterval => Is a number that states how often it occurs in a given time period

  • RecurrenceType => The type of recurrence. The possible values are:

    • 0 => None

    • 1 => Second

    • 2 => Minute

    • 3 => Hour

    • 4 => Day

    • 5 => Week

    • 6 => Month

    • 7 => Quarter

    • 8 => Semester

    • 9 => Year

So for example if a transaction has a RecurrenceInterval of 3 and a RecurrenceType of 6 it means the transaction reoccurs every 3 months.

When the recurrence succeeds a Quota event will be generated to indicate that the customer used the IncludeRecurrence flag.

Calling the Recurrence Service

Endpoint:             https://linx.invers.nl:8100/api/linx/recurrence
Method: POST

Header: ApiKey: string (required)
X-Request-ID: string (required)
ClientId: string (optional)
InputHash: string (optional)
Options: int (optional) (default = 33)

Body: Data: byte[] (required)

Errors: 400, 403 or 500

Information

FieldTypeDescription
AccountsCountIntegerAccounts count
AccountsArray of AccountGroupList of recurrence/anomaly categories grouped by accounts
OverviewFinancialOverviewShort financial overview about detected recurrences for all accounts

FinancialOverview

FieldTypeDescription
TotalRecurrenceCategoriesCountIntegerRecurrence categories count
TotalTypicalRecurrenceCategoriesCountIntegerTypical recurrence categories count
TotalAtypicalRecurrenceCategoriesCountIntegerAtypical recurrence categories count
TotalRecurrenceBeneficiaryGroupsCountIntegerRecurrence groups count
TotalTypicalRecurrenceBeneficiaryGroupsCountIntegerTypical recurrence groups count
TotalAtypicalRecurrenceBeneficiaryGroupsCountIntegerAtypical recurrence groups count
TotalRecurrenceTransactionsCountIntegerRecurrence transactions count
TotalTypicalRecurrenceTransactionsCountIntegerTypical recurrence transactions count
TotalAtypicalRecurrenceTransactionsCountIntegerAtypical recurrence transactions count
AnomaliesTransactionsCountIntegerAnomaly transactions count
TotalRecurrenceIncomeDecimalTotal recurrence income
TotalRecurrenceExpenseDecimalTotal recurrence expense
TotalTypicalRecurrenceIncomeDecimalTypical total recurrence income
TotalAtypicalRecurrenceIncomeDecimalAtypical total recurrence income
TotalTypicalRecurrenceExpenseDecimalTypical total recurrence exepense
TotalAtypicalRecurrenceExpenseDecimalAtypical total recurrence expense
AverageMonthlyRecurrenceIncomeDecimalAverage recurrence income
AverageMonthlyRecurrenceExpenseDecimalAverage recurrence expense
AverageMonthlyTypicalRecurrenceIncomeDecimalTypical average recurrence income
AverageMonthlyAtypicalRecurrenceIncomeDecimalAtypical average recurrence income
AverageMonthlyTypicalRecurrenceExpenseDecimalTypical average recurrence expense
AverageMonthlyAtypicalRecurrenceExpenseDecimalAtypical average recurrence expense

AccountGroup

FieldTypeDescription
AccountAccountInformation about the account
OverviewFinancialOverviewShort financial overview about detected recurrences for this account
TypicalRecurrencesArray of CategoryGroupsList of typical recurrence categories for this account
AtypicalRecurrencesArray of CategoryGroupsList of atypical recurrence categories for this account
AnomaliesArray of CategoryGroupsList of anomaly categories for this account

CategoryGroup

FieldTypeDescription
CategoryIdIntegerCategory ID
(when categorized)
CategoryNameStringCategory name
(when categorized)
ContractsCountIntegerContracts count for this category
TransactionsCountIntegerTransactions count for this category
TotalAmountDecimalTotal currency amount for this category
MonthlyAmountDecimalMonthly currency amount for this category
ContractsArray of BeneficiaryGroupsList of contracts for this category

BeneficiaryGroup

FieldTypeDescription
BeneficiaryBeneficiaryInformation about the beneficiary
RecurrencePropertiesRecurrencePropertiesRecurrence properties
(when recurrent)
TotalAmountDecimalTotal currency amount for this contract
MonthlyAmountDecimalMonthly currency amount for this contract
FirstTransactionDateDateTimeEarliest transaction date for this contract
LastTransactionDateDateTimeLatest transaction date for this contract
TransactionsCountIntegerTransactions count for this contract
TransactionsArray of TransactionsList of transactions for this contract

Account

FieldTypeDescription
CountryStringAccount's country
NameStringAccount's name
OriginalNameStringAccount's original name
IdentifierStringAccount's identifier
DenominationIdIntegerAccount's denomination ID
(when available)
SwiftCodeStringAccount's Swift code
BankStringAccount's bank
NumberStringAccount's number
FormattedStringFormatted account's number
IBanStringAccount's IBAN
BeginBalanceDateDateTimeBeggining balance date
(when available)
BeginBalanceDecimalBeginning balance
(when available)
EndBalanceDateDateTimeEnding balance date
(when available)
EndBalanceDecimalEnding balance
(when available)

Beneficiary

FieldTypeDescription
CountryStringBeneficiary's country
NameStringBeneficiary's name
OriginalNameStringBeneficiary's original name
IdentifierStringBeneficiary's identifier
DenominationIdIntegerBeneficiary's denomination ID
(when available)

RecurrenceProperties

FieldTypeDescription
QualityDoubleQuality of the result between 0 and 1
PeriodUnitEnumNone
Month
Quarter
Semester
Year
PeriodIntegerNumber of period units

Transaction

FieldTypeDescription
BookDateDateTimeTransaction's book date
InterestDateDateTimeTransaction's interest date
TransactionDateDateTimeTransaction's date
AmountDecimalTransaction's amount
DescriptionStringTransaction's description
OriginalDescriptionStringTransaction's original description from the bank
ExternalTransactionIdStringTransaction's original ID from the bank

Output (example)

{
"accountsCount": 1,
"accounts": [
{
"account": {
"country": "string",
"number": "string",
"formatted": "string",
"iBan": "string",
"beginBalanceDate": "YYYY-MM-DDTHH:MM:SS+HH:MM",
"beginBalance": 0.0,
"endBalanceDate": "YYYY-MM-DDTHH:MM:SS+HH:MM",
"endBalance": 0.0
},
"overview": {
"totalRecurrenceCategoriesCount": 1,
"totalTypicalRecurrenceCategoriesCount": 1,
"totalAtypicalRecurrenceCategoriesCount": 1,
"totalRecurrenceBeneficiaryGroupsCount": 1,
"totalTypicalRecurrenceBeneficiaryGroupsCount": 1,
"totalAtypicalRecurrenceBeneficiaryGroupsCount": 1,
"totalRecurrenceTransactionsCount": 1,
"totalTypicalRecurrenceTransactionsCount": 1,
"totalAtypicalRecurrenceTransactionsCount": 1,
"anomaliesTransactionsCount": 1,
"totalRecurrenceIncome": 0.0,
"totalRecurrenceExpense": 0.0,
"totalTypicalRecurrenceIncome": 0.0,
"totalAtypicalRecurrenceIncome": 0.0,
"totalTypicalRecurrenceExpense": 0.0,
"totalAtypicalRecurrenceExpense": 0.0,
"averageMonthlyRecurrenceIncome": 0.0,
"averageMonthlyRecurrenceExpense": 0.0,
"averageMonthlyTypicalRecurrenceIncome": 0.0,
"averageMonthlyAtypicalRecurrenceIncome": 0.0,
"averageMonthlyTypicalRecurrenceExpense": 0.0,
"averageMonthlyAtypicalRecurrenceExpense": 0.0
},
"typicalRecurrences": [
{
"categoryId": 1,
"categoryName": "string"
"beneficiaryGroupsCount": 1,
"transactionsCount": 1,
"totalAmount": 0.0,
"averageMonthlyAmount": 0.0,
"beneficiaryGroups": [
{
"beneficiary": {
"country": "string",
"name": "string",
"originalName": "string"
},
"recurrenceProperties": {
"quality": 1.0,
"periodUnit": "year",
"period": 1
},
"totalAmount": 0.0,
"averageMonthlyAmount": 0.0,
"firstTransactionDate": "YYYY-MM-DDTHH:MM:SS+HH:MM",
"lastTransactionDate": "YYYY-MM-DDTHH:MM:SS+HH:MM",
"transactionsCount": 1,
"transactions": [
{
"bookDate": "YYYY-MM-DDTHH:MM:SS+HH:MM",
"interestDate": "YYYY-MM-DDTHH:MM:SS+HH:MM",
"transactionDate": "YYYY-MM-DDTHH:MM:SS+HH:MM",
"amount": 0.0,
"description": "string",
"originalDescription": "string"
}
]
}
]
}
],
"atypicalRecurrences": [
{
"categoryId": 1,
"categoryName": "string"
"beneficiaryGroupsCount": 1,
"transactionsCount": 1,
"totalAmount": 0.0,
"averageMonthlyAmount": 0.0,
"beneficiaryGroups": [
{
"beneficiary": {
"country": "string",
"name": "string",
"originalName": "string"
},
"recurrenceProperties": {
"quality": 1.0,
"periodUnit": "year",
"period": 1
},
"totalAmount": 0.0,
"averageMonthlyAmount": 0.0,
"firstTransactionDate": "YYYY-MM-DDTHH:MM:SS+HH:MM",
"lastTransactionDate": "YYYY-MM-DDTHH:MM:SS+HH:MM",
"transactionsCount": 1,
"transactions": [
{
"bookDate": "YYYY-MM-DDTHH:MM:SS+HH:MM",
"interestDate": "YYYY-MM-DDTHH:MM:SS+HH:MM",
"transactionDate": "YYYY-MM-DDTHH:MM:SS+HH:MM",
"amount": 0.0,
"description": "string",
"originalDescription": "string"
}
]
}
]
}
],
"anomalies": [
{
"categoryId": 1,
"categoryName": "string"
"beneficiaryGroupsCount": 1,
"transactionsCount": 1,
"totalAmount": 0.0,
"averageMonthlyAmount": 0.0,
"beneficiaryGroups": [
{
"beneficiary": {
"country": "string",
"name": "string",
"originalName": "string"
},
"totalAmount": 0.0,
"averageMonthlyAmount": 0.0,
"firstTransactionDate": "YYYY-MM-DDTHH:MM:SS+HH:MM",
"lastTransactionDate": "YYYY-MM-DDTHH:MM:SS+HH:MM",
"transactionsCount": 1,
"transactions": [
{
"bookDate": "YYYY-MM-DDTHH:MM:SS+HH:MM",
"interestDate": "YYYY-MM-DDTHH:MM:SS+HH:MM",
"transactionDate": "YYYY-MM-DDTHH:MM:SS+HH:MM",
"amount": 0.0,
"description": "string",
"originalDescription": "string"
}
]
}
]
}
]
}
],
"overview": {
"totalRecurrenceCategoriesCount": 1,
"totalTypicalRecurrenceCategoriesCount": 1,
"totalAtypicalRecurrenceCategoriesCount": 1,
"totalRecurrenceBeneficiaryGroupsCount": 1,
"totalTypicalRecurrenceBeneficiaryGroupsCount": 1,
"totalAtypicalRecurrenceBeneficiaryGroupsCount": 1,
"totalRecurrenceTransactionsCount": 1,
"totalTypicalRecurrenceTransactionsCount": 1,
"totalAtypicalRecurrenceTransactionsCount": 1,
"anomaliesTransactionsCount": 1,
"totalRecurrenceIncome": 0.0,
"totalRecurrenceExpense": 0.0,
"totalTypicalRecurrenceIncome": 0.0,
"totalAtypicalRecurrenceIncome": 0.0,
"totalTypicalRecurrenceExpense": 0.0,
"totalAtypicalRecurrenceExpense": 0.0,
"averageMonthlyRecurrenceIncome": 0.0,
"averageMonthlyRecurrenceExpense": 0.0,
"averageMonthlyTypicalRecurrenceIncome": 0.0,
"averageMonthlyAtypicalRecurrenceIncome": 0.0,
"averageMonthlyTypicalRecurrenceExpense": 0.0,
"averageMonthlyAtypicalRecurrenceExpense": 0.0
}
}