Skip to main content

NPS & NIP Payment Events

BankLingo automatically dispatches process events for every payment message exchanged over NPS (NIBSS Payment System) and NIP. These events let you build BPMN workflows that react to transfers, mandates, direct debits, requests to pay, and account reports — without polling databases or writing custom integration code.

All events are dispatched with triggeredBy: "BankLingoPaymentService".


How Payloads Work​

Each event carries a standard payload dictionary in the process context. The keys documented below are available in BPM conditions and script tasks using standard variable syntax (e.g., {{ payload.msgId }}).

Common fields present in every NPS event:

FieldTypeDescription
messageTypestringISO 20022 message name, e.g. "pacs.008", "pain.009"
providerstringAlways "NPS" for NPS events; "nip" etc. for NIP

Transfer Events​

OnOutboundTransferInitiated — value 403​

Fired when a customer-initiated outbound transfer has been submitted to NPS or NIP and is awaiting a settlement response.

Entity type: TransferRequest (102)
Entity ID: the OutwardCreditTransferRequest.ID

Payload fieldTypeSource
messageTypestring"pacs.008" (NPS) or "nip.credit.transfer" (NIP) or "transfer.initiation"
msgIdstringNPS MsgId if assigned, otherwise SessionID
sessionIdstringInternal session reference
senderAccountNumberstringOriginator account number
senderNamestringOriginator account name
beneficiaryAccountNumberstringDestination account number
beneficiaryNamestringBeneficiary account name
beneficiaryBankCodestringDestination institution code
amountdecimalTransfer amount
providerstring"nps" or "nip"

Example use cases:

  • Trigger a compliance hold for transfers above a threshold
  • Notify an approver for large or unusual transfers
  • Start a fraud-screening subprocess

OnOutboundTransferSettled — value 404​

Fired when NPS returns a successful pacs.002 confirming that the outbound transfer was settled.

Entity type: TransferRequest (102)

Payload fieldTypeSource
messageTypestring"pacs.002"
msgIdstringMsgId of the pacs.002
originalMsgIdstringMsgId of the original pacs.008
sessionIdstringInternal session reference
senderAccountNumberstringOriginator account
beneficiaryAccountNumberstringBeneficiary account
beneficiaryNamestringBeneficiary name
beneficiaryBankCodestringDestination institution code
amountdecimalSettled amount
statusstringFinal settlement status
reasonCodestringNPS reason code (empty on success)
detailstringHuman-readable reason detail
providerstring"NPS"

OnOutboundTransferRejected — value 405​

Fired when NPS returns a pacs.002 rejection for an outbound transfer.

Entity type: TransferRequest (102)

Same payload structure as OnOutboundTransferSettled, with non-empty reasonCode and detail.


OnInboundDirectDebitReceived — value 504​

Fired when another institution sends us a pacs.003 direct debit request (they are the creditor, our customer is the debtor).

Entity type: InwardTransaction (14)

Payload fieldTypeSource
messageTypestring"pacs.003"
msgIdstringInbound MsgId
senderAccountNumberstringDebtor (our customer) account number
senderBankCodestringDebtor bank code
beneficiaryAccountNumberstringCreditor account number
beneficiaryBankCodestringCreditor bank code
debtorNamestringDebtor name
amountdecimalDebit amount
responseCodestringResponse code sent back to NPS
providerstring"NPS"

OnOutboundDirectDebitInitiated — value 505​

Fired when we send a pacs.003 direct debit as the creditor bank (we are debiting a customer at another bank).

Entity type: TransferRequest (102)

Payload fieldTypeSource
messageTypestring"pacs.003"
senderAccountNumberstringOur creditor account
beneficiaryAccountNumberstringDebtor account at other bank
amountdecimalDebit amount
mandateIdstringMandate reference this debit is under
npsStatusCodestringNPS synchronous status
providerstring"NPS"

Mandate Events​

OnMandateInitiationReceived — value 2500​

Fired when another institution sends us a pain.009 requesting a mandate against one of our customers.

