> ## Documentation Index
> Fetch the complete documentation index at: https://docs.startale.com/llms.txt
> Use this file to discover all available pages before exploring further.

# FAQ

> Frequently asked questions about the Startale AA SDK.

<AccordionGroup>
  <Accordion title="What chains does the AA SDK support?">
    The AA SDK currently supports **Soneium Mainnet** (chain ID `1868`) and **Soneium Minato** testnet (chain ID `1946`). Both networks run EntryPoint v0.7 and the call sites are identical, only the chain object and bundler URL change.

    See [Supported networks](/aa-sdk/resources/supported-networks) for bundler and paymaster URLs per chain.
  </Accordion>

  <Accordion title="What version of ERC-4337 does the SDK target?">
    The SDK targets **EntryPoint v0.7** exclusively. UserOperations are encoded in the v0.7 layout (`paymaster`, `paymasterVerificationGasLimit`, and `paymasterPostOpGasLimit` are separate fields rather than packed into `paymasterAndData`). You do not need to set the EntryPoint version manually.
  </Accordion>

  <Accordion title="What signers are supported?">
    Any object that satisfies the `SmartAccountSigner` interface works. Common choices:

    * **Dynamic:** social login, passkey, and MPC-backed keys. See [Dynamic integration](/aa-sdk/auth-providers/dynamic).
    * **Privy:** embedded wallets and social login. See [Privy integration](/aa-sdk/auth-providers/privy).
    * **viem `LocalAccount`:** raw private key, useful for scripts and testing.

    The signer slot in `toStartaleSmartAccount` accepts any of the above interchangeably.
  </Accordion>

  <Accordion title="What is the difference between the AA SDK and the App SDK?">
    |                   | AA SDK (`@startale-scs/aa-sdk`)                        | App SDK (`@startale/app-sdk`)                            |
    | ----------------- | ------------------------------------------------------ | -------------------------------------------------------- |
    | **Audience**      | dApp developers building custom AA flows               | dApp developers integrating with the Startale App wallet |
    | **Account model** | ERC-7579 modular smart account you deploy and control  | Smart account managed by the Startale App                |
    | **Signers**       | Any `SmartAccountSigner` (Dynamic, Privy, private key) | Startale App user session                                |
    | **Gas**           | Managed or self-funded SCS paymaster                   | Gasless via the Startale App (for Startale App users)    |
    | **Best for**      | Custom AA, sessions, recovery, EIP-7702                | Miniapps and in-app transactions                         |
  </Accordion>

  <Accordion title="How do I get an API key?">
    API keys for the SCS bundler and paymaster are issued from the [SCS Portal](https://portal.scs.startale.com). After signing in, create a project, provision a paymaster, and copy the API key. The [Portal setup tutorial](/aa-sdk/tutorials/portal) walks through this end to end.
  </Accordion>

  <Accordion title="What is the difference between the self-funded and managed paymaster?">
    Both modes use the same RPC and `paymasterId` call site. The difference is funding:

    * **Self-funded (prepaid):** You deposit ETH into the paymaster contract. Gas is debited from your balance per UserOperation. Good for predictable budgets.
    * **Managed (postpaid):** SCS fronts gas and bills you in fiat on a monthly cycle. Good for production apps that prefer not to manage onchain treasury.

    Switch between modes by using a different `paymasterId`, no code change required.
  </Accordion>

  <Accordion title="Can I pay gas in ERC-20 tokens instead of ETH?">
    Yes. Pass `token` instead of `paymasterId` in `paymasterContext`:

    ```ts theme={null}
    paymasterContext: {
      token: "<SUPPORTED_ERC20_ADDRESS>",
    }
    ```

    The Startale Token Paymaster quotes the token amount against the ETH gas cost at signing time. Supported tokens per network are listed in [Supported networks](/aa-sdk/resources/supported-networks).
  </Accordion>

  <Accordion title="Is there a testnet I can use?">
    Yes. **Soneium Minato** (chain ID `1946`) is the testnet. Use the `soneiumMinato` chain from `viem/chains` and point the bundler URL to `https://soneium-minato.bundler.scs.startale.com?apikey=YOUR_API_KEY`. Everything works identically to mainnet.
  </Accordion>

  <Accordion title="How do I get testnet ETH?">
    Use the faucets listed at [docs.soneium.org](https://docs.soneium.org/docs/builders/tools/faucets#eth-faucets). The [Bridge](https://testnets.superbridge.app/soneium-minato) lets you move Sepolia ETH to Soneium Minato as well.
  </Accordion>

  <Accordion title="How do I debug a failed UserOperation?">
    Replace `sendUserOperation` with `debugUserOperation` on your `StartaleAccountClient`. It logs the packed UserOperation, decodes the AA error code, and prints a Tenderly simulation URL if you have `TENDERLY_API_KEY`, `TENDERLY_ACCOUNT_SLUG`, and `TENDERLY_PROJECT_SLUG` set.

    See [Debugging UserOperations](/aa-sdk/advanced/debugging-uo) for the full error code table and decoding patterns.
  </Accordion>

  <Accordion title="Are the contracts audited?">
    Yes. The Startale Account, Factory, Bootstrap, ECDSA Validator, and both paymasters have been audited. Audit reports and all deployed addresses are in [Contracts and audits](/aa-sdk/resources/contracts-and-audits).
  </Accordion>

  <Accordion title="Does the SDK support EIP-7702?">
    Yes. EIP-7702 lets an existing EOA delegate to the Startale Account implementation without changing its address. The upgraded EOA then behaves like a full ERC-7579 modular smart account and supports all SDK features: gas sponsorship, batched calls, smart sessions, and social recovery. See [EIP-7702](/aa-sdk/eip7702).
  </Accordion>

  <Accordion title="What is a smart session?">
    A smart session is a scoped, time-bound session key issued by the account owner. It lets a dApp sign UserOperations on the user's behalf, within a defined set of allowed contracts, functions, and spend limits, without requiring the user to approve every action. Backed by the ERC-7579 Smart Sessions validator module. See [Smart sessions](/aa-sdk/tutorials/smart-sessions).
  </Accordion>

  <Accordion title="Can I send multiple calls in a single UserOperation?">
    Yes. Pass an array to `calls` in `sendUserOperation`. All calls execute atomically, if any one reverts, the entire batch reverts. For independent UserOperations that should not block each other, use [parallel lanes](/aa-sdk/advanced/parallel-tx).
  </Accordion>
</AccordionGroup>
