使用 Stripe 的自动税费计算 (
automatic_tax[enabled]=true
) 时,Stripe 负责计算应用于发票的税额。我遇到的问题是,当通过 Stripe 的 API 创建“贷方票据” 部分退款时,refund_amount
必须等于贷方票据金额(贷方票据金额 = 退款金额 + 税),但是我不知道计算出的退税金额应该是多少,因为 Stripe 会自行处理该计算。
考虑以下代码,它将尝试在发票上创建金额为 10.00 美元的贷方票据:
$stripe->creditNotes->create([
'invoice' => 'in_xxxxxxxxxxxxx',
'refund_amount => 1000,
]);
问题是 Stripe 会计算出
refund_amount
应该是 10.70 美元(假设 7% 的税),并会返回以下错误:
贷方金额、退款金额和带外金额 ($10.00) 的总和必须等于贷方票据金额 ($10.70)。
所以我认为我需要的是一个额外的参数,告诉 Stripe 我希望他们确定额外的税额应该是多少;像这样的东西:
$stripe->creditNotes->create([
'invoice' => 'in_xxxxxxxxxxxxx',
'refund_amount => 1000,
'automatic_tax' => [
'enabled' => true,
],
]);
但是该参数在 API 上不存在。有人对如何解决这个问题有什么建议吗?
检索发票并查看总计或税属性,以了解您应用于贷方票据的评估金额。
创建“预览”贷方票据,其中提供计算出的税额。然后,您可以在创建实际贷方票据时将该税添加到退款金额中:
// The amount to refund.
$amount = 1000; // ($10.00)
// First create a preview credit note.
$preview = $stripe->creditNotes->preview([
'invoice' => 'in_xxxxxxxxxxxxx',
'refund_amount' => $amount,
'lines' => [
[
'type' => 'invoice_line_item',
'invoice_line_item' => 'li_xxxxxxxxxxxxx',
'amount' => $amount,
],
],
]);
// Collect the tax from the preview.
$tax = 0;
foreach ($preview->tax_amounts as $taxAmount) {
$tax += $taxAmount->amount;
}
// Add the tax onto the refund amount.
$totalAmount = $amount + $tax;
// Issue the actual credit note.
$creditNote = $stripe->creditNotes->create([
'invoice' => 'in_xxxxxxxxxxxxx',
'refund_amount' => $totalAmount,
'lines' => [
[
'type' => 'invoice_line_item',
'invoice_line_item' => 'li_xxxxxxxxxxxxx',
'amount' => $amount,
],
],
]);