> ## 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.

# Create transaction

> Register a payer transaction for an existing payment intent — crypto, PIX, or card.

<Info>
  The transaction type defines the required and optional request parameters. Always validate the specified type before building the request.
</Info>

<Warning>
  **Checkout (order) flows do not require KYC/KYB.** If the payment is linked to an order (`order_code` or `executor_id: order_transaction`), verification is skipped.

  For **financial transactions** (standalone `api_transaction` payments), fiat-related types (`pixcrypto`, `cardcrypto`, `cardfiat`, `cryptopix`, `fiatcrypto`) require **approved KYC/KYB** when you send `payer_email` or `payer_wallet`. Pure `crypto` never requires KYC/KYB. See [StarkPay overview](/starkpay).
</Warning>

```shellscript theme={null}
POST /payment/register/intents-create-transaction
```

<Steps>
  <Step title="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 

    <CodeGroup>
      ```json EVM expandable theme={null}
      {
          "statusCode": 201,
          "success": true,
          "status": "payment_registered",
          "message": "Payment has been registered",
          "data": {
              "session_payment": "https://app.starkfi.io/sessions/payment?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImNtb2RpNzhiMjAwMDEwMXBqZXpzdDFpY3MiLCJleGVjdXRvcl9pZCI6ImFwaV90cmFuc2FjdGlvbiIsIm9yZGVyX2NvZGUiOm51bGwsInRlbmFudF9kYXRhIjp7ImNvdW50cnkiOiJicmF6aWwiLCJwaXhfZW5hYmxlZCI6dHJ1ZSwid2ViaG9va191cmwiOiJodHRwczovL3dlYmhvb2suc2l0ZS85YWJkYzZhZC00OTU2LTRkOGMtYjRkNS0wNmVhZmZhMzBiY2UiLCJwdWJsaWNfY2xpZW50X2lkIjoiY21uZ3k2Nm13MDAwMGU2eTB1b3djYnhnZiIsImJhbmtfYWNjb3VudF9lbmFibGVkIjp0cnVlLCJwYXltZW50X21ldGhvZF9hbGxvd2VkIjp7ImNyeXB0byI6dHJ1ZSwiY2FyZGZpYXQiOnRydWUsInBpeGNyeXB0byI6dHJ1ZSwiY2FyZGNyeXB0byI6dHJ1ZX19LCJzdGF0dXMiOiJjcmVhdGluZ190cmFuc2FjdGlvbiIsInBheWVyX2VtYWlsIjoiZGV2LmNhaXF1ZWJlcmluZ3VpQGdtYWlsLmNvbSIsInBheWVyX3dhbGxldCI6IjB4OWI1Nzg0N2I2OUQwMzU0ODM3RjdiNzIzMTMzQjlkQkNiZWZiNEY5RiIsInBheWVyX3Rva2VuX3N5bWJvbCI6IlVTRFQiLCJ0cmFuc2FjdGlvbl90eXBlIjoiY3J5cHRvIiwicGF5ZXJfY3BmIjoiIiwidGlkX2hhc2giOm51bGwsIm1ldGFkYXRhIjpudWxsLCJzcGxpdF9wYXltZW50X2NvbmZpZyI6W3sicmVjZWl2ZXJfd2FsbGV0IjoiMHg5YjU3ODQ3YjY5RDAzNTQ4MzdGN2I3MjMxMzNCOWRCQ2JlZmI0RjlGIiwicmVjZWl2ZXJfcGVyY2VudCI6MTAwfV0sInN1YnNjcmlwdGlvbl9wYXltZW50X2NvbmZpZyI6bnVsbCwiZnJvbV9jdXJyZW5jeV9zeW1ib2wiOiJCUkwiLCJhbW91bnRfZnJvbSI6IjMwIiwiYW1vdW50X3RvIjoiMC4wNTk5NDQ4NTA3MzczMjE2NiIsIm5ldF9hbW91bnQiOnsibmV0X2Ftb3VudCI6MC4wNTg3NDU5NTM3MjI1NzUyMywiY29uc3VtZWRfZmVlIjoyfSwidG9fY3VycmVuY3lfc3ltYm9sIjoiVVNEVCIsImNoYWluX25hbWUiOiJhcmJpdHJ1bSIsImZyb21fY2hhaW4iOiJhcmJpdHJ1bSIsInRvX2NoYWluIjoiYXJiaXRydW0iLCJvbl9yYW1wIjpmYWxzZSwidW5zaWduZWRfdHgiOm51bGwsInNpZ25lZF90eCI6bnVsbCwiZ2xvYmFsX3BheW1lbnRfZGF0YSI6bnVsbCwiZGF0YV9lcnJvciI6eyJjb2RlIjoiaW52YWxpZF90cmFuc2FjdGlvbiIsInN0YXR1cyI6ImVycm9yIiwiZGV0YWlscyI6IkVycm9yOiBHYXMgZXN0aW1hdGlvbiBmYWlsZWQuIFRoZSB0cmFuc2FjdGlvbiB3b3VsZCByZXZlcnQgb24tY2hhaW4uIENhdXNlOiBleGVjdXRpb24gcmV2ZXJ0ZWQgUmV2ZXJ0IGRhdGE6IDB4OTRlNjgwOGEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBmZDA4NmJjN2NkNWM0ODFkY2M5Yzg1ZWJlNDc4YTFjMGI2OWZjYmI5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwYzk3NGE3NThjZTdjNGRkNTdhOWJlMWYwZTA0ZDA5ZjljODViZWI3YjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDliNTc4NDdiNjlkMDM1NDgzN2Y3YjcyMzEzM2I5ZGJjYmVmYjRmOWYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBlMzIyIENvbnRyYWN0IGVycm9yOiBFUkMyMFRyYW5zZmVyRmFpbGVkLiBMaWtlbHkgY2F1c2VzOiBpbnN1ZmZpY2llbnQgdG9rZW4gYmFsYW5jZSBvciBpbnN1ZmZpY2llbnQgYWxsb3dhbmNlIGZvciB0aGUgZ2F0ZXdheSBjb250cmFjdC5cbiAgICBhdCBFVk1JbnRlcm5hbE1ldGhvZHMuR2VuZXJhdGVUeCAoL1VzZXJzL2NhaXF1ZS9kZXZlbG9wL1N0YXJrTm9kZS1TZXJ2ZXIvc3JjL2NsYXNzL0VWTUludGVybmFsTWV0aG9kcy5qczo4MDk6MjkpXG4gICAgYXQgcHJvY2Vzcy5wcm9jZXNzVGlja3NBbmRSZWplY3Rpb25zIChub2RlOmludGVybmFsL3Byb2Nlc3MvdGFza19xdWV1ZXM6MTA1OjUpXG4gICAgYXQgYXN5bmMgUGF5bWVudE1ldGhvZHMuX2J1aWxkVHJhbnNmZXJUeCAoL1VzZXJzL2NhaXF1ZS9kZXZlbG9wL1N0YXJrTm9kZS1TZXJ2ZXIvc3JjL2NsYXNzL1BheW1lbnRNZXRob2RzLmpzOjExNzQ6MjQpXG4gICAgYXQgYXN5bmMgYnVpbGRUcmFuc2FjdGlvbnNCeVR5cGUgKC9Vc2Vycy9jYWlxdWUvZGV2ZWxvcC9TdGFya05vZGUtU2VydmVyL3NyYy9jbGFzcy9QYXltZW50TWV0aG9kcy5qczoxMzEyOjIzKVxuICAgIGF0IGFzeW5jIFJlZ2lzdGVyUGF5bWVudFRyYW5zYWN0aW9uICgvVXNlcnMvY2FpcXVlL2RldmVsb3AvU3RhcmtOb2RlLVNlcnZlci9zcmMvY29udHJvbGxlci9QYXltZW50VjFDb250cm9sbGVyLmpzOjU0NTo0NCkiLCJtZXNzYWdlIjoiR2FzIGVzdGltYXRpb24gZmFpbGVkLiBUaGUgdHJhbnNhY3Rpb24gd291bGQgcmV2ZXJ0IG9uLWNoYWluLiBDYXVzZTogZXhlY3V0aW9uIHJldmVydGVkIFJldmVydCBkYXRhOiAweDk0ZTY4MDhhMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZmQwODZiYzdjZDVjNDgxZGNjOWM4NWViZTQ3OGExYzBiNjlmY2JiOTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGM5NzRhNzU4Y2U3YzRkZDU3YTliZTFmMGUwNGQwOWY5Yzg1YmViN2IwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA5YjU3ODQ3YjY5ZDAzNTQ4MzdmN2I3MjMxMzNiOWRiY2JlZmI0ZjlmMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZTMyMiBDb250cmFjdCBlcnJvcjogRVJDMjBUcmFuc2ZlckZhaWxlZC4gTGlrZWx5IGNhdXNlczogaW5zdWZmaWNpZW50IHRva2VuIGJhbGFuY2Ugb3IgaW5zdWZmaWNpZW50IGFsbG93YW5jZSBmb3IgdGhlIGdhdGV3YXkgY29udHJhY3QuIn0sInNlc3Npb25fcGF5bWVudCI6bnVsbCwid2ViaG9va19mb3J3YXJkZWQiOmZhbHNlLCJwYWdhcm1lX2NvbmZpZyI6bnVsbCwiY3JlYXRlZF9hdCI6IjIwMjYtMDQtMjRUMjI6NTA6MTYuOTEwWiIsInVwZGF0ZWRfYXQiOiIyMDI2LTA0LTI0VDIyOjUxOjM5LjI2NloiLCJpYXQiOjE3NzcwNzExMDB9.21mL8u2M2cpki6umaFHlU2aCc8fhVrMEu2L711KtznU",
              "payment_id": "cmodi78b2000101pjezst1ics",
              "crypto_tx": {
                  "schema_version": 1,
                  "family": "evm",
                  "chain_name": "arbitrum",
                  "transactionRequest": {
                      "from": "0x9b57847b69D0354837F7b723133B9dBCbefb4F9F",
                      "to": "0x23183C87c9c6668edf5974893905AF475c3664c9",
                      "data": "0x40180def000000000000000000000000fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb90000000000000000000000009b57847b69d0354837f7b723133b9dbcbefb4f9f000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000020000000000000000000000009b57847b69d0354837f7b723133b9dbcbefb4f9f0000000000000000000000001e659faad0181ab1a30891d99f69df115db77eef0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000e3220000000000000000000000000000000000000000000000000000000000000706",
                      "value": 0,
                      "chainId": 42161,
                      "gasLimit": "82499",
                      "maxPriorityFeePerGas": "0",
                      "maxFeePerGas": "52514800",
                      "nonce": 36
                  },
                  "meta": {
                      "source": "evm_split"
                  }
              },
              "fiat_tx": {
                  "message": "This details is available only for fiat payments"
              }
          }
      }
      ```

      ```json Solana expandable theme={null}
      {
          "statusCode": 201,
          "success": true,
          "status": "payment_registered",
          "message": "Payment has been registered",
          "data": {
              "session_payment": "https://lab-app.starkfi.io/sessions/payment?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImNtb2R2aDVsNzAwMDEwMW55ZmdzMG9weDMiLCJleGVjdXRvcl9pZCI6ImFwaV90cmFuc2FjdGlvbiIsIm9yZGVyX2NvZGUiOm51bGwsInRlbmFudF9kYXRhIjp7ImNvdW50cnkiOiJicmF6aWwiLCJwaXhfZW5hYmxlZCI6dHJ1ZSwid2ViaG9va191cmwiOiJodHRwczovL3dlYmhvb2suc2l0ZS85N2I1MTQyYS0xY2I3LTQxNDItODMwNi0zZDk4YTkzZTlhNzkiLCJwdWJsaWNfY2xpZW50X2lkIjoiY21uZ3k2Nm13MDAwMGU2eTB1b3djYnhnZiIsImJhbmtfYWNjb3VudF9lbmFibGVkIjp0cnVlLCJwYXltZW50X21ldGhvZF9hbGxvd2VkIjp7ImNyeXB0byI6dHJ1ZSwiY2FyZGZpYXQiOnRydWUsInBpeGNyeXB0byI6dHJ1ZSwiY2FyZGNyeXB0byI6dHJ1ZX19LCJzdGF0dXMiOiJjcmVhdGluZ190cmFuc2FjdGlvbiIsInBheWVyX2VtYWlsIjoiZGV2LmNhaXF1ZWJlcmluZ3VpQGdtYWlsLmNvbSIsInBheWVyX3dhbGxldCI6IkZtVEdZcHpYMjdmRHFhaXl0WFVkRlZhcGhDNW82OEc2MVEzdWhWTTJkOGJtIiwicGF5ZXJfdG9rZW5fc3ltYm9sIjoiVVNEVCIsInRyYW5zYWN0aW9uX3R5cGUiOiJjcnlwdG8iLCJwYXllcl9jcGYiOiIiLCJ0aWRfaGFzaCI6bnVsbCwibWV0YWRhdGEiOm51bGwsInNwbGl0X3BheW1lbnRfY29uZmlnIjpbeyJyZWNlaXZlcl93YWxsZXQiOiJGbVRHWXB6WDI3ZkRxYWl5dFhVZEZWYXBoQzVvNjhHNjFRM3VoVk0yZDhibSIsInJlY2VpdmVyX3BlcmNlbnQiOjEwMH1dLCJzdWJzY3JpcHRpb25fcGF5bWVudF9jb25maWciOm51bGwsImZyb21fY3VycmVuY3lfc3ltYm9sIjoiQlJMIiwiYW1vdW50X2Zyb20iOiIzMCIsImFtb3VudF90byI6IjAuMDU5OTE3MzE0MTA2NTMyOTgiLCJuZXRfYW1vdW50Ijp7Im5ldF9hbW91bnQiOjAuMDU4NzE4OTY3ODI0NDAyMzIsImNvbnN1bWVkX2ZlZSI6Mn0sInRvX2N1cnJlbmN5X3N5bWJvbCI6IlVTRFQiLCJjaGFpbl9uYW1lIjoic29sYW5hIiwiZnJvbV9jaGFpbiI6InNvbGFuYSIsInRvX2NoYWluIjoic29sYW5hIiwib25fcmFtcCI6ZmFsc2UsInVuc2lnbmVkX3R4IjpudWxsLCJzaWduZWRfdHgiOm51bGwsImdsb2JhbF9wYXltZW50X2RhdGEiOm51bGwsImRhdGFfZXJyb3IiOnsiY29kZSI6ImludmFsaWRfdHJhbnNhY3Rpb24iLCJzdGF0dXMiOiJlcnJvciIsImRldGFpbHMiOiJFcnJvcjogYnVpbGRfc3BsaXRfc29sYW5hX3R4X2ZhaWxlZFxuICAgIGF0IGJ1aWxkVHJhbnNhY3Rpb25zQnlUeXBlICgvVXNlcnMvY2FpcXVlL2RldmVsb3AvU3RhcmtOb2RlLVNlcnZlci9zcmMvY2xhc3MvUGF5bWVudE1ldGhvZHMuanM6MTMxNToyNylcbiAgICBhdCBwcm9jZXNzLnByb2Nlc3NUaWNrc0FuZFJlamVjdGlvbnMgKG5vZGU6aW50ZXJuYWwvcHJvY2Vzcy90YXNrX3F1ZXVlczoxMDM6NSlcbiAgICBhdCBhc3luYyBSZWdpc3RlclBheW1lbnRUcmFuc2FjdGlvbiAoL1VzZXJzL2NhaXF1ZS9kZXZlbG9wL1N0YXJrTm9kZS1TZXJ2ZXIvc3JjL2NvbnRyb2xsZXIvUGF5bWVudFYxQ29udHJvbGxlci5qczo1NDU6NDQpIiwibWVzc2FnZSI6ImJ1aWxkX3NwbGl0X3NvbGFuYV90eF9mYWlsZWQifSwic2Vzc2lvbl9wYXltZW50IjpudWxsLCJ3ZWJob29rX2ZvcndhcmRlZCI6dHJ1ZSwicGFnYXJtZV9jb25maWciOm51bGwsImNyZWF0ZWRfYXQiOiIyMDI2LTA0LTI1VDA1OjAxOjU0Ljk1NVoiLCJ1cGRhdGVkX2F0IjoiMjAyNi0wNC0yNVQwNTowMjo1NS40NTdaIiwiaWF0IjoxNzc3MDkzMzc2fQ.pb1iaqO7EjwLDrCO7_NhvHc24AE9UakTkvqIj3Qi2nw",
              "payment_id": "cmodvh5l7000101nyfgs0opx3",
              "crypto_tx": {
                  "schema_version": 1,
                  "family": "solana",
                  "chain_name": "solana",
                  "transactionRequest": {
                      "data": "AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAEBttm371bWToa9QKOXo5KlPPMPULltp5K1MsY2z3EYpYM4lpesQRHg7J5DUQjTvzAUtih+p8dZ1dEBpm1DSEkVewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZzgEOYK/tsicXvWMZL1QUWj+WWjO7gtLHAp6yzh4ggmQG3fbh12Whk9nL4UbO63msHLSF7V9bN5E6jPWFfv8AqRC/T5jJwSXV8TMkbzjOoqiD1Y9eJjbio512iw09evSVBAMGAAEABAIFAQEFAwEBAAkDCOMAAAAAAAADBgABAAQCBQEBBQMBAQAJAwUHAAAAAAAAAA=="
                  },
                  "meta": {
                      "source": "solana_split"
                  }
              },
              "fiat_tx": {
                  "message": "This details is available only for fiat payments"
              }
          }
      }
      ```
    </CodeGroup>
  </Step>
