SportAPI Documentation
EN
C Product documentationCoupon API
v1
Service & pricing ↗ Get access ↗
Coupon API / Singles, accumulators, and multi

Singles, Accumulators, and multi

The type of coupon created depends on the number of entries in list_bets and the value of multi.

The API returns the type in the coupon_type field:

coupon_typeCoupon typeNumber of bets
1SingleOne bet
2AccumulatorTwo or more bets

Single

A single is a separate coupon containing one bet.

Example:

{
  "list_bets": [
    "line#737779544#1#1#0#1.85"
  ],
  "amount": 10,
  "multi": false
}

Result:

{
  "coupon_type": 1,
  "events_count": 1,
  "amount": 10
}

If list_bets contains only one entry, both multi = false and multi = true create one single.

Accumulator

An accumulator is one coupon that combines multiple bets on different matches.

To create an accumulator, submit multiple pointers and set:

{
  "multi": false
}

Example:

{
  "list_bets": [
    "line#737779544#1#1#0#1.85",
    "line#737880112#8#6#2.5#1.64"
  ],
  "amount": 10,
  "currency": "USD",
  "multi": false
}

The system creates one coupon:

{
  "coupon_type": 2,
  "events_count": 2,
  "amount": 10
}

amount applies to the entire accumulator and is not applied separately to each bet within it.

After successful placement, one amount is automatically debited from the SportAPI client account balance.

One accumulator may contain no more than 15 events.

How multi works

multi determines whether the entries in list_bets are combined into one coupon or a separate coupon is created for every entry.

ValueBehavior
falseAll entries in list_bets form one single or accumulator.
trueEach entry in list_bets forms a separate single.
null or omitted fieldThe default value false is used.

multi = false

With multi = false:

  • one entry creates one single;
  • multiple entries create one accumulator;
  • amount is the stake for the entire coupon created;
  • body.coupons contains one coupon.

multi = true

With multi = true:

  • each entry creates a separate single;
  • each single receives its own coupon_code;
  • the full amount is applied to every single;
  • each single is settled independently;
  • body.coupons contains multiple coupons.

Important. The amount is not divided among the singles being created. The total stake is amount × number of entries in list_bets.

This total is automatically debited from the SportAPI client account balance after successful placement. If the balance is insufficient for all singles, the API returns 507 and creates no coupons.

Total stake example

The user selected two bets and entered an amount of 10.

Original request:

{
  "list_bets": [
    "line#737779544#1#1#0#1.85",
    "line#737880112#8#6#2.5#1.64"
  ],
  "amount": 10
}

The result depends on multi:

ModeWhat is createdAmount of each couponClient balance debit
multi = falseOne accumulator with two bets1010
multi = trueTwo separate singles1020

With multi = true, the relevant part of a successful response looks like this:

{
  "code": 1,
  "body": {
    "coupons": [
      {
        "coupon_code": "000000000272",
        "coupon_type": 1,
        "events_count": 1,
        "amount": 10
      },
      {
        "coupon_code": "000000000273",
        "coupon_type": 1,
        "events_count": 1,
        "amount": 10
      }
    ]
  }
}

The partner must store both objects and both coupon_code values.

Partner bet slip

Before the user confirms the bets, the partner interface should clearly show:

  • whether one accumulator or multiple singles will be created;
  • the amount of every coupon being created;
  • the number of coupons being created;
  • the total stake.

For multi = true, calculate the total as follows:

total stake = amount × number of entries in list_bets

For example:

amount = 10
number of bets = 3
total stake = 30

The bet slip remains the user’s preliminary selection. Coupons may be stored as accepted only after a response with code = 1, using the objects returned in body.coupons.

The end user’s balance in the partner’s system and the SportAPI client balance are separate entities. SportAPI automatically debits only its client balance. The partner separately manages the reservation and debit of the user’s funds.

Bets from the same match in an accumulator

An accumulator cannot contain multiple outcomes related to the same match. This restriction applies to the main event and all related sub-events.

Prohibited combinations include:

  • an outcome for the main match and corners from the same match;
  • an outcome for the main match and a bet on a specific half;
  • corners and fouls from the same match;
  • different halves, periods, or other sub-events from the same match.

Select only one outcome for a particular match. The remaining bets in the accumulator must relate to other matches.

If a prohibited combination is submitted with multi = false, the API rejects the accumulator placement:

error_code = 506

We recommend enforcing this restriction in the bet slip and preventing the user from submitting an invalid accumulator.

With multi = true, each outcome becomes a separate single, so the outcomes are not combined into one accumulator.

Processing the response

After successful placement, always iterate over the entire array:

body.coupons

Do not process only body.coupons[0]: with multi = true, the array contains a separate object for every single created.

For every returned coupon:

  1. store coupon_code as a string;
  2. store the required coupon-level fields;
  3. store the required bet data from events_data;
  4. track and process each coupon independently.

The complete request and response are described in Coupon placement.

Next section: Odds changes and outcome availability.