can be one of 'caseSeqId' / 'state' / 'milestone' / 'stage' / 'created' / 'modified' / '$jsonPathToCaseData'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CaseSearchRequest'
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/CaseSearchResult'
/api/action-results:
post:
tags:
- Action Result
description: Endpoint for asynchronously sending action results. When ActionExecutor returns an IN_PROGRESS status it will pause execution. The execution can be resumed using this endpoint e.g. by an external system. The execId value is available in ActionExecutor as input.
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/ActionResultRequest"
responses:
'202':
description: successful operation
'400':
description: "Invalid request"
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorMsg"
components:
schemas:
CaseTypeCreateResult:
type: object
properties:
caseTypeId:
type: string
format: uuid
CaseType:
type: object
properties:
name:
type: string
description:
type: string
schema:
$ref: '#/components/schemas/Schema'
flowDef:
$ref: '#/components/schemas/Flow'
createFormId:
type: string
description: Reference to a CustomViewProcessor implementation that will render a form in case mgmt for creating a case of this type manually. Data submitted from the form will be processed by createProcessor (if present).
viewFormId:
type: string
description: Reference to a CaseViewProcessor implementation that will render a detailed view of a case of this type in case search results
createProcessor:
type: string
description: Reference to a DataProcessor implementation that should be invoked when case of this type is created. This allows data transformation / enhancment. The result data should be inline with case type schema. If createProcessor is not provided initData will be passed on and directly validated against the schema.
searchParams:
type: object
additionalProperties:
type: string
description: Map of search params that will be selectable as part of case search. The mapped value can be a json path that will be executed against the data sent during case creation.
example:
name: helloworld
description: Description for a helloworld case type definition
schema:
id: helloworld-schema
properties:
name:
type: string
required: true
flowDef:
name: helloworld-flow
startStep: hello
steps:
hello:
action: std.log
params:
txt: Hello world! Hello $data.name!
createFormId: helloworld.caseCreateForm
viewFormId: helloworld.caseViewForm
createProcessor: helloworld.createProcessor
searchParams:
name: $name
CaseTypeList:
type: object
properties:
items:
type: array
items:
$ref: "#/components/schemas/CaseType"
CaseTypeAliasCreateRequest:
type: object
properties:
caseTypeId:
type: string
format: uuid
CaseTypeAlias:
type: object
properties:
alias:
type: string
caseTypeId:
type: string
format: uuid
CaseTypeAliasList:
type: object
properties:
items:
type: array
items:
$ref: "#/components/schemas/CaseTypeAlias"
CaseInfo:
type: object
properties:
id:
type: string
format: uuid
description: Technical case identifier
seqId:
type: integer
description: Human readable case identifier
version:
type: integer
description: Version of case info record
typeId:
type: string
format: uuid
description: Reference to case type
schemaId:
type: string
format: uuid
description: Reference to schema associated with a case type
runId:
type: string
format: uuid
description: Reference to flow instance associated with the case
milestone:
type: string
description: Last achieved milestone associated with the case. Milestones are set in flow.
state:
$ref: "#/components/schemas/CaseState"
stage:
type: string
description: Current stage the case is currentlyin. Stages are set in flow.
created:
type: string
format: date-time
modified:
type: string
format: date-time
example:
seqId : 972
id : 22ed60e1-8881-40a7-b314-26efc502aca1
version : 12
typeId : afb81756-fbdd-4970-a969-7596aa5ecfa1
schemaId : eb254cc4-44f6-4add-adff-5ad56ced7dbc
runId : 74c22816-2bd5-48dd-85cc-82eac88d490c
state : approved
milestone : null
stage : end
created : 2025-07-08T11:40:47.507+00:00
modified : 2025-07-08T13:09:26.698+00:00
CaseData:
type: object
description: The json data associated with a specific case. Data needs to be inline with the schema associated with the type of this case.
example:
ctx:
origin: api
merchantLang: EN
trustedSignature: false
creator: signup
merchantNumberExists: false
organizationNumberExists: true
noResponseFromMerchant: true
autoCloseCase: false
caseId: 41fa603a-008c-46ac-801b-b4236f235511
caseSeqId: '392'
caseCreated: '2025-07-03 18:12:28'
payment:
swishId: null
settlementDelay: 5
paymentMethods:
- KLARNA
- MasterCard
- PAYPAL
- Trustly
- Vipps
- Visa
company:
organizationNumber: '810059672'
vatNumber: NO810059672
name: test
dbaName: test
addressLine1: test
addressLine2: ''
postalCode: '1234'
city: oslo
countryCode: NOR
legalFormInternalCode: OT7
phone: '+47.41643007'
invoiceEmail: aditya.raj1@external.nexigroup.com
invoiceAddressLine1: test
invoiceAddressLine2: ''
invoicePostalCode: '1234'
invoiceCity: oslo
invoiceCountryCode: NOR
companyDetailCorrected: false
contact:
name: test
lastName: testt
phone: '+47.67574848'
email: sehla.pathan@external.nexigroup.com
correlationId: 631c825c22ae68cea23dd64581457733
beneficialOwners:
role: BO
updatedOn: '2025-07-03 18:12:39'
owners:
- postalCode: '1455'
personLegalIdentifier: 190920-00332
dateOfBirth: '2020-09-19'
countryCode: USA
ownId: ''
jobTitle: Manager
city: Oslo
nameUpdatedForSamePerson: false
confirmedByPersonLookup: false
uciId: OWN30005554
confirmedByCaseHandler: true
firstName: NANDASHI
bvdId: ''
percentageOfOwnership: 50
addressLine1: oslo
confirmedByOfficialRegistry: true
lastName: NANDASHI
nationality: NOR
prepayment:
prepaymentQuestions:
prepaidTurnover: null
daysBetweenDeliveryAndPrepayment: null
prepaidGoodsAndServices: null
seasonalPrepaidTurnover: na
paymentMethodsAllocation:
cards: 30
invoice: null
wallet: 40
averageReturn: 11
webshop:
introductionType: indirect
webshopLive: true
webshopUrlProtocol: https
name: test
liveUrl: 'https://www.siteshop.com/'
integrationPartner: Denmark Shop
integrationPartnerEmail: partner522dkk@dibseasytest.eu
integrationPartnerId: 3d66cfd29a0d4ae18cbe971d5bfe9e62
testUrl: ''
testUser: ''
testPass: ''
salesRepresentative: ''
salesPartnerName: ''
mcc: '6513'
mccDescPortal: Real estate agents and managers — rentals
nace: '770000'
advancePayment: false
avgTransactionValue:
low: 500
high: 1000
annualTurnover:
low: 500001
high: 750000
pastYearFinancialResult: '2276'
mccDesc: Real estate agents and managers — rentals
productTypes:
- physical_goods
- services
merchant:
id: dfbf25de540545f790c5260008480b66
number: '100351410'
pricing:
priceListId: DENORNOK
pricingDocumentNo: null
currency: NOK
fees:
- name: cardCaptureFee
amount: 2.2
- name: cardCaptureServiceFee
amount: 2.3
- name: cardRefundFee
amount: 2.5
- name: cardRefundServiceFee
amount: 0
- name: invoiceCaptureFee
amount: 10
- name: invoiceCaptureServiceFee
amount: 2.2
- name: invoiceRefundFee
amount: 2.5
- name: invoiceRefundServiceFee
amount: 0
- name: installmentCaptureFee
amount: 10
- name: installmentCaptureServiceFee
amount: 2.2
- name: installmentRefundFee
amount: 2.5
- name: installmentRefundServiceFee
amount: 0
- name: vippsCaptureFee
amount: 3.2
- name: vippsCaptureServiceFee
amount: 2.2
- name: vippsRefundFee
amount: 2.5
- name: vippsRefundServiceFee
amount: 0
- name: signOnFee
amount: 1990
- name: subscriptionFee
amount: 349
- name: payPalCaptureFee
amount: 0.5
- name: payPalRefundFee
amount: 0
ultimateOwningCompany:
companyDetailCorrected: false
companyOwner: false
sap:
notes: ''
lastSyncTime: '2025-07-11 07:10:59'
lastSyncMsg: ''
lastSyncOk: true
externalCompanyInformation:
country: Norge
dunsNumber: '515034296'
city: EIDSVÅG I ROMSDAL
organizationNumber: '810059672'
rating: AAA
operatingStatus: '1'
name: Aasen & Farstad AS
legalFormCode: '500'
legalFormInternalCode: OT7
addressLine1: Sjøgardsvegen 8
postalCode: '6460'
naceCodes:
- code: '682090'
description: Utleie av egen eller leid fast eiendom ellers
boardMembers: []
signature: []
financialResult:
- date: '2024-12-31'
result: '1659'
- date: '2023-12-31'
result: '1337'
- date: '2022-12-31'
result: '1479'
updatedOn: '2025-07-03 18:12:38'
errorCode: null
errorDescription: null
requiredDocumentsStatus:
errorCode: null
errorDescription: null
updatedOn: '2025-07-03 18:12:39'
caseHandler:
name: sepat
fullName: Sehla Pathan
correlationId: 520b714b119d57bd912cc53470346622
financialRiskMatrix:
original:
finalOutcome: HIGH
riskOutcomes:
- checkName: ACTIVEORGNO
checkInputValue: Active
outcomeValue: LOW
- checkName: SIGNATURE
checkInputValue: test demoo
outcomeValue: HIGH
- checkName: RATINGPAYMENTREMARK
checkInputValue: A - Strong financial performance
outcomeValue: LOW
- checkName: EXPECTEDTURNOVER
checkInputValue: '750000'
outcomeValue: LOW
- checkName: PREPAYMENT
checkInputValue: 'false'
outcomeValue: LOW
- checkName: MCC
checkInputValue: '6513,RISK'
outcomeValue: HIGH
- checkName: NACECODE
checkInputValue: '770000,RISK'
outcomeValue: HIGH
- checkName: AGREEMENTTYPE
checkInputValue: WEB
outcomeValue: HIGH
- checkName: COUNTRY
checkInputValue: NOR
outcomeValue: LOW
- checkName: AVGTRANSVALUE
checkInputValue: 500-1000 NOK
outcomeValue: LOW
errorCode: null
errorDescription: null
updatedOn: '2025-07-11 07:09:08'
current:
finalOutcome: HIGH
riskOutcomes:
- checkName: ACTIVEORGNO
checkInputValue: Active
outcomeValue: LOW
- checkName: SIGNATURE
checkInputValue: test demoo
outcomeValue: HIGH
- checkName: RATINGPAYMENTREMARK
checkInputValue: A - Strong financial performance
outcomeValue: LOW
- checkName: EXPECTEDTURNOVER
checkInputValue: '750000'
outcomeValue: LOW
- checkName: PREPAYMENT
checkInputValue: 'false'
outcomeValue: LOW
- checkName: MCC
checkInputValue: '6513,RISK'
outcomeValue: HIGH
- checkName: NACECODE
checkInputValue: '770000,RISK'
outcomeValue: HIGH
- checkName: AGREEMENTTYPE
checkInputValue: WEB
outcomeValue: HIGH
- checkName: COUNTRY
checkInputValue: NOR
outcomeValue: LOW
- checkName: AVGTRANSVALUE
checkInputValue: 500-1000 NOK
outcomeValue: LOW
errorCode: null
errorDescription: null
updatedOn: '2025-07-11 07:09:08'
riskCheck:
checks:
- value: RC19
label: Should the application be rejected according to a match in decline list?
comments: ''
- value: RC20
label: Should the application be escalated according to the onboarding policy?
comments: ''
- value: RC21
label: >-
Is the official company information more than 3 Months old and/or is the
credit rating for the company missing?
comments: ''
- value: RC22
label: Picture ID of signatory/signee is missing?
comments: ''
- value: RC23
label: The signer of the agreement is not authorised to sign?
comments: ''
- value: RC24
label: Does the company have any payment remarks?
comments: ''
- value: RC25
label: Documentation of the customer?s settlement account is missing?
comments: ''
- value: RC26
label: Bank account is not owned by the applying company?
comments: ''
- value: RC27
label: >-
Must the merchant be investigated further, because of a hit in
Sanctions/PEP screening?
actionUser: system
actionDate: '2025-07-11 07:20:00'
status: approved
comments: ''
- value: RC28
label: Are special checks required due to high risk MCC?
comments: ''
- value: RC29
label: Is there adverse media to be found about the merchant/principal?
comments: ''
- value: RC30
label: Point of sale does not exist in Google Street View?
comments: ''
- value: RC31
label: Telephone number or address does not exist in public databases?
comments: ''
- value: RC34
label: >-
Is the company an existing merchant, with any agreements? If yes, then
note the Revenue for the last 12 months and number of chargebacks in EMO
comment field
comments: ''
- value: RC35
label: >-
If the merchant have credit risk exposure and needs to be escalated to
Risk, is the required financial statements not collected or unavailable
in credit rating? Exceptions for national administrative agencies such
as municipalities and counties exist.
comments: ''
- value: RC40
label: Is the merchant operating as a Payment Facilitator or wallet?
comments: ''
- value: RC47
label: Is there a match in VMSS?
status: rejected
actionUser: system
actionDate: '2025-07-22 13:37:27'
comments: ''
- value: RC48
label: Is there a match in MATCH?
status: approved
actionUser: system
actionDate: '2025-07-11 07:20:09'
comments: ''
errorCode: null
errorDescription: null
updatedOn: '2025-07-11 07:09:08'
note: ''
internalCaseRejectionReason: null
aml:
current:
assessmentId: 68709e831b92bc08dbf10291
startedOn: '2025-07-11 07:17:55'
errorCode: null
errorDescription: null
risks:
- riskElement: Nets
riskFactor: >-
Where does Nets operate? (i.e. which entity/entities have contracts
with the customer?)
riskFactorName: LEGALCOUNTRY
inputValue: Norway
riskAMLInputValue: 'NO'
riskRating: LOW
riskScore: '5'
riskAccepted: false
riskAcceptedOptionId: ''
riskAcceptedOptions:
- id: RF1-OPT-1
rating: ULTRA_HIGH
score: 30
name: 'EDD completed: Acceptable'
- id: RF1-OPT-2
rating: PROHIBITED
score: null
name: 'EDD completed: Not acceptable/prohibited'
- id: RF1-OPT-3
rating: ULTRA_HIGH
score: 30
name: 'EDD completed: Risk accepted by Compliance'
- riskElement: Nets
riskFactor: Which Nets licence is used with the customer?
riskFactorName: LICENCETYPE
inputValue: Norway
riskAMLInputValue: DOMESTIC_LICENCE
riskRating: LOW
riskScore: '5'
riskAccepted: false
riskAcceptedOptionId: null
- riskElement: Introduction risk
riskFactor: Customer introduction channel
riskFactorName: INTROTYPE
inputValue: Indirect 3rd Party
riskAMLInputValue: KNOWN_3RD_PARTY_PARTNER
riskRating: MEDIUM
riskScore: '10'
riskAccepted: false
riskAcceptedOptionId: null
- riskElement: Service
riskFactor: Customer's services with Nets?
riskFactorName: SERVICES
inputValue: Web
riskAMLInputValue: Acquiring++
riskRating: HIGH
riskScore: '15'
riskAccepted: false
riskAcceptedOptionId: null
- riskElement: Product Distribution
riskFactor: Customer's products with Nets?
riskFactorName: PRODUCT
inputValue: Web
riskAMLInputValue: ONLINE_POS
riskRating: HIGH
riskScore: '15'
riskAccepted: false
riskAcceptedOptionId: null
- riskElement: Customer
riskFactor: Customer's company type?
riskFactorName: COMPANYTYPE
inputValue: 500 - Limited company
riskAMLInputValue: '500'
riskRating: MEDIUM
riskScore: '10'
riskAccepted: false
riskAcceptedOptionId: ''
riskAcceptedOptions:
- id: RF6-OPT-1
rating: HIGH
score: 15
name: Onboarding - Clarified Company Type & Completed EDD
- id: RF6-OPT-2
rating: PROHIBITED
score: null
name: >-
Onboarding - could not clarify company type or remains
Unacceptable
- riskElement: Customer
riskFactor: Have the BO's been Verified
riskFactorName: COMPANYOFFICERS
inputValue: 'Yes'
riskAMLInputValue: 'true'
riskRating: LOW
riskScore: '5'
riskAccepted: false
riskAcceptedOptionId: ''
riskAcceptedOptions:
- id: RF7-OPT-1
rating: LOW
score: 5
name: BO Verified - by Onboarding
- id: RF7-OPT-2
rating: MEDIUM
score: 10
name: Exemption given - by Compliance (AML Risk Accepted)
- id: RF7-OPT-3
rating: PROHIBITED
score: null
name: Exemption NOT given - by Compliance (AML Risk NOT Accepted)
- riskElement: Customer
riskFactor: Sanction/PEP Screening
riskFactorName: COMPANYANDCOMPANYOFFICERS
inputValue: NO810059672
riskAMLInputValue: Manual actions in BVD required
riskRating: UNACCEPTABLE
riskScore: null
riskAccepted: false
riskAcceptedOptionId: ''
riskAcceptedOptions:
- id: RF8-OPT-1
rating: LOW
score: 5
name: False positive
- id: RF8-OPT-2
rating: MEDIUM
score: 10
name: Former PEP more than 12 months
- id: RF8-OPT-3
rating: HIGH
score: 30
name: True PEP - Low Influence
- id: RF8-OPT-4
rating: ULTRA_HIGH
score: 161
name: True PEP - Compliance Approved
- id: RF8-OPT-5
rating: ULTRA_HIGH
score: 161
name: True Enforcement - Compliance Approved
- id: RF8-OPT-6
rating: ULTRA_HIGH
score: 161
name: True Sanctions - Compliance Approved
- id: RF8-OPT-7
rating: ULTRA_HIGH
score: 161
name: Adverse Media - Compliance Approved
- id: RF8-OPT-8
rating: ULTRA_HIGH
score: 161
name: Former PEP within 12 months - Compliance Approved
- id: RF8-OPT-9
rating: ULTRA_HIGH
score: 161
name: Enhanced monitoring - Compliance Approved
- id: RF8-OPT-10
rating: PROHIBITED
score: null
name: Compliance rejected
- id: RF8-OPT-11
rating: PROHIBITED
score: null
name: Compliance rejected - Sanctions
- riskElement: Customer
riskFactor: Company's registration country?
riskFactorName: REGISTEREDCOUNTRY
inputValue: Norway
riskAMLInputValue: 'NO'
riskRating: LOW
riskScore: '5'
riskAccepted: false
riskAcceptedOptionId: ''
riskAcceptedOptions:
- id: RF9-OPT-1
rating: ULTRA_HIGH
score: 30
name: 'EDD completed: Acceptable'
- id: RF9-OPT-2
rating: PROHIBITED
score: null
name: 'EDD completed: Not acceptable/prohibited'
- id: RF9-OPT-3
rating: ULTRA_HIGH
score: 30
name: 'EDD completed: Risk accepted by Compliance'
- riskElement: Customer
riskFactor: Company's operation country?
riskFactorName: OPERATINGCOUNTRY
inputValue: Norway
riskAMLInputValue: 'NO'
riskRating: LOW
riskScore: '5'
riskAccepted: false
riskAcceptedOptionId: ''
riskAcceptedOptions:
- id: RF10-OPT-1
rating: ULTRA_HIGH
score: 30
name: 'EDD completed: Acceptable'
- id: RF10-OPT-2
rating: PROHIBITED
score: null
name: 'EDD completed: Not acceptable/prohibited'
- id: RF10-OPT-3
rating: ULTRA_HIGH
score: 30
name: 'EDD completed: Risk accepted by Compliance'
- riskElement: Customer
riskFactor: Country of BO/BOs?
riskFactorName: CUSTOMERBOCOUNTRY
inputValue: NOR
riskAMLInputValue: 'NO'
riskRating: LOW
riskScore: '5'
riskAccepted: false
riskAcceptedOptionId: ''
riskAcceptedOptions:
- id: RF11-OPT-1
rating: ULTRA_HIGH
score: 30
name: 'EDD completed: Acceptable'
- id: RF11-OPT-2
rating: PROHIBITED
score: null
name: 'EDD completed: Not acceptable/prohibited'
- id: RF11-OPT-3
rating: ULTRA_HIGH
score: 30
name: 'EDD completed: Risk accepted by Compliance'
- riskElement: Customer
riskFactor: Customer's offered services/products?
riskFactorName: INDUSTRYNACEMCC
inputValue: '6513'
riskAMLInputValue: '6513'
riskRating: HIGH
riskScore: '15'
riskAccepted: false
riskAcceptedOptionId: null
- riskElement: Customer
riskFactor: Customer's type of operation (type of sales)?
riskFactorName: ENDDELIVERYCHANNEL
inputValue: Web
riskAMLInputValue: eComm/Online Only
riskRating: HIGH
riskScore: '15'
riskAccepted: false
riskAcceptedOptionId: null
- riskElement: Transaction
riskFactor: Value (total merchant card turnover)
riskFactorName: VALUE
inputValue: '500001-750000,NOK'
riskAMLInputValue: '625000.5, NOK'
riskRating: LOW
riskScore: '5'
riskAccepted: false
riskAcceptedOptionId: null
- riskElement: Transaction
riskFactor: ATV (Average Transaction Value)
riskFactorName: ATV
inputValue: 500-1000
riskAMLInputValue: '750, NOK'
riskRating: MEDIUM
riskScore: '10'
riskAccepted: false
riskAcceptedOptionId: null
- riskElement: Transaction
riskFactor: Volume (Number & frequency of transactions)
riskFactorName: VOLUME
inputValue: MCC Code - 6513
riskAMLInputValue: LM
riskRating: LOW
riskScore: '5'
riskAccepted: false
riskAcceptedOptionId: null
- riskElement: Banking Method
riskFactor: Customer's settlement bank?
riskFactorName: SETTLEMENTBANK
inputValue: 'Danske Bank,Norway'
riskAMLInputValue: 'NO'
riskRating: LOW
riskScore: '5'
riskAccepted: false
riskAcceptedOptionId: ''
riskAcceptedOptions:
- id: RF17-OPT-3
rating: ULTRA_HIGH
score: 30
name: 'EDD completed: Acceptable'
- id: RF17-OPT-4
rating: PROHIBITED
score: null
name: 'EDD completed: Not acceptable/prohibited'
- id: RF17-OPT-5
rating: ULTRA_HIGH
score: 30
name: 'EDD completed: Risk accepted by Compliance'
outcome: STOP
score: '0'
endedOn: '2025-07-11 07:19:13'
original:
risks:
- riskElement: Nets
riskFactor: >-
Where does Nets operate? (i.e. which entity/entities have contracts
with the customer?)
riskFactorName: LEGALCOUNTRY
inputValue: Norway
riskAMLInputValue: 'NO'
riskRating: LOW
riskScore: '5'
riskAccepted: false
riskAcceptedOptionId: null
riskAcceptedOptions:
- id: RF1-OPT-1
rating: ULTRA_HIGH
score: 30
name: 'EDD completed: Acceptable'
- id: RF1-OPT-2
rating: PROHIBITED
score: null
name: 'EDD completed: Not acceptable/prohibited'
- id: RF1-OPT-3
rating: ULTRA_HIGH
score: 30
name: 'EDD completed: Risk accepted by Compliance'
- riskElement: Nets
riskFactor: Which Nets licence is used with the customer?
riskFactorName: LICENCETYPE
inputValue: Norway
riskAMLInputValue: DOMESTIC_LICENCE
riskRating: LOW
riskScore: '5'
riskAccepted: false
riskAcceptedOptionId: null
- riskElement: Introduction risk
riskFactor: Customer introduction channel
riskFactorName: INTROTYPE
inputValue: Indirect 3rd Party
riskAMLInputValue: KNOWN_3RD_PARTY_PARTNER
riskRating: MEDIUM
riskScore: '10'
riskAccepted: false
riskAcceptedOptionId: null
- riskElement: Service
riskFactor: Customer's services with Nets?
riskFactorName: SERVICES
inputValue: Web
riskAMLInputValue: Acquiring++
riskRating: HIGH
riskScore: '15'
riskAccepted: false
riskAcceptedOptionId: null
- riskElement: Product Distribution
riskFactor: Customer's products with Nets?
riskFactorName: PRODUCT
inputValue: Web
riskAMLInputValue: ONLINE_POS
riskRating: HIGH
riskScore: '15'
riskAccepted: false
riskAcceptedOptionId: null
- riskElement: Customer
riskFactor: Customer's company type?
riskFactorName: COMPANYTYPE
inputValue: 500 - Limited company
riskAMLInputValue: '500'
riskRating: MEDIUM
riskScore: '10'
riskAccepted: false
riskAcceptedOptionId: null
riskAcceptedOptions:
- id: RF6-OPT-1
rating: HIGH
score: 15
name: Onboarding - Clarified Company Type & Completed EDD
- id: RF6-OPT-2
rating: PROHIBITED
score: null
name: >-
Onboarding - could not clarify company type or remains
Unacceptable
- riskElement: Customer
riskFactor: Have the BO's been Verified
riskFactorName: COMPANYOFFICERS
inputValue: 'Yes'
riskAMLInputValue: 'true'
riskRating: LOW
riskScore: '5'
riskAccepted: false
riskAcceptedOptionId: null
riskAcceptedOptions:
- id: RF7-OPT-1
rating: LOW
score: 5
name: BO Verified - by Onboarding
- id: RF7-OPT-2
rating: MEDIUM
score: 10
name: Exemption given - by Compliance (AML Risk Accepted)
- id: RF7-OPT-3
rating: PROHIBITED
score: null
name: Exemption NOT given - by Compliance (AML Risk NOT Accepted)
- riskElement: Customer
riskFactor: Sanction/PEP Screening
riskFactorName: COMPANYANDCOMPANYOFFICERS
inputValue: NO810059672
riskAMLInputValue: Manual actions in BVD required
riskRating: UNACCEPTABLE
riskScore: null
riskAccepted: false
riskAcceptedOptionId: null
riskAcceptedOptions:
- id: RF8-OPT-1
rating: LOW
score: 5
name: False positive
- id: RF8-OPT-2
rating: MEDIUM
score: 10
name: Former PEP more than 12 months
- id: RF8-OPT-3
rating: HIGH
score: 30
name: True PEP - Low Influence
- id: RF8-OPT-4
rating: ULTRA_HIGH
score: 161
name: True PEP - Compliance Approved
- id: RF8-OPT-5
rating: ULTRA_HIGH
score: 161
name: True Enforcement - Compliance Approved
- id: RF8-OPT-6
rating: ULTRA_HIGH
score: 161
name: True Sanctions - Compliance Approved
- id: RF8-OPT-7
rating: ULTRA_HIGH
score: 161
name: Adverse Media - Compliance Approved
- id: RF8-OPT-8
rating: ULTRA_HIGH
score: 161
name: Former PEP within 12 months - Compliance Approved
- id: RF8-OPT-9
rating: ULTRA_HIGH
score: 161
name: Enhanced monitoring - Compliance Approved
- id: RF8-OPT-10
rating: PROHIBITED
score: null
name: Compliance rejected
- id: RF8-OPT-11
rating: PROHIBITED
score: null
name: Compliance rejected - Sanctions
- riskElement: Customer
riskFactor: Company's registration country?
riskFactorName: REGISTEREDCOUNTRY
inputValue: Norway
riskAMLInputValue: 'NO'
riskRating: LOW
riskScore: '5'
riskAccepted: false
riskAcceptedOptionId: null
riskAcceptedOptions:
- id: RF9-OPT-1
rating: ULTRA_HIGH
score: 30
name: 'EDD completed: Acceptable'
- id: RF9-OPT-2
rating: PROHIBITED
score: null
name: 'EDD completed: Not acceptable/prohibited'
- id: RF9-OPT-3
rating: ULTRA_HIGH
score: 30
name: 'EDD completed: Risk accepted by Compliance'
- riskElement: Customer
riskFactor: Company's operation country?
riskFactorName: OPERATINGCOUNTRY
inputValue: Norway
riskAMLInputValue: 'NO'
riskRating: LOW
riskScore: '5'
riskAccepted: false
riskAcceptedOptionId: null
riskAcceptedOptions:
- id: RF10-OPT-1
rating: ULTRA_HIGH
score: 30
name: 'EDD completed: Acceptable'
- id: RF10-OPT-2
rating: PROHIBITED
score: null
name: 'EDD completed: Not acceptable/prohibited'
- id: RF10-OPT-3
rating: ULTRA_HIGH
score: 30
name: 'EDD completed: Risk accepted by Compliance'
- riskElement: Customer
riskFactor: Country of BO/BOs?
riskFactorName: CUSTOMERBOCOUNTRY
inputValue: NOR
riskAMLInputValue: 'NO'
riskRating: LOW
riskScore: '5'
riskAccepted: false
riskAcceptedOptionId: null
riskAcceptedOptions:
- id: RF11-OPT-1
rating: ULTRA_HIGH
score: 30
name: 'EDD completed: Acceptable'
- id: RF11-OPT-2
rating: PROHIBITED
score: null
name: 'EDD completed: Not acceptable/prohibited'
- id: RF11-OPT-3
rating: ULTRA_HIGH
score: 30
name: 'EDD completed: Risk accepted by Compliance'
- riskElement: Customer
riskFactor: Customer's offered services/products?
riskFactorName: INDUSTRYNACEMCC
inputValue: '6513'
riskAMLInputValue: '6513'
riskRating: HIGH
riskScore: '15'
riskAccepted: false
riskAcceptedOptionId: null
- riskElement: Customer
riskFactor: Customer's type of operation (type of sales)?
riskFactorName: ENDDELIVERYCHANNEL
inputValue: Web
riskAMLInputValue: eComm/Online Only
riskRating: HIGH
riskScore: '15'
riskAccepted: false
riskAcceptedOptionId: null
- riskElement: Transaction
riskFactor: Value (total merchant card turnover)
riskFactorName: VALUE
inputValue: '500001-750000,NOK'
riskAMLInputValue: '625000.5, NOK'
riskRating: LOW
riskScore: '5'
riskAccepted: false
riskAcceptedOptionId: null
- riskElement: Transaction
riskFactor: ATV (Average Transaction Value)
riskFactorName: ATV
inputValue: 500-1000
riskAMLInputValue: '750, NOK'
riskRating: MEDIUM
riskScore: '10'
riskAccepted: false
riskAcceptedOptionId: null
- riskElement: Transaction
riskFactor: Volume (Number & frequency of transactions)
riskFactorName: VOLUME
inputValue: MCC Code - 6513
riskAMLInputValue: LM
riskRating: LOW
riskScore: '5'
riskAccepted: false
riskAcceptedOptionId: null
- riskElement: Banking Method
riskFactor: Customer's settlement bank?
riskFactorName: SETTLEMENTBANK
inputValue: 'Danske Bank,Norway'
riskAMLInputValue: 'NO'
riskRating: LOW
riskScore: '5'
riskAccepted: false
riskAcceptedOptionId: null
riskAcceptedOptions:
- id: RF17-OPT-3
rating: ULTRA_HIGH
score: 30
name: 'EDD completed: Acceptable'
- id: RF17-OPT-4
rating: PROHIBITED
score: null
name: 'EDD completed: Not acceptable/prohibited'
- id: RF17-OPT-5
rating: ULTRA_HIGH
score: 30
name: 'EDD completed: Risk accepted by Compliance'
outcome: STOP
score: '0'
startedOn: '2025-07-11 07:17:55'
endedOn: '2025-07-11 07:19:13'
errorCode: null
errorDescription: null
recalcRequested: null
gcmInformation:
governmentControlled: false
governmentCountries: ''
updatedOn: '2025-07-11 07:20:02'
externalVmssCheck:
vmss:
checkStartDate: '2025-07-22T11:37:18.975Z'
requestId: 41fa603a-008c-46ac-801b-b4236f23551120250722133716957
recalcRequested: false
operatorIntervention: false
riskLevel: green
hitList: []
errorCode: null
errorDescription: null
updatedOn: '2025-07-22 13:37:27'
taskId: 81147ac9-db58-4727-9601-e661fde236fe
match:
checkStartDate: '2025-07-11T05:20:07.089Z'
requestId: 41fa603a-008c-46ac-801b-b4236f23551120250711072006989
recalcRequested: false
operatorIntervention: false
riskLevel: amber
hitList:
- hitCode: '04'
addedOnDate: '2024-02-09'
owners:
- ownerName:
value: WEFWE WEFWEF
matchLevel: 'N'
ownerAddress:
value: 'WEFWEF,WEFWE,GBR'
matchLevel: 'N'
merchantName:
value: TEST
matchLevel: E
merchantAddress:
value: 'FWEF,WEFW,GBR'
matchLevel: 'N'
webAddresses: null
- hitCode: '05'
addedOnDate: '2026-06-08'
owners:
- ownerName:
value: WFEWE WEFWEF
matchLevel: 'N'
ownerAddress:
value: 'QEQWE,QEWQW,GBR'
matchLevel: 'N'
merchantName:
value: TEST
matchLevel: E
merchantAddress:
value: '23423,FERGR,GBR'
matchLevel: 'N'
webAddresses: null
- hitCode: '13'
addedOnDate: '2024-03-03'
owners:
- ownerName:
value: TEST TEST
matchLevel: 'N'
ownerAddress:
value: 'TEST,TEST,USA'
matchLevel: 'N'
merchantName:
value: TEST
matchLevel: E
merchantAddress:
value: 'TEST,TEST,USA'
matchLevel: 'N'
webAddresses:
- value:
- WWW.TESTMERCHANT.COM
matchLevel: 'N'
- hitCode: '04'
addedOnDate: '2020-06-11'
owners:
- ownerName:
value: 1234123 AAA
matchLevel: 'N'
ownerAddress:
value: 'CHANGCHUN,JILIN,CHN'
matchLevel: 'N'
merchantName:
value: TEST
matchLevel: E
merchantAddress:
value: 'TEST,CHONG MING XIAN,CHN'
matchLevel: 'N'
webAddresses: null
- hitCode: '13'
addedOnDate: '2024-10-05'
owners:
- ownerName:
value: DAVID SMITH
matchLevel: 'N'
ownerAddress:
value: 'DALLAS,USA'
matchLevel: 'N'
merchantName:
value: TEST
matchLevel: E
merchantAddress:
value: '42 ELM AVENUE,DALLAS,USA'
matchLevel: 'N'
webAddresses: null
- hitCode: '03'
addedOnDate: '2025-10-04'
owners:
- ownerName:
value: ANTHONY EMERY
matchLevel: 'N'
ownerAddress:
value: 'H HABERSAATHSTRASSE,GLASGOW,GBR'
matchLevel: 'N'
merchantName:
value: TEST
matchLevel: E
merchantAddress:
value: 'JJJJ, LABURNUM DRIVE,ABERMEE,GBR'
matchLevel: 'N'
webAddresses: null
- hitCode: '03'
addedOnDate: '2024-04-03'
owners:
- ownerName:
value: ANTHONY EMERY
matchLevel: 'N'
ownerAddress:
value: 'H HABERSAATHSTRASSE,GLASGOW,GBR'
matchLevel: 'N'
merchantName:
value: TEST
matchLevel: E
merchantAddress:
value: 'CLAYTON STREETHJ, LABURNUM DRIVE,ABERMEE,GBR'
matchLevel: 'N'
webAddresses: null
- hitCode: '03'
addedOnDate: '2024-10-11'
owners:
- ownerName:
value: ANTHONY EMERY
matchLevel: 'N'
ownerAddress:
value: '144-146 DALSETTER AVENUE,GLASGOW,GBR'
matchLevel: 'N'
merchantName:
value: TEST
matchLevel: E
merchantAddress:
value: 'THE THOMAS BUILDING, 50, MORFA ROAD,SWANSEA,GBR'
matchLevel: 'N'
webAddresses: null
- hitCode: '03'
addedOnDate: '2024-03-09'
owners:
- ownerName:
value: ANTHONY EMERY
matchLevel: 'N'
ownerAddress:
value: '144-146 DALSETTER AVENUE,GLASGOW,GBR'
matchLevel: 'N'
merchantName:
value: TEST
matchLevel: E
merchantAddress:
value: '1, RAVENWOOD,SWADLINCOTE,GBR'
matchLevel: 'N'
webAddresses: null
- hitCode: '14'
addedOnDate: '2026-04-11'
owners:
- ownerName:
value: '***** *****'
matchLevel: 'N'
ownerAddress:
value: '4/F FONTAINE BLDG NO.18 MODY ROAD,TSIMSHATSUI,USA'
matchLevel: 'N'
merchantName:
value: EVIL CORP 2
matchLevel: E
merchantAddress:
value: '4/F FONTAINE BUILDING NO.18 MODY ROAD,TSIMSHATSUI,USA'
matchLevel: 'N'
webAddresses:
- value:
- WWW.EVIL-CORP.COM
matchLevel: 'N'
errorCode: VM002
errorDescription: 'MATCH : Merchant Match'
updatedOn: '2025-07-11 07:20:09'
taskId: 2f06a6c4-5752-45c3-aa6d-a2e2e3d83757
escalation: SMECreditRiskManagement
bankAccounts:
accounts:
- bankName: Danske Bank
isBankNameManual: false
swift: ESSENOKX
bankType: Traditional
iban: NO9386011117947
isManuallyAltered: false
currencyCode: NOK
mainAccountIdx: 0
attachments:
- docId: BA3A3260A61B1FE0968543DE6EC284E0
source: EASY-SIGNUP
status: ''
category: DT39
uploadDate: '2025-07-03 16:23:58'
comments: ''
filename: signup_contract_20250703_162357.pdf
- filename: signup_contract_20250711_050953.pdf
docId: BA3A3260A61B1FE097C2A9023A0BC4E0
category: DT39
comments: ''
source: EASY-SIGNUP
uploadDate: '2025-07-11 05:09:54'
status: ''
- status: ''
comments: ''
docId: BA3A3260A61B1FE097C2AB15821F44E0
filename: ContentServerCopy.postman_collection 1.json
uploadDate: '2025-07-11 05:10:22'
source: MERCHANT
category: DT20
- source: MERCHANT
docId: BA3A3260A61B1FE097C2C20826A0C4E0
category: DT5
comments: ''
status: ''
uploadDate: '2025-07-11 07:15:31'
filename: Content Server Copy.postman_collection 1.json
authorizedSignatories:
- confirmedByIdRights: false
createdManually: false
lastName: demoo
confirmedByCaseHandler: true
signeePosition: employee
firstName: test
CaseCreateRequest:
type: object
properties:
caseType:
format: string
description: Reference to a case type id (uuid) or case type alias. Case type id allows to pinpoint a specific case type version. Alias allows to modify case types transparently to api users.
initData:
description: Initial data to store in the case. The data needs to be inline with case type schema (alternatively a Case Data Processor that transforms input data can be employed).
example:
caseType: helloworld
initData:
name: Adam
CaseCreateResult:
type: object
properties:
caseId:
type: string
format: uuid
CaseSearchRequest:
type: object
properties:
searchField:
type: string
searchValue:
type: string
caseStates:
type: array
items:
$ref: "#/components/schemas/CaseState"
resultFields:
type: object
example:
searchField: organizationNumber
searchValue: '16832634'
resultFields:
caseSeqId: caseSeqId
orgId: $company.organizationNumber
merchantId: $merchant.number
CaseSearchResult:
type: array
items:
$ref: "#/components/schemas/CaseCustomInfo"
example:
- caseId: 71d64404-6857-47fb-9de0-245c09ff45f8
fields:
merchantId: '100218860'
caseSeqId: '199'
orgId: '16832634'
- caseId: 752f2dfa-3cdc-4991-b2ba-0eb4aad9e2fb
fields:
merchantId: '100218860'
caseSeqId: '198'
orgId: '16832634'
CaseCustomInfo:
type: object
properties:
caseId:
type: string
format: uuid
fields:
type: object
ActionResultRequest:
type: object
properties:
execId:
type: string
format: uuid
status:
type: string
enum:
- COMPLETED
- IN_PROGRESS
- ERROR
endValue:
type: string
required:
- execId
- status
CaseState:
type: string
enum:
- pending
- inprogress
- approved
- rejected
- closed
Flow:
type: object
description: Defines the flow to be executed when a new case of this type is created
properties:
name:
type: string
desc:
type: string
startStep:
type: string
steps:
type: object
additionalProperties:
$ref: '#/components/schemas/FlowStep'
FlowStep:
type: object
properties:
fork:
type: boolean
description: Should the step start a parallel execution of all outgoing paths
join:
type: boolean
description: Should the step wait for all incoming paths
action:
type: string
description: Reference to ActionExecutor implementation to be invoked as part of this step.
saveResAs:
type: string
description: Name of the variable that should keep the action execution result. The variable can be later referenced in other places as $var)
params:
type: object
additionalProperties:
type: string
nextStep:
type: string
description: Points to next steps to be executed. Alternatively nextSteps can be used.
nextSteps:
type: array
items:
$ref: '#/components/schemas/FlowNextStep'
description: Defines possible next steps that are evaluated based on the action result. If there's only 1 path use nextStep instead.
FlowNextStep:
type: object
properties:
nextStep:
type: string
eval:
type: string
wait:
type: string
Schema:
type: object
description: Defines the syntax of case data to be stored and validated against
properties:
id:
type: string
description:
type: string
properties:
type: object
additionalProperties:
$ref: '#/components/schemas/Property'
definitions:
type: object
additionalProperties:
$ref: '#/components/schemas/Property'
Property:
type: object
properties:
description:
description: "A base type (string/boolean/decimal/integer/object) or a reference to definition (e.g. #mydef)"
type: string
enum:
- string
- boolean
- decimal
- integer
- object
type:
type: string
required:
type: boolean
array:
type: boolean
properties:
type: object
description: Map of String->Property type. Wasn't mapped to /components/schemas/Property because of Openapi 3 problem
ErrorMsg:
type: object
properties:
status:
type: integer
message:
type: string
timestamp:
type: string
format: date-time
---
name: Collecting Accounting
id: collecting-accounting
version: 1.0.0
summary: Core accounting service managing financial transactions, merchant accounts, and platform configurations using double-entry bookkeeping principles
badges:
- content: Java
backgroundColor: blue
textColor: white
- content: Collecting
backgroundColor: green
textColor: white
owners:
- easy-collecting
sends:
- id: AccountCreatedEvent
- id: AccountDefinitionAddedEvent
- id: LedgerIdUpdatedEvent
- id: AmountReservedEvent
- id: ReservationReleasedEvent
- id: TransactionPostedEvent
- id: PlatformCreatedEvent
- id: UpdateEligiblePendingRefundsArmedEvent
- id: RemovePendingRefundEvent
- id: ScheduleAuthorizeForEligibleRefundsEvent
- id: BalanceUpdatedEvent
receives:
- id: merchant.created.event.v1
version: 1.x.x
- id: merchant.account.created.event.v1
version: 1.x.x
- id: merchant.account.created.event.v2
version: 2.x.x
- id: merchant.account.created.event.v3
version: 3.x.x
- id: merchant.approved.event.v1
version: 1.x.x
- id: merchant.approved.event.v2
version: 2.x.x
- id: merchant.approved.event.v3
version: 3.x.x
- id: merchantAccountPaymentMethod.DankortTofId.created.event.v2
version: 1.x.x
- id: payment.charge.created.event.v1
version: 1.x.x
- id: payment.charge.created.event.v2
version: 2.x.x
- id: payment.charge.feeAdded.event.v1
version: 1.x.x
- id: transactionFee.calculated.event.v1
version: 1.x.x
- id: CreateAccountCommand
- id: AddAccountDefinitionCommand
- id: UpdateLedgerIdCommand
- id: ReservationCommand
- id: ReleaseReservationCommand
- id: PostTransactionCommand
- id: PostTransactionViaCommand
- id: BalanceNotificationArmCommand
- id: UpdateEligiblePendingRefundsArmCommand
- id: RemovePendingRefundCommand
- id: PlatformCreateCommand
entities:
- id: platform-entity
- id: merchant-account-entity
- id: chart-of-accounts-entity
- id: bookkeeping-config-entity
- id: posting-rule-entity
- id: transaction-definition-entity
- id: account-definition-entity
---
The Accounting Service serves as the backbone for managing the organization's financial transactions, ensuring precision, transparency, and compliance with financial best practices. It is built on a robust accounting engine capable of double-entry bookkeeping, a method that provides accurate and reliable tracking of all assets and liabilities. This capability enables the organization to maintain a clear and comprehensive view of its financial health, fostering informed decision-making.
**Merchant Account Aggregates:**
The service creates and manages aggregates for each merchant account, handling multiple balance accounts such as:
- MerchantDebt
- ClientFunds
- PSPReceivable
- Escrow
- Caps
- Revenue
**Transaction Management:**
For every payment action, fee, or remittance, the service records transactions using specific transaction types:
- CHARGE
- FEE_ADDED
- REFUND
- CHARGEBACK
- TOPUP
- RESERVE_REMITTANCE
- RESERVE_CANCEL
- REMIT_RESERVED
- REMITTANCE
- REVERSE_REMITTANCE
- CAPS_REMITTANCE
- REVERSE_CAPS_REMITTANCE
- ADJUSTMENT_DEBIT
- ADJUSTMENT_CREDIT
- SCHEME_FEE
**Refund Management:**
During a successful authorization for a refund, the service reserves the corresponding amount.
The reservation is held until the refund is confirmed, after which it is released.
By managing these complex operations with a high degree of accuracy, the Accounting Service provides the tools necessary for businesses to monitor and control their financial operations while maintaining compliance with industry standards.
## Entity Relationships
This section shows the relationships between all entities in the AccountingAndTreasury domain.
### Entity Overview
The AccountingAndTreasury domain contains 7 key entities organized into two categories:
### Core Entities
- **MerchantAccount** - Individual account records with IBAN, BIC, and currency details
- **Platform** - Payment platform configurations with account holder associations
### Configuration Entities
- **ChartOfAccounts** - High-level account structure definitions
- **AccountDefinition** - Individual account types within charts (e.g., MerchantDebt, PSPReceivable)
- **BookKeepingConfig** - Configuration linking charts to transaction processing rules
- **TransactionDefinition** - Specific transaction types (CHARGE, REFUND, etc.)
- **PostingRule** - Double-entry bookkeeping rules linking transactions to accounts
### Database Foreign Key Relationships
The entities are connected through the following database relationships:
```mermaid
erDiagram
CHART_OF_ACCOUNTS ||--o{ ACCOUNT_DEFINITION : contains
CHART_OF_ACCOUNTS ||--o{ BOOKKEEPING_CONFIG : references
BOOKKEEPING_CONFIG ||--o{ TRANSACTION_DEFINITION : contains
TRANSACTION_DEFINITION ||--o{ POSTING_RULE : defines
ACCOUNT_DEFINITION ||--o{ POSTING_RULE : defines
CHART_OF_ACCOUNTS {
int id PK
string name
string description
}
ACCOUNT_DEFINITION {
long id PK
string name
int type
int chart_of_accounts_fk FK
}
BOOKKEEPING_CONFIG {
int id PK
string name
int chart_of_accounts_fk FK
}
TRANSACTION_DEFINITION {
int id PK
string name
int bookkeeping_config_fk FK
}
POSTING_RULE {
int id PK
string sign
int account_definition_fk FK
int transaction_definition_fk FK
}
PLATFORM {
string platform_id PK
string platform_name
int version
string account_holder_id
}
MERCHANT_ACCOUNT {
uuid id PK
uuid owner_id
string currency
decimal delay
string country
string iban
string bic
}
```
### Key Relationships Summary
- **AccountDefinition** → belongs to **ChartOfAccounts** (via CHART_OF_ACCOUNTS_FK)
- **BookKeepingConfig** → references **ChartOfAccounts** (via CHART_OF_ACCOUNTS_FK)
- **TransactionDefinition** → belongs to **BookKeepingConfig** (via BOOKKEEPING_CONFIG_FK)
- **PostingRule** → references **AccountDefinition** (via ACCOUNT_DEFINITION_FK)
- **PostingRule** → references **TransactionDefinition** (via TRANSACTION_DEFINITION_FK)
- **Platform** → associated with account holders (via account_holder_id)
---
name: Collecting Balance
id: collecting-balance
version: 1.0.0
summary: No summary
badges:
- content: Java
backgroundColor: blue
textColor: white
- content: Collecting
backgroundColor: green
textColor: white
owners:
- easy-collecting
receives:
- id: TransactionPostedEvent
- id: GetEligibleTransactions
sends:
- version: 1.x.x
id: accountDeposit.created.event.v1
- version: 1.x.x
id: merchantAccountTopup.created.event.v1
- version: 1.x.x
id: merchantBalance.updated.event.v1
- version: 1.x.x
id: merchantLedger.transactionPosted.event.v1
---
The Balance Service is responsible for managing and maintaining the daily balances and transaction data.
It plays a critical role in tracking and reconciling financial activities to ensure accuracy and reliability in the system's overall financial management.
**Manages balances for multiple account types, including:**
- MerchantDebt
- ClientFunds
- PSPReceivable
- Escrow
- Caps
- Revenue
- Diff
- Cost
---
name: Collecting Refund Authorization
id: collecting-refundauth
version: 1.0.0
summary: No summary
badges:
- content: Java
backgroundColor: blue
textColor: white
- content: Collecting
backgroundColor: green
textColor: white
owners:
- easy-collecting
sends:
- version: 1.x.x
id: refundAuthorization.accepted.event.v1
- version: 1.x.x
id: refundAuthorization.canceled.event.v1
- version: 1.x.x
id: refundAuthorization.confirmed.event.v1
- version: 1.x.x
id: refundAuthorization.expired.event.v1
- version: 1.x.x
id: refundAuthorization.pending.event.v1
- id: ReservationCommand
receives:
- version: 1.x.x
id: payment.refund.initiated.event.v1
- version: 2.x.x
id: payment.refund.initiated.event.v2
- version: 1.x.x
id: payment.refund.feeAdded.event.v1
- version: 1.x.x
id: transactionFee.calculated.event.v1
- version: 1.x.x
id: refundAuthorization.create.request.v1
- version: 1.x.x
id: refundAuthorization.cancel.request.v1
- version: 1.x.x
id: refundAuthorization.confirm.request.v1
---
The RefundAuthorisation Service is responsible for orchestrating the refund authorization process.
It ensures that refunds are handled efficiently and that all necessary conditions are met before finalizing any refund action.
**Initial Workflow:**
- The service listens for Refund and Refund Fee events.
- It interacts with the Accounting Service to attempt creating a reservation.
**Event Handling:**
- If the reservation is successfully created (balance is sufficient), it produces an Authorised event.
- If the reservation cannot be created (insufficient balance), it produces a Pending event.
**Pending State Handling:**
- Refunds in the Pending state have a maximum lifespan of 120 days.
- If no further action occurs within this period, the service produces an Expired event.
**Cancel Requests:**
- While in the Pending state, the service listens for Cancel requests.
- Upon receiving such a request, it produces a Cancelled event.
**Authorisation Confirmation:**
- After authorisation, the service waits for a Confirmation Request.
- Upon receiving confirmation, it produces a Confirmed event.
This service plays a critical role in ensuring that refund transactions are processed securely and transparently while accommodating various scenarios like insufficient balance, cancellation, or expiry.
---
name: Collecting Settlement
id: collecting-settlement
version: 1.0.0
summary: No summary
badges:
- content: Java
backgroundColor: blue
textColor: white
- content: Collecting
backgroundColor: green
textColor: white
owners:
- easy-collecting
sends:
- id: GetEligibleTransactions
- version: 2.x.x
id: settlement.created.event.v2
- version: 1.x.x
id: settlement.transactions.added.event.v1
- version: 2.x.x
id: settlement.confirmed.event.v2
- version: 1.x.x
id: settlement.cancelled.event.v1
- version: 1.x.x
id: settlementConfiguration.assigned.event.v1
---
The Settlement Service is a critical component responsible for managing the settlement process for APM transactions and all fees. It ensures that eligible transactions are correctly ordered and processed based on the remittance delays defined by the Payment Method Provider.
**Transaction Ordering:**
- Identifies APM transactions and APM/Card fees eligible for settlement based on the remittance delay.
- Groups eligible transactions by currency, creating one order file per currency.
**File Generation and Upload:**
- Generates XML files containing the ordered transactions for all merchants.
- Uploads the order files to the designated SFTP server for further processing by CAPS.
**Remittance Report Processing:**
- Handles RemittanceReports received from CAPS via SFTP.
- Processes these reports through a dedicated batch job, ensuring accurate reconciliation of remittances.
---
name: Common Pricing Service
id: cps
version: 1.0.0
summary: Single source of truth for price lists used by Signup and Techopt
owners:
- easy-optin
sends: []
receives:
- version: 1.x.x
id: priceList.updated.event.v1
---
## Overview
CPS (Common Pricing Service) is the single source of truth for price lists used by Signup and Techopt.
CPS listenes on priceList.updated.event.v1 events and makes the information about price lists available to signup and techopt via REST endpoints.
It's also used for setting default price lists for countries and managing campaign codes.
CPS is part of Signup 2.0 and replaces Signup's old Pricing Service.
## Node Graph
---
name: CRM
id: crm
version: 1.0.0
summary: Main CRM used in ECOM (SAP)
owners:
- easy-sap
sends: []
receives:
- version: 1.x.x
id: accountDeposit.created.event.v1
- version: 1.x.x
id: merchant.account.created.event.v1
- version: 2.x.x
id: merchant.account.created.event.v2
- version: 3.x.x
id: merchant.account.created.event.v3
- version: 1.x.x
id: merchant.account.deactivated.event.v1
- version: 1.x.x
id: merchant.account.reactivated.event.v1
- version: 1.x.x
id: merchant.account.settlementConfiguration.updated.event.v1
- version: 1.x.x
id: merchant.apiKeys.created.event.v1
- version: 1.x.x
id: merchant.approved.event.v1
- version: 2.x.x
id: merchant.approved.event.v2
- version: 1.x.x
id: merchant.approved.event.v3
- version: 1.x.x
id: merchant.billingDetails.updated.event.v1
- version: 1.x.x
id: merchant.contactPerson.updated.event.v1
- version: 1.x.x
id: merchant.created.event.v1
- version: 1.x.x
id: merchant.updated.event.v1
- version: 1.x.x
id: merchantAccountPaymentMethod.arvato.changed.event.v1
- version: 1.x.x
id: merchantAccountPaymentMethod.arvato.created.event.v1
- version: 1.x.x
id: merchantAccountPaymentMethod.arvato.created.event.v2
- version: 1.x.x
id: merchantAccountPaymentMethod.baxId.created.event.v1
- version: 1.x.x
id: merchantAccountPaymentMethod.card.changed.event.v1
- version: 1.x.x
id: merchantAccountPaymentMethod.created.event.v1
- version: 1.x.x
id: merchantAccountPaymentMethod.dankort.configured.event.v1
- version: 1.x.x
id: merchantAccountPaymentMethod.DankortTofId.created.event.v1
- version: 1.x.x
id: merchantAccountPaymentMethod.DankortTofId.created.event.v2
- version: 1.x.x
id: merchantAccountPaymentMethod.disabled.event.v1
- version: 1.x.x
id: merchantAccountPaymentMethod.enabled.event.v1
- version: 1.x.x
id: merchantAccountPaymentMethod.internal.event.v1
- version: 1.x.x
id: merchantAccountPaymentMethod.steps.created.event.v1
- version: 1.x.x
id: merchantApplication.approved.event.v1
- version: 2.x.x
id: merchantApplication.approved.event.v2
- version: 1.x.x
id: merchantApplication.created.event.v1
- version: 2.x.x
id: merchantApplication.created.event.v2
- version: 1.x.x
id: merchantApplication.rejected.event.v1
- version: 2.x.x
id: merchantApplication.rejected.event.v2
- version: 1.x.x
id: merchantApplication.riskscored.event.v1
- version: 2.x.x
id: merchantApplication.riskscored.event.v2
- version: 3.x.x
id: merchantApplication.riskscored.event.v3
- version: 1.x.x
id: partner.allowedPriceLists.updated.event.v1
- version: 1.x.x
id: partner.apiKeys.live.created.event.v1
- version: 1.x.x
id: partner.apiKeys.test.created.event.v1
- version: 1.x.x
id: partner.company.updated.event.v1
- version: 1.x.x
id: partner.contactPerson.updated.event.v1
- version: 1.x.x
id: partner.created.event.v1
- version: 1.x.x
id: partner.crmPartnerId.updated.event.v1
- version: 1.x.x
id: partner.defaultPermissions.updated.event.v1
- version: 1.x.x
id: partner.merchantAccountPermissions.live.updated.event.v1
- version: 1.x.x
id: partner.merchantAccountPermissions.test.updated.event.v1
- version: 1.x.x
id: user.addedToMerchant.event.v1
- version: 1.x.x
id: user.addedToPartner.event.v1
- version: 1.x.x
id: user.created.event.v1
- version: 1.x.x
id: user.removedFromMerchant.event.v1
---
## Overview
CRM (SAP) is the main customer managment system used in ECOM.
Onboarding domain interacts with CRM's API as follows:
- retrieving list of all documents related to a given merchant
- downloading content of specifc document
- uploading new documents provided by merchant during the onboarding process
- updating merchant documents status (approved/rejected etc)
- providing comments to merchant documents
Additionally Onboarding domain sends 4 types of events to CRM:
- Merchant Application Created
- Merchant Application Risk Scored
- Merchant Application Approved
- Merchant Application Rejected
See dedicated event pages for details.
CRM is not the responsibility of Onboarding domain (Optin team). CRM is managed by a dedicated team.
## Node Graph
---
name: EMO
id: emo
version: 1.0.0
summary: Easy Merchant Onboarding (deprecated)
badges:
- content: Java
backgroundColor: blue
textColor: white
owners:
- easy-optin
sends:
- version: 1.x.x
id: merchantApplication.approved.event.v1
- version: 2.x.x
id: merchantApplication.approved.event.v2
- version: 1.x.x
id: merchantApplication.created.event.v1
- version: 1.x.x
id: merchantApplication.rejected.event.v1
receives: []
---
## Overview
EMO is a workflow system handling due dilligence in merchant onboarding flow. EMO runs on Oracle Fusion Platform. In 2025 it was replaced by CMP (Case Managment Platform) which is functionally 1-1 equivalent.
## Node graph
---
name: EventArchive
id: eventarchive
version: 1.0.0
summary: No summary
badges:
- content: Java
backgroundColor: blue
textColor: white
owners:
- easy-optin
sends: []
receives:
- version: 1.x.x
id: accountDeposit.created.event.v1
- version: 1.x.x
id: merchant.account.created.event.v1
- version: 2.x.x
id: merchant.account.created.event.v2
- version: 3.x.x
id: merchant.account.created.event.v3
- version: 1.x.x
id: merchant.account.deactivated.event.v1
- version: 1.x.x
id: merchant.account.reactivated.event.v1
- version: 1.x.x
id: merchant.apiKeys.created.event.v1
- version: 1.x.x
id: merchant.approved.event.v1
- version: 2.x.x
id: merchant.approved.event.v2
- version: 1.x.x
id: merchant.billingDetails.updated.event.v1
- version: 1.x.x
id: merchant.contactPerson.updated.event.v1
- version: 1.x.x
id: merchant.created.event.v1
- version: 1.x.x
id: merchant.updated.event.v1
- version: 1.x.x
id: merchant.surcharge.enabled.event.v1
- version: 1.x.x
id: merchant.surcharge.disabled.event.v1
- version: 1.x.x
id: merchantAccountPaymentMethod.arvato.changed.event.v1
- version: 1.x.x
id: merchantAccountPaymentMethod.arvato.created.event.v1
- version: 1.x.x
id: merchantAccountPaymentMethod.arvato.created.event.v2
- version: 1.x.x
id: merchantAccountPaymentMethod.baxId.created.event.v1
- version: 1.x.x
id: merchantAccountPaymentMethod.card.changed.event.v1
- version: 1.x.x
id: merchantAccountPaymentMethod.dankort.configured.event.v1
- version: 1.x.x
id: merchantAccountPaymentMethod.DankortTofId.created.event.v1
- version: 1.x.x
id: merchantAccountPaymentMethod.DankortTofId.created.event.v2
- version: 1.x.x
id: merchantAccountPaymentMethod.disabled.event.v1
- version: 1.x.x
id: merchantAccountPaymentMethod.enabled.event.v1
- version: 1.x.x
id: merchantAccountPaymentMethod.internal.event.v1
- version: 1.x.x
id: merchantAccountPaymentMethod.steps.created.event.v1
- version: 1.x.x
id: merchantApplication.approved.event.v1
- version: 2.x.x
id: merchantApplication.approved.event.v2
- version: 1.x.x
id: merchantApplication.created.event.v1
- version: 2.x.x
id: merchantApplication.created.event.v2
- version: 1.x.x
id: merchantApplication.rejected.event.v1
- version: 2.x.x
id: merchantApplication.rejected.event.v2
- version: 1.x.x
id: merchantApplication.riskscored.event.v1
- version: 2.x.x
id: merchantApplication.riskscored.event.v2
- version: 3.x.x
id: merchantApplication.riskscored.event.v3
- version: 1.x.x
id: merchantDomain.verification.completed.event.v1
- version: 1.x.x
id: merchantDomain.verification.failed.event.v1
- version: 1.x.x
id: merchantDomain.verification.initiated.event.v1
- version: 1.x.x
id: merchantBalance.updated.event.v1
- version: 1.x.x
id: merchantLedger.transactionPosted.event.v1
- version: 1.x.x
id: merchantPrice.updated.event.v1
- version: 1.x.x
id: notification.onboarding.webhook.attempt.log.message.v1
- version: 1.x.x
id: notification.payment.webhook.attempt.log.message.v1
- version: 1.x.x
id: partner.allowedPriceLists.updated.event.v1
- version: 1.x.x
id: partner.apiKeys.live.created.event.v1
- version: 1.x.x
id: partner.apiKeys.test.created.event.v1
- version: 1.x.x
id: partner.company.updated.event.v1
- version: 1.x.x
id: partner.contactPerson.updated.event.v1
- version: 1.x.x
id: partner.created.event.v1
- version: 1.x.x
id: partner.crmPartnerId.updated.event.v1
- version: 1.x.x
id: partner.defaultPermissions.updated.event.v1
- version: 1.x.x
id: partner.merchantAccountPermissions.live.updated.event.v1
- version: 1.x.x
id: partner.merchantAccountPermissions.test.updated.event.v1
- version: 1.x.x
id: payment.a2a.initialized.event.v1
- version: 1.x.x
id: payment.a2a.refund.declined.event.v1
- version: 1.x.x
id: payment.cancel.created.event.v1
- version: 1.x.x
id: payment.cancel.failed.event.v1
- version: 1.x.x
id: payment.charge.created.event.v1
- version: 2.x.x
id: payment.charge.created.event.v2
- version: 1.x.x
id: payment.charge.failed.event.v1
- version: 2.x.x
id: payment.charge.failed.event.v2
- version: 1.x.x
id: payment.charge.feeAdded.event.v1
- version: 1.x.x
id: payment.charge.request.v1
- version: 1.x.x
id: payment.charging.internal.event.v1
- version: 1.x.x
id: payment.checkout.completed.event.v1
- version: 1.x.x
id: payment.consumer.refunded.event.v1
- version: 1.x.x
id: payment.created.event.v1
- version: 1.x.x
id: payment.internal.event.v1
- version: 1.x.x
id: payment.orderItems.updated.event.v1
- version: 1.x.x
id: payment.paymentMethod.verification.created.event.v1
- version: 1.x.x
id: payment.paymentMethod.verification.failed.event.v1
- version: 1.x.x
id: payment.pendingRefund.cancel.request.v1
- version: 1.x.x
id: payment.pendingRefund.cancelled.event.v1
- version: 1.x.x
id: payment.referenceUpdated.event.v1
- version: 1.x.x
id: payment.refund.cancel.initiated.event.v1
- version: 1.x.x
id: payment.refund.completed.event.v1
- version: 1.x.x
id: payment.refund.consumerRefunded.event.v1
- version: 1.x.x
id: payment.refund.failed.event.v1
- version: 1.x.x
id: payment.refund.feeAdded.event.v1
- version: 1.x.x
id: payment.refund.initiated.event.v1
- version: 2.x.x
id: payment.refund.initiated.event.v2
- version: 1.x.x
id: payment.reservation.created.event.v1
- version: 1.x.x
id: payment.reservation.failed.event.v1
- version: 1.x.x
id: payment.shippingaddress.verified.event.v1
- version: 1.x.x
id: payment.subscription.initiated.event.v1
- version: 1.x.x
id: priceList.updated.event.v1
- version: 1.x.x
id: refundAuthorization.accepted.event.v1
- version: 1.x.x
id: refundAuthorization.canceled.event.v1
- version: 1.x.x
id: refundAuthorization.confirmed.event.v1
- version: 1.x.x
id: refundAuthorization.expired.event.v1
- version: 1.x.x
id: refundAuthorization.pending.event.v1
- version: 1.x.x
id: settlement.cancelled.event.v1
- version: 1.x.x
id: settlement.confirmed.event.v1
- version: 2.x.x
id: settlement.confirmed.event.v2
- version: 1.x.x
id: settlement.created.event.v1
- version: 2.x.x
id: settlement.created.event.v2
- version: 1.x.x
id: settlement.transactions.added.event.v1
- version: 1.x.x
id: settlementConfiguration.assigned.event.v1
- version: 1.x.x
id: subscription.bulk.charge.initiated.v1
- version: 1.x.x
id: subscription.bulk.verification.initiated.v1
- version: 1.x.x
id: subscription.created.event.v1
- version: 1.x.x
id: subscription.updated.event.v1
- version: 1.x.x
id: transactionFee.calculated.event.v1
- version: 1.x.x
id: user.addedToMerchant.event.v1
- version: 1.x.x
id: user.addedToPartner.event.v1
- version: 1.x.x
id: user.created.event.v1
- version: 1.x.x
id: user.removedFromMerchant.event.v1
---
Sample description of the service
---
name: MMS
id: mms
version: 1.0.0
summary: No summary
badges:
- content: C#
backgroundColor: blue
textColor: white
owners:
- easy-checkout
sends:
- version: 1.x.x
id: merchant.account.created.event.v1
- version: 2.x.x
id: merchant.account.created.event.v2
- version: 1.x.x
id: merchant.account.deactivated.event.v1
- version: 1.x.x
id: merchant.account.reactivated.event.v1
- version: 1.x.x
id: merchant.apiKeys.live.revoke.created.event.v1
- version: 1.x.x
id: merchant.apiKeys.test.revoke.created.event.v1
- version: 1.x.x
id: merchant.apiKeys.create.failed.event.v1
- version: 1.x.x
id: merchant.apiKeys.created.event.v1
- version: 1.x.x
id: merchant.apiKeys.created.event.v2
- version: 1.x.x
id: merchant.apiKeys.live.revoke.failed.event.v1
- version: 1.x.x
id: merchant.apiKeys.test.revoke.failed.event.v1
- version: 1.x.x
id: merchant.approved.event.v1
- version: 2.x.x
id: merchant.approved.event.v2
- version: 1.x.x
id: merchant.billingDetails.updated.event.v1
- version: 1.x.x
id: merchant.contactPerson.updated.event.v1
- version: 1.x.x
id: merchant.created.event.v1
- version: 1.x.x
id: merchant.updated.event.v1
- version: 1.x.x
id: partner.allowedPriceLists.updated.event.v1
- version: 1.x.x
id: partner.apiKeys.live.created.event.v1
- version: 1.x.x
id: partner.apiKeys.test.created.event.v1
- version: 1.x.x
id: partner.company.updated.event.v1
- version: 1.x.x
id: partner.contactPerson.updated.event.v1
- version: 1.x.x
id: partner.created.event.v1
- version: 1.x.x
id: partner.crmPartnerId.updated.event.v1
- version: 1.x.x
id: partner.defaultPermissions.updated.event.v1
- version: 1.x.x
id: partner.merchantAccountPermissions.live.updated.event.v1
- version: 1.x.x
id: partner.merchantAccountPermissions.test.updated.event.v1
- version: 1.x.x
id: merchant.deactivated.event.v1
- version: 1.x.x
id: merchant.reactivated.event.v1
- version: 1.x.x
id: merchant.surcharge.enabled.event.v1
- version: 1.x.x
id: merchant.surcharge.disabled.event.v1
- version: 1.x.x
id: merchant.virtualCard.enabled.event.v1
- version: 1.x.x
id: merchant.virtualCard.disabled.event.v1
receives:
- version: 1.x.x
id: merchant.account.settlementConfiguration.update.request.v1
- version: 1.x.x
id: merchant.approved.event.v1
- version: 2.x.x
id: merchant.approved.event.v2
- version: 1.x.x
id: merchant.updated.event.v1
- version: 1.x.x
id: merchantApplication.approved.event.v1
- version: 2.x.x
id: merchantApplication.approved.event.v2
- version: 2.x.x
id: merchantApplication.riskscored.event.v3
- version: 1.x.x
id: partner.allowedPriceLists.updated.event.v1
- version: 1.x.x
id: merchant.surcharge.enable.request.v1
- version: 1.x.x
id: merchant.surcharge.disable.request.v1
---
Sample description of the service
---
name: Notification
id: notification
version: 1.0.0
summary: No summary
badges:
- content: C#
backgroundColor: blue
textColor: white
owners:
- easy-checkout
sends:
- version: 1.x.x
id: notification.payment.webhook.attempt.log.message.v1
receives:
- version: 1.x.x
id: notification.onboarding.webhook.attempt.log.message.v1
- version: 1.x.x
id: payment.cancel.created.event.v1
- version: 1.x.x
id: payment.cancel.failed.event.v1
- version: 1.x.x
id: payment.charge.created.event.v1
- version: 1.x.x
id: payment.charge.failed.event.v1
- version: 1.x.x
id: payment.charge.feeAdded.event.v1
- version: 1.x.x
id: payment.created.event.v1
- version: 1.x.x
id: payment.pendingRefund.cancelled.event.v1
- version: 1.x.x
id: payment.referenceUpdated.event.v1
- version: 1.x.x
id: payment.refund.completed.event.v1
- version: 1.x.x
id: payment.refund.consumerRefunded.event.v1
- version: 1.x.x
id: payment.refund.failed.event.v1
- version: 1.x.x
id: payment.refund.feeAdded.event.v1
- version: 1.x.x
id: payment.refund.initiated.event.v1
- version: 1.x.x
id: payment.reservation.failed.event.v1
---
Sample description of the service
---
name: Portal Merchants
id: portal-merchants
version: 1.0.0
summary: No summary
badges:
- content: Java
backgroundColor: blue
textColor: white
owners:
- easy-portal
receives:
- id: merchant.account.created.event.v1
version: 1.x.x
- id: merchant.account.created.event.v2
version: 2.x.x
- id: merchant.account.created.event.v3
version: 3.x.x
- id: merchant.account.deactivated.event.v1
version: 1.x.x
- id: merchant.account.reactivated.event.v1
version: 1.x.x
- id: merchant.account.settlementConfiguration.update.request.v1
version: 1.x.x
- id: merchant.account.settlementConfiguration.updated.event.v1
version: 1.x.x
- id: merchant.apiKeys.live.revoke.created.event.v1
version: 1.x.x
- id: merchant.apiKeys.test.revoke.created.event.v1
version: 1.x.x
- id: merchant.apiKeys.create.failed.event.v1
version: 1.x.x
- id: merchant.apiKeys.created.event.v1
version: 1.x.x
- id: merchant.apiKeys.created.event.v2
version: 1.x.x
- id: merchant.apiKeys.live.revoke.failed.event.v1
version: 1.x.x
- id: merchant.apiKeys.test.revoke.failed.event.v1
version: 1.x.x
- id: merchant.approved.event.v1
version: 1.x.x
- id: merchant.approved.event.v2
version: 2.x.x
- id: merchant.approved.event.v3
version: 1.x.x
- id: merchant.billingDetails.updated.event.v1
version: 1.x.x
- id: merchant.contactPerson.updated.event.v1
version: 1.x.x
- id: merchant.created.event.v1
version: 1.x.x
- id: merchant.updated.event.v1
version: 1.x.x
- id: merchant.surcharge.enabled.event.v1
version: 1.x.x
- id: merchant.surcharge.disabled.event.v1
version: 1.x.x
- id: merchantAccountPaymentMethod.arvato.changed.event.v1
version: 1.x.x
- id: merchantAccountPaymentMethod.arvato.created.event.v1
version: 1.x.x
- id: merchantAccountPaymentMethod.arvato.created.event.v2
version: 1.x.x
- id: merchantAccountPaymentMethod.baxId.created.event.v1
version: 1.x.x
- id: merchantAccountPaymentMethod.card.changed.event.v1
version: 1.x.x
- id: merchantAccountPaymentMethod.created.event.v1
version: 1.x.x
- id: merchantAccountPaymentMethod.dankort.configured.event.v1
version: 1.x.x
- id: merchantAccountPaymentMethod.DankortTofId.created.event.v1
version: 1.x.x
- id: merchantAccountPaymentMethod.DankortTofId.created.event.v2
version: 1.x.x
- id: merchantAccountPaymentMethod.disabled.event.v1
version: 1.x.x
- id: merchantAccountPaymentMethod.enabled.event.v1
version: 1.x.x
- id: merchantAccountPaymentMethod.internal.event.v1
version: 1.x.x
- id: merchantAccountPaymentMethod.steps.created.event.v1
version: 1.x.x
- id: merchantApplication.approved.event.v1
version: 1.x.x
- id: merchantApplication.approved.event.v2
version: 2.x.x
- id: merchantApplication.created.event.v1
version: 1.x.x
- id: merchantApplication.created.event.v2
version: 2.x.x
- id: merchantApplication.rejected.event.v1
version: 1.x.x
- id: merchantApplication.rejected.event.v2
version: 2.x.x
- id: merchantApplication.riskscored.event.v1
version: 1.x.x
- id: merchantApplication.riskscored.event.v2
version: 2.x.x
- id: merchantApplication.riskscored.event.v3
version: 3.x.x
- id: merchantLedger.transactionPosted.event.v1
version: 1.x.x
- id: partner.allowedPriceLists.updated.event.v1
version: 1.x.x
- id: partner.apiKeys.live.created.event.v1
version: 1.x.x
- id: partner.apiKeys.test.created.event.v1
version: 1.x.x
- id: partner.company.updated.event.v1
version: 1.x.x
- id: partner.contactPerson.updated.event.v1
version: 1.x.x
- id: partner.created.event.v1
version: 1.x.x
- id: partner.crmPartnerId.updated.event.v1
version: 1.x.x
- id: partner.defaultPermissions.updated.event.v1
version: 1.x.x
- id: partner.merchantAccountPermissions.live.updated.event.v1
version: 1.x.x
- id: partner.merchantAccountPermissions.test.updated.event.v1
version: 1.x.x
- id: settlementConfiguration.assigned.event.v1
version: 1.x.x
- id: signupProcess.signupFailed.event.v1
version: 1.x.x
- id: signupProcess.signupInitialized.event.v1
version: 1.x.x
- id: signupProcess.signupOrderInserted.event.v2
version: 1.x.x
- id: signupProcess.signupSigned.event.v1
version: 1.x.x
- id: user.addedToMerchant.event.v1
version: 1.x.x
- id: user.addedToPartner.event.v1
version: 1.x.x
- id: user.created.event.v1
version: 1.x.x
- id: user.removedFromMerchant.event.v1
version: 1.x.x
sends:
- id: merchant.create.request.v2
version: 2.x.x
- id: merchant.apiKeys.live.revoke.request.v1
version: 1.x.x
- id: merchant.apiKeys.test.revoke.request.v1
version: 1.x.x
- id : merchant.apiKeys.create.request.v1
version: 1.x.x
- id: merchant.surcharge.enable.request.v1
version: 1.x.x
- id: merchant.surcharge.disable.request.v1
version: 1.x.x
---
Merchant Service in Easy Merchant Portal is responsible for Merchant and Partner Enrollment, Management and Administration
---
name: Portal Payments
id: portal-payments
version: 1.0.0
summary: No summary
badges:
- content: Java
backgroundColor: blue
textColor: white
owners:
- easy-portal
receives:
- id: payment.a2a.initialized.event.v1
version: 1.x.x
- id: payment.a2a.refund.declined.event.v1
version: 1.x.x
- id: payment.cancel.created.event.v1
version: 1.x.x
- id: payment.cancel.failed.event.v1
version: 1.x.x
- id: payment.charge.created.event.v1
version: 1.x.x
- id: payment.charge.created.event.v2
version: 2.x.x
- id: payment.charge.failed.event.v1
version: 1.x.x
- id: payment.charge.failed.event.v2
version: 2.x.x
- id: payment.charge.feeAdded.event.v1
version: 1.x.x
- id: payment.charge.request.v1
version: 1.x.x
- id: payment.charging.internal.event.v1
version: 1.x.x
- id: payment.checkout.completed.event.v1
version: 1.x.x
- id: payment.consumer.refunded.event.v1
version: 1.x.x
- id: payment.created.event.v1
version: 1.x.x
- id: payment.internal.event.v1
version: 1.x.x
- id: payment.orderItems.updated.event.v1
version: 1.x.x
- id: payment.paymentMethod.verification.created.event.v1
version: 1.x.x
- id: payment.paymentMethod.verification.failed.event.v1
version: 1.x.x
- id: payment.pendingRefund.cancel.request.v1
version: 1.x.x
- id: payment.pendingRefund.cancelled.event.v1
version: 1.x.x
- id: payment.referenceUpdated.event.v1
version: 1.x.x
- id: payment.refund.cancel.initiated.event.v1
version: 1.x.x
- id: payment.refund.completed.event.v1
version: 1.x.x
- id: payment.refund.consumerRefunded.event.v1
version: 1.x.x
- id: payment.refund.failed.event.v1
version: 1.x.x
- id: payment.refund.feeAdded.event.v1
version: 1.x.x
- id: payment.refund.initiated.event.v1
version: 1.x.x
- id: payment.refund.initiated.event.v2
version: 2.x.x
- id: payment.reservation.created.event.v1
version: 1.x.x
- id: payment.reservation.failed.event.v1
version: 1.x.x
- id: payment.sale.created.event.v1
version: 1.x.x
- id: payment.sale.failed.event.v1
version: 1.x.x
- id: payment.shippingaddress.verified.event.v1
version: 1.x.x
- id: payment.subscription.initiated.event.v1
version: 1.x.x
- id: settlement.cancelled.event.v1
version: 1.x.x
- id: settlement.confirmed.event.v1
version: 1.x.x
- id: settlement.confirmed.event.v2
version: 2.x.x
- id: settlement.created.event.v1
version: 1.x.x
- id: settlement.created.event.v2
version: 2.x.x
- id: settlement.transactions.added.event.v1
version: 1.x.x
- id: subscription.created.event.v1
version: 1.x.x
- id: subscription.updated.event.v1
version: 1.x.x
- id: transactionFee.calculated.event.v1
version: 1.x.x
sends:
- id: payment.charge.request.v1
version: 1.x.x
- id: payment.pendingRefund.cancel.request.v1
version: 1.x.x
---
Payment Service in Easy Merchant Portal is responsible for collecting payment, settlement, subscription events, processing these events which are transactions made by Merchants.
Payment Service makes Payment data, Settlement data available for Easy Portal Merchant Service to present that on Easy Merchant Portal.
Payment Service creates Payout Reports and Payment Reports which are then used by Easy Portal Merchant Service to make it downloadable for Merchants.
---
name: Pricing
id: pricing
version: 1.0.0
summary: No summary
badges:
- content: C#
backgroundColor: blue
textColor: white
owners:
- easy-processing
sends:
- version: 1.x.x
id: transactionFee.calculated.event.v1
receives:
- version: 3.x.x
id: merchant.account.created.event.v3
- version: 1.x.x
id: merchant.approved.event.v1
- version: 2.x.x
id: merchant.approved.event.v2
- version: 1.x.x
id: merchant.created.event.v1
- version: 1.x.x
id: merchantPrice.updated.event.v1
- version: 1.x.x
id: partner.created.event.v1
- version: 1.x.x
id: payment.cancel.created.event.v1
- version: 1.x.x
id: payment.cancel.failed.event.v1
- version: 1.x.x
id: payment.charge.created.event.v1
- version: 2.x.x
id: payment.charge.created.event.v2
- version: 1.x.x
id: payment.charge.failed.event.v1
- version: 2.x.x
id: payment.charge.failed.event.v2
- version: 1.x.x
id: payment.refund.completed.event.v1
- version: 1.x.x
id: payment.refund.failed.event.v1
- version: 1.x.x
id: payment.refund.initiated.event.v1
- version: 2.x.x
id: payment.refund.initiated.event.v2
- version: 1.x.x
id: payment.reservation.created.event.v1
- version: 1.x.x
id: payment.reservation.failed.event.v1
- version: 1.x.x
id: priceList.updated.event.v1
- version: 1.x.x
id: settlement.created.event.v1
---
Sample description of the service
---
name: Processing
id: processing
version: 1.0.0
summary: No summary
badges:
- content: C#
backgroundColor: blue
textColor: white
owners:
- easy-processing
sends:
- version: 1.x.x
id: payment.a2a.initialized.event.v1
- version: 1.x.x
id: payment.a2a.refund.declined.event.v1
- version: 1.x.x
id: payment.cancel.created.event.v1
- version: 1.x.x
id: payment.cancel.failed.event.v1
- version: 1.x.x
id: payment.charge.created.event.v1
- version: 2.x.x
id: payment.charge.created.event.v2
- version: 1.x.x
id: payment.charge.failed.event.v1
- version: 2.x.x
id: payment.charge.failed.event.v2
- version: 1.x.x
id: payment.charge.feeAdded.event.v1
- version: 1.x.x
id: payment.charging.internal.event.v1
- version: 1.x.x
id: payment.checkout.completed.event.v1
- version: 1.x.x
id: payment.consumer.refunded.event.v1
- version: 1.x.x
id: payment.internal.event.v1
- version: 1.x.x
id: payment.orderItems.updated.event.v1
- version: 1.x.x
id: payment.paymentMethod.verification.created.event.v1
- version: 1.x.x
id: payment.paymentMethod.verification.failed.event.v1
- version: 1.x.x
id: payment.pendingRefund.cancel.request.v1
- version: 1.x.x
id: payment.pendingRefund.cancelled.event.v1
- version: 1.x.x
id: payment.referenceUpdated.event.v1
- version: 1.x.x
id: payment.refund.cancel.initiated.event.v1
- version: 1.x.x
id: payment.refund.completed.event.v1
- version: 1.x.x
id: payment.refund.consumerRefunded.event.v1
- version: 1.x.x
id: payment.refund.failed.event.v1
- version: 1.x.x
id: payment.refund.feeAdded.event.v1
- version: 1.x.x
id: payment.refund.initiated.event.v1
- version: 2.x.x
id: payment.refund.initiated.event.v2
- version: 1.x.x
id: payment.reservation.created.event.v1
- version: 1.x.x
id: payment.reservation.failed.event.v1
- version: 1.x.x
id: payment.shippingaddress.verified.event.v1
- version: 1.x.x
id: payment.subscription.initiated.event.v1
receives:
- version: 1.x.x
id: merchant.account.created.event.v1
- version: 2.x.x
id: merchant.account.created.event.v2
- version: 3.x.x
id: merchant.account.created.event.v3
- version: 1.x.x
id: merchant.apiKeys.live.revoke.created.event.v1
- version: 1.x.x
id: merchant.apiKeys.test.revoke.created.event.v1
- version: 1.x.x
id: merchant.apiKeys.create.failed.event.v1
- version: 1.x.x
id: merchant.apiKeys.created.event.v1
- version: 1.x.x
id: merchant.apiKeys.created.event.v2
- version: 1.x.x
id: merchant.apiKeys.test.revoke.failed.event.v1
- version: 1.x.x
id: merchant.approved.event.v1
- version: 2.x.x
id: merchant.approved.event.v2
- version: 1.x.x
id: merchant.approved.event.v3
- version: 1.x.x
id: merchant.created.event.v1
- version: 1.x.x
id: merchant.updated.event.v1
- version: 1.x.x
id: merchant.surcharge.enabled.event.v1
- version: 1.x.x
id: merchant.surcharge.disabled.event.v1
- version: 1.x.x
id: merchant.deactivated.event.v1
- version: 1.x.x
id: merchant.reactivated.event.v1
- version: 1.x.x
id: merchant.virtualCard.enabled.event.v1
- version: 1.x.x
id: merchant.virtualCard.disabled.event.v1
- version: 1.x.x
id: merchantAccountPaymentMethod.arvato.changed.event.v1
- version: 1.x.x
id: merchantAccountPaymentMethod.arvato.created.event.v2
- version: 1.x.x
id: merchantAccountPaymentMethod.baxId.created.event.v1
- version: 1.x.x
id: merchantAccountPaymentMethod.card.changed.event.v1
- version: 1.x.x
id: merchantAccountPaymentMethod.dankort.configured.event.v1
- version: 1.x.x
id: merchantAccountPaymentMethod.enabled.event.v1
- version: 1.x.x
id: partner.allowedPriceLists.updated.event.v1
- version: 1.x.x
id: partner.apiKeys.live.created.event.v1
- version: 1.x.x
id: partner.apiKeys.test.created.event.v1
- version: 1.x.x
id: partner.company.updated.event.v1
- version: 1.x.x
id: partner.contactPerson.updated.event.v1
- version: 1.x.x
id: partner.created.event.v1
- version: 1.x.x
id: partner.crmPartnerId.updated.event.v1
- version: 1.x.x
id: partner.defaultPermissions.updated.event.v1
- version: 1.x.x
id: partner.merchantAccountPermissions.live.updated.event.v1
- version: 1.x.x
id: partner.merchantAccountPermissions.test.updated.event.v1
- version: 1.x.x
id: payment.a2a.initialized.event.v1
- version: 1.x.x
id: payment.a2a.refund.declined.event.v1
- version: 1.x.x
id: payment.cancel.created.event.v1
- version: 1.x.x
id: payment.cancel.failed.event.v1
- version: 1.x.x
id: payment.charge.created.event.v1
- version: 2.x.x
id: payment.charge.created.event.v2
- version: 1.x.x
id: payment.charge.failed.event.v1
- version: 2.x.x
id: payment.charge.failed.event.v2
- version: 1.x.x
id: payment.charge.request.v1
- version: 1.x.x
id: payment.charging.internal.event.v1
- version: 1.x.x
id: payment.checkout.completed.event.v1
- version: 1.x.x
id: payment.consumer.refunded.event.v1
- version: 1.x.x
id: payment.created.event.v1
- version: 1.x.x
id: payment.pendingRefund.cancel.request.v1
- version: 1.x.x
id: payment.refund.cancel.initiated.event.v1
- version: 1.x.x
id: payment.refund.completed.event.v1
- version: 1.x.x
id: payment.refund.feeAdded.event.v1
- version: 1.x.x
id: payment.refund.initiated.event.v1
- version: 2.x.x
id: payment.refund.initiated.event.v2
- version: 1.x.x
id: payment.reservation.created.event.v1
- version: 1.x.x
id: payment.reservation.failed.event.v1
- version: 1.x.x
id: payment.shippingaddress.verified.event.v1
- version: 1.x.x
id: payment.subscription.initiated.event.v1
- version: 1.x.x
id: refundAuthorization.accepted.event.v1
- version: 1.x.x
id: refundAuthorization.canceled.event.v1
- version: 1.x.x
id: refundAuthorization.confirmed.event.v1
- version: 1.x.x
id: refundAuthorization.expired.event.v1
- version: 1.x.x
id: refundAuthorization.pending.event.v1
- version: 1.x.x
id: subscription.bulk.charge.initiated.v1
- version: 1.x.x
id: subscription.bulk.verification.initiated.v1
- version: 1.x.x
id: transactionFee.calculated.event.v1
---
Sample description of the service
---
name: Relay APM Processing
id: relay-apm-processing
version: 2.0.0
summary: No summary
owners:
- relay-apm
receives:
- id: relay.payment.authorize.request.v2
version: 2.0.0
from:
- id: grpc
name: gRPC
- id: https
name: HTTPS
- id: relay.payment.capture.request.v2
version: 2.0.0
from:
- id: grpc
name: gRPC
- id: https
name: HTTPS
- id: relay.payment.charge.request.v2
version: 2.0.0
from:
- id: grpc
name: gRPC
- id: https
name: HTTPS
- id: relay.payment.cancel.request.v2
version: 2.0.0
from:
- id: grpc
name: gRPC
- id: https
name: HTTPS
- id: relay.payment.refund.request.v2
version: 2.0.0
from:
- id: grpc
name: gRPC
- id: https
name: HTTPS
- id: relay.payment.getsummary.query.v2
version: 2.0.0
from:
- id: grpc
name: gRPC
- id: https
name: HTTPS
- id: relay.payment.getoperationssummary.query.v2
version: 2.0.0
from:
- id: grpc
name: gRPC
- id: https
name: HTTPS
---
Relay Processing. More details to be added
---
## API Documentation
The API documentation for the `Relay APM Processing` is available in the `api.yaml` file. This file describes the gRPC methods for the service.
You can find the detailed API documentation here: gRPC contracts repo
---
name: Relay Enrollment
id: relay-enrollment
version: 2.0.0
summary: No summary
owners:
- relay-apm
sends:
- id: relay.merchant.get.query.v2
version: 2.0.0
to:
- id: grpc
name: gRPC
receives:
- id: relay.enrollment.enroll.request.v2
version: 2.0.0
from:
- id: grpc
name: gRPC
- id: https
name: HTTPS
- id: relay.enrollment.activate.request.v2
version: 2.0.0
from:
- id: grpc
name: gRPC
- id: https
name: HTTPS
- id: relay.enrollment.deactivate.request.v2
version: 2.0.0
from:
- id: grpc
name: gRPC
- id: https
name: HTTPS
- id: relay.enrollment.terminate.request.v2
version: 2.0.0
from:
- id: grpc
name: gRPC
- id: https
name: HTTPS
- id: relay.enrollment.update.request.v2
version: 2.0.0
from:
- id: grpc
name: gRPC
- id: https
name: HTTPS
- id: relay.enrollment.get.query.v2
version: 2.0.0
from:
- id: grpc
name: gRPC
- id: https
name: HTTPS
---
Relay Enrollment. More details to be added
---
name: Relay Merchant
id: relay-merchant
version: 2.0.0
summary: No summary
owners:
- relay-apm
sends: []
receives:
- id: relay.merchant.create.request.v2
version: 2.0.0
from:
- id: grpc
name: gRPC
- id: https
name: HTTPS
- id: relay.merchant.update.request.v2
version: 2.0.0
from:
- id: grpc
name: gRPC
- id: https
name: HTTPS
- id: relay.merchant.deactivate.request.v2
version: 2.0.0
from:
- id: grpc
name: gRPC
- id: https
name: HTTPS
- id: relay.merchant.activate.request.v2
version: 2.0.0
from:
- id: grpc
name: gRPC
- id: https
name: HTTPS
- id: relay.merchant.get.query.v2
version: 2.0.0
from:
- id: grpc
name: gRPC
---
Relay Merchants. More details to be added
---
name: Relay Notification
id: relay-notification
version: 2.0.0
summary: No summary
owners:
- relay-apm
sends:
- id: relay.merchant.activated.event
version: 0.0.0
to:
- id: https
name: HTTPS
- id: relay.merchant.deactivated.event
version: 0.0.0
to:
- id: https
name: HTTPS
- id: relay.merchant.created.event
version: 0.0.0
to:
- id: https
name: HTTPS
- id: relay.merchant.updated.event
version: 0.0.0
to:
- id: https
name: HTTPS
- id: relay.enrollment.activated.event
version: 0.0.0
to:
- id: https
name: HTTPS
- id: relay.enrollment.deactivated.event
version: 0.0.0
to:
- id: https
name: HTTPS
- id: relay.enrollment.pending.event
version: 0.0.0
to:
- id: https
name: HTTPS
- id: relay.enrollment.noncompliant.event
version: 0.0.0
to:
- id: https
name: HTTPS
- id: relay.enrollment.terminated.event
version: 0.0.0
to:
- id: https
name: HTTPS
- id: relay.payment.authorize.completed.event
version: 0.0.0
to:
- id: https
name: HTTPS
- id: relay.payment.authorize.failed.event
version: 0.0.0
to:
- id: https
name: HTTPS
- id: relay.payment.cancel.completed.event
version: 0.0.0
to:
- id: https
name: HTTPS
- id: relay.payment.cancel.failed.event
version: 0.0.0
to:
- id: https
name: HTTPS
- id: relay.payment.capture.completed.event
version: 0.0.0
to:
- id: https
name: HTTPS
- id: relay.payment.capture.failed.event
version: 0.0.0
to:
- id: https
name: HTTPS
- id: relay.payment.charge.completed.event
version: 0.0.0
to:
- id: https
name: HTTPS
- id: relay.payment.charge.failed.event
version: 0.0.0
to:
- id: https
name: HTTPS
- id: relay.payment.refund.completed.event
version: 0.0.0
to:
- id: https
name: HTTPS
- id: relay.payment.refund.failed.event
version: 0.0.0
to:
- id: https
name: HTTPS
- id: relay.dispute.opened.event
version: 0.0.0
to:
- id: https
name: HTTPS
- id: relay.dispute.responserequired.event
version: 0.0.0
to:
- id: https
name: HTTPS
- id: relay.dispute.closed.event
version: 0.0.0
to:
- id: https
name: HTTPS
receives:
- id: relay.notificationconfiguration.create.request.v2
version: 2.0.0
from:
- id: grpc
name: gRPC
- id: https
name: HTTPS
- id: relay.notificationconfiguration.delete.request.v2
version: 2.0.0
from:
- id: grpc
name: gRPC
- id: https
name: HTTPS
- id: relay.notificationconfiguration.update.request.v2
version: 2.0.0
from:
- id: grpc
name: gRPC
- id: https
name: HTTPS
- id: relay.notificationconfiguration.get.query.v2
version: 2.0.0
from:
- id: grpc
name: gRPC
- id: https
name: HTTPS
---
Relay Notification. More details to be added
---
id: ShopifyAdminPanel
name: ShopifyAdminPanel
version: 1.0.0
summary: |
Shop Platform admin panel page where merchant can modify Nexi Checkout payment
owners:
- easy-connect
sends:
- id: payment.charge.request.v1
- id: payment.cancel.request.v1
- id: payment.refund.request.v1
---
## Overview
Sends payment api call to allow Merchant to pay charge, cancel and refund payment.
---
id: ShopifyCheckoutPage
name: ShopifyCheckoutPage
version: 1.0.0
summary: |
Shop Platform checkout page where customer can select Nexi Checkout as a payment method
and depending on integration type he will be see iframe or be redirected to a Checkout Terminal page
owners:
- easy-connect
sends:
- id: payment.created.event.v1
- id: payment.referenceUpdated.event.v1
---
## Overview
Sends payment create api call and allow Customer to pay for an order.
For Hosted:
- Customer puts items into Cart
- Goes to Checkout Page and selects Nexi Checkout as a payment method
- Clicks "Order"
- Customer is redirected to app /pay endpoint where payment request is created and sent
- Customer is redirected to Checkout Terminal page
- Customer makes payment process
- After payment complete Customer is redirected back to a /return endpoint where payment is confirmed
- Cart is converted to an Shop Order
- Customer is redirected back to Shop Platform
---
id: ShopifyWebhookEndpoint
name: ShopifyWebhookEndpoint
version: 1.0.0
summary: |
Endpoint where all the Webhooks from Checkout are sent
owners:
- easy-connect
receives:
- id: payment.checkout.completed.event.v1
- id: payment.reservation.created.event.v2
- id: payment.charge.created.event.v2
- id: payment.cancel.created.event.v1
- id: payment.refund.completed.event.v1
- id: payment.refund.failed.event.v1
---
## Overview
Endpoint to receive webhooks from Checkout.
---
id: ShopwareAdmin
name: ShopwareAdmin
version: 2.0.0
summary: |
Shop Platform admin panel page where merchant can modify Nexi Checkout payment
owners:
- easy-connect
sends:
- id: payment.charge.request.v1
- id: payment.cancel.request.v1
- id: payment.refund.request.v1
---
## Overview
Sends payment api call to allow Merchant to pay charge, cancel and refund payment.
---
id: ShopwareCheckoutPage
name: ShopwareCheckoutPage
version: 2.0.0
summary: |
Shop Platform checkout page where customer can select Nexi Checkout as a payment method
and depending on integration type he will be see iframe or be redirected to a Checkout Terminal page
owners:
- easy-connect
sends:
- id: payment.created.event.v1
- id: payment.referenceUpdated.event.v1
---
## Overview
Sends payment create api call and allow Customer to pay for an order.
For Hosted:
- Customer puts items into Cart
- Goes to Checkout Page and selects Nexi Checkout Hosted as a payment method
- Clicks "Submit Order"
- Cart is converted to an Shop Order
- Customer is redirected to Checkout Terminal page
- Customer makes payment process
- After payment complete Customer is redirected back to a Shop Platform
For Embedded:
- Customer puts items into Cart
- Goes to Checkout Page and selects Nexi Checkout Embedded as a payment method
- Iframe with payment options is displayed to Customer
- Customer clicks Pay button in Checkout Terminal
- Cart is converted to an Shop Order
- Request to UpdateReference is sent
- Customer finishes payment process in an iframe
- After payment complete Customer is redirected to thank you page
---
id: ShopwareWebhookEndpoint
name: ShopwareWebhookEndpoint
version: 2.0.0
summary: |
Endpoint where all Webhooks from Checkout are sent
owners:
- easy-connect
receives:
- id: payment.checkout.completed.event.v1
- id: payment.reservation.created.event.v2
- id: payment.charge.created.event.v2
- id: payment.cancel.created.event.v1
- id: payment.refund.completed.event.v1
---
## Overview
Endpoint to receive webhooks from Checkout.
---
name: Signup
id: signup
version: 1.0.0
summary: Merchant data collection for onboarding
badges:
- content: Java
backgroundColor: blue
textColor: white
owners:
- easy-optin
sends:
- version: 1.x.x
id: merchantApplication.create.request.v1
- version: 1.x.x
id: signupProcess.signupFailed.event.v1
- version: 1.x.x
id: signupProcess.signupInitialized.event.v1
- version: 1.x.x
id: signupProcess.signupOrderInserted.event.v2
- version: 1.x.x
id: signupProcess.signupSigned.event.v1
receives:
- version: 1.x.x
id: merchant.created.event.v1
- version: 2.x.x
id: merchant.approved.event.v2
- version: 1.x.x
id: merchant.approved.event.v3
- version: 2.x.x
id: merchantApplication.approved.event.v2
- version: 2.x.x
id: merchantApplication.created.event.v2
- version: 2.x.x
id: merchantApplication.rejected.event.v2
---
## Overview
Signup is a system used for:
- collecting information from merchant required for signing a contract,
- doing basic data validations against registries (pre-screening)
- e-signing initial contract by merchant which is a prerequisite to performing due dilligence checks in CMP.
From a black box perspective Signup provides 2 input interfaces: API and UI.

