In the stripe documentation 

https://stripe.com/docs/connect/direct-charges

they have a PHP version on how to do a direct charge.

// Set your secret key: remember to change this to your live secret key in production

// Set your secret key: remember to change this to your live secret key in production
// See your keys here: https://dashboard.stripe.com/account/apikeys
\Stripe\Stripe::setApiKey("sk_test_uNnAbF9u1mBxBqgTySeneh9d");

$charge = \Stripe\Charge::create(array(
  "amount" => 1000,
  "currency" => "usd",
  "source" => "tok_visa",
  "application_fee" => 123,
), array("stripe_account" => "{CONNECTED_STRIPE_ACCOUNT_ID}"));

 

In order to do this with the Cartayst library you need to call the accountid() method before the charges() method. The cartalyst charges() method does not support a second parameter.

 


$charge = \Strip::accountid("{CONNECTED_STRIPE_ACCOUNT_ID}")->charges()->create(array(
  "amount" => 1000,
  "currency" => "usd",
  "source" => "tok_visa",
"application_fee" => 9,
));