Skip to content

Open the processor invoice (payment addresses) for a live checkout

POST
/v1/public/checkout-sessions/{session_id}/processor-invoice
curl --request POST \
--url https://api.feitpay.com/v1/public/checkout-sessions/example/processor-invoice

For live sessions processed through the platform’s Bitcart account: opens the Bitcart invoice and returns the session with processor.methods (one address and exact amount per offered asset). Idempotent: later calls return the same invoice. Rate limited per client IP.

session_id
required
string
/^cs_[0-9A-Z]{32}$/

Session with the processor payment methods.

Media typeapplication/json
object
object
required
string
Allowed value: public_checkout_session
id
required
string
livemode
required
boolean
status
required
string
Allowed values: open complete expired
payment_status
required
string
Allowed values: created awaiting_payment detected confirming confirmed underpaid overpaid expired late_payment reorged manual_review resolved failed canceled
status_reason
required
One of:

Machine-readable reason recorded with a payment intent state change (status_reason, state-event and timeline reason, webhook data.status_reason). created and quote_refreshed appear in state events; additional_payment_after_settlement only in payment.review_required event data for a transfer that arrived after the intent was settled; inconsistent_evidence marks evidence that supports no allowed transition (the state is held and operators are alerted). bitcart_* reasons mirror the Bitcart invoice status of intents processed through the platform’s Bitcart account.

string
Allowed values: created quote_locked quote_refreshed transfer_seen_in_mempool waiting_for_confirmations required_confirmations_reached received_less_than_quoted received_more_than_quoted payment_after_quote_expiry late_top_up_after_partial_payment expired_without_payment block_reorganized reorg_unresolved transaction_dropped transaction_dropped_after_inclusion payment_does_not_match_active_quote inconsistent_evidence canceled_by_merchant resolved_with_recorded_reason sandbox_forced_quote_expiry additional_payment_after_settlement bitcart_pending bitcart_paid_unconfirmed bitcart_paid_partial bitcart_confirmed bitcart_complete bitcart_paid_over bitcart_expired bitcart_expired_partial bitcart_invalid bitcart_failed_confirm bitcart_refunded bitcart_unknown_status
merchant
required
object
display_name
required
string
logo_url
required
string | null
website_domain
required
string | null
domain_verified
required
boolean
support_email
required
string | null
sandbox_fixture
required
boolean
amount
required

Decimal string. Never a float.

string
/^(0|[1-9][0-9]*)(\.[0-9]+)?$/
currency
required
string
description
required
string | null
merchant_order_id
required
string | null
expires_at
required
string format: date-time
options
required
Array<object>
object
network_id
required
string
network_name
required
string
asset_id
required
string
asset_symbol
required
string
asset_name
required
string
decimals
required
integer
contract_address
required
string | null
required_confirmations
required
integer
estimated_confirmation_seconds
required
integer
observation_source
required
string
Allowed values: simulator rpc
caveats
required
Array<string>
selected_option
required
One of:
object
network_id
required
string
network_name
required
string
asset_id
required
string
asset_symbol
required
string
asset_name
required
string
decimals
required
integer
contract_address
required
string | null
required_confirmations
required
integer
estimated_confirmation_seconds
required
integer
observation_source
required
string
Allowed values: simulator rpc
caveats
required
Array<string>
quote
required
One of:
object
id
required
string
object
required
string
Allowed value: quote
network_id
required
string
asset_id
required
string
asset_symbol
required
string
decimals
required
integer
fiat_amount
required

Decimal string. Never a float.

string
/^(0|[1-9][0-9]*)(\.[0-9]+)?$/
fiat_currency
required
string
asset_amount
required

Decimal string. Never a float.

string
/^(0|[1-9][0-9]*)(\.[0-9]+)?$/
asset_amount_base_units
required

Integer amount in the asset’s smallest unit.

string
/^[0-9]+$/
rate
required

Fiat major units per one whole asset unit.

string
rate_source
required
string
rate_source_version
required
string
secondary_source
required
string | null
deviation_bps
required
integer | null
sandbox_rate
required