</Steps>

### 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.

<CodeGroup>
  ```typescript EVM expandable theme={null}
  import { Wallet } from "ethers";

  const privateKey = "SUA_PRIVATE_KEY_AQUI";
  const wallet = new Wallet(privateKey);

  const tx = {
    from:                 "0x9b57847b69D0354837F7b723133B9dBCbefb4F9F",
    to:                   "0x23183C87c9c6668edf5974893905AF475c3664c9",
    data:                 "0x40180def000000000000000000000000fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb90000000000000000000000009b57847b69d0354837f7b723133b9dbcbefb4f9f000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000020000000000000000000000009b57847b69d0354837f7b723133b9dbcbefb4f9f0000000000000000000000001e659faad0181ab1a30891d99f69df115db77eef0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000e3220000000000000000000000000000000000000000000000000000000000000706",
    value:                0n,
    chainId:              42161,
    gasLimit:             82499n,
    maxPriorityFeePerGas: 0n,
    maxFeePerGas:         52514800n,
    nonce:                36,
    type:                 2,
  };

  const signedTx = await wallet.signTransaction(tx);
  console.log("Transação assinada:", signedTx);
  ```

  ```typescript Solana expandable theme={null}
  import { Keypair, Transaction } from "@solana/web3.js";
  import bs58 from "bs58";

  const privateKeyBase58 = "YOUR_PRIVATE_KEY_BASE58_HERE";
  const keypair = Keypair.fromSecretKey(bs58.decode(privateKeyBase58));

  // Serialized tx (wire format base64) returned by API response
  const wireBase64 = `AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAGCttm371bWToa9QKOXo5KlPPMPULltp5K1MsY2z3EYpYMIe`;

  // 1. Deserialize bytes
  const txBytes = Buffer.from(wireBase64, "base64");
  const tx = Transaction.from(txBytes);

  // 2. Sign (fills the empty signature slot with ed25519 signature)
  tx.sign(keypair);

  // 3. Serialize back to base64 (now with signature)
  const signedTx = tx.serialize().toString("base64");
  console.log("Signed transaction:", signedTx);
  ```