Signup's **API** is used for:
- creating a Signup process
- retrieving Signup process status
- updating Signup process by merchant support
- updating Signup process data
Signup's API is used by Merchant Portal, Partner Portal and CRM to facilitate self-service or assisted onboardings. Techopt also uses the API to perform merchant support activities.
Signup's **UI** is used solely by merchant. It provides a multi page form that collects information about:
- company
- owners
- webshop
- financial performance
- products merchant is interested in
- authorized signatories
After all required data is collected merchant signs the contract using ESign (nordics) or Docusign (dach). The signatory is retrieved from ID Rights. Next Signup calls CMP's API to create a new CMP case.
Operationally, data does not move from Signup to CMP using an event. The Signup to CMP handoff is modeled as **merchantApplication.create.request.v1**. This is a direct API call/command to CMP, not an event on a broker. CMP later emits merchant application events that Signup can consume to follow the onboarding result.
Signup consumes events from:
- MMS - merchant.#.events.#
- **merchant.created.event.v1** - used to register a merchant number / uuid mapping
- **merchant.approved.event.v1/v2** - used to mark signup process as LIVE
- CMP - merchantApplication.#.event.#
- **merchantApplication.approved.event.v2** - used to change signup process status to APPROVED
- **merchantApplication.created.event.v2** - used to trigger sending a signed contract to CRM - before that it will fail
- **merchantApplication.rejected.event.v2** - used to change signup process status to REJECTED
Signup produces events related to merchant's progress in filling out the Signup form.
Signup's events are consumed by Merchant Portal for performing Hubspot updates. See links for event details.
Technical overview of Signup Events (since 2023): https://nexigroup-netsnordics.atlassian.net/wiki/spaces/MSECOMM/pages/227021466/Signup+Events+Overview
Technical details about Signup: https://nexigroup-netsnordics.atlassian.net/wiki/spaces/MSECOMM/pages/226945638/Solution+Outline+for+Signup+detachment+on+Azure
## Node graph
---
name: Subscription
id: subscription
version: 1.0.0
summary: No summary
badges:
- content: C#
backgroundColor: blue
textColor: white
owners:
- easy-checkout
sends:
- version: 1.x.x
id: subscription.bulk.charge.initiated.v1
- version: 1.x.x
id: subscription.bulk.verification.initiated.v1
- version: 1.x.x
id: subscription.created.event.v1
- version: 1.x.x
id: subscription.updated.event.v1
---
Sample description of the service
---
# id of your domain, used for slugs and references in EventCatalog.
id: AccountingAndTreasury
# Display name of the domain, rendered in EventCatalog
name: AccountingAndTreasury
# Version of the domain
version: 0.0.1
# Short summary of your domain
summary: |
Domain that handles financial operations including reconciliations, settlements, and payouts. Ensures financial accuracy and compliance across systems.
# Optional services. Groups services into this domain.
services:
- id: collecting-accounting
version: 1.0.0
- id: collecting-balance
version: 1.0.0
- id: collecting-refundauth
version: 1.0.0
- id: collecting-settlement
version: 1.0.0
# Optional badges, rendered to UI by EventCatalog
badges:
- content: Collecting
backgroundColor: green
textColor: white
owners:
- easy-collecting
---
The AccountingAndTreasury domain is responsible for managing financial integrity across the platform.
It encompasses core financial operations such as reconciliations, settlements, and payouts, ensuring that all monetary transactions are accurately tracked, matched, and executed.
This domain acts as the backbone for financial compliance, auditability, and cash flow management. It integrates with internal and external financial systems to reconcile incoming and outgoing transactions, settle collected funds, and initiate timely payouts to merchants(Easy) or platforms(xPay).
The domain's focus is on maintaining transactional accuracy, safeguarding financial data consistency, and supporting end-to-end treasury operations critical to business trust and financial transparency.
## External Overview