Entity type: NibssMandate (311)

Payload fieldTypeSource
messageTypestring"pain.009"
msgIdstringpain.009 GrpHdr MsgId
mandateIdstringMandate reference number
debtorAccountNumberstringOur customer's account (the debtor)
debtorBankCodestringOur bank code (debtor agent)
creditorAccountNumberstringCreditor account at requesting bank
creditorNamestringCreditor name
creditorBankCodestringRequesting bank code
amountdecimalCollection amount
acceptedboolWhether we accepted the mandate
providerstring"NPS"

OnMandateInitiationSent — value 2501​

Fired when we send a pain.009 to initiate a mandate against a customer at another bank.

Entity type: NibssMandate (311)

Payload fieldTypeSource
messageTypestring"pain.009"
msgIdstringpain.009 MsgId
mandateIdstringMandate reference number
debtorAccountNumberstringDebtor account at other bank
debtorBankCodestringDebtor's bank code
creditorAccountNumberstringOur creditor account
creditorNamestringOur creditor name
amountdecimalCollection amount
providerstring"NPS"

OnMandateAcceptanceReceived — value 2502​

Fired when we receive a pain.012 acceptance/rejection response for a mandate we initiated (pain.009).

Entity type: NibssMandate (311)

Payload fieldTypeSource
messageTypestring"pain.012"
originalMsgIdstringMsgId of the original pain.009
mandateIdstringMandate reference number
acceptedbooltrue if accepted, false if rejected
providerstring"NPS"

OnMandateAmendmentReceived — value 2503​

Fired when another institution sends us a pain.010 to amend an existing mandate.

Entity type: NibssMandate (311)

Payload fieldTypeSource
messageTypestring"pain.010"
mandateIdstringOriginal mandate reference
debtorAccountNumberstringOur customer's account
debtorBankCodestringOur bank code
creditorAccountNumberstringCreditor account
creditorNamestringCreditor name
acceptedboolWhether we accepted the amendment
providerstring"NPS"

OnMandateAmendmentSent — value 2504​

Fired when we send a pain.010 to amend a mandate we initiated.

Entity type: NibssMandate (311)

Payload fieldTypeSource
messageTypestring"pain.010"
originalMandateIdstringMandate reference being amended
providerstring"NPS"

OnMandateCancellationReceived — value 2505​

Fired when another institution sends us a pain.011 to cancel a mandate.

Entity type: NibssMandate (311)

Payload fieldTypeSource
messageTypestring"pain.011"
mandateIdstringMandate reference being cancelled
debtorAccountNumberstringOur customer's account
debtorBankCodestringOur bank code
acceptedboolWhether we accepted the cancellation
providerstring"NPS"

OnMandateCancellationSent — value 2506​

Fired when we send a pain.011 to cancel a mandate we initiated.

Entity type: NibssMandate (311)

Payload fieldTypeSource
messageTypestring"pain.011"
mandateIdstringMandate reference
creditorAccountNumberstringOur creditor account
debtorAccountNumberstringDebtor account at other bank
debtorBankCodestringDebtor's bank code
reasonCodestringCancellation reason code
providerstring"NPS"

OnMandateCollectionInitiated — value 2507​

Fired when a mandate-based collection (debit) transfer has been submitted to NPS.

Entity type: TransferRequest (102)

Payload fieldTypeSource
messageTypestring"mandate.collection"
sessionIdstringInternal session reference
debtorAccountNumberstringAccount being debited
debtorBankCodestringDebtor's bank code
creditorAccountNumberstringOur creditor account
amountdecimalCollection amount
responseCodestringResponse code from NPS
providerstring"nps" or other provider

Request to Pay (RTP) Events​

OnRequestToPayReceived — value 2600​

Fired when another institution sends us a pain.013 Request to Pay — they want our customer to approve a payment.

Entity type: TransferRequest (102)

