Invoices can be $0 because of coupons. It's not obvious from the API if an invoice is going to result in $0 or not, so I don't think the burden should be on API clients for handling this.
So I propose:
If an invoice is created which results in $0 total, it should automatically be marked as paid
If a user views a $0 invoice and clicks pay now, it shouldn't take them to cybersource, it should just mark as paid.
In both cases, all the normal webhooks and whatever else should take place as if it was a normally paid invoice.
Invoices can be $0 because of coupons. It's not obvious from the API if an invoice is going to result in $0 or not, so I don't think the burden should be on API clients for handling this.
So I propose:
In both cases, all the normal webhooks and whatever else should take place as if it was a normally paid invoice.