## Collecting workflow (payment, reconciliation, settlement and payout)
```mermaid
sequenceDiagram
actor MMS
actor C&P
actor PSP as Payment Service Provider
actor AC as Collecting Accounting
actor BL as Collecting Balance
actor RA as Collecting Refund Authorization
actor S as Collecting Settlement
actor Bank
actor P as Portal
actor CAPS
MMS->>AC: Create Merchant
AC->>CAPS: Create Merchant
C&P->>AC: Create Merchant Account
opt Settlement Configuration
MMS->>AC: Update Settlement configuration
AC->>P: settlementConfiguration.assigned.event
end
opt Charge
C&P->>AC: Charge
AC->>BL: transactionPosted(Charge)
end
opt Refund
C&P->>+RA: Refund authorization request
alt Merchant has insufficient balance
RA-->>C&P: Pending refund
else Merchant has sufficient balance
RA->>AC: Reserve refund amount
RA-->>-C&P: Authorized refund
C&P->>+RA: Refund confirm reques
RA->>AC: PostTransactionCommand(Refund)
AC->>BL: transactionPosted(Refund)
RA-->>-C&P: Refund confirmed
end
end
PSP->>+AC: Reconciliation material
Note over PSP,AC: Reconciliation material File
AC->>AC: Create Reconciliation
alt MatchableTransactions
AC->>BL: TransactionAddedEvent
else Chargeback transaction
AC->>BL: transactionPosted(Chargeback)
AC->>P: merchantLedger.transactionPosted.event
else NonMatchableTransactions
AC->>BL: TransactionsNonMatchableEvent
end
AC->>-AC: CompleteReconciliationCommand
Bank->>+AC: Camt054
Note over Bank,AC: Camt054 File
alt Scheme settlement
AC->>-AC: Settle Reconciliation
else Topup
AC->>BL: transactionPosted(Topup)
AC->>P: accountDeposit.created.event
end
S->>BL: Fetch eligible transactions
S->>+S: Create Remittance Order
S->>CAPS: Send Remittance Order
Note over S,CAPS: Remittance Order File
S->>-S: RemittanceOrderFinalizeCommand
CAPS->>+S: Remittance Report
Note over CAPS,S: Remittance Report File
S->>S: Create Remittance
S->>P: settlement.created.event
S->>BL: RemittanceAddTransactions
opt Adjustment
S->>AC: PostTransactionCommand(Adjustment)
AC->>BL: transactionPosted(Adjustment)
AC->>P: merchantLedger.transactionPosted.event
end
opt Chargeback
S->>AC: PostTransactionCommand(Chargeback)
AC->>BL: transactionPosted(Chargeback)
AC->>P: merchantLedger.transactionPosted.event
end
S->>P: settlement.transactions.added.event
S->>AC: RemittanceOrderConfirmCommand
AC->>BL: transactionPosted(Remittance)
S->>-S: RemittanceConfirm
S->>P: settlement.confirmed.event
```
---
# id of your domain, used for slugs and references in EventCatalog.
id: CardLifecycleManagement
# Display name of the domain, rendered in EventCatalog
name: CardLifecycleManagement
# Version of the domain
version: 0.0.1
# Short summary of your domain
summary: |
Domain that contains card lifecycle management related information
# Optional services. Groups services into this domain.
services:
- id: EMO
version: 1.0.0
# Optional badges, rendered to UI by EventCatalog
badges:
- content: New domain
backgroundColor: blue
textColor: blue
---
## Overview
Domain that contains all services that are related to the card lifecycle management domain within FakeCompany.
---
# id of your domain, used for slugs and references in EventCatalog.
id: Checkout
# Display name of the domain, rendered in EventCatalog
name: Checkout
# Version of the domain
version: 0.0.1
# Short summary of your domain
summary: |
Domain that contains checkout related information
# Optional services. Groups services into this domain.
services:
- id: checkout
version: 1.0.0
# Optional badges, rendered to UI by EventCatalog
badges:
- content: New domain
backgroundColor: blue
textColor: blue
---
## Overview
Domain that contains all services that are related to the checkout domain within FakeCompany.
---
# id of your domain, used for slugs and references in EventCatalog.
id: DataAnalytics
# Display name of the domain, rendered in EventCatalog
name: DataAnalytics
# Version of the domain
version: 0.0.1
# Short summary of your domain
summary: |
Domain that contains data analytics related information
# Optional services. Groups services into this domain.
services:
- id: EMO
version: 1.0.0
# Optional badges, rendered to UI by EventCatalog
badges:
- content: New domain
backgroundColor: blue
textColor: blue
---
## Overview
Domain
---
# id of your domain, used for slugs and references in EventCatalog.
id: DevPortal
# Display name of the domain, rendered in EventCatalog
name: DevPortal
# Version of the domain
version: 0.0.1
# Short summary of your domain
summary: |
Domain that contains developer portal related information
# Optional services. Groups services into this domain.
services:
- id: EMO
version: 1.0.0
# Optional badges, rendered to UI by EventCatalog
badges:
- content: New domain
backgroundColor: blue
textColor: blue
---
## Overview
Domain that contains all services that are related to the developer portal domain within FakeCompany.
---
id: eCommIntegrations
name: eCommIntegrations
version: 0.0.1
summary: |
Domain that contains merchant integration related information
owners:
- easy-connect
domains:
- id: ShopwarePlugin
- id: ShopifyApp
---
## Overview
Domain that contains all services that are related to the merchant integration domain within Nexi Checkout.
---
# id of your domain, used for slugs and references in EventCatalog.
id: FraudAndRiskManagement
# Display name of the domain, rendered in EventCatalog
name: FraudAndRiskManagement
# Version of the domain
version: 0.0.1
# Short summary of your domain
summary: |
Domain that contains fraud and risk management related information
# Optional services. Groups services into this domain.
services:
- id: aml
version: 1.0.0
# Optional badges, rendered to UI by EventCatalog
badges:
- content: New domain
backgroundColor: blue
textColor: blue
---
## Overview
Domain that contains all services that are related to the fraud and risk management domain within FakeCompany.
---
# id of your domain, used for slugs and references in EventCatalog.
id: InternalBackoffice
# Display name of the domain, rendered in EventCatalog
name: InternalBackoffice
# Version of the domain
version: 0.0.1
# Short summary of your domain
summary: |
Domain that contains internal backoffice related information
# Optional services. Groups services into this domain.
services:
- id: mms
version: 1.0.0
- id: eventarchive
version: 1.0.0
- id: backoffice
version: 1.0.0
# Optional badges, rendered to UI by EventCatalog
badges:
- content: New domain
backgroundColor: blue
textColor: blue
---
## Overview
Domain that contains all services that are related to the internal backoffice domain within FakeCompany.
---
# id of your domain, used for slugs and references in EventCatalog.
id: MerchantBackoffice
# Display name of the domain, rendered in EventCatalog
name: MerchantBackoffice
# Version of the domain
version: 0.0.1
# Short summary of your domain
summary: |
Domain that contains merchant backoffice related information
# Optional services. Groups services into this domain.
services:
- id: portal-merchants
version: 1.0.0
- id: portal-payments
version: 1.0.0
# Optional badges, rendered to UI by EventCatalog
badges:
- content: New domain
backgroundColor: blue
textColor: blue
---
## Overview
Domain that contains all services that are related to the merchant backoffice domain within FakeCompany.
---
# id of your domain, used for slugs and references in EventCatalog.
id: MerchantIntegration
# Display name of the domain, rendered in EventCatalog
name: MerchantIntegration
# Version of the domain
version: 0.0.1
# Short summary of your domain
summary: |
Domain that contains merchant integration related information
# Optional services. Groups services into this domain.
services:
- id: EMO
version: 1.0.0
# Optional badges, rendered to UI by EventCatalog
badges:
- content: New domain
backgroundColor: blue
textColor: blue
---
## Overview
Domain that contains all services that are related to the merchant integration domain within FakeCompany.
---
# id of your domain, used for slugs and references in EventCatalog.
id: Onboarding
# Display name of the domain, rendered in EventCatalog
name: Onboarding
# Version of the domain
version: 1.0.0
# Short summary of your domain
summary: |
Domain that handles
- merchant data acquisition
- merchant due dilligence
- merchant activation
# Optional services. Groups services into this domain.
services:
- id: cmp
version: 1.0.0
- id: crm
version: 1.0.0
- id: emo
version: 1.0.0
- id: signup
version: 1.0.0
# Optional badges, rendered to UI by EventCatalog
badges:
- content: Onboarding
backgroundColor: blue
textColor: blue
---
## Overview

