MPO Setup

  1. Login in to your MPO environment Workspace. Click Create and select From file.

  2. Upload the JSON file with the pre-integration template. A new Currencycloud vX.X.X (YYYY-MM-DD) folder will be available in your workspace.

  3. Open the [COMMON] processes -> [COMMON] Setup folder and open the Setup process, switch to View mode and select New task. Fill in all the parameters and select Add task. Setup You can also take the following JSON data, update it with your values, and paste it into the Code editor tab. The Setup process contains configuration data for two main areas: Currencycloud and Mambu data.

    {
        "ccyConfigData": {
            //Currencycloud Url and login data
            "ccConfiguration": "CCconfiguration", /*keep this value*/
            "ccUrl": "Currencycloud URL",
            "ccLoginId": "Currencycloud Login ID",
            "ccApiKey": "Currencycloud User API key",
            "ccySepaParams": {
                //SEPA connector_CCy parameters
                "ccBIC": "Currencycloud BIC", /*only for SEPA Transfers connector*/
                "ccDebtorCountry": "Currencycloud country code ('DE')", /*only for SEPA Transfers connector*/
                "ccIBANcollector": "Currencycloud IBAN of the collector account", /*only for SEPA Transfers connector*/
                "ccNameCollector": "collector account name" /*only for SEPA Transfers connector*/
            },
            "retryLimit": "maximum number of retries for Currencycloud API Calls",
            "retryInterval": "time interval (in seconds) between retries for Currencycloud API Calls",
            "houseAccountBaseCurrency": "currency code used as base currency for Currencycloud house account",
            "subAccountEnabledInCC": "flag used in order to enable the use of the `on_behalf_of` field"
        },
        "mambuConfigData": {
            //Mambu url and login data
            "mambuConfigReference":  "mambuConfig", /*keep this value*/
            "mambuPassword": "Mambu user password",
            "mambuUrl": "Mambu tenant URL",
            "mambuUser": "Mambu user",
            //PREFUND_AML monitoring option_LOCAL payments
            "enableTransactionMonitoring": "true if enabled/ otherwise false ",
            "mambuSepaParams": {
                //SEPA_Mambu Payments Gateway parameters
                "mambuApiKey": "Mambu Gateway API key", /*only for SEPA Transfers connector*/
                "mambuBIC": "Mambu tenant BIC" /*only for SEPA Transfers connector*/
            },
            "mambuCfs": {
                "mambuIbanCf": {
                    //PREFUND_IBAN CF and CFset
                    "ccIbanCustomField": "custom field for storing the client's IBAN", /*non EAR*/
                    "ccIbanCustomFieldSet": "custom field set ID - holds the custom field for IBAN"
                },
                "mambuTransactionCf": {
                    "ccTransactionCustomFieldSetID": "custom field set ID - holds the custom fields for Currencycloud paymentId and status",
                    "ccPaymentIdCustomField": "custom field for storing the Currencycloud paymentId",
                    "ccPaymentStatusCustomField": "custom field for storing the Currencycloud transaction status",
                    "ccPaymentShortRefId": "custom field for storing the Currencycloud payment short reference ID",
                    "ccPaymentIdfromAMLCustomField": "custom field for storing the AML payment ID",
                    "ccPaymentStatusfromAMLCustomField": "custom field for storing the AML payment status",
                    "ccCounterPartyNameCustomField": "custom field for storing the Currencycloud counterparty name",
                    "ccCounterPartyAddressCustomField": "custom field for storing the Currencycloud counterparty address",
                    "ccCounterPartyRoutingCodeCustomField": "custom field for storing the Currencycloud counterparty routing code",
                    "ccCounterPartyRoutingCode2CustomField": "custom field for storing the Currencycloud counterparty second routing code",
                    "ccCounterPartyCountryCustomField": "custom field for storing the Currencycloud counterparty country",
                    "ccCounterPartyAccNoCustomField": "custom field for storing the Currencycloud counterparty account number",
                    "ccCounterPartyIbanCustomField": "custom field for storing the Currencycloud counterparty IBAN",
                    "ccCounterPartyBicCustomField": "custom field for storing the Currencycloud counterparty BIC",
                    "ccCounterPartyBankAccNameCustomField": "custom field for storing the Currencycloud counterparty bank account holder name",
                    "ccCounterPartyCompanyNameCustomField": "custom field for storing the Currencycloud counterparty company name",
                    "ccTargetAmountCustomField": "custom field for storing the Currencycloud target amount",
                    "ccCounterPartyReferenceCustomField": "custom field for storing the Currencycloud reference",
                    "ccRateCustomField": "custom field for storing the Currencycloud rate",
                    "ccFeeCustomField": "custom field for storing the Currencycloud fee",
                    "ccCounterPartyRoutingCodeTypeCustomField": "custom field for storing the Currencycloud routing code type",
                    "ccCounterPartyRoutingCodeType2CustomField": "custom field for storing the Currencycloud second routing code type",
                    "ccOriginalTransactionId": "custom field for storing the original transaction ID when doing a refund",
                    "ccPurposeCodeCustomField": "custom field for storing the CurrencyCloud payment's purpose code",
                    "ccReasonCustomField": "custom field for storing the CurrencyCloud payment's reason",
                    "ccChargeTypeCustomField": "custom field for storing the CurrencyCloud payment's charge type"
                },
                "mambuClientCf": {
                    "ccClientCustomFieldSet": "custom field set ID - holds the custom field for Currencycloud sub-account ID (clients)",
                    "ccClientSubAccountCustomField": "custom field ID - holds the value for Currencycloud sub-account ID (client)",
                    "ccClientContactCustomField": "custom field set - holds the value for Currencycloud contact ID (clients)",
                    "ccClientAccountNumberCustomField": "custom field set - holds the value for Currencycloud IBAN/account number (clients)",
                    "ccClientRoutingCodeCustomField": "custom field set - holds the value for Currencycloud BIC/routing code (clients)"            
                },
                "mambuGroupCf": {
                    "ccGroupCustomFieldSet": "custom field set ID - holds the custom field for Currencycloud sub-account ID (groups)",
                    "ccGroupSubAccountCustomField": "custom field ID - holds the value for Currencycloud sub-account ID (groups)",
                    "ccGroupContactCustomField": "custom field set - holds the value for Currencycloud contact ID (groups)",
                    "ccGroupAccountNumberCustomField": "custom field set - holds the value for Currencycloud IBAN/account number (groups)",
                    "ccGroupRoutingCodeCustomField": "custom field set - holds the value for Currencycloud BIC/routing code (groups)"
                }
            },
            "localPaymentsTransactionChannels": {
                //PREFUND_Local payments transaction channels
                "ccLocalPaymentsTransactionChannel": "transaction channel ID for withdrawals", /*only for Local payments connector_PREFUND*/
                "ccLocalPaymentsTransactionChannelRefund": "transaction channel ID for refunds" /*only for Local payments connector_PREFUND*/
            },
            "fxTransferTransactionChannels": {
                //PREFUND_FX transfers transaction channels
                "ccTransactionChannelDep": "transaction channel ID for deposits",/*only for FX transfers connector_PREFUND*/
                "ccTransactionChannelRefund": "transaction channel ID for refunds",/*only for FX transfers connector_PREFUND*/
                "ccTransactionChannelWith": "transaction channel ID for withdrawals" /*only for FX transfers connector_PREFUND*/
            },
            "incomingPaymentsTransactionChannelPrefix": "prefix used by transaction channels created for incoming payments",
            "sepaGLaccounts": {
                //SEPA_Mambu General Ledger Accounts
                "expenseGl": "expense GL account used to log loss", /*only for SEPA Transfers connector*/
                "incomeGl": "income GL account used to log profit", /*only for SEPA Transfers connector*/
                "assetGl": "asset GL account used to log profit/loss" /*only for SEPA Transfers connector*/
            },
            "localGLaccounts": {
                "transitGlAccountPrefix": "prefix of transaction GL account used for local payments logs",
                "CCSettlementGlAccountPrefix": "prefix of settlement GL account used for local payments logs"
            },
            "incomingPaymentsGLaccounts": {
            "transitGlAccountPrefix": "prefix of transaction GL account used for incoming payments logs",
            "schemeGlAccountPrefix": "prefix of settlement GL account used for incoming payments logs"
            },
            "mambuTimezone": "timezone of Mambu environment",
            "retryLimit": "maximum number of retries for Mambu API Calls",
            "retryInterval": "time interval (in seconds) between retries for Mambu API Calls",
            "postTransactionAfterSettlement": "true/false", /*only for House Transfer, false - the second part of the flow is triggered without waiting for Conversion status response*/
            "amlExtensionUsed": "true/false",/*false - AML for CA-TM conenctor will be used, true - external AML system*/
            "skipFinCrimeAccounting": "false/true", /*Enable or not accounting on Generic Fincrime Transaction Monitoring*/
            "finCrimeAliasNames": {
                "finCrimeEntryPoint": "ccy-fincrime-entry-point", /*FinCrime integration [ENTRY POINT/ To be linked to payment connector] alias short name*/
                "reverseListener": "ccy-fincrime-reverse-listener" /*FinCrime Reverse Listener [to be linked to Payments Listener] alias short name*/
            },
            "productFee": "object containing the product fee key for each currency code, in the following format:
            {
                currencyCode: productFeeKey
            }"
        }
    }
    
  4. Navigate to the Aliases tab and select Create. MPO. Aliases tab

  5. Create eight new Aliases and link the corresponding processes:

    • Two aliases for AML extension - Generic FinCrime (prefix [AML Entry Point])
    • Six aliases for Currencycloud entry points ([Entry Point]) MPO. Link alias

