Split Payments

Split payments allow you to automatically divide transaction proceeds between multiple businesses. Configure percentage-based or fixed-fee splits, track commissions in real time, and settle weekly with auto-generated invoices.


POST/v1/splits/config

Create split config

Create a new split payment configuration between your business and a partner business.

Required attributes

  • Name
    partner_business_id
    Type
    integer
    Description

    The ID of the partner business that will receive the split.

  • Name
    split_type
    Type
    string
    Description

    The type of split: percentage (basis points) or fixed (cents).

  • Name
    split_value
    Type
    integer
    Description

    The split amount. For percentage, use basis points (e.g., 250 for 2.5%). For fixed, use cents (e.g., 500 for $5.00).

  • Name
    split_role
    Type
    string
    Description

    The role of the split: fee (partner takes a fee) or principal (partner receives the principal amount).

  • Name
    currency
    Type
    string
    Description

    Three-letter ISO currency code (e.g., USD, ZWG).

Optional attributes

  • Name
    description
    Type
    string
    Description

    A human-readable description of the split arrangement.

Request

POST
/v1/splits/config
curl -X POST https://api.zuripay.app/v1/splits/config \
  -H "Authorization: Bearer sk_live_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "partner_business_id": 29,
    "split_type": "percentage",
    "split_value": 100,
    "split_role": "fee",
    "currency": "USD",
    "description": "Platform referral fee"
  }'

Response

{
  "result": "success",
  "split_config": {
    "public_id": "550e8400-e29b-41d4-a716-446655440000",
    "owner_business_id": 1,
    "partner_business_id": 29,
    "split_type": "percentage",
    "split_value": 100,
    "split_role": "fee",
    "currency": "USD",
    "description": "Platform referral fee",
    "is_active": true
  },
  "message": "Split payment config created successfully."
}

GET/v1/splits/config

List split configs

Retrieve all split payment configurations for the authenticated business.

Request

GET
/v1/splits/config
curl https://api.zuripay.app/v1/splits/config \
  -H "Authorization: Bearer sk_live_your_api_key"

Response

{
  "result": "success",
  "split_configs": [
    {
      "public_id": "550e8400-e29b-41d4-a716-446655440000",
      "owner_business_id": 1,
      "partner_business_id": 29,
      "split_type": "percentage",
      "split_value": 100,
      "split_role": "fee",
      "currency": "USD",
      "description": "Platform referral fee",
      "is_active": true,
      "date_created": "2026-03-06 10:00:00"
    }
  ],
  "count": 1
}

PUT/v1/splits/config/{public_id}

Update split config

Update an existing split payment configuration.

Optional attributes

  • Name
    split_type
    Type
    string
    Description

    Updated split type: percentage or fixed.

  • Name
    split_value
    Type
    integer
    Description

    Updated split value in basis points or cents.

  • Name
    split_role
    Type
    string
    Description

    Updated split role: fee or principal.

  • Name
    description
    Type
    string
    Description

    Updated description.

Request

PUT
/v1/splits/config/550e8400-e29b-41d4-a716-446655440000
curl -X PUT https://api.zuripay.app/v1/splits/config/550e8400-e29b-41d4-a716-446655440000 \
  -H "Authorization: Bearer sk_live_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "split_value": 300,
    "description": "Updated platform fee"
  }'

Response

{
  "result": "success",
  "split_config": {
    "public_id": "550e8400-e29b-41d4-a716-446655440000",
    "owner_business_id": 1,
    "partner_business_id": 29,
    "split_type": "percentage",
    "split_value": 300,
    "split_role": "fee",
    "currency": "USD",
    "description": "Updated platform fee",
    "is_active": true
  },
  "message": "Split payment config updated successfully."
}

DELETE/v1/splits/config/{public_id}

Deactivate split config

Deactivate a split payment configuration. Deactivated configs will no longer be applied to new transactions.

Request

DELETE
/v1/splits/config/550e8400-e29b-41d4-a716-446655440000
curl -X DELETE https://api.zuripay.app/v1/splits/config/550e8400-e29b-41d4-a716-446655440000 \
  -H "Authorization: Bearer sk_live_your_api_key"

Response

{
  "result": "success",
  "public_id": "550e8400-e29b-41d4-a716-446655440000",
  "message": "Split config deactivated successfully."
}

GET/v1/splits/ledger

List ledger entries

Retrieve commission ledger entries for the authenticated business. Each entry represents a split that was applied to a transaction.

Optional parameters

  • Name
    skip
    Type
    integer
    Description

    Number of records to skip for pagination (default: 0).

  • Name
    limit
    Type
    integer
    Description

    Maximum number of records to return (default: 100).

Request

GET
/v1/splits/ledger
curl -G https://api.zuripay.app/v1/splits/ledger \
  -H "Authorization: Bearer sk_live_your_api_key" \
  -d skip=0 \
  -d limit=20

Response

{
  "result": "success",
  "ledger_entries": [
    {
      "public_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
      "transaction_id": 123,
      "split_config_id": 1,
      "creditor_business_id": 29,
      "debtor_business_id": 1,
      "amount": 100,
      "currency": "USD",
      "status": "pending",
      "invoice_reference": null,
      "settlement_date": null,
      "date_created": "2026-03-06 10:00:00"
    }
  ],
  "count": 1
}

GET/v1/splits/ledger/summary

Get ledger summary

Retrieve an aggregated summary of commission ledger entries for the authenticated business.

Request

GET
/v1/splits/ledger/summary
curl https://api.zuripay.app/v1/splits/ledger/summary \
  -H "Authorization: Bearer sk_live_your_api_key"

Response

{
  "result": "success",
  "summary": {
    "owed_to_you": [
      { "currency": "USD", "total": 5000 }
    ],
    "you_owe": [
      { "currency": "USD", "total": 3000 }
    ]
  }
}

POST/v1/links

The POST /v1/links endpoint now accepts an optional splits array to attach split payment rules directly to a payment link. When a customer pays through this link, the splits are applied automatically.

Additional optional attributes

  • Name
    splits
    Type
    array
    Description

    An array of split rule objects to apply when this link is paid. Each object contains:

  • Name
    splits[].business_id
    Type
    integer
    Description

    The ID of the partner business that will receive the split.

  • Name
    splits[].type
    Type
    string
    Description

    The type of split: percentage (basis points) or fixed (cents).

  • Name
    splits[].value
    Type
    integer
    Description

    The split amount. Must be a positive integer. For percentage, use basis points. For fixed, use cents.

  • Name
    splits[].description
    Type
    string
    Description

    An optional description for this split.

Request

POST
/v1/links
curl -X POST https://api.zuripay.app/v1/links \
  -H "Authorization: Bearer sk_live_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 10000,
    "currency": "USD",
    "description": "Order #123",
    "splits": [
      {
        "business_id": 29,
        "type": "percentage",
        "value": 100,
        "description": "Service fee"
      }
    ]
  }'

Response

{
  "result": "success",
  "payment_link_id": "zp_chk_f6g7h8i9j0",
  "hosted_payment_link": "https://checkout.zuripay.app?checkout_id=zp_chk_f6g7h8i9j0",
  "message": "Payment link created with split rules. Amount: USD 10000, Charges: USD 100.0, Total: USD 101.0"
}

Was this page helpful?