diff --git a/program-tests/compressed-token-test/tests/transfer2/no_system_program_cpi_failing.rs b/program-tests/compressed-token-test/tests/transfer2/no_system_program_cpi_failing.rs
index 99be5f3aa7..e3ef7721ab 100644
--- a/program-tests/compressed-token-test/tests/transfer2/no_system_program_cpi_failing.rs
+++ b/program-tests/compressed-token-test/tests/transfer2/no_system_program_cpi_failing.rs
@@ -988,8 +988,8 @@ async fn test_account_index_out_of_bounds() {
)
.await;
- // Should fail with NotEnoughAccountKeys
- assert_rpc_error(result, 0, 20014).unwrap();
+ // Should fail with TooManyCompressionTransfers (account index 99 >= 40)
+ assert_rpc_error(result, 0, 95).unwrap();
}
/// Test 16: Authority index out of bounds
diff --git a/programs/compressed-token/program/src/lib.rs b/programs/compressed-token/program/src/lib.rs
index 77630ca7f3..c845890ca9 100644
--- a/programs/compressed-token/program/src/lib.rs
+++ b/programs/compressed-token/program/src/lib.rs
@@ -40,6 +40,7 @@ pub const LIGHT_CPI_SIGNER: CpiSigner =
derive_light_cpi_signer!("cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m");
pub const MAX_ACCOUNTS: usize = 30;
+pub(crate) const MAX_PACKED_ACCOUNTS: usize = 40;
// Custom ctoken instructions start at 100 to skip spl-token program instrutions.
// When adding new instructions check anchor discriminators for collisions!
diff --git a/programs/compressed-token/program/src/mint_action/actions/mint_to_ctoken.rs b/programs/compressed-token/program/src/mint_action/actions/mint_to_ctoken.rs
index 375d05150a..4e8db7fe62 100644
--- a/programs/compressed-token/program/src/mint_action/actions/mint_to_ctoken.rs
+++ b/programs/compressed-token/program/src/mint_action/actions/mint_to_ctoken.rs
@@ -21,7 +21,8 @@ pub fn process_mint_to_ctoken_action(
validated_accounts: &MintActionAccounts,
packed_accounts: &ProgramPackedAccounts<'_, AccountInfo>,
mint: Pubkey,
-) -> Result