SportAPI Documentation
EN
C Product documentationCoupon API
v1
Service & pricing ↗ Get access ↗
Coupon API / Statuses and payouts

Statuses and Payout Calculation

The coupon and every bet within it have their own status. Always interpret a status code according to the object to which the status field belongs.

Important. Coupon and bet status tables are different. For example, a winning single has coupon status 2 and bet status 1. A losing single has coupon status 4 and bet status 2. When a coupon is returned for recalculation, the coupon status is 15 and the corresponding bet status is 4.

Coupon statuses

CodeNameMeaningFinal
0NEWThe coupon is active or an accumulator is partially settled.No
2WINThe coupon won.Yes
4LOSEThe coupon lost. For an accumulator, this status may appear immediately after the first losing outcome.Yes
8RETURNThe coupon was fully returned.Yes
15UPDATEThe coupon was returned for recalculation and is waiting for a new result.No

For a losing accumulator, status 4 is known before every bet is settled, but another complete snapshot with the final status of each outcome may arrive later.

Bet statuses

CodeNameMeaningSettlement multiplier
0NETThe bet has not yet been settled.
1WINFull win.Original odds
2LOSEFull loss.0
3RETURNBet return.1
4RECALCULATEThe outcome was returned for recalculation.
21HALF_WINHalf win.(coef + 1) / 2
22HALF_LOSEHalf loss.0.5
23PUSHReturn on a tied result.1

The bet settlement multiplier is provided:

  • in the full coupon model as events_data[].calc_coef;
  • in a callback as events_data[].calculate_coefficient.

An unsettled bet or a bet awaiting recalculation does not yet have a settlement multiplier.

Amount and winnings fields

FieldMeaning
amountStake amount submitted when the coupon was placed.
winCurrent displayed winnings amount.
potential_winPotential winnings before final settlement.
real_winActual amount after the coupon is settled.

Use real_win to update the balance after final settlement. Do not use potential_win as the actual payout, and do not independently recalculate the credit from the displayed odds.

Settlement reason

In both the full model and callbacks, every bet may contain:

FieldPurpose
settlement_reason_codeStable code identifying the settlement or return reason.
settlement_reasonExplanatory text describing the reason.

Before settlement, both fields are null. Use the code rather than the text in program logic. The financial result is always determined by the provided status, settlement multiplier, and real_win; the reason does not replace these fields.

For example, on a return the code may indicate that the match was cancelled (MATCH_CANCELLED), postponed (MATCH_POSTPONED), or the market was settled as a push (MARKET_PUSH). The set of codes is extensible: store an unknown value without rejecting the response.

To notify the end user, the partner should localize its own message based on settlement_reason_code. If the code is unknown, a non-empty settlement_reason may be displayed as a fallback explanation. Do not calculate the payout from the reason text; use the provided real_win value.

These fields describe the settlement reason, not the live operational state of the match. They remain null until the bet is settled.

In a callback, the actual payout field is named realWin.

Before final settlement:

  • immediately after placement, real_win is null in the full model;
  • in an intermediate callback, realWin is 0, while the coupon status remains 0.

The field value before a final status is not the final payout. Therefore, neither null in the full model nor 0 in an intermediate callback should be treated as a loss without checking the coupon status.

Coupon odds fields

FieldMeaning
coefCurrent or final coupon odds.
original_coefCoupon odds at placement time.
calculate_coefFinal settlement multiplier. Before settlement: null.

In a callback, the final multiplier field is named calculate_coefficient. In an intermediate callback it is 0 because the final multiplier has not yet been formed.

General calculation logic

For a settled coupon, the final multiplier is formed from the settlement multipliers of its bets:

calculate_coef = factor_1 × factor_2 × ... × factor_n
real_win = amount × calculate_coef

The formula explains how individual bet results affect the coupon. For financial crediting, use the provided real_win value returned by the API.

Full win

The multiplier of a winning bet equals its odds.

Single example:

amount = 10
coef = 1.85
bet status = 1
calculate_coef = 1.85
real_win = 18.5
coupon status = 2

Example accumulator with two winning bets:

amount = 10
factor_1 = 1.80
factor_2 = 1.50
calculate_coef = 1.80 × 1.50 = 2.70
real_win = 10 × 2.70 = 27
coupon status = 2

Loss

A losing bet has a multiplier of 0. If at least one accumulator outcome loses, the final multiplier and payout of the entire coupon are 0.

bet status = 2
calculate_coef = 0
real_win = 0
coupon status = 4

For an accumulator, coupon status 4 appears immediately after the first losing outcome, even if other bets have not yet been settled.

Return

A returned bet has a multiplier of 1.

For a returned single:

bet status = 3
calculate_coef = 1
real_win = amount
coupon status = 8

The return of one accumulator outcome does not return the entire coupon. That outcome neither increases nor reduces the combined multiplier to zero:

factor_1 = 1.80
factor_2 = 1
factor_3 = 1.50
calculate_coef = 1.80 × 1 × 1.50 = 2.70

If all coupon bets have the RETURN or PUSH status, the entire coupon receives status 8, the final multiplier is 1, and real_win equals amount.

Push

PUSH is used for a tied result and has the same settlement multiplier of 1 as a return:

bet status = 23
calc_coef = 1

A push on one bet does not make the accumulator lose and does not increase its final multiplier.

Half win

For HALF_WIN, the settlement multiplier is calculated as follows:

factor = (coef + 1) / 2

Example for odds of 2.00:

factor = (2.00 + 1) / 2 = 1.50

For a single with an amount of 10, the actual payout is:

real_win = 10 × 1.50 = 15

The bet status is 21.

HALF_WIN accumulator example

The accumulator contains two bets:

  • the first bet won at odds of 1.80;
  • the second bet, at odds of 2.00, received HALF_WIN.

Settlement multiplier of the second bet:

(2.00 + 1) / 2 = 1.50

Calculation of the entire accumulator with amount = 10:

factor_1 = 1.80
factor_2 = 1.50
calculate_coef = 1.80 × 1.50 = 2.70
real_win = 10 × 2.70 = 27

The original odds of 2.00 for the second bet are not multiplied in full. The reduced multiplier of 1.50 is included in the accumulator calculation.

Half loss

For HALF_LOSE, the settlement multiplier is always 0.5.

For a single with an amount of 10:

real_win = 10 × 0.5 = 5

The bet status is 22.

HALF_LOSE accumulator example

The accumulator contains two bets:

  • the first bet won at odds of 1.80;
  • the second bet received HALF_LOSE and a multiplier of 0.5.

Calculation of the entire accumulator with amount = 10:

factor_1 = 1.80
factor_2 = 0.5
calculate_coef = 1.80 × 0.5 = 0.90
real_win = 10 × 0.90 = 9

HALF_LOSE does not reduce the entire accumulator to zero like a full loss with status 2. Instead, the 0.5 multiplier is included in the product together with the multipliers of the other bets.

If the same accumulator also contains a fully losing bet with a multiplier of 0, the final multiplier and real_win for the entire coupon are 0.

Recalculation

When a result is returned for recalculation:

  • the coupon receives status 15 (UPDATE);
  • the corresponding bet receives status 4 (RECALCULATE);
  • status 15 is not final;
  • a new coupon state arrives after recalculation.

If the partner has already processed the previous result, on first receiving status 15 it must:

  1. debit the stake amount from the user again;
  2. move the coupon into a state that waits for a new result;
  3. after the new final status, credit the new real_win value.

The operations must be idempotent. A repeated callback delivery with the same batchId must not debit or credit funds again.

The callback does not contain amount. Store the amount when the coupon is placed or retrieve it through a coupon read API method.

Decimal values and rounding

Amounts, odds, and payouts are returned as decimal numbers without a fixed number of decimal places:

{
  "amount": 10,
  "calculate_coef": 1.5,
  "real_win": 15
}

The API does not guarantee a textual format such as 10.00 or 1.50. The partner defines the rounding and display rules.

Use the received real_win value to update the balance. This prevents discrepancies caused by repeated calculation or different rounding rules.

Next section: Result callbacks.