Advanced Features

Snap has various optional parameters. These optional parameters can be utilized for more advanced use cases that can help your integration. This section will explain advance features specific for Partner Solutions, other general features can be seen on this docs.




Transaction Split

With this feature, as a partner, you can split the gross amount and MDR fee of a transaction to your merchants.


📘

Glossary

In this context, gross amount is the amount that will be added on your withdrawable balance.

MDR fee is transaction fee that is deducted for each transaction.


You can add transaction_split_settings parameter to define how will you split the transaction.


{
  ...
  "transaction_split_settings": {
    "gross_amount_split": {
      "type": "percentage",
      "split_rules": [
        {
          "merchant_id": "G000002",
          "value": "85"
        },
        {
          "merchant_id": "G000003",
          "value": "15"
        }
      ]
    },
    "fee_split": {
      "type": "percentage",
      "split_rules": [
        {
          "merchant_id": "G000002",
          "value": "50"
        },
        {
          "merchant_id": "G000003",
          "value": "50"
        }
      ]
    }
  },
  ...
}

ParameterDescriptionTypeRequired
gross_amount_splitDefine the rules for splitting the transaction amountObjectOptional*
required when fee_split is not defined
gross_amount_split.typeType of the split, possible values are percentage and fixedStringRequired
gross_amount_split.split_rulesDefine the detail of the splitArray of ObjectRequired
gross_amount_split.split_rules.*.merchant_idMerchant ID which will receive amount of the transactionStringRequired
gross_amount_split.split_rules.*.valueValue of the split based on type.
  • Percentage: percentage of the amount that merchant will receive
  • Fixed: amount that merchant will receive
StringRequired
gross_amount_split.remaining_split_receiverDetermine which merchant that get the remaining amount of transaction after distribution to list of merchant in split_rulesStringOptional*
required when gross_amount_split.type is fixed.
fee_splitDefine the rules for splitting the transaction feeObjectOptional*
required when gross_amount_split is not defined
fee_split.typeType of the split, possible values are percentage and fixed.StringRequired
fee_split.split_rulesDefine the detail of the splitArray of ObjectRequired
fee_split.split_rules.*.merchant_idMerchant ID which will bear the transaction feeStringRequired
fee_split.split_rules.*.valueValue of the split based on type.
  • Percentage: percentage of the fee that will be borne by merchant
  • Fixed: fixed amount of fee that will be borne by merchant
StringRequired
fee_split.remaining_split_receiverDetermine which merchant that borne the remaining fee of transaction after distribution to list of merchant in split_rulesStringOptional*
required when fee_split.type is fixed.

Things to Note

  • You can split only the gross amount, only the fee, or both.
  • When the type is percentage, the total value must be equals to 100%.
  • Specified merchant_id must be registered under your Partner setup.

Sample Calculation

With transaction amount Rp 100.000, transaction fee Rp 4.440, and this split configuration:

{
  ...
  "transaction_split_settings": {
    "gross_amount_split": {
      "type": "percentage",
      "split_rules": [
        {
          "merchant_id": "G000002",
          "value": "85"
        },
        {
          "merchant_id": "G000003",
          "value": "15"
        }
      ]
    },
    "fee_split": {
      "type": "percentage",
      "split_rules": [
        {
          "merchant_id": "G000002",
          "value": "50"
        },
        {
          "merchant_id": "G000003",
          "value": "50"
        }
      ]
    }
  },
  ...
}

The split result will be:

  • Merchant G000002:
    • Receive Rp 82.780 (85% * 100.000 - 2.220)
    • Bear Rp 2.220 of the fee (50% * 4.440)
  • Merchant G000003:
    • Receive Rp 12.780 (15% * 100.000 - 2.220)
    • Bear Rp 2.220 of the fee (50% * 4.440)