Notifications

Notifications are triggered by MPO processes whenever negative flows or errors occur in the integration. If a client or group has an credit officer assigned to their Mambu account, notifications are sent to that user. If there is no assigned credit officer, notifications are sent to the Mambu user you specify in the mambuTaskAssignedUser field in the process configuration.

The connector sends two types of notifications:

  • Informative → no action required. informative
  • Requiring action → triggered when vital processes could not be performed. Requires manual intervention. actionable

Notification logic

Notifications for failed transactions are sent based on the notificationSubscription setting registered as part of the initial setup:

  • For the Local payments (intra and interbank) and FX Transfers failures - paymentFailedNotification option should be set to true for the notifications to be sent;
  • For the House Transfers failures - accountsExchangeNotification option should be set to true for the notifications to be sent;

The same logic applies to all notifications regardless of the notification system used in the connector.

Notifications setup

  1. Open the [COMMON] processes - [COMMON] Notifications logic folder and access the Notifications setup process.
  2. Switch to View mode, and select New task.
  3. Update the key-value pairs with your data and select Add task.
KeyTypeDescription
notificationSubscriptionobjectAn object holding variables which will be used to propagate the notification settings to the connector. Required
notificationSubscription
   paymentFailedNotification
stringThis field must take the value {{paymentFailedNotification}}. Required
notificationSubscription
   accountsExchangeNotification
