Skip to main content
This endpoint supports two modes:
  • Checkout: send order_code referencing a pre-created order. No KYC/KYB required.
  • Financial transaction: send full payment parameters with executor_id: api_transaction. KYC/KYB applies to fiat methods (not pure crypto).
1

Create a payment intent

Registering a Payment Intention
POST /payment/register/intents-create-order

Request Body

ParameterTypeRequiredDescription
executor_idstringUse api_transaction for standalone financial transactions. When order_code is sent, the server sets order_transaction automatically.
order_codestringID of a pre-created order. Switches the payment to checkout mode (no KYC/KYB).
tenant_dataobjectTenant configuration object
tenant_data.public_client_idstringIntegration ID (stkf_ + 32 hex characters)
tenant_data.webhook_urlstringWebhook URL to receive transaction status updates
payment_method_allowedobjectObject defining which payment methods are enabled
payment_method_allowed.pixcryptobooleanEnable PIX → Crypto payments
payment_method_allowed.cardcryptobooleanEnable Card → Crypto payments
payment_method_allowed.cardfiatbooleanEnable Card → Fiat payments
payment_method_allowed.cryptopixbooleanEnable Crypto → PIX payments
payment_method_allowed.cryptobooleanEnable Crypto → Crypto payments
split_payment_configarrayList of receivers for payment splitting
split_payment_config[].receiver_walletstringWallet address to receive the funds
split_payment_config[].receiver_percentnumberPercentage of the payment this wallet receives (0–100)
gateway_methodstringGateway processing method. Use direct for direct processing or subs for subscription payments
from_currency_symbolstringSource currency code (e.g. BRLUSD )
amount_fromstringAmount to be converted from source currency
to_currency_symbolstringTarget currency code (e.g. USDT)
to_chainstringThe destination blockchain network where you wish to receive the selected currency. (e.g. solana)
on_rampbooleanSet true for on-ramp flow, false for off-ramp
The on-ramp feature is not available for receiving payments via PIX. It can only be used for user-initiated payments. Incoming payment requests must set on_ramp = false.
Each enabled entry in payment_method_allowed requires the matching product flag on your deployment (crypto, pix, credit_card). Check GET /config/products with your API key.
2

Example Request

curl --request POST \
  --url https://api.starkfi.io/payment/register/intents-create-order \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <api_key>' \
  --data '{
  "executor_id": "api_transaction",
  "tenant_data": {
    "public_client_id": "stkf_a1b2c3d4e5f6789012345678abcdef01",
    "webhook_url": "https://webhook.site/97b5142a-1cb7-4142-8306-3d98a93e9a79"
  },
  "payment_method_allowed": {
    "pixcrypto": true,
    "cardcrypto": true,
    "cardfiat": true,
    "cryptopix": true,
    "crypto": true
  },
  "split_payment_config": [
    {
      "receiver_wallet": "0x9b57847b69D0354837F7b723133B9dBCbefb4F9F",
      "receiver_percent": 100
    }
  ],
  "gateway_method": "direct",
  "from_currency_symbol": "BRL",
  "amount_from": "30",
  "to_currency_symbol": "USDT",
  "to_chain": "arbitrum",
  "on_ramp": false
}'
3

Expected Response

{
    "statusCode": 201,
    "success": true,
    "status": "payment_registered",
    "message": "Payment has been registered",
    "data": {
        "payment_id": "cmodpory6000001nyoe3d12m1"
    }
}