</CodeGroup>

<Info>
  You may use an external wallet connection provider, such as [Privy.io](https://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.
</Info>

<Steps>
  <Step title="Create an on-ramp transaction" stepNumber={2}>
    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

    ```json expandable theme={null}
    {
        "statusCode": 201,
        "success": true,
        "status": "payment_registered",
        "message": "Payment has been registered",
        "data": {
            "session_payment": "https://app.starkfi.io/sessions/payment?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImNtb2RocWYzODAwMDAwMXBqanU5a3hsbWIiLCJleGVjdXRvcl9pZCI6ImFwaV90cmFuc2FjdGlvbiIsIm9yZGVyX2NvZGUiOm51bGwsInRlbmFudF9kYXRhIjp7ImNvdW50cnkiOiJicmF6aWwiLCJwaXhfZW5hYmxlZCI6dHJ1ZSwid2ViaG9va191cmwiOiJodHRwczovL3dlYmhvb2suc2l0ZS85YWJkYzZhZC00OTU2LTRkOGMtYjRkNS0wNmVhZmZhMzBiY2UiLCJwdWJsaWNfY2xpZW50X2lkIjoiY21uZ3k2Nm13MDAwMGU2eTB1b3djYnhnZiIsImJhbmtfYWNjb3VudF9lbmFibGVkIjp0cnVlLCJwYXltZW50X21ldGhvZF9hbGxvd2VkIjp7ImNyeXB0byI6dHJ1ZSwiY2FyZGZpYXQiOnRydWUsInBpeGNyeXB0byI6dHJ1ZSwiY2FyZGNyeXB0byI6dHJ1ZX19LCJzdGF0dXMiOiJjcmVhdGluZ190cmFuc2FjdGlvbiIsInBheWVyX2VtYWlsIjoiZGV2LmNhaXF1ZWJlcmluZ3VpQGdtYWlsLmNvbSIsInBheWVyX3dhbGxldCI6IiIsInBheWVyX3Rva2VuX3N5bWJvbCI6bnVsbCwidHJhbnNhY3Rpb25fdHlwZSI6InBpeGNyeXB0byIsInBheWVyX2NwZiI6IjIzMTU5NDE0ODI1IiwidGlkX2hhc2giOm51bGwsIm1ldGFkYXRhIjpudWxsLCJzcGxpdF9wYXltZW50X2NvbmZpZyI6W3sicmVjZWl2ZXJfd2FsbGV0IjoiMHg5YjU3ODQ3YjY5RDAzNTQ4MzdGN2I3MjMxMzNCOWRCQ2JlZmI0RjlGIiwicmVjZWl2ZXJfcGVyY2VudCI6MTAwfV0sInN1YnNjcmlwdGlvbl9wYXltZW50X2NvbmZpZyI6bnVsbCwiZnJvbV9jdXJyZW5jeV9zeW1ib2wiOiJCUkwiLCJhbW91bnRfZnJvbSI6IjMwIiwiYW1vdW50X3RvIjoiMC4wNTk5MjkyODM0NDU1MzQyNyIsIm5ldF9hbW91bnQiOnsibmV0X2Ftb3VudCI6MC4wNTg3MzA2OTc3NzY2MjM1OCwiY29uc3VtZWRfZmVlIjoyfSwidG9fY3VycmVuY3lfc3ltYm9sIjoiVVNEVCIsImNoYWluX25hbWUiOiJhcmJpdHJ1bSIsImZyb21fY2hhaW4iOiJhcmJpdHJ1bSIsInRvX2NoYWluIjoiYXJiaXRydW0iLCJvbl9yYW1wIjpmYWxzZSwidW5zaWduZWRfdHgiOm51bGwsInNpZ25lZF90eCI6bnVsbCwiZ2xvYmFsX3BheW1lbnRfZGF0YSI6bnVsbCwiZGF0YV9lcnJvciI6bnVsbCwic2Vzc2lvbl9wYXltZW50IjpudWxsLCJ3ZWJob29rX2ZvcndhcmRlZCI6ZmFsc2UsInBhZ2FybWVfY29uZmlnIjpudWxsLCJjcmVhdGVkX2F0IjoiMjAyNi0wNC0yNFQyMjozNzoxMi41NDhaIiwidXBkYXRlZF9hdCI6IjIwMjYtMDQtMjRUMjI6Mzc6MjguMTE4WiIsImlhdCI6MTc3NzA3MDI1MH0.xg4kUiPaACT-CKXhkQOAWqOjakb3t7vaSuNt7cD6JdM",
            "payment_id": "cmodhqf38000001pjju9kxlmb",
            "crypto_tx": "This details is available only for crypto payments",
            "fiat_tx": {
                "calendar": {
                    "criacao": "2026-04-24T19:37:30.608Z",
                    "expiracao": 3600
                },
                "pix_key": "3254cbd2-75e5-4034-abdb-ba8eebcee742",
                "txid": "282910f46cb6420388c9887a",
                "status": "ATIVA",
                "pixCopiaECola": "00020101021226790014br.gov.bcb.p03***63047A85",
                "pix_qr_code_data_url": "data:image/png;base64,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",
                "code": 201
            }
        }
    }
    ```

    <Info>
      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.
    </Info>
  </Step>

  <Step title="Create a credit card transaction" stepNumber={3}>
    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 ).<br />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`)                                                                         |

    <Info>
      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.
    </Info>

    <Accordion title="🚨 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.

      ```shellscript theme={null}
      POST https://api.starkfi.io/payment/card/tokenize
      ```

      | 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

      ```json theme={null}
      {
          "id": "token_wxDE5l3uGofL5KzR",
          "type": "card",
          "created_at": "2026-04-25T17:32:22Z",
          "expires_at": "2026-04-25T17:33:22Z",
          "card": {
              "first_six_digits": "400000",
              "last_four_digits": "0010",
              "holder_name": "Tony Stark",
              "holder_document": "93095135270",
              "exp_month": 1,
              "exp_year": 30,
              "brand": "Visa"
          }
      }
      ```

      When using tokenized card data, the payment request payload must follow the structure below:

      | 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)                    |
    </Accordion>
  </Step>
</Steps>

<Note>
  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.
</Note>
