Skip to main content

Overview

Split Payment allows you to automatically distribute funds from a single transaction into multiple bank accounts called sub-settlement accounts using Novac. Instead of receiving the full transaction amount into one account and transferring funds manually, Novac handles the split and settlement automatically based on your configured rules. This is useful for:
  • Marketplaces (vendor + platform fee)
  • Franchise businesses
  • Partner revenue sharing
  • Internal cost allocation (e.g., IT charges, service fees)
Instead of receiving the full amount in one account and manually transferring funds, Novac automatically settles the predefined split amounts or percentages at the point of payment.
All split configuration requests must be made server-to-server using your Secret Key.

Prerequisite

Before you begin, ensure that you’ve completed the following steps:
A clear split structure:
  • Flat A fixed amount is assigned to a sub-settlement account. For example, if you set a flat value of ₦1,000, that account will always receive ₦1,000 from every transaction, and the remaining balance will be settled into your primary account.
  • Percent A percentage of the total transaction amount is assigned to a sub-settlement account. For example, if you set 50%, the account will receive half of the total payment, while the remaining percentage is settled into your primary account.
split_type can be either flat or percent.

Create a Sub-settlement Account

Use this endpoint to define how payments should be split going forward. This creates one or multiple sub-settlement accounts in a single request.
We recommend using the GET payout banks API to retrieve the list of supported bank codes before creating or updating split settlement accounts. This ensures that the bank_code provided is valid and prevents validation errors.
Request
    curl -X 'POST' \
        'https://api.novacpayment.com/api/v1/split-payment' \
        -H 'accept: */*' \
        -H 'Authorization: Bearer nc_livesk_*******************' \
        -H 'Content-Type: application/json' \
        -d '[
            {
                "split_name": "vendor_payment",
                "bank_code": "000013",
                "account_number": "0004498921",
                "split_type": "flat",
                "split_value": 200
            },
            {
                "split_name": "it_charges",
                "bank_code": "000013",
                "account_number": "0004498938",
                "split_type": "flat",
                "split_value": 150
            }
        ]'

When you send a request via this API, each account is validated, after which Novac will generate a unique split_payment_reference. This reference will be used for future transactions.
Response
{
  "status": true,
  "message": "Split Settings saved successfully",
  "data": [
    {
      "split_type": "flat",
      "split_payment_reference": "31VENDOR_PAYMENTSPLIT0000130004498921",
      "processing_message": "Account validated and added to split record successfully",
      "split_name": "vendor_payment",
      "bank_code": "000013",
      "account_number": "0004498921",
      "split_value": 200
    },
    {
      "split_type": "flat",
      "split_payment_reference": "31IT_CHARGESSPLIT0000130004498938",
      "processing_message": "Account validated and added to split record successfully",
      "split_name": "it_charges",
      "bank_code": "000013",
      "account_number": "0004498938",
      "split_value": 150
    },
    {
      "split_type": "flat",
      "split_payment_reference": "31PRIMARY_ACCOUNTSPLIT0000140709310134",
      "processing_message": "Account validated and added to split record successfully",
      "split_name": "primary_account",
      "bank_code": "000014",
      "account_number": "0709310134",
      "split_value": 0
    }
  ]
}
Each object in the data array represent a split object. you can choose to update any of these records in the future, to do this you must store the reference value split_payment_reference

Get Sub-settlement Accounts

You can get all split account record tied to your parent settlement account for auditing purposes. Send a GET request to this endpoint below.
Request
curl -X 'GET' \
  'https://api.novacpayment.com/api/v1/split-payment' \
  -H 'accept: */*' \
  -H 'Authorization: Bearer nc_livesk_************'
  
Response
{
  "status": true,
  "message": "Split Settings retrieved successfully",
  "data": [
    {
      "split_type": "flat",
      "split_payment_reference": "31VENDOR_PAYMENTSPLIT0000130004498921",
      "processing_message": "Account validated and added to split record successfully",
      "split_name": "vendor_payment",
      "bank_code": "000013",
      "account_number": "0004498921",
      "split_value": 200
    },
    {
      "split_type": "flat",
      "split_payment_reference": "31IT_CHARGESSPLIT0000130004498938",
      "processing_message": "Account validated and added to split record successfully",
      "split_name": "it_charges",
      "bank_code": "000013",
      "account_number": "0004498938",
      "split_value": 150
    },
    {
      "split_type": "flat",
      "split_payment_reference": "31PRIMARY_ACCOUNTSPLIT0000140709310134",
      "processing_message": "Account validated and added to split record successfully",
      "split_name": "primary_account",
      "bank_code": "000014",
      "account_number": "0709310134",
      "split_value": 0
    }
  ]
}
This response includes all active split records with associated bank details, split type and values. If no split has been configured, the response will return an empty list.

Update a Sub-settlement Account

Use this endpoint to modify an existing split rule. This will help if bank account number needs correction or vendor payout amount change.
Request
curl -X 'PUT' \
  'https://api.novacpayment.com/api/v1/split-payment' \
  -H 'accept: */*' \
  -H 'Authorization: Bearer nc_livesk_***************' \
  -H 'Content-Type: application/json' \
  -d '{
    "split_reference_code": "31VENDOR_PAYMENTSPLIT0000130004498921",
    "bank_code": "000013",
    "account_number": "0004498921",
    "split_type": "flat",
    "split_value": 500
   }'
Response
{
  "status": true,
  "message": "The split information has been updated successfully for reference 31VENDOR_PAYMENTSPLIT0000130004498921",
  "data": {
    "split_type": "flat",
    "split_payment_reference": "31VENDOR_PAYMENTSPLIT0000130004498921",
    "processing_message": "record updated successfully",
    "split_name": "vendor_payment",
    "bank_code": "000013",
    "account_number": "0004498921",
    "split_value": 500
  }
}

What Happens Next?

Once your sub-settlement account is configured with pre split rule:
  • Initiate transactions using split configuration via create checkout payment.
  • Automatically distribute funds upon successful payment.