Payload fieldTypeSource
messageTypestring"pain.013"
msgIdstringGrpHdr message ID
paymentInformationIdstringPmtInfId from pain.013
debtorAccountNumberstringOur customer who must pay
debtorNamestringDebtor name
debtorBankCodestringOur bank code
creditorAccountNumberstringCreditor account at requesting bank
creditorNamestringCreditor name
creditorBankCodestringRequesting bank code
amountdecimalRequested payment amount
narrationstringPayment narration
expiryDateTimedatetimeRequest expiry
clientCodestringOur customer's client code (if resolved)
providerstring"NPS"

OnRequestToPayInitiated — value 2601​

Fired when we send a pain.013 requesting payment from a customer at another bank.

Entity type: TransferRequest (102)

Payload fieldTypeSource
messageTypestring"pain.013"
creditorAccountNumberstringOur account expecting payment
debtorAccountNumberstringDebtor account at other bank
amountdecimalRequested amount
npsStatusCodestringNPS synchronous response code
providerstring"NPS"

OnRequestToPayDecided — value 2602​

Fired when our customer approves or rejects an inbound Request to Pay (pain.013) via internal decision.

Entity type: TransferRequest (102)

Payload fieldTypeSource
messageTypestring"pain.014"
paymentInformationIdstringPmtInfId being decided
msgIdstringOriginal request message ID
decisionstring"approved" or "rejected"
reasonCodestringRejection reason code (empty if approved)
debtorAccountNumberstringOur customer's account
debtorNamestringDebtor name
debtorBankCodestringOur bank code
creditorAccountNumberstringCreditor account
creditorNamestringCreditor name
creditorBankCodestringCreditor bank code
amountdecimalAmount from the original request
providerstring"NPS"

OnRequestToPayStatusReceived — value 2603​

Fired when we receive a pain.014 response to a Request to Pay we sent — the other bank's customer has made a decision.

Entity type: TransferRequest (102)

Payload fieldTypeSource
messageTypestring"pain.014"
originalPmtInfIdstringPmtInfId from our original pain.013
statusstringDecision status
providerstring"NPS"

EasyPay Events (pain.001 / pain.008 / pain.002)​

OnBulkCreditTransferInitiated — value 2700​

Fired when an EasyPay credit transfer (pain.001) is submitted to NPS.

Entity type: TransferRequest (102)

Payload fieldTypeSource
messageTypestring"pain.001"
msgIdstringNPS MsgId assigned to this transfer
sessionIdstringInternal session reference
senderAccountNumberstringOriginator account
beneficiaryAccountNumberstringBeneficiary account
beneficiaryNamestringBeneficiary name
amountdecimalTransfer amount
providerstring"NPS"

OnBulkDirectDebitInitiated — value 2701​

Fired when an EasyPay direct debit (pain.008) is submitted to NPS.

Entity type: TransferRequest (102)

Same payload structure as OnBulkCreditTransferInitiated, with messageType = "pain.008".


OnBulkPaymentStatusReceived — value 2702​

Fired when NPS returns a pain.002 payment status report for an EasyPay submission.

Entity type: TransferRequest (102)

Payload fieldTypeSource
messageTypestring"pain.002"
originalMsgIdstringMsgId of the original pain.001 or pain.008
sessionIdstringInternal session reference
senderAccountNumberstringOriginator account
beneficiaryAccountNumberstringBeneficiary account
beneficiaryBankCodestringDestination institution code
statusstringGroup payment status
reasonCodestringNPS reason code
detailstringHuman-readable reason detail
amountdecimalAmount
providerstring"NPS"

Account Report Events (camt)​

OnAccountReportRequested — value 2800​

Fired when we send a camt.060 account report request to another bank.

Entity type: None (0)

Payload fieldTypeSource
messageTypestring"camt.060"
msgIdstringOur camt.060 MsgId
accountNumberstringAccount we are requesting a report for
reportTypestring"camt.052" or "camt.053"
beneficiaryBankCodestringInstitution we sent the request to
providerstring"NPS"

OnAccountReportRequestReceived — value 2801​

