Documentation Index
Fetch the complete documentation index at: https://docs.starkfi.io/llms.txt
Use this file to discover all available pages before exploring further.
The transaction type defines the required and optional request parameters. Always validate the specified type before building the request.
Create a crypto transaction
Create a crypto transaction to any token on any chain (ANY-TO-ANY)
| Parameter | Type | Required | Description |
|---|---|---|---|
payment_id | string | ✅ | Payment id returned by register order endpoint |
payer_wallet | string | ✅ | User public address |
payer_email | string | ✅ | User email address |
chain_name | string | ✅ | The chain name chosen by the user, referring to the chain for which they wish to pay (for example: Solana). |
payer_token_symbol | string | ✅ | User’s choice of token to pay for this transaction (e.g., USDC, SOL, ETH) |
transaction_type | string | ✅ | Every transaction have a specific type. This is crypto |
Response Expected
How can you sign a transaction?
This example illustrates the mandatory transaction submission flow. Direct submission is not allowed and may result in failure or rejection. All transactions must be submitted exclusively through the API’s broadcast service, which is responsible for validating, propagating, and processing requests.You may use an external wallet connection provider, such as Privy.io, to interact with the user’s wallet and sign the transaction. However, never send the transaction directly using methods like
sendTransaction. The transaction must only be signed and then submitted to the API’s broadcast endpoint.Create an on-ramp transaction
Create an on-ramp transaction for fiat payment
| Parameter | Type | Required | Description |
|---|---|---|---|
payment_id | string | ✅ | Payment id returned by register order endpoint |
payer_cpf | string | ✅ | User cpf/cnpj |
payer_email | string | ✅ | User email address |
transaction_type | string | ✅ | pixcrypto or fiatcrypto |
Response Expected
With the required data in hand, simply display the payment QR code so the user can scan it using their banking app and complete the payment. From that point on, our backend automatically monitors the transaction status and, once confirmed, delivers the crypto assets directly to the registered wallet.
Create a credit card transaction
Create a credit card transaction
| Parameter | Type | Required | Description |
|---|---|---|---|
payment_id | string | ✅ | Payment id returned by register order endpoint |
transaction_type | string | ✅ | cardcrypto or cardfiat |
payer_email | string | ✅ | User email address |
payer_name | string | ✅ | User full name |
payer_document | string | ✅ | User document number |
payer_document_type | string | ✅ | PASSPORT, CPF or CNPJ |
payer_phone | object | ✅ | Payer phone is a structure as user provide phone data |
payer_phone.country_code | string | ✅ | Country code (e.g. 55) Brazil code number |
payer_phone.area_code | string | ✅ | DDD (e.g. 11) São Paulo code number |
payer_phone.number | string | ✅ | User phone number |
card_data | object | ✅ | Card payment configuration object |
card_data.installments | number | ✅ | Number of installments (e.g., 1 for a one-time payment ). Currently, only one-time payment are available. |
card_data.statement_descriptor | string | ✅ | Label that appears on the user’s card statement |
card_data.address | object | ✅ | Billing address for the card |
card_data.address.country | string | ✅ | Country code (e.g. USA, BRA) |
card_data.address.state | string | ✅ | State or province (e.g. CA, SP) |
card_data.address.city | string | ✅ | City name |
card_data.address.neighborhood | string | ✅ | Neighborhood or district |
card_data.address.street | string | ✅ | Street name |
card_data.address.street_number | string | ✅ | Street number |
card_data.address.zipcode | string | ✅ | Zip or postal code (numbers only) |
card_data.address.complement | string | ❌ | Additional address info (e.g. Apt 4B) |
card_data.card | object | ✅ | Card details object |
card_data.card.number | string | ✅ | Card number (e.g. 4111111111111111) |
card_data.card.holder_name | string | ✅ | Name printed on the card |
card_data.card.holder_document | string | ✅ | Card holder document number |
card_data.card.exp_month | number | ✅ | Card expiration month (e.g. 12) |
card_data.card.exp_year | number | ✅ | Card expiration year (e.g. 2030) |
card_data.card.cvv | string | ✅ | Card security code |
card_data.card.brand | string | ✅ | Card brand (e.g. Visa, Mastercard) |
Card payment support is currently limited to the CardCrypto method. This method has specific operational rules and limits that must be aligned in advance with the sales team.Only one-time transactions are currently supported. The enablement process has a minimum lead time of 7 days and may vary depending on regulatory requirements and jurisdiction.
🚨 Security Best Practices
🚨 Security Best Practices
Use the tokenization endpoint to process card data, avoiding the direct handling and storage of sensitive card information. Tokenization provides a higher level of security and helps ensure compliance with regulatory requirements.
When using tokenized card data, the payment request payload must follow the structure below:
| Parameter | Type | Required | Description |
|---|---|---|---|
type | string | ✅ | Payment type. Use card for card payments |
card | object | ✅ | Card details object |
card.number | string | ✅ | Card number |
card.holder_name | string | ✅ | Name of the card holder |
card.holder_document | string | ✅ | Card holder document number (CPF) |
card.exp_month | number | ✅ | Card expiration month (1–12) |
card.exp_year | number | ✅ | Card expiration year (e.g. 30 for 2030) |
card.cvv | string | ✅ | Card security code |
Response expected
| Parameter | Type | Required | Description |
|---|---|---|---|
payment_id | string | ✅ | Unique payment identifier generated in the previous step |
transaction_type | string | ✅ | Transaction type (e.g. cardcrypto, cardfiat, pixcrypto) |
payer_name | string | ✅ | Full name of the payer |
payer_email | string | ✅ | Payer’s email address |
payer_document | string | ✅ | Payer’s document number |
payer_document_type | string | ✅ | Document type (e.g. cpf) |
payer_phone | object | ✅ | Payer’s phone details |
payer_phone.country_code | string | ✅ | Country code (e.g. 55 for Brazil) |
payer_phone.area_code | string | ✅ | Area code (e.g. 11) |
payer_phone.number | string | ✅ | Phone number |
payer_ip | string | ✅ | Payer’s IP address |
session_id | string | ✅ | Session identifier for fraud prevention |
card_data | object | ✅ | Card payment details |
card_data.installments | number | ✅ | Number of installments (e.g. 1 for single payment) |
card_data.statement_descriptor | string | ✅ | Text that appears on the payer’s card statement |
card_data.card_token | string | ✅ | Tokenized card identifier from the previous step |
card_data.address | object | ✅ | Billing address |
card_data.address.country | string | ✅ | Country code (e.g. BR) |
card_data.address.state | string | ✅ | State code (e.g. SP) |
card_data.address.city | string | ✅ | City name |
card_data.address.neighborhood | string | ✅ | Neighborhood name |
card_data.address.street | string | ✅ | Street name |
card_data.address.street_number | string | ✅ | Street number |
card_data.address.zipcode | string | ✅ | ZIP/postal code |
card_data.address.complement | string | Address complement (e.g. apartment number) |
To use any payment method involving the traditional financial system (off-chain), such as PIX, fiat currency, or card payments, you must contact the sales and account management team to complete KYC and/or KYB procedures –– This process ensures proper operational alignment, customer profiling, and compliance with applicable regulations.
.png?fit=max&auto=format&n=I_v6ul4JDafNKFQP&q=85&s=f0ad25536f8a3ca42331fcff88ab2b26)