Skip to content

bullpen solana dca create

Last updated: May 29, 2026

Create a Jupiter Recurring DCA schedule

Usage

bullpen solana dca create [OPTIONS] --per-cycle <PER_CYCLE> --cycles <CYCLES> --interval <INTERVAL> <INPUT_MINT> <OUTPUT_MINT>

Live Help

Create a Jupiter Recurring DCA schedule

Usage: bullpen solana dca create [OPTIONS] --per-cycle <PER_CYCLE> --cycles <CYCLES> --interval <INTERVAL> <INPUT_MINT> <OUTPUT_MINT>

Arguments:
  <INPUT_MINT>
          Input SPL token mint address

  <OUTPUT_MINT>
          Output SPL token mint address

Options:
      --output <OUTPUT>
          Output format for command results

          [possible values: table, json]

      --per-cycle <PER_CYCLE>
          Input token amount per cycle, in input-token units

      --cycles <CYCLES>
          Number of DCA cycles

      --env <ENV>
          Target environment to connect to (overrides config.toml)

          [env: BULLPEN_ENV=]
          [possible values: staging, production]

      --config <CONFIG>
          Path to a custom config.toml file (overrides $BULLPEN_CONFIG and the default location).

          Explicit --config and BULLPEN_CONFIG paths fail closed: if the file is missing, the CLI exits validation instead of silently loading defaults. Credentials still resolve via BULLPEN_HOME, so set BULLPEN_HOME too when isolating a session.

      --interval <INTERVAL>
          Interval between cycles, such as 30m, 6h, 1d, 1w, or 2mo

      --yes
          Skip confirmation prompt

      --preview
          Build and display the unsigned Jupiter Recurring transaction without signing or executing

      --read-only
          Enable read-only mode: blocks all mutating commands

      --non-interactive
          Suppress interactive prompts; does NOT imply --yes for money-moving commands

          [env: BULLPEN_NON_INTERACTIVE=]

  -h, --help
          Print help (see a summary with '-h')

EXAMPLES:
  bullpen solana dca create --help
      Show options for this command without signing, submitting, or changing state.

Example Commands

bullpen solana dca create [OPTIONS] --per-cycle <PER_CYCLE> --cycles <CYCLES> --interval <INTERVAL> <INPUT_MINT> <OUTPUT_MINT>
bullpen solana dca create --help
bullpen solana dca create EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v So11111111111111111111111111111111111111112 --per-cycle 50 --cycles 4 --interval 1d --preview --output json

JSON Output

Contract: JSON Output Contract.

Preview (--preview --output json)

Preview output is a single JSON document emitted only when --preview --output json is passed. Live submit output uses the corresponding Solana Recurring mutation-report schema instead.

Schema version: 1 when a command emits schema_version; otherwise treat the current command shape as contract version 1.

Top-level Keys

key type nullable notes
action string no dca_create
user string no Bullpen Solana wallet used for the Recurring order
input object no Input mint, symbol, per-cycle decimal amount, and atomics
output_mint string no Output SPL token mint
output_symbol string yes Output symbol when metadata is available
number_of_orders integer no Number of DCA cycles
interval_seconds integer no Seconds between cycles
total_in_amount string/decimal no Total input deposited across all cycles
request object no Jupiter Recurring createOrder request preview
unsigned_transaction object no Present for --preview; includes Jupiter request id and unsigned transaction

Example

bullpen solana dca create EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v So11111111111111111111111111111111111111112 --per-cycle 50 --cycles 4 --interval 1d --preview --output json
{
  "action": "dca_create",
  "user": "7qRkWTrM4DLpmeSnB8xT8p8mpqLQ9JdYatYczS4u1G8e",
  "input": {
    "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
    "symbol": "USDC",
    "amount": "50",
    "amount_atomics": 50000000
  },
  "output_mint": "So11111111111111111111111111111111111111112",
  "output_symbol": "SOL",
  "number_of_orders": 4,
  "interval_seconds": 86400,
  "interval_display": "1 day",
  "total_in_amount": "200",
  "total_in_amount_atomics": 200000000,
  "referral_account_configured": false,
  "referral_fee_bps_configured": 0,
  "request": {
    "user": "7qRkWTrM4DLpmeSnB8xT8p8mpqLQ9JdYatYczS4u1G8e",
    "inputMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
    "outputMint": "So11111111111111111111111111111111111111112",
    "params": {
      "time": {
        "inAmount": 200000000,
        "numberOfOrders": 4,
        "interval": 86400
      }
    }
  },
  "unsigned_transaction": {
    "request_id": "dca-create-request-1",
    "transaction": "base64-unsigned-transaction"
  }
}

Stability

Patch releases may add nullable or optional fields. Minor releases may add required fields or increment schema_version. Major releases may remove or rename fields.

Solana Recurring Notes

  • --preview calls Jupiter Recurring createOrder to fetch an unsigned transaction without Turnkey signing or /execute; it does not sign or submit.
  • Live create requires confirmation or --yes. BULLPEN_NON_INTERACTIVE alone returns CONFIRMATION_REQUIRED.
  • --per-cycle is in input-token units. The Jupiter request sends total deposited input as params.time.inAmount = per_cycle * cycles.
  • The CLI enforces the mini-app DCA bounds: interval at least 60 seconds, cycles between 2 and 1000, and a best-effort $50 per-cycle minimum when input price is known.
  • Jupiter Recurring does not currently expose the Jupiter Ultra referral fields; configured Bullpen referral settings are reported but not forwarded.