The Merchant Onboarding process can be divided into 3 distinct phases:
- **data acquisition** - includes gathering information from merchant that's required to sign a contract
- **due dilligence** - includes activites related to screening a merchant, checking against official registries, performing aml/kyc checks, gathering required documents etc
- **activation** - performed after succesfull due dilligence decision, includes enabling products merchant signed the contract for
The Onboarding domain supports all phases of the Merchant Onboarding process as follows.
## Data acquisition

Merchant can initiate an onboarding process in 2 ways:
- self-service - through Merchant Portal,
- assisted - Nexi employee / Partner initates onboarding on merchant's behalf through Partner Portal or CRM
When an onboarding process is initiated a request for onboarding is created in **Signup**. The merchant receives info about pending onboarding process and can proceed to fill out all missing information with the Signup form. When all data is provided, a draft contract is signed and a case is created in **CMP**.
## Due dilligence

**CMP** system provides a workflow for performing all necessary regulatory and risk background checks for a merchant application. This includes AML and KYC.
All checks are attempted to be performed automatically. This involves calling multiple external systems hosted both in public and internal networks.
Sometimes due to low data quality / errors in external systems onboarding agents need to handle validations manually using UI. It also happens that onboarding agents reach out directly to merchants via email requesting required info and documents. Merchant receives a link to Form Service that provides UI for submitting the requested data.
The merchant application can end as:
- approved
- rejected
- closed
When case is approved then activation steps are performed and events are send.
## Activation