stringThis field must take the value {{accountsExchangeNotification}}. Required
accountsExchangeNotificationbooleanShould be set to true to receive notifications failures in the House Transfers flow. Required
notificationConfigReferencestringThe value notificationConfigReference must be used for this field. Required
paymentFailedNotificationbooleanShould be set to true to receive notifications of failures in Local Payments (intra and interbank) and FX Transfers flows. Required
channelstringEither task, to create notifications as Mambu tasks, or ZenDesk to send notifications to Zendesk. Required
mambuTaskAssignedUserstringThe encoded key of a Mambu user who will receive notifications if there is no assigned credit officer for a particular account. Required when task is set as the notification channel.
ZenDesk.apiKeystringThe API token for Zendesk for this integration. Required when ZenDesk is set as the notification channel.
ZenDesk.group_idstringThe ID of the group to which notifications will be sent. Required when ZenDesk is set as the notification channel.
ZenDesk.loginstringUsername or email address of the Zendesk user who will receive the notifications. Required when ZenDesk is set as the notification channel.
ZenDesk.subdomainstringThe subdomain for your Zendesk account, for example, if clearbankmpo.zendesk.com is the full URL, clearbankmpo is the subdomain. Required when ZenDesk is set as the notification channel.
webhookUrlstringThis field is reserved for future functionality and can be left empty.

Examples can be found below for the configuration required for both Zendesk and Mambu tasks.

{
    "notificationConfigReference": "notificationConfigReference",
    "notificationSubscription": {
            "paymentFailedNotification": "{{paymentFailedNotification}}",
            "accountsExchangeNotification": "{{accountsExchangeNotification}}"
    },
    "accountsExchangeNotification": true,
    "paymentFailedNotification": true,
    "channel": "task",
    "mambuTaskAssignedUser": "8a0146096e3bce3a016e3bce3a2e0002"
}
{        
    "notificationConfigReference": "notificationConfigReference",
    "notificationSubscription": {
            "paymentFailedNotification": "{{paymentFailedNotification}}",
            "accountsExchangeNotification": "{{accountsExchangeNotification}}"
    },
    "accountsExchangeNotification": true,
    "paymentFailedNotification": true,
    "channel": "ZenDesk",
    "ZenDesk.apiKey": "IUbepAEuiyypiuLQOzhAQWumi8Pyww2ODVrn6Yux",
    "ZenDesk.group_id": "450002405759",
    "ZenDesk.login": "johnny@testbank.com",
    "ZenDesk.subdomain": "clearbankmpo"
}

After running the notifications set process, the configuration will be propagated to the connector.

Notifications setup