Skip to main content

Reading deposits

Two endpoints return deposits. Both return the same deposit object.

EndpointReturns
GET /casino/deposit/{id}One deposit.
GET /casino/depositsA page of deposits for one casino, newest first.

Webhooks tell you when a deposit changes. Use these endpoints to reconcile, to recover after downtime, or to check a deposit before acting on it.

Both single-deposit reads and deposits in the list carry late_payment: true after support restores a late deposit. The boolean is present only when true and absent otherwise. See Late payments before accepting one.

Get one deposit​

GET https://quinix.byteconnect.us/casino/deposit/{id}

id is the deposit_id returned when the deposit was created.

curl https://quinix.byteconnect.us/casino/deposit/4821 \
-H "X-API-Key: $API_KEY"
{
"id": 4821,
"transaction_id": 90312,
"entity_id": 1234,
"gambler_ref": "sample-player-001",
"decision": "pending",
"decision_at": null,
"kyt_status": "passed",
"kyt_risk_score": "1.25",
"kyt_checked_at": "2026-09-25T15:21:40.000Z",
"return_address": null,
"currency": "BTC",
"wallet": "bc1qexampledepositaddress000000000000000",
"crypto_amount": 0.0017517,
"usd_amount": 103,
"player_amount": 100,
"entity_net_usd": 99,
"affiliate_net_usd": 99,
"charges": [
{
"beneficiary": "AFFILIATE",
"kind": "FEE",
"paid_by": "PLAYER",
"percent": 0.03,
"amount_usd": 3,
"amount_crypto": 0.00005102
},
{
"beneficiary": "BF",
"kind": "FEE",
"paid_by": "ENTITY",
"percent": 0.01,
"amount_usd": 1,
"amount_crypto": 0.00001701
},
{
"beneficiary": "BF",
"kind": "SPREAD",
"paid_by": "PLAYER",
"percent": 0.02,
"amount_usd": 2.10204,
"amount_crypto": 0.00003503
}
],
"fee": 0,
"fee_usd": 0,
"bf_fee_usd": 0,
"bf_spread_usd": 2.10204,
"affiliate_fee_usd": 3,
"crypto_rate": "58800.0000000000",
"market_rate": "60000.0000000000",
"status": "Confirmed",
"confirmed_crypto": 0.0017517,
"expires_at": "2026-09-25T15:30:00.000Z",
"created_at": "2026-09-25T15:00:00.000Z",
"updated_at": "2026-09-25T15:21:40.000Z",
"no_conf": false,
"no_conf_state": null,
"instant": false,
"instant_downgraded": false,
"instant_received_max_usd": null,
"machine_id": "kiosk-042",
"double_spent_at": null,
"double_spend_txid": null,
"ofac_status": "clear",
"acceptable": true
}

This is the deposit from the create example, paid in full, confirmed, and screened. It is ready to accept.

Errors​

StatusdetailMeaning
400Invalid deposit IDid is not a number.
404Deposit not foundNo deposit with this id under your affiliate. An entity-scoped key also gets this for a deposit of another casino.

List deposits​

GET https://quinix.byteconnect.us/casino/deposits?entity_id={entity_id}
Query parameterRequiredDescription
entity_idYesThe casino's entity id.
decisionNoOnly deposits with this decision: pending, accepted, returned or frozen. The value is not validated: an unknown value returns an empty list.
currencyNoOnly deposits in this currency: BTC, LTC or ETH. An unknown value returns 400.
limitNoPage size. Default 50, maximum 100. Values above 100 are treated as 100. 0 or a non-numeric value is treated as 50.
offsetNoNumber of deposits to skip. Default 0.

Deposits are ordered newest first. total is the number of deposits matching the filters, across all pages. To page through, increase offset by limit until offset reaches total.

curl "https://quinix.byteconnect.us/casino/deposits?entity_id=1234&decision=pending&limit=20" \
-H "X-API-Key: $API_KEY"
{
"deposits": [
{
"id": 4821,
"transaction_id": 90312,
"entity_id": 1234,
"gambler_ref": "sample-player-001",
"decision": "pending",
"...": "same fields as GET /casino/deposit/{id}"
}
],
"total": 1
}

Each element of deposits is a full deposit object, identical to the single-deposit response.

note

Listing requires the casino to be enabled. If ByteFederal has disabled the casino, the list returns 403 even though its deposits still exist and can still be decided. Read them one at a time with GET /casino/deposit/{id}, which does not check the casino's status.

Errors​

StatusdetailMeaning
400entity_id is requiredentity_id is missing.
400Invalid entity_identity_id is not a number.
403API key is scoped to a different entityAn entity-scoped key asked for another casino.
403Entity status is 'disabled', must be 'active' or 'enabled'The casino is disabled. See the note above.
404Entity not found for this affiliateThe entity_id does not exist under your affiliate.

An unknown currency value returns a 400 validation body, described on the Errors page.

The deposit object​

Identity​

FieldTypeDescription
idintegerThe deposit id. Same value as deposit_id in the create response and in webhooks.
transaction_idintegerThe id of the underlying payment.
entity_idintegerThe casino.
gambler_refstringYour player reference, as sent at creation.
machine_idstring or nullYour machine identifier, as sent at creation.
created_atstring or nullWhen the deposit was created.
updated_atstring or nullWhen the deposit record last changed.

Payment​