When merchant application is approved, **CMP** performs activation tasks. For ECOM onboarding this consists of:
- sending messages to payment method providers / partners / merchants
- calling external systems (e.g. documents API)
- sending events consumed by CRM (SAP) and Checkout domain (MMS)
For other onboarding products the activation tasks might differ. E.g. in TMO CAPS is updated directly as next action after approval.
## Componet diagram

Please visit the following page for more details: https://nexigroup-netsnordics.atlassian.net/wiki/spaces/MSECOMM/pages/449183751/CMP+Technical+Overview
## Sequence diagrams
Please check the following page for sequence diagram examples:
https://nexigroup-netsnordics.atlassian.net/wiki/spaces/MSECOMM/pages/449183751/CMP+Technical+Overview#5.-Actors
## Node diagram
---
# id of your domain, used for slugs and references in EventCatalog.
id: PartnerPortal
# Display name of the domain, rendered in EventCatalog
name: PartnerPortal
# Version of the domain
version: 0.0.1
# Short summary of your domain
summary: |
Domain that contains partner portal related information
# Optional services. Groups services into this domain.
services:
- id: EMO
version: 1.0.0
# Optional badges, rendered to UI by EventCatalog
badges:
- content: New domain
backgroundColor: blue
textColor: blue
---
## Overview
Domain that contains all services that are related to the partner portal domain within FakeCompany.
---
# id of your domain, used for slugs and references in EventCatalog.
id: PaymentMethods
# Display name of the domain, rendered in EventCatalog
name: PaymentMethods
# Version of the domain
version: 0.0.1
# Short summary of your domain
summary: |
Domain that contains payment methods related information
# Optional services. Groups services into this domain.
services:
- id: EMO
version: 1.0.0
# Optional badges, rendered to UI by EventCatalog
badges:
- content: New domain
backgroundColor: blue
textColor: blue
---
## Overview
Domain that contains all services that are related to the payment methods domain within FakeCompany.
---
# id of your domain, used for slugs and references in EventCatalog.
id: PaymentProcessing
# Display name of the domain, rendered in EventCatalog
name: PaymentProcessing
# Version of the domain
version: 1.0.0
# Short summary of your domain
summary: |
Domain that contains payment processing related information
# Optional services. Groups services into this domain.
services:
- id: notification
version: 1.0.0
- id: pricing
version: 1.0.0
- id: processing
version: 1.0.0
- id: subscription
version: 1.0.0
# Optional badges, rendered to UI by EventCatalog
badges:
- content: PaymentProcessing
backgroundColor: blue
textColor: blue
---
## Overview
Domain that contains all services that are related to the payment processing domain within FakeCompany.
---
# id of your domain, used for slugs and references in EventCatalog.
id: relay
# Display name of the domain, rendered in EventCatalog
name: Relay
# Version of the domain
version: 2.0.0
# Short summary of your domain
summary: |
Domain that contains the Relay services available group wide
# Optional services. Groups services into this domain.
services:
- id: relay-notification
version: 2.0.0
- id: relay-merchant
version: 2.0.0
- id: relay-apm-processing
version: 2.0.0
- id: relay-enrollment
version: 2.0.0
# Optional badges, rendered to UI by EventCatalog
badges:
- content: Relay
backgroundColor: blue
textColor: blue
---
## Overview
Relay is meant to serve as a payment methods hub at group level
## Bounded Context
## Components Diagram
```mermaid
graph TD
PSP[PSP]
Notifications[Notifications]
Merchant[Merchant]
Enrollment[Enrollment]
Processing[Processing]
APM[APM]
PSP -->|gRPC| Merchant
PSP -->|gRPC| Notifications
PSP -->|gRPC| Enrollment
PSP -->|gRPC| Processing
Notifications -->|HTTPS| PSP
Enrollment -->|specific protocol| APM
Processing -->|specific protocol| APM
Enrollment -->|GET| Merchant
```
## Enroll Merchant (sequence diagram)
```mermaid
sequenceDiagram
participant PSP
participant RelayMerchant
participant RelayEnrollment
participant APM
participant RelayNotification
PSP->>RelayMerchant: Create Merchant
RelayMerchant-->>PSP: Returns Merchant ID
PSP->>RelayEnrollment: Enroll Merchant
RelayEnrollment-->>RelayMerchant: Get Merchant Details
RelayEnrollment->>APM: Onboard Merchant
APM-->>RelayEnrollment: Returns Onboarding Status
RelayEnrollment-->>PSP: Returns Payment Method Configuration ID
RelayEnrollment-->>RelayNotification: Emit Event
RelayNotification->>PSP: Send Webhook
```
## Flows
### Payment Flow
Documented flow when a payment is executed with Relay
---
id: ShopifyApp
name: ShopifyApp
version: 0.0.1
summary: |
Domain that contains Shopify app related information
owners:
- easy-connect
services:
- id: ShopifyAdminPanel
- id: ShopifyCheckoutPage
- id: ShopifyWebhookEndpoint
---
## Overview
Ecommerce domain contains all ecommerce related information for Shopware Plugin.
---
id: ShopwarePlugin
name: ShopwarePlugin
version: 0.0.1
summary: |
Domain that contains Shopware plugin related information
owners:
- easy-connect
services:
- id: ShopwareAdmin
- id: ShopwareCheckoutPage
- id: ShopwareWebhookEndpoint
---
## Overview
Ecommerce domain contains all ecommerce related information for Shopware Plugin.
---
# id of your domain, used for slugs and references in EventCatalog.
id: VAS
# Display name of the domain, rendered in EventCatalog
name: VAS
# Version of the domain
version: 0.0.1
# Short summary of your domain
summary: |
Domain that contains value-added services related information
# Optional services. Groups services into this domain.
services:
- id: EMO
version: 1.0.0
# Optional badges, rendered to UI by EventCatalog
badges:
- content: New domain
backgroundColor: blue
textColor: blue
---
## Overview
Domain that contains all services that are related to the value-added services domain within FakeCompany.
---
id: easy-checkout
name: Checkout
summary: Easy Checkout team responsible for the Checkout service area.
members:
- shakil-ahmad
- adam-landstrom
- ammar-zainee
- gurunn-gotteberg
- dogukan-demir
- piotr-leszczynski
- blazej-gerlowski
- marcin-knapik
- asger-hansen
- dariusz-gawron
- mateusz-grabowski
---
## Overview
Team information sourced from the Easy Checkout & Processing Confluence page, updated March 17.
## Members
| Name | Role | Location |
| --- | --- | --- |
| Shakil Ahmad | Team Manager | Oslo, Norway |
| Adam Landstrom | Product Manager | Copenhagen, Denmark |
| Ammar Zainee | System Architect | Oslo, Norway |
| Gurunn Gotteberg | Business Analyst | Copenhagen, Denmark |
| Dogukan Demir | BE Developer | Copenhagen, Denmark |
| Piotr Leszczynski | FE Developer | Katowice, Poland |
| Blazej Gerlowski | BE Developer | Katowice, Poland |
| Marcin Knapik | Cloud Engineer | Katowice, Poland |
| Asger Hansen | FE Developer | Copenhagen, Denmark |
| Dariusz Gawron | BE Developer | Katowice, Poland |
| Mateusz Grabowski | FE Developer | Katowice, Poland |
---
id: easy-collecting
name: The Relay Collecting Team
summary: The Relay Collecting Team
members: []
---
The Relay Collecting Team
---
id: easy-connect
name: Easy Connect
summary: Easy Connect / Integrations team area.
members: []
---
## Overview
Team area sourced from the Easy Connect (Integrations) Confluence page, published February 8, 2023.
## Related Topics
- Integration Services team
- R09 - Integration & APIs
- Network Tools
- External/Internal SPOC for Easy Integration Testing
- Data Sources & Acquisition
---
id: easy-optin
name: Signup Team
summary: Team responsible for Signup and related onboarding collection services.
members:
- jakub-polomsky
- michal-grodecki
- marcin-grzywacz
- michal-lukasz-kubica
- piotr-stepaniak
- przemyslaw-trabuc
- przemyslaw-zawadzki
- mateusz-janiak
- filip-pietryga
- szymon-wasiak
- panoreja-buklevska
---
## Overview
Team information sourced from the Signup Team Confluence page, updated November 22, 2023.
## Roles
| Role | Name | Backup / substitute | Contact point for |
| --- | --- | --- | --- |
| Development Manager | Jakub Polomsky | | |
| Product Owner | | | |
| Technical Product Owner | Michal Grodecki | | |
| Site Reliability Engineer | Marcin Grzywacz | | Back End Developer |
| Quality Assurance Engineer | Michal Lukasz Kubica | | |
| Architect | Piotr Stepaniak | | Site Reliability Engineer |
| Front End Developer | Przemyslaw Trabuc | | |
| Back End Developer | Przemyslaw Zawadzki | | |
| Front End Developer | Mateusz Janiak | | |
| Back End Developer | Filip Pietryga | | |
| Back End Developer | Szymon Wasiak | | |
| Scrum Master | Panoreja Buklevska (Nora) | Michal Grodecki | |
---
id: easy-portal
name: Easy Portal
summary: Easy Portal team area.
members: []
---
## Overview
Team area sourced from the Easy Portal Confluence page, published June 29, 2022.
## Related Topics
- Easy Portal cloud-based solution transformation
- Easy Portal 2025 achievements
- Easy Portal 2026 executive overview
- Portal metrics
- Portal exit plan
- Portal on-call guards
---
id: easy-processing
name: Processing
summary: Easy Processing team responsible for the Processing service area.
members:
- shakil-ahmad
- adam-landstrom
- gurunn-gotteberg
- alexander-wichmann
- ammar-zainee
- sebastian-gandso
- ahmed-zaher
- eleni-anna-markou
- ivan-petrov
- ivona-jovanovic
- krzysztof-gwozdz
- krzysztof-klein
- abdulrashid-masab-mohammed
- weronika-ziemianek
---
## Overview
Team information sourced from the Easy Checkout & Processing Confluence page, updated March 17.
## Members
| Name | Role | Location |
| --- | --- | --- |
| Shakil Ahmad | Team Manager | Oslo, Norway |
| Adam Landstrom | Product Manager | Copenhagen, Denmark |
| Gurunn Gotteberg | Business Analyst | Copenhagen, Denmark |
| Alexander Wichmann | BE Developer | Copenhagen, Denmark |
| Ammar Zainee | System Architect | Oslo, Norway |
| Sebastian Gandso | Cloud Engineer | Copenhagen, Denmark |
| Ahmed Zaher | BE Developer | Copenhagen, Denmark |
| Eleni-Anna Markou | BE Developer | Copenhagen, Denmark |
| Ivan Petrov | BE Developer | Oslo, Norway |
| Ivona Jovanovic | BE Developer | Copenhagen, Denmark |
| Krzysztof Gwozdz | BE Developer | Katowice, Poland |
| Krzysztof Klein | BE Developer | Katowice, Poland |
| Abdulrashid Mas'Ab Mohammed | BE Developer | Copenhagen, Denmark |
| Weronika Ziemianek | BE Developer | Katowice, Poland |
---
id: easy-sap
name: The SAP Team
summary: The SAP Team
members: []
---
The SAP Team
---
id: Merchant Integration Team
name: Merchant Integration Team
summary: Placeholder owner entry for Merchant Integration resources.
---
## Overview
This entry resolves existing owner references in the catalog.
The richer team profile should be populated from the relevant Confluence team page when available.
---
id: Merchant Onboarding Team
name: Merchant Onboarding Team
summary: Placeholder owner entry for Merchant Onboarding resources.
---
## Overview
This entry resolves existing owner references in the catalog.
The richer team profile should be populated from the relevant Confluence team page when available.
---
id: relay-apm
name: The Relay APM Team
summary: The Relay APM Team
members: []
---
The Relay APM Team
---
id: abdulrashid-masab-mohammed
name: Abdulrashid Mas'Ab Mohammed
role: BE Developer
associatedTeams:
- easy-processing
---
Team member sourced from the Easy Checkout & Processing Confluence page.
---
id: adam-landstrom
name: Adam Landstrom
role: Product Manager
associatedTeams:
- easy-checkout
- easy-processing
---
Team member sourced from the Easy Checkout & Processing Confluence page.
---
id: ahmed-zaher
name: Ahmed Zaher
role: BE Developer
associatedTeams:
- easy-processing
---
Team member sourced from the Easy Checkout & Processing Confluence page.
---
id: alexander-wichmann
name: Alexander Wichmann
role: BE Developer
associatedTeams:
- easy-processing
---
Team member sourced from the Easy Checkout & Processing Confluence page.
---
id: ammar-zainee
name: Ammar Zainee
role: System Architect
associatedTeams:
- easy-checkout
- easy-processing
---
Team member sourced from the Easy Checkout & Processing Confluence page.
---
id: asger-hansen
name: Asger Hansen
role: FE Developer
associatedTeams:
- easy-checkout
---
Team member sourced from the Easy Checkout & Processing Confluence page.
---
id: blazej-gerlowski
name: Blazej Gerlowski
role: BE Developer
associatedTeams:
- easy-checkout
---
Team member sourced from the Easy Checkout & Processing Confluence page.
---
id: dariusz-gawron
name: Dariusz Gawron
role: BE Developer
associatedTeams:
- easy-checkout
---
Team member sourced from the Easy Checkout & Processing Confluence page.
---
id: dogukan-demir
name: Dogukan Demir
role: BE Developer
associatedTeams:
- easy-checkout
---
Team member sourced from the Easy Checkout & Processing Confluence page.
---
id: eleni-anna-markou
name: Eleni-Anna Markou
role: BE Developer
associatedTeams:
- easy-processing
---
Team member sourced from the Easy Checkout & Processing Confluence page.
---
id: filip-pietryga
name: Filip Pietryga
role: Back End Developer
associatedTeams:
- easy-optin
---
Team member sourced from the Signup Team Confluence page.
---
id: gurunn-gotteberg
name: Gurunn Gotteberg
role: Business Analyst
associatedTeams:
- easy-checkout
- easy-processing
---
Team member sourced from the Easy Checkout & Processing Confluence page.
---
id: ivan-petrov
name: Ivan Petrov
role: BE Developer
associatedTeams:
- easy-processing
---
Team member sourced from the Easy Checkout & Processing Confluence page.
---
id: ivona-jovanovic
name: Ivona Jovanovic
role: BE Developer
associatedTeams:
- easy-processing
---
Team member sourced from the Easy Checkout & Processing Confluence page.
---
id: jakub-polomsky
name: Jakub Polomsky
role: Development Manager
associatedTeams:
- easy-optin
---
Team member sourced from the Signup Team Confluence page.
---
id: krzysztof-gwozdz
name: Krzysztof Gwozdz
role: BE Developer
associatedTeams:
- easy-processing
---
Team member sourced from the Easy Checkout & Processing Confluence page.
---
id: krzysztof-klein
name: Krzysztof Klein
role: BE Developer
associatedTeams:
- easy-processing
---
Team member sourced from the Easy Checkout & Processing Confluence page.
---
id: marcin-grzywacz
name: Marcin Grzywacz
role: Site Reliability Engineer
associatedTeams:
- easy-optin
---
Team member sourced from the Signup Team Confluence page.
---
id: marcin-knapik
name: Marcin Knapik
role: Cloud Engineer
associatedTeams:
- easy-checkout
---
Team member sourced from the Easy Checkout & Processing Confluence page.
---
id: mateusz-grabowski
name: Mateusz Grabowski
role: FE Developer
associatedTeams:
- easy-checkout
---
Team member sourced from the Easy Checkout & Processing Confluence page.
---
id: mateusz-janiak
name: Mateusz Janiak
role: Front End Developer
associatedTeams:
- easy-optin
---
Team member sourced from the Signup Team Confluence page.
---
id: michal-grodecki
name: Michal Grodecki
role: Technical Product Owner
associatedTeams:
- easy-optin
---
Team member sourced from the Signup Team Confluence page.
---
id: michal-lukasz-kubica
name: Michal Lukasz Kubica
role: Quality Assurance Engineer
associatedTeams:
- easy-optin
---
Team member sourced from the Signup Team Confluence page.
---
id: panoreja-buklevska
name: Panoreja Buklevska
role: Scrum Master
associatedTeams:
- easy-optin
---
Team member sourced from the Signup Team Confluence page.
---
id: piotr-leszczynski
name: Piotr Leszczynski
role: FE Developer
associatedTeams:
- easy-checkout
---
Team member sourced from the Easy Checkout & Processing Confluence page.
---
id: piotr-stepaniak
name: Piotr Stepaniak
role: Architect
associatedTeams:
- easy-optin
---
Team member sourced from the Signup Team Confluence page.
---
id: przemyslaw-trabuc
name: Przemyslaw Trabuc
role: Front End Developer
associatedTeams:
- easy-optin
---
Team member sourced from the Signup Team Confluence page.
---
id: przemyslaw-zawadzki
name: Przemyslaw Zawadzki
role: Back End Developer
associatedTeams:
- easy-optin
---
Team member sourced from the Signup Team Confluence page.
---
id: sebastian-gandso
name: Sebastian Gandso
role: Cloud Engineer
associatedTeams:
- easy-processing
---
Team member sourced from the Easy Checkout & Processing Confluence page.
---
id: shakil-ahmad
name: Shakil Ahmad
role: Team Manager
associatedTeams:
- easy-checkout
- easy-processing
---
Team member sourced from the Easy Checkout & Processing Confluence page.
---
id: szymon-wasiak
name: Szymon Wasiak
role: Back End Developer
associatedTeams:
- easy-optin
---
Team member sourced from the Signup Team Confluence page.
---
id: weronika-ziemianek
name: Weronika Ziemianek
role: BE Developer
associatedTeams:
- easy-processing
---
Team member sourced from the Easy Checkout & Processing Confluence page.
---
name: AccountDefinition
id: account-definition-entity
version: 1.0.0
summary: Defines individual account types within a chart of accounts
schemaPath: "./schema.json"
badges:
- content: Java
backgroundColor: blue
textColor: white
- content: Configuration
backgroundColor: green
textColor: white
owners:
- easy-collecting
x-relationships:
- id: chart-of-accounts-entity
relationship: belongsTo
description: Belongs to a specific chart of accounts
- id: posting-rule-entity
relationship: referencedBy
description: Referenced by posting rules for transaction processing
- id: merchant-account-entity
relationship: usedBy
description: Used by merchant accounts for account type definitions
- id: AddAccountDefinitionCommand
relationship: createdBy
description: Created by AddAccountDefinitionCommand
- id: AccountDefinitionAddedEvent
relationship: emits
description: Emits AccountDefinitionAddedEvent when added to merchant account
properties:
- name: id
type: long
description: Unique identifier for the account definition (primary key)
required: true
example: 15652
- name: name
type: string
description: Descriptive name of the account definition
required: true
example: "MerchantDebt"
- name: type
type: integer
description: Integer code representing the account category (1xxx=Assets, 2xxx=Liabilities, etc.)
required: true
example: 250800
- name: chart_of_accounts_fk
type: long
description: Foreign key reference to the parent chart of accounts
required: false
example: 15655
---
# AccountDefinition Entity
The AccountDefinition entity defines individual account types within a chart of accounts. Each definition specifies the account's name, type, and relationship to the parent chart of accounts.
## Properties
## Schema
## Account Types
Account definitions are categorized by integer type codes that correspond to standard accounting categories:
- **Type 1xxx**: Asset accounts (resources owned by the business)
- **Type 2xxx**: Liability accounts (debts and obligations)
- **Type 3xxx**: Equity accounts (owner's equity and retained earnings)
- **Type 4xxx**: Revenue accounts (income from business operations)
- **Type 5xxx**: Expense accounts (costs incurred in operations)
## Usage in System
AccountDefinitions are used by:
- **PostingRules**: Reference specific account definitions for transaction postings
- **MerchantAccount**: Use definitions to create and manage account balances
- **ChartOfAccounts**: Organize and group related account definitions
## Validation Rules
- Account definition names must be unique within a chart of accounts
- Type must be a valid integer representing the account category
- Must be associated with a valid chart of accounts
- Cannot be deleted if referenced by active posting rules
## Raw Schema:./schema.json
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"title": "AccountDefinition",
"description": "Defines individual account types within a chart of accounts",
"properties": {
"id": {
"type": "integer",
"description": "Unique identifier for the account definition (primary key)",
"example": 15652
},
"name": {
"type": "string",
"description": "Descriptive name of the account definition",
"example": "MerchantDebt"
},
"type": {
"type": "integer",
"description": "Integer code representing the account category (1xxx=Assets, 2xxx=Liabilities, etc.)",
"example": 250800
},
"chart_of_accounts_fk": {
"type": "integer",
"description": "Foreign key reference to the parent chart of accounts",
"example": 15655
}
},
"required": ["id", "name", "type"],
"additionalProperties": false
}
---
name: BookKeepingConfig
id: bookkeeping-config-entity
version: 1.0.0
summary: Configuration entity that defines bookkeeping rules and transaction definitions for accounting operations
schemaPath: "./schema.json"
badges:
- content: Java
backgroundColor: blue
textColor: white
- content: Configuration
backgroundColor: green
textColor: white
owners:
- easy-collecting
x-relationships:
- id: chart-of-accounts-entity
relationship: references
description: References chart of accounts for account structure validation
- id: transaction-definition-entity
relationship: contains
description: Contains multiple transaction definitions for different operation types
- id: merchant-account-entity
relationship: configures
description: Configures how merchant accounts process transactions
- id: CreateAccountCommand
relationship: usedBy
description: Used by CreateAccountCommand to configure new merchant accounts
- id: AccountCreatedEvent
relationship: appliedIn
description: Applied in AccountCreatedEvent to establish account configuration
properties:
- name: id
type: integer
description: Unique identifier for the bookkeeping configuration (auto-generated primary key)
required: true
example: 15656
- name: name
type: string
description: Descriptive name of the configuration
required: true
example: "easy/merchant"
- name: chart_of_accounts_fk
type: integer
description: Foreign key reference to the chart of accounts
required: false
example: 15655
---
# BookKeepingConfig Entity
The BookKeepingConfig entity defines the configuration and rules for bookkeeping operations within the accounting system. It establishes the relationship between transaction types and their corresponding posting rules, ensuring consistent financial recording across all operations.
## Properties
## Schema
## Configuration Structure
The bookkeeping configuration organizes financial rules through:
- **Transaction Definitions**: Specific transaction types and their processing rules
- **Posting Rules**: Instructions for how transactions affect different accounts
- **Account Mappings**: Relationships between transaction types and target accounts
- **Validation Rules**: Business rules that must be satisfied for transaction processing
## Supported Transaction Types
Common transaction types managed by bookkeeping configurations include:
- **CHARGE**: Customer payment transactions
- **REFUND**: Money returned to customers
- **FEE_ADDED**: Additional fees applied to transactions
- **CHARGEBACK**: Disputed transaction reversals
- **TOPUP**: Account balance increases
- **REMITTANCE**: Settlement payments to merchants
- **ADJUSTMENT_CREDIT/DEBIT**: Manual balance adjustments
- **SCHEME_FEE**: Payment scheme processing fees
## Integration Points
The BookKeepingConfig is used by:
- **AccountingConfigService**: To retrieve posting rules for transaction processing
- **MerchantAccount Aggregate**: To validate and process financial transactions
- **Admin Backend**: For configuration management and updates
- **Transaction Processing**: To determine correct account postings
## Validation and Compliance
- Ensures double-entry bookkeeping principles are maintained
- Validates that all transaction types have corresponding posting rules
- Enforces business rules specific to different merchant types or regions
- Supports currency-specific configurations
## Configuration Management
- Managed through the admin backend interface
- Supports versioning and change tracking
- Allows for environment-specific configurations
- Enables real-time updates without service restarts
## Raw Schema:./schema.json
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"title": "BookKeepingConfig",
"description": "Configuration entity that defines bookkeeping rules and transaction definitions for accounting operations",
"properties": {
"id": {
"type": "integer",
"description": "Unique identifier for the bookkeeping configuration (auto-generated primary key)",
"example": 15656
},
"name": {
"type": "string",
"description": "Descriptive name of the configuration",
"example": "easy/merchant"
},
"chart_of_accounts_fk": {
"type": "integer",
"description": "Foreign key reference to the chart of accounts",
"example": 15655
}
},
"required": ["id", "name"],
"additionalProperties": false
}
---
name: ChartOfAccounts
id: chart-of-accounts-entity
version: 1.0.0
summary: Defines the structure and organization of accounts used in the accounting system
schemaPath: "./schema.json"
badges:
- content: Java
backgroundColor: blue
textColor: white
- content: Configuration
backgroundColor: green
textColor: white
owners:
- easy-collecting
x-relationships:
- id: merchant-account-entity
relationship: usedBy
description: Used by merchant accounts to define available account types
- id: bookkeeping-config-entity
relationship: referencedBy
description: Referenced by bookkeeping configurations for account validation
- id: account-definition-entity
relationship: contains
description: Contains multiple account definitions for different account types
- id: posting-rule-entity
relationship: providesAccountsFor
description: Provides account definitions that are referenced by posting rules
- id: CreateAccountCommand
relationship: usedBy
description: Used by CreateAccountCommand to validate account structure
- id: AccountCreatedEvent
relationship: appliedIn
description: Applied in AccountCreatedEvent to establish account structure
properties:
- name: id
type: integer
description: Unique identifier for the chart of accounts (auto-generated primary key)
required: true
example: 15655
- name: name
type: string
description: Descriptive name of the chart of accounts
required: true
example: "easy/merchant"
- name: description
type: string
description: Optional description providing additional context
required: false
example: "Collecting merchant sub-ledger"
---
# ChartOfAccounts Entity
The ChartOfAccounts entity defines the organizational structure of accounts used within the accounting system. It serves as a blueprint for creating and managing different types of accounts across various ledgers and sub-ledgers.
## Properties
## Schema
## Account Organization
The chart of accounts organizes financial accounts into different categories based on accounting principles:
- **Asset Accounts** (1xxx): Resources owned by the business
- **Liability Accounts** (2xxx): Debts and obligations owed by the business
- **Equity Accounts** (3xxx): Owner's equity and retained earnings
- **Revenue Accounts** (4xxx): Income generated from business operations
- **Expense Accounts** (5xxx): Costs incurred in business operations
## Usage in Accounting Service
The ChartOfAccounts is used by the MerchantAccount aggregate to:
- Define available account types for new merchant accounts
- Validate account creation requests
- Ensure consistent account structure across different merchants
- Support account definition updates and modifications
## Configuration Management
Charts of accounts are typically configured in the admin backend and referenced by:
- Ledger hierarchies
- Sub-ledger configurations
- Bookkeeping configurations
- Transaction definitions
## Validation Rules
- Account IDs must be unique within a chart
- Account types must follow the standard numbering convention
- Names must be descriptive and non-empty
- Each account must have a valid type classification
## Raw Schema:./schema.json
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"title": "ChartOfAccounts",
"description": "Defines the structure and organization of accounts used in the accounting system",
"properties": {
"id": {
"type": "integer",
"description": "Unique identifier for the chart of accounts (auto-generated primary key)",
"example": 15655
},
"name": {
"type": "string",
"description": "Descriptive name of the chart of accounts",
"example": "easy/merchant"
},
"description": {
"type": "string",
"description": "Optional description providing additional context",
"example": "Collecting merchant sub-ledger"
}
},
"required": ["id", "name"],
"additionalProperties": false
}
---
name: MerchantAccount
id: merchant-account-entity
version: 1.0.0
summary: Represents a merchant account aggregate that manages financial transactions and balances for a specific merchant
schemaPath: "./schema.json"
badges:
- content: Java
backgroundColor: blue
textColor: white
- content: Aggregate
backgroundColor: orange
textColor: white
- content: Event Sourced
backgroundColor: purple
textColor: white
owners:
- easy-collecting
x-relationships:
- id: chart-of-accounts-entity
relationship: uses
description: Uses chart of accounts to define available account types
- id: bookkeeping-config-entity
relationship: configuredBy
description: Configured by bookkeeping configuration for transaction processing
- id: transaction-definition-entity
relationship: processes
description: Processes transactions according to transaction definitions
- id: posting-rule-entity
relationship: appliesRules
description: Applies posting rules for double-entry bookkeeping
- id: platform-entity
relationship: associatedWith
description: Associated with platforms for payment processing
- id: CreateAccountCommand
relationship: createdBy
description: Created by CreateAccountCommand
- id: AccountCreatedEvent
relationship: emits
description: Emits AccountCreatedEvent when created
- id: AddAccountDefinitionCommand
relationship: modifiedBy
description: Modified by AddAccountDefinitionCommand to add account definitions
- id: AccountDefinitionAddedEvent
relationship: emits
description: Emits AccountDefinitionAddedEvent when account definition is added
- id: PostTransactionCommand
relationship: processedBy
description: Processes transactions via PostTransactionCommand
- id: TransactionPostedEvent
relationship: emits
description: Emits TransactionPostedEvent when transaction is posted
- id: ReservationCommand
relationship: processedBy
description: Processes amount reservations via ReservationCommand
- id: AmountReservedEvent
relationship: emits
description: Emits AmountReservedEvent when amount is reserved
- id: ReleaseReservationCommand
relationship: processedBy
description: Processes reservation releases via ReleaseReservationCommand
- id: ReservationReleasedEvent
relationship: emits
description: Emits ReservationReleasedEvent when reservation is released
- id: UpdateLedgerIdCommand
relationship: modifiedBy
description: Modified by UpdateLedgerIdCommand to update ledger references
- id: LedgerIdUpdatedEvent
relationship: emits
description: Emits LedgerIdUpdatedEvent when ledger ID is updated
properties:
- name: id
type: uuid
description: Unique identifier for the account (UUID format)
required: true
example: "550e8400-e29b-41d4-a716-446655440000"
- name: owner_id
type: uuid
description: Foreign key reference to the account owner
required: true
example: "660e8400-e29b-41d4-a716-446655440001"
- name: currency
type: string
description: The currency in which the account operates (ISO 4217, 3 characters)
required: true
example: "EUR"
- name: delay
type: decimal
description: Delay configuration for the account (numeric 2,0)
required: true
example: 2
- name: country
type: string
description: Country code where the account operates (ISO 3166, 3 characters)
required: true
example: "NOR"
- name: iban
type: string
description: International Bank Account Number (max 34 characters)
required: true
example: "NO9386011117947"
- name: bic
type: string
description: Bank Identifier Code (max 34 characters)
required: true
example: "DNBANOKKXXX"
---
# MerchantAccount Entity
The MerchantAccount entity represents an aggregate that manages all financial transactions and balance accounts for a specific merchant. It implements event sourcing and command handling patterns to ensure data consistency and auditability.
Merchant may have multiple merchantAccounts, one per currency.
## Properties
## Schema
## Managed Account Types
The MerchantAccount aggregate manages multiple types of balance accounts:
- **MerchantDebt**: Tracks outstanding debt to the merchant
- **ClientFunds**: Manages client funds held in custody
- **PSPReceivable**: Tracks amounts receivable from Payment Service Providers
- **Escrow**: Manages escrowed funds
- **Caps**: Handles transaction caps and limits
- **Revenue**: Tracks revenue generated
## Supported Operations
- Account creation and management
- Transaction posting with double-entry bookkeeping
- Amount reservation and release
- Balance notifications and triggers
- Pending refund eligibility tracking and authorization
- Ledger updates and account definition management
## Event Sourcing
The MerchantAccount aggregate uses event sourcing to maintain its state through a series of events:
- AccountCreatedEvent
- AccountDefinitionAddedEvent
- LedgerIdUpdatedEvent
- TransactionPostedEvent
- AmountReservedEvent
- ReservationReleasedEvent
- UpdateEligiblePendingRefundsArmedEvent
- RemovePendingRefundEvent
- ScheduleAuthorizeForEligibleRefundsEvent
- BalanceUpdatedEvent
## Business Rules
- Maintains double-entry bookkeeping principles
- Enforces sufficient balance checks for liability accounts
- Supports currency validation
- Implements transaction type validation
- Manages remittance order dates and due dates
- Enables automatic refund authorization based on available balance
- Tracks eligible pending refunds using FIFO approach
## Raw Schema:./schema.json
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"title": "MerchantAccount",
"description": "Represents a merchant account aggregate that manages financial transactions and balances for a specific merchant",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "Unique identifier for the account (UUID format)",
"example": "550e8400-e29b-41d4-a716-446655440000"
},
"owner_id": {
"type": "string",
"format": "uuid",
"description": "Foreign key reference to the account owner",
"example": "660e8400-e29b-41d4-a716-446655440001"
},
"currency": {
"type": "string",
"pattern": "^[A-Z]{3}$",
"description": "The currency in which the account operates (ISO 4217, 3 characters)",
"example": "NOK"
},
"delay": {
"type": "integer",
"description": "Delay configuration for the account",
"example": 2
},
"country": {
"type": "string",
"pattern": "^[A-Z]{3}$",
"description": "Country code where the account operates (ISO 3166, 3 characters)",
"example": "NOR"
},
"iban": {
"type": "string",
"maxLength": 34,
"description": "International Bank Account Number (max 34 characters)",
"example": "NO9386011117947"
},
"bic": {
"type": "string",
"maxLength": 34,
"description": "Bank Identifier Code (max 34 characters)",
"example": "DNBANOKKXXX"
}
},
"required": ["id", "owner_id", "currency", "delay", "country", "iban", "bic"],
"additionalProperties": false
}
---
name: Platform
id: platform-entity
version: 1.0.0
summary: Platform entity representing different payment platforms in the collecting system
schemaPath: "./schema.json"
badges:
- content: Entity
backgroundColor: purple
textColor: white
- content: Domain Model
backgroundColor: orange
textColor: white
- content: Java
backgroundColor: blue
textColor: white
owners:
- easy-collecting
x-entities:
- id: merchant-account-entity
x-commands:
- id: PlatformCreateCommand
x-events:
- id: PlatformCreatedEvent
properties:
- name: platform_id
type: string
description: Unique identifier for the platform (primary key)
required: true
example: "o7km365nhsqp5glqbi746bj0l0u9ihc3"
- name: platform_name
type: string
description: Name of the payment platform
required: true
example: "EASY"
- name: version
type: integer
description: Version number of the platform configuration
required: false
example: 0
- name: account_holder_id
type: string
description: Identifier of the account holder associated with this platform
required: true
example: "5861813801100"
---
# Platform Entity
The Platform entity represents different payment platforms supported by the collecting system such as EASY, XPAY, NPG, and PAYTRAIL.
## Properties
## Schema
## Overview
The Platform entity is a core domain model that encapsulates information about different payment platforms. It contains platform-specific configuration and behavior that drives how transactions are processed, fees are calculated, and payouts are handled.
## Supported Platforms
- **EASY**: Easy payment platform
- **XPAY**: XPAY payment gateway
- **NPG**: Next Payment Gateway
- **PAYTRAIL**: Paytrail payment service
## Business Rules
- Platform configurations determine transaction processing behavior
- Each platform may have specific fee structures and settlement rules
- Platform settings affect merchant account configurations and operations
## Raw Schema:./schema.json
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"title": "Platform",
"description": "Platform entity representing different payment platforms in the collecting system",
"properties": {
"platform_id": {
"type": "string",
"description": "Unique identifier for the platform (primary key)",
"example": "o7km365nhsqp5glqbi746bj0l0u9ihc3"
},
"platform_name": {
"type": "string",
"description": "Name of the payment platform",
"example": "EASY"
},
"version": {
"type": "integer",
"description": "Version number of the platform configuration",
"example": 1
},
"account_holder_id": {
"type": "string",
"description": "Identifier of the account holder associated with this platform",
"example": "5861813801100"
}
},
"required": ["platform_id", "platform_name", "account_holder_id"],
"additionalProperties": false
}
---
name: PostingRule
id: posting-rule-entity
version: 1.0.0
summary: Defines the rules for posting transactions to specific accounts with appropriate signs (debit/credit)
schemaPath: "./schema.json"
badges:
- content: Java
backgroundColor: blue
textColor: white
- content: Business Rule
backgroundColor: red
textColor: white
owners:
- easy-collecting
x-relationships:
- id: transaction-definition-entity
relationship: belongsTo
description: Belongs to a specific transaction definition
- id: chart-of-accounts-entity
relationship: references
description: References account definitions from chart of accounts
- id: merchant-account-entity
relationship: appliedBy
description: Applied by merchant accounts during transaction processing
- id: account-definition-entity
relationship: references
description: References specific account definitions for transaction postings
- id: PostTransactionCommand
relationship: appliedBy
description: Applied during transaction posting via PostTransactionCommand
- id: TransactionPostedEvent
relationship: usedIn
description: Used to determine account postings in TransactionPostedEvent
properties:
- name: id
type: integer
description: Unique identifier for the posting rule (auto-generated primary key)
required: true
example: 15827
- name: sign
type: string
description: Indicates whether the posting is POSITIVE (debit) or NEGATIVE (credit)
required: false
example: "NEGATIVE"
- name: account_definition_fk
type: integer
description: Foreign key reference to the target account definition
required: false
example: 15652
- name: transaction_definition_fk
type: integer
description: Foreign key reference to the parent transaction definition
required: false
example: 15825
---
# PostingRule Entity
The PostingRule entity defines the specific rules for how financial transactions are posted to accounts within the double-entry bookkeeping system. Each posting rule specifies which account should be affected and whether the posting should be a debit (positive) or credit (negative) entry.
## Properties
## Schema
## Double-Entry Bookkeeping
PostingRules enforce the fundamental principle of double-entry bookkeeping where:
- Every transaction affects at least two accounts
- Total debits must equal total credits
- Account balances are maintained accurately through proper sign application
## Sign Convention
The sign attribute determines the impact on account balances:
- **POSITIVE**: Increases asset and expense accounts, decreases liability, equity, and revenue accounts
- **NEGATIVE**: Decreases asset and expense accounts, increases liability, equity, and revenue accounts
## Account Type Interactions
Different account types respond differently to positive and negative postings:
### Asset Accounts (1xxx)
- Positive postings increase the asset value
- Negative postings decrease the asset value
### Liability Accounts (2xxx)
- Positive postings decrease the liability (payment toward debt)
- Negative postings increase the liability (new debt)
### Revenue Accounts (4xxx)
- Positive postings decrease revenue (reversals)
- Negative postings increase revenue (new income)
### Expense Accounts (5xxx)
- Positive postings increase expenses
- Negative postings decrease expenses (reversals)
## Usage in Transaction Processing
When a transaction is processed:
1. The system retrieves all posting rules for the transaction type
2. For each rule, it applies the specified amount with the appropriate sign
3. The posting is made to the target account specified in the rule
4. Balance validation ensures the transaction maintains accounting equation balance
## Business Examples
### Charge Transaction
- **Rule 1**: Post NEGATIVE to MerchantDebt (increases liability)
- **Rule 2**: Post POSITIVE to PSPReceivable (increases asset)
### Refund Transaction
- **Rule 1**: Post POSITIVE to MerchantDebt (decreases liability)
- **Rule 2**: Post NEGATIVE to PSPReceivable (decreases asset)
## Validation Rules
- Each posting rule must reference a valid account definition
- Sign must be either POSITIVE or NEGATIVE
- Rules must be associated with a valid transaction definition
- Account types must be compatible with the intended posting direction
## Raw Schema:./schema.json
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"title": "PostingRule",
"description": "Defines the rules for posting transactions to specific accounts with appropriate signs (debit/credit)",
"properties": {
"id": {
"type": "integer",
"description": "Unique identifier for the posting rule (auto-generated primary key)",
"example": 15827
},
"sign": {
"type": "string",
"enum": ["POSITIVE", "NEGATIVE"],
"description": "Indicates whether the posting is POSITIVE (debit) or NEGATIVE (credit)",
"example": "NEGATIVE"
},
"account_definition_fk": {
"type": "integer",
"description": "Foreign key reference to the target account definition",
"example": 15652
},
"transaction_definition_fk": {
"type": "integer",
"description": "Foreign key reference to the parent transaction definition",
"example": 15825
}
},
"required": ["id"],
"additionalProperties": false
}
---
name: TransactionDefinition
id: transaction-definition-entity
version: 1.0.0
summary: Defines the structure and posting rules for specific transaction types in the accounting system
schemaPath: "./schema.json"
badges:
- content: Java
backgroundColor: blue
textColor: white
- content: Configuration
backgroundColor: green
textColor: white
owners:
- easy-collecting
x-relationships:
- id: bookkeeping-config-entity
relationship: belongsTo
description: Belongs to a specific bookkeeping configuration
- id: posting-rule-entity
relationship: contains
description: Contains multiple posting rules that define account impacts
- id: merchant-account-entity
relationship: processedBy
description: Processed by merchant accounts during transaction handling
- id: PostTransactionCommand
relationship: usedBy
description: Used by PostTransactionCommand to determine posting rules
- id: TransactionPostedEvent
relationship: appliedIn
description: Applied in TransactionPostedEvent to execute account postings
properties:
- name: id
type: integer
description: Unique identifier for the transaction definition (auto-generated primary key)
required: true
example: 15825
- name: name
type: string
description: Name of the transaction type (e.g., "CHARGE", "REFUND", "FEE_ADDED")
required: true
example: "CHARGE"
- name: bookkeeping_config_fk
type: integer
description: Foreign key reference to the parent bookkeeping configuration
required: false
example: 15656
---
# TransactionDefinition Entity
The TransactionDefinition entity defines the structure and behavior of specific transaction types within the accounting system. Each transaction definition contains the posting rules that determine how transactions of that type affect various accounts in the double-entry bookkeeping system.
## Properties
## Schema
## Transaction Type Categories
Transaction definitions cover various categories of financial operations:
### Payment Operations
- **CHARGE**: Customer payment processing
- **REFUND**: Return of funds to customers
- **FEE_ADDED**: Additional fees applied to transactions
### Risk Management
- **CHARGEBACK**: Disputed transaction reversals
- **CHARGEBACK_CREDIT**: Credits for resolved chargebacks
### Settlement Operations
- **REMITTANCE**: Settlement payments to merchants
- **RESERVE_REMITTANCE**: Holding funds before settlement
- **REVERSE_REMITTANCE**: Reversal of settlement payments
### Account Management
- **TOPUP**: Manual account balance increases
- **ADJUSTMENT_CREDIT**: Positive balance adjustments
- **ADJUSTMENT_DEBIT**: Negative balance adjustments
### Operational Fees
- **SCHEME_FEE**: Payment network processing fees
- **CAPS_REMITTANCE**: Capacity-based settlements
## Posting Rules Integration
Each transaction definition contains multiple posting rules that:
- Define which accounts are affected by the transaction
- Specify whether each posting is a debit (POSITIVE) or credit (NEGATIVE)
- Ensure the transaction maintains double-entry bookkeeping principles
- Support complex multi-account transactions
## Usage in Transaction Processing
When processing a transaction:
1. The system identifies the transaction type
2. Retrieves the corresponding transaction definition
3. Applies all associated posting rules
4. Validates that debits equal credits
5. Updates account balances accordingly
## Configuration Management
Transaction definitions are:
- Configured through the admin backend
- Associated with specific bookkeeping configurations
- Validated for completeness and accuracy
- Versioned to support changes over time
## Validation Rules
- Transaction name must be unique within a bookkeeping configuration
- Must have at least one posting rule defined
- Posting rules must balance (total debits = total credits)
- All referenced accounts must exist in the associated chart of accounts
## Business Impact
Proper transaction definition configuration ensures:
- Accurate financial reporting
- Compliance with accounting standards
- Consistent transaction processing
- Auditability of all financial operations
## Raw Schema:./schema.json
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"title": "TransactionDefinition",
"description": "Defines the structure and posting rules for specific transaction types in the accounting system",
"properties": {
"id": {
"type": "integer",
"description": "Unique identifier for the transaction definition (auto-generated primary key)",
"example": 15825
},
"name": {
"type": "string",
"enum": ["CHARGE", "REFUND", "FEE_ADDED", "CHARGEBACK", "CHARGEBACK_CREDIT", "REMITTANCE", "RESERVE_REMITTANCE", "REVERSE_REMITTANCE", "TOPUP", "ADJUSTMENT_CREDIT", "ADJUSTMENT_DEBIT", "SCHEME_FEE", "CAPS_REMITTANCE"],
"description": "Name of the transaction type",
"example": "CHARGE"
},
"bookkeeping_config_fk": {
"type": "integer",
"description": "Foreign key reference to the parent bookkeeping configuration",
"example": 15656
}
},
"required": ["id", "name"],
"additionalProperties": false
}
---
# id of your channel, used for slugs and references in EventCatalog.
id: grpc
# Display name of the Channel, rendered in EventCatalog
name: gRPC
# Version of the Channel
version: 1.70.1
# Short summary of your Channel
summary: |
gRPC (gRPC Remote Procedure Call) is a modern, high-performance framework that enables remote procedure calls using HTTP/2 and Protocol Buffers.
# Optional owners, references teams or users
owners:
- relay-apm
protocols:
- gRPC
x-tags:
- RPC
- Protobuf
---
### Overview
gRPC (gRPC Remote Procedure Call) is an open-source, high-performance, language-agnostic framework for remote procedure calls (RPC). It was developed by Google and is based on Protocol Buffers (protobufs) for efficient serialization.
---
# id of your channel, used for slugs and references in EventCatalog.
id: https
# Display name of the Channel, rendered in EventCatalog
name: HTTPS
# Version of the Channel
version: 1.2.0
# Short summary of your Channel
summary: |
Hypertext Transfer Protocol Secure is an extension of the Hypertext Transfer Protocol.
protocols:
- http
x-tags:
- REST
---
### Overview
Hypertext Transfer Protocol Secure is an extension of the Hypertext Transfer Protocol. It uses encryption for secure communication over a computer network, and is widely used on the Internet. In HTTPS, the communication protocol is encrypted using Transport Layer Security or, formerly, Secure Sockets Layer.
---
id: add-payment-method
name: add-payment-method
version: 1.0.0
summary: add-payment-method
steps: []
---
---
id: create-partner
name: create-partner
version: 1.0.0
summary: create-partner
steps: []
---
---
id: create-payment-method-in-live
name: create-payment-method-in-live
version: 1.0.0
summary: create-payment-method-in-live
steps: []
---
---
id: create-payment-methods-in-live2
name: create-payment-methods-in-live2
version: 1.0.0
summary: create-payment-methods-in-live2
steps: []
---
---
id: create-payment-methods-in-test
name: create-payment-methods-in-test
version: 1.0.0
summary: create-payment-methods-in-test
steps: []
---
---
id: create-user-v3
name: create-user-v3
version: 1.0.0
summary: create-user-v3
steps: []
---
---
id: deactivate-merchant
name: deactivate-merchant
version: 1.0.0
summary: deactivate-merchant
steps: []
---
---
id: deactivate-merchant-account
name: deactivate-merchant-account
version: 1.0.0
summary: deactivate-merchant-account
steps: []
---
---
id: disable-payment-method-in-live
name: disable-payment-method-in-live
version: 1.0.0
summary: disable-payment-method-in-live
steps: []
---
---
id: edit-configuration-in-live
name: edit-configuration-in-live
version: 1.0.0
summary: edit-configuration-in-live
steps: []
---
---
id: manually-add-payment-method
name: manually-add-payment-method
version: 1.0.0
summary: manually-add-payment-method
steps: []
---
---
id: merchant-activation-relay
name: merchant-activation-relay
version: 1.0.0
summary: merchant-activation-relay
steps: []
---
```mermaid
sequenceDiagram
participant EMO
participant CRM
participant Signup
participant MMS
participant Portal
participant Processing
participant Relay
Portal->>MMS: Create Merchant
MMS->>Portal: Merchant Created
MMS->>Signup: Merchant Created
MMS->>EMO: CreateCase
EMO->>CRM: Merchant Application Created
EMO->>Signup: Merchant Application Created
CRM->>MMS: Fetch merchant data?
Signup-->>CRM: Upload document
EMO->>CRM: Merchant Application Approved
EMO->>CRM: Risk score
EMO->>MMS: Merchant Application Approved
MMS->>Portal: Merchant Application Approved
CRM->>Relay: Merchant Onboarding
Relay->>Processing: Relay Mechant notification
Processing->>Processing: Store Relay MerchantId
CRM->>CRM: Merchant Master Data Change (stakeholder data)
CRM->>Relay: Merchant Master Data
CRM->>CRM: AML data
CRM->>Relay: AML
```
---
id: merchant-migration-caps
name: merchant-migration-caps
version: 1.0.0
summary: merchant-migration-caps
steps: []
---
---
id: merchant-onboarding-caps
name: merchant-onboarding-caps
version: 1.0.0
summary: merchant-onboarding-caps
steps: []
---
---
id: partner-signup-merchant-v2
name: partner-signup-merchant-v2
version: 1.0.0
summary: partner-signup-merchant-v2
steps: []
---
---
id: payment
name: payment
version: 1.0.0
summary: payment
steps: []
---
---
id: PaymentFlow
name: Payment Flow for Platforms
version: 1.0.0
summary: Business flow for processing payments in Relay
steps:
- id: "platform_place_payment"
title: Platform places payment
next_step: "charge_payment_request"
- id: "charge_payment_request"
title: Charge Payment
message:
id: ChargePayment
version: 0.0.1
next_step: "payment_initiated"
- id: "payment_initiated"
title: Payment Initiated
message:
id: PaymentInitiated
version: 0.0.1
next_steps:
- "payment_processed"
- "payment_failed"
- id: "payment_processed"
title: Payment Processed
message:
id: PaymentProcessed
version: 0.0.1
next_steps:
- id: "apm_executed"
label: Execute with APM
- id: "send_platform_notification"
label: Notify Platform
- id: "payment_failed"
title: Payment Failed
type: node
next_steps:
- id: "failure_notification"
label: Notify Platform
- id: "retry_payment"
label: Retry payment
- id: "apm_executed"
title: Payment Executed with APM
message:
id: apmExecutedPayment
version: 1.0.1
next_step: "payment_redirect"
- id: "payment_redirect"
title: Payment Redirect
type: node
next_step: "payment_complete"
- id: "send_platform_notification"
title: Platform Notified
type: node
next_step: "payment_complete"
- id: "failure_notification"
title: Platform Notified
type: node
- id: "retry_payment"
title: Retry Payment
type: node
next_step: "payment_initiated"
- id: "payment_complete"
title: Payment Complete
message:
id: PaymentComplete
version: 0.0.2
next_step: "payment_completed"
- id: "payment_completed"
title: Payment Completed
type: node
---
### Flow of feature
---
id: paymentrefund
name: paymentrefund
version: 1.0.0
summary: paymentrefund
steps: []
---
---
id: paymentv2
name: paymentv2
version: 1.0.0
summary: paymentv2
steps: []
---
---
id: paypal-onboarding
name: paypal-onboarding
version: 1.0.0
summary: paypal-onboarding
steps: []
---
---
id: portal-add-account-flow
name: portal-add-account-flow
version: 1.0.0
summary: portal-add-account-flow
steps: []
---
---
id: portal-pay-method-onboarding
name: portal-pay-method-onboarding
version: 1.0.0
summary: portal-pay-method-onboarding
steps: []
---
---
id: portal-signup-flow
name: portal-signup-flow
version: 1.0.0
summary: portal-signup-flow
steps: []
---
---
id: price-list-update
name: price-list-update
version: 1.0.0
summary: price-list-update
steps: []
---
---
id: settlement
name: settlement
version: 1.0.0
summary: settlement
steps: []
---
---
id: settlement-config-reg
name: settlement-config-reg
version: 1.0.0
summary: settlement-config-reg
steps: []
---
---
id: signup-link
name: signup-link
version: 1.0.0
summary: signup-link
steps: []
---
---
id: signup-v3-again
name: signup-v3-again
version: 1.0.0
summary: signup-v3-again
steps: []
---
---
id: subscription
name: subscription
version: 1.0.0
summary: subscription
steps: []
---
---
id: transaction-fee-change
name: transaction-fee-change
version: 1.0.0
summary: transaction-fee-change
steps: []
---
---
id: update-payment-method
name: update-payment-method
version: 1.0.0
summary: update-payment-method
steps: []
---
---
dictionary:
- id: Shop Platform
name: Shop Platform
summary: "Shopify, Shopware, Magento, Prestashop etc."
icon: Warehouse
- id: Customer
name: Customer
summary: "Person who is creating order in Shop Platform and who is doing a payment"
icon: Warehouse
- id: Shop Order
name: Shop Order
summary: "An Order related with payment created in Shop Platform."
description: |
Order that shop admin can see in shop platform administration panel. It looks and behaves different in each Shop Platform.
icon: ListOrdered
- id: Cart
name: Cart
summary: "Entity that customer creates before creating the Shop Order"
description: |
Cart is converted into Shop Order at some point of the process, this process is controlled in 100% by a Shop Platform and not by Connect Team
icon: Package
- id: Hosted
name: Hosted
summary: "Type of integration between Shop Platform and Checkout"
description: |
One of the integration types specified in Checkout api https://developer.nexigroup.com/nexi-checkout/en-EU/api/payment-v1/#v1-payments-post-body-checkout-integrationtype
where payment is done outside of the Shop Platform in page hosted by checkout and customer is redirected back to Shop Platform after payment
icon: Package
- id: Embedded
name: Embedded
summary: "Type of integration between Shop Platform and Checkout"
description: |
One of the integration types specified in Checkout api https://developer.nexigroup.com/nexi-checkout/en-EU/api/payment-v1/#v1-payments-post-body-checkout-integrationtype
where payment terminal is displayed in Shop Platform with the iframe and customer never leaves Shop Platform
icon: Package
- id: Shop Webhook
name: Shop Webhook
summary: "Webhook send by Shop Platform"
icon: PackageX
- id: Webhook
name: Webhook
summary: "Webhook send by Checkout"
icon: PackageX
---