Fired when another institution sends us a camt.060 requesting an account report.

Entity type: None (0)

Payload fieldTypeSource
messageTypestring"camt.060"
msgIdstringInbound camt.060 MsgId
accountNumberstringAccount being requested
senderBankCodestringInstitution that sent the request
reportTypestring"camt.052" or "camt.053"
clientCodestringClient code of the account owner (if resolved)
providerstring"NPS"

Example use case: Auto-generate the report in a background subprocess and send a camt.052/053 response.


OnAccountReportReceived — value 2802​

Fired when we receive a camt.052 intraday account report in response to a camt.060 we sent.

Entity type: None (0)

Payload fieldTypeSource
messageTypestring"camt.052"
msgIdstringInbound camt.052 MsgId
originalMsgIdstringMsgId of the camt.060 we sent
accountNumberstringAccount the report covers
senderBankCodestringInstitution that sent the report
entryCountintNumber of transaction entries in the report
providerstring"NPS"

OnAccountStatementReceived — value 2803​

Fired when we receive a camt.053 end-of-day statement in response to a camt.060 we sent.

Entity type: None (0)

Same payload structure as OnAccountReportReceived, with messageType = "camt.053".


Configuring a Process Trigger​

To react to any of the events above, create a process definition in the BPM Designer and set its start event to one of these trigger types.

Example — auto-approve small transfers:

process: auto-approve-small-nps-transfer
startEvent:
trigger: OnOutboundTransferInitiated
condition: "payload.amount < 50000 && payload.provider == 'nps'"
tasks:
- name: "Approve transfer"
type: ServiceTask
action: "approveTransfer(payload.sessionId)"

Example — react to mandate acceptance:

process: notify-on-mandate-accepted
startEvent:
trigger: OnMandateAcceptanceReceived
condition: "payload.accepted == true"
tasks:
- name: "Send notification"
type: ServiceTask
action: "sendSms(payload.debtorAccountNumber, 'Your direct debit mandate has been set up.')"

Event Reference Table​

EventValueMessageDirectionEntity
OnOutboundTransferInitiated403pacs.008 / nipOutboundTransferRequest (102)
OnOutboundTransferSettled404pacs.002Inbound callbackTransferRequest (102)
OnOutboundTransferRejected405pacs.002Inbound callbackTransferRequest (102)
OnInboundDirectDebitReceived504pacs.003InboundInwardTransaction (14)
OnOutboundDirectDebitInitiated505pacs.003OutboundTransferRequest (102)
OnMandateInitiationReceived2500pain.009InboundNibssMandate (311)
OnMandateInitiationSent2501pain.009OutboundNibssMandate (311)
OnMandateAcceptanceReceived2502pain.012InboundNibssMandate (311)
OnMandateAmendmentReceived2503pain.010InboundNibssMandate (311)
OnMandateAmendmentSent2504pain.010OutboundNibssMandate (311)
OnMandateCancellationReceived2505pain.011InboundNibssMandate (311)
OnMandateCancellationSent2506pain.011OutboundNibssMandate (311)
OnMandateCollectionInitiated2507mandate.collectionOutboundTransferRequest (102)
OnRequestToPayReceived2600pain.013InboundTransferRequest (102)
OnRequestToPayInitiated2601pain.013OutboundTransferRequest (102)
OnRequestToPayDecided2602pain.014InternalTransferRequest (102)
OnRequestToPayStatusReceived2603pain.014InboundTransferRequest (102)
OnBulkCreditTransferInitiated2700pain.001OutboundTransferRequest (102)
OnBulkDirectDebitInitiated2701pain.008OutboundTransferRequest (102)
OnBulkPaymentStatusReceived2702pain.002Inbound callbackTransferRequest (102)
OnAccountReportRequested2800camt.060OutboundNone (0)
OnAccountReportRequestReceived2801camt.060InboundNone (0)
OnAccountReportReceived2802camt.052InboundNone (0)
OnAccountStatementReceived2803camt.053InboundNone (0)