FieldTypeDescription
currencystringBTC, LTC or ETH.
walletstringThe deposit address. The create response calls it address.
statusstringThe payment status, set by ByteFederal's payment engine. Common values: Pending (waiting for payment), Succeed (paid in full, unconfirmed), Underpaid / Overpaid (paid a different amount, unconfirmed), Confirmed (one or more on-chain confirmations), ConfirmedKYTReview (confirmed, held by KYT for review or failure), Timedout (not paid in time), Refund (a return was sent). See Deposit lifecycle for every value and transition.
late_paymentbooleanPresent only when true on a restored late deposit; absent otherwise. Applies to both read endpoints. See Late payments.
crypto_amountnumberThe crypto amount quoted. After an accept with adjust_to_received, the final amount at the deposit's quote precision.
confirmed_cryptonumber or nullThe crypto actually received on chain. Set as soon as the payment is seen, before confirmation. null until then.
expires_atstring or nullWhen the quote expires, 30 minutes after creation. A payment seen before this time is honored. Players are shown a shorter 15-minute window. For a payment after expiry, see Expiry and late payments.
double_spent_atstring or nullFast deposits only. When a double-spend of the funding transaction was detected.
double_spend_txidstring or nullFast deposits only. The transaction that replaced the funding transaction.

Money​

FieldTypeDescription
usd_amountnumberWhat the player pays in total, in USD, including player-paid fees.
player_amountnumberThe amount to credit the player, in USD.
entity_net_usdnumber or nullWhat the casino is settled for this deposit, after casino-paid fees.
chargesarrayEvery fee and spread on this deposit. The fields are described in Charges.
crypto_ratestring or nullThe USD price per coin used for the deposit's current amounts, after spreads. A decimal string, not a number.
market_ratestring or nullThe market USD price per coin used for the deposit's current amounts, before spreads. A decimal string. A late accept updates it to the rate used at acceptance.
affiliate_net_usdnumber or nullDeprecated. Same value as entity_net_usd.
fee, fee_usd, bf_fee_usd, bf_spread_usd, affiliate_fee_usdnumberDeprecated. Partial views of charges. Read charges instead.

crypto_rate and market_rate are strings here and numbers in the create response. Parse them as decimals.

When a deposit is accepted with adjust_to_received: true, crypto_amount, usd_amount, player_amount, entity_net_usd, crypto_rate and every charge are replaced by the re-priced values. For ordinary deposits, market_rate does not change. For a late deposit, market_rate is updated to the current rate used at acceptance. The original quote is preserved in ByteFederal's records.

Decision​

FieldTypeDescription
decisionstringpending, accepted, returned or frozen. Every deposit starts pending. See Accept, return, freeze.
decision_atstring or nullWhen the decision was made. null while pending.
return_addressstring or nullThe address sent with /return. null unless the deposit was returned.
acceptablebooleanA snapshot of decision, payment and screening readiness for acceptance. See the limits below.

Screening​

FieldTypeDescription
kyt_statusstring or nullBlockchain risk screening (KYT) result: pending, passed, review or failed. null before screening starts.
kyt_risk_scorestring or nullThe KYT risk score, as a decimal string.
kyt_checked_atstring or nullWhen KYT screening completed.
ofac_statusstringSanctions screening of the addresses that funded the deposit: pending, clear, hit or timed_out. See below.

ofac_status values:

  • pending: screening has not finished. Accept and return are refused.
  • clear: no match. Accept and return are allowed.
  • timed_out: screening missed its deadline. Accept and return are allowed. Screening continues and can still turn into clear or hit.
  • hit: a funding address is sanctioned. Accept and return are refused permanently. A deposit still pending is frozen by ByteFederal. If you had already accepted it (possible after timed_out), the decision stays accepted. An ofac_complete webhook reports the hit, and you are responsible for reversing the player's credit.

The ofac_complete webhook announces each change. See the Webhook event reference.

Fast deposits​

FieldTypeDescription
no_confbooleanCreated with no_conf or instant.
no_conf_statestring or nullPre-confirmation state of a fast deposit: pending_guards, eligible, fell_back or double_spent. null for standard deposits and before the payment is seen. Only eligible allows accept before confirmation.
instantbooleanCreated with instant.
instant_downgradedbooleanThe player sent more than the instant received ceiling, so the deposit now waits for KYT like a no-conf deposit.
instant_received_max_usdnumber or nullInstant deposits only: the received-value ceiling that applies to this deposit.

Fast deposits are explained in Creating deposits.

All timestamps are ISO 8601 strings in UTC, for example 2026-09-25T15:00:00.000Z.

The acceptable flag​

acceptable is a snapshot of decision, payment and screening readiness for acceptance. It checks:

  • the decision is pending,
  • the payment status allows accepting (confirmed, or eligible before confirmation for a fast deposit, and not double-spent),
  • OFAC screening is clear or timed_out,
  • KYT has passed, or the deposit is instant, KYT has not finished, and the received value is within the instant ceiling.

The same flag is on casino deposit events, but not on generic transaction.<status> events. Key your accept logic on it rather than re-implementing these readiness rules.

Three limits to know:

  • It is a snapshot. A double-spend or a late KYT failure can turn it back to false before your accept call lands. Keep handling 409 from /accept.
  • It does not check amount adjustments or late-payment repricing. A deposit paid with the wrong amount can show acceptable: true, and /accept then fails with 400 until you send adjust_to_received: true. Compare confirmed_crypto with crypto_amount before accepting. Every restored late deposit requires that flag even when the amounts match, and acceptance can still fail if it cannot be repriced. See Accept, return, freeze.
  • A late instant accept revalues the ceiling. Readiness uses the deposit's recorded rate. A late accept uses the current market rate, which can put an instant deposit still waiting for KYT over its ceiling. Accept then returns 409 code instant_received_over_cap even if acceptable was true and the deposit's state has not changed. Wait for KYT to pass.