In the Authorize.net add-on, you have some hooks to filter the transaction/request before it's sent to the AuthNet api.
make_product_payment() has gform_authorizenet_before_single_payment, which works for the AIM api.
start_subscription() has gform_authorizenet_before_start_subscription, which works for the ARB api (for the subscription).
But start_subscription() ALSO runs a preliminary AIM call -- get_initial_transaction(), which is NOT filtered by a hook! You do have a filter for if there's a Trial Period, but otherwise, not.
I think it should be around line 1944:
$transaction = apply_filters("gform_authorizenet_before_initial_transaction", $transaction, $form_data, $config, $form); $aim_response = $transaction->authorizeAndCapture();