Confirm StarkPay-related products are enabled for your deployment with
GET /config/products (requires x-api-key). At minimum, enable the payment methods you plan to offer (crypto, pix, credit_card).Checkout vs financial transaction
StarkPay distinguishes two payment contexts. KYC/KYB rules depend on which one you use.| Context | What it is | KYC/KYB required? |
|---|---|---|
| Checkout (order) | Payment linked to a pre-created order. The payer completes a hosted checkout experience. | No — checkout flows do not require KYC/KYB |
| Financial transaction | Direct payment registration without an order (executor_id: api_transaction). Treated as a regulated financial operation. | Yes for fiat-related methods; no for 100% crypto |
How checkout is identified
A payment is treated as checkout when any of the following is true:- You register the payment intent with an
order_codethat references an existing order (setsexecutor_idtoorder_transactionautomatically), or - The payment’s
executor_idis alreadyorder_transaction
POST /payment/register/intents-create-transaction skips KYC/KYB validation, regardless of payment method.
When KYC/KYB is required
For financial transactions (not checkout), KYC/KYB is enforced when:transaction_typeis not purecrypto(e.g.pixcrypto,cardcrypto,cardfiat), and- You provide
payer_emailand/orpayer_wallet
crypto financial transactions never require KYC/KYB, even when payer identity is sent.
| Status | Meaning |
|---|---|
kyc_verification_required | Payer has not completed KYC/KYB |
kyc_not_approved | Payer started verification but is not approved |
Payment methods
transaction_type | Product flag | Description |
|---|---|---|
crypto | crypto | Payer sends tokens on-chain (any supported chain/token) |
pixcrypto | pix | PIX → crypto settlement |
cardcrypto | credit_card | Card → crypto settlement |
cardfiat | credit_card | Card → fiat settlement |
cryptopix | crypto | Crypto → PIX off-ramp |
fiatcrypto | crypto | Fiat → crypto (on-ramp style) |
Integration flow
Choose your path
Checkout: create an order, then register payment with
order_code.Financial transaction: register a standalone payment intent with POST /payment/register/intents-create-order (executor_id: api_transaction).Register the payment intent
POST /payment/register/intents-create-orderRequired tenant fields include public_client_id (format stkf_ + 32 hex characters) and webhook_url.Create the payer transaction
With the returned
payment_id, call POST /payment/register/intents-create-transaction with the payer’s wallet, email, and transaction_type.KYC/KYB applies only to financial transactions with fiat-related types — not to checkout or pure crypto.Execute or monitor
- Crypto: sign the unsigned transaction and submit via
POST /payment/execute/on-chain. - PIX / card: monitor with
GET /payment/:id/statusor your webhook.
Split payments
Usesplit_payment_config to route received funds to multiple wallets:
Webhooks
Settenant_data.webhook_url when registering the payment. StarkFi forwards status changes so you do not need to poll for every update.
.png?fit=max&auto=format&n=I_v6ul4JDafNKFQP&q=85&s=f0ad25536f8a3ca42331fcff88ab2b26)