You should use metered billing.
There are multiple strategies for this. The simplest solution might be to have a plan that reflects the smaller common divider.
$plan = \Stripe\Plan::create([
'currency' => 'usd',
'interval' => 'month',
'product' => 'prod_CHxGUqw1dyKsDM',
'nickname' => 'Unit Plan',
'amount' => 100, // =
'usage_type' => 'metered',
]);
Then you record the usages.
// Monthly Plan
\Stripe\SubscriptionItem::createUsageRecord(
'{{SUBSCRIPTION_ITEM_ID}}',
[
'quantity' => 100, // = 100x
'timestamp' => 1522893428,
'action' => "increment",
]
);
// Add-on
\Stripe\SubscriptionItem::createUsageRecord(
'{{SUBSCRIPTION_ITEM_ID}}',
[
'quantity' => 25, // = 25
'timestamp' => 1522893428,
'action' => "increment",
]
);