True when the rate is a labelled illustrative value, not market data.

boolean
spread_bps
required
integer
rounding_policy
required
string
Allowed value: ceil_to_asset_base_unit
required_confirmations
required
integer
status
required
string
Allowed values: active superseded expired
locked_at
required
string format: date-time
expires_at
required
string format: date-time
network_fee_paid_by
required
string
Allowed value: customer
platform_fee_billed_separately
required
boolean
instructions
required
One of:
object
network_id
required
string
asset_id
required
string
address
required
string
amount
required

Decimal string. Never a float.

string
/^(0|[1-9][0-9]*)(\.[0-9]+)?$/
amount_base_units
required

Integer amount in the asset’s smallest unit.

string
/^[0-9]+$/
payment_uri
required

BIP21 / EIP-681 style URI for wallet apps and QR codes.

string
contract_address
required
string | null
memo_required
required
boolean
totals
required
One of:
object
asset_id
required
string
decimals
required
integer
expected
required

Decimal string. Never a float.

string
/^(0|[1-9][0-9]*)(\.[0-9]+)?$/
expected_base_units
required

Integer amount in the asset’s smallest unit.

string
/^[0-9]+$/
received
required

Decimal string. Never a float.

string
/^(0|[1-9][0-9]*)(\.[0-9]+)?$/
received_base_units
required

Integer amount in the asset’s smallest unit.

string
/^[0-9]+$/
confirmed
required

Decimal string. Never a float.

string
/^(0|[1-9][0-9]*)(\.[0-9]+)?$/
confirmed_base_units
required

Integer amount in the asset’s smallest unit.

string
/^[0-9]+$/
remaining
required

Decimal string. Never a float.

string
/^(0|[1-9][0-9]*)(\.[0-9]+)?$/
remaining_base_units
required

Integer amount in the asset’s smallest unit.

string
/^[0-9]+$/
confirmations
required
One of:
object
current
required
integer
required
required
integer
transfers
required
Array<object>
object
id
required
string
tx_hash
required
string
network_id
required
string
amount
required

Decimal string. Never a float.

string
/^(0|[1-9][0-9]*)(\.[0-9]+)?$/
amount_base_units
required

Integer amount in the asset’s smallest unit.

string
/^[0-9]+$/
status
required
string
Allowed values: mempool included removed dropped
confirmations
required
integer
classification
required
string
Allowed values: on_time late post_settlement asset_mismatch
credited
required
boolean
observed_at
required
string format: date-time
timeline
required
Array<object>
object
status
required
string
Allowed values: created awaiting_payment detected confirming confirmed underpaid overpaid expired late_payment reorged manual_review resolved failed canceled
reason
required

Machine-readable reason recorded with a payment intent state change (status_reason, state-event and timeline reason, webhook data.status_reason). created and quote_refreshed appear in state events; additional_payment_after_settlement only in payment.review_required event data for a transfer that arrived after the intent was settled; inconsistent_evidence marks evidence that supports no allowed transition (the state is held and operators are alerted). bitcart_* reasons mirror the Bitcart invoice status of intents processed through the platform’s Bitcart account.

string
Allowed values: created quote_locked quote_refreshed transfer_seen_in_mempool waiting_for_confirmations required_confirmations_reached received_less_than_quoted received_more_than_quoted payment_after_quote_expiry late_top_up_after_partial_payment expired_without_payment block_reorganized reorg_unresolved transaction_dropped transaction_dropped_after_inclusion payment_does_not_match_active_quote inconsistent_evidence canceled_by_merchant resolved_with_recorded_reason sandbox_forced_quote_expiry additional_payment_after_settlement bitcart_pending bitcart_paid_unconfirmed bitcart_paid_partial bitcart_confirmed bitcart_complete bitcart_paid_over bitcart_expired bitcart_expired_partial bitcart_invalid bitcart_failed_confirm bitcart_refunded bitcart_unknown_status
at
required
string format: date-time
return_url
required
string | null
cancel_url
required
string | null
sandbox
required
One of:
object
simulation_available
required
boolean
scenarios
required
Array<string>
Allowed values: exact underpay overpay late reorg split
processor
required
One of:

Present when the intent is processed through the platform’s Bitcart account: custodial, the customer pays platform wallets and the funds are owed to the merchant (see /v1/balances).

object
name
required
string
Allowed values: bitcart
custodial
required
boolean
status
required

Bitcart invoice status: not_started until the checkout opens the invoice, then pending, paid, confirmed, complete, expired, invalid or refunded.

string
exception_status
required

None, paid_partial, paid_over or failed_confirm.

string
processor_invoice_id
required
string | null
expires_at
required
string | null format: date-time
paid_asset
required
string | null
sent_amount
required
string | null
tx_hashes
required
Array<string>
credited
required

The received funds were credited to the merchant balance.

boolean
methods
required
Array<object>
object
asset
required

Asset key: coin symbol, plus the chain for tokens (btc, usdt-eth).

string
symbol
required
string
chain
required
string
name
required
string
amount
required

Exact decimal amount to send in this asset.

string
rate
required

Exchange rate Bitcart used (invoice currency per unit of the asset).

string
address
required
string
payment_url
required

Wallet URI (BIP21 / EIP-681 style) for QR codes.

string
divisibility
required
integer
contract
required
string | null

Example

{
"object": "public_checkout_session",
"status": "open",
"payment_status": "created",
"status_reason": "created",
"amount": "59.90",
"options": [
{
"observation_source": "simulator"
}
],
"selected_option": {
"observation_source": "simulator"
},
"quote": {
"object": "quote",
"fiat_amount": "59.90",
"asset_amount": "59.90",
"asset_amount_base_units": "99834",
"rounding_policy": "ceil_to_asset_base_unit",
"status": "active",
"network_fee_paid_by": "customer",
"platform_fee_billed_separately": true
},
"instructions": {
"amount": "59.90",
"amount_base_units": "99834"
},
"totals": {
"expected": "59.90",
"expected_base_units": "99834",
"received": "59.90",
"received_base_units": "99834",
"confirmed": "59.90",
"confirmed_base_units": "99834",
"remaining": "59.90",
"remaining_base_units": "99834"
},
"transfers": [
{
"amount": "59.90",
"amount_base_units": "99834",
"status": "mempool",
"classification": "on_time"
}
],
"timeline": [
{
"status": "created",
"reason": "created"
}
],
"sandbox": {
"scenarios": [
"exact"
]
},
"processor": {
"name": "bitcart"
}
}

The feature is not available for your account: the account is not activated yet, the network or payment method is not enabled, or a required partner is not in place.

Media typeapplication/json
object
error
required
object
type
required
string
Allowed values: invalid_request_error authentication_error permission_error not_found_error conflict_error idempotency_error rate_limit_error feature_unavailable_error api_error
code
required
string
message
required
string
param
string
request_id
required
string

Example

{
"error": {
"type": "invalid_request_error"
}
}

Resource not found (or not visible to this tenant).

Media typeapplication/json
object
error
required
object
type
required
string
Allowed values: invalid_request_error authentication_error permission_error not_found_error conflict_error idempotency_error rate_limit_error feature_unavailable_error api_error
code
required
string
message
required
string
param
string
request_id
required
string

Example

{
"error": {
"type": "invalid_request_error"
}
}

State conflict.

Media typeapplication/json
object
error
required
object
type
required
string
Allowed values: invalid_request_error authentication_error permission_error not_found_error conflict_error idempotency_error rate_limit_error feature_unavailable_error api_error
code
required
string
message
required
string
param
string
request_id
required
string

Example

{
"error": {
"type": "invalid_request_error"
}
}

Too many requests. See Retry-After.

Media typeapplication/json
object
error
required
object
type
required
string
Allowed values: invalid_request_error authentication_error permission_error not_found_error conflict_error idempotency_error rate_limit_error feature_unavailable_error api_error
code
required
string
message
required
string
param
string
request_id
required
string

Example

{
"error": {
"type": "invalid_request_error"
}
}
Retry-After
integer