Commerce Tools

DBerger
Participant

Send link to download PDF of Paid Invoice for Recurring Payments

SOLVE

I am dealing with Accounting Departments at various companies. And while they appreciate being emailed the Receipts for their Recurring Payments, they also want a PDF-downloadable Paid Invoice. As it stands, they are sent as part of the Receipt a link that says "View Quote." But the Quote isn't what they'd want to see, and the link is broken because the Quote has expired.

 

The link should say "View Invoice" and it should link to the Paid Invoice, which they can then Download (there is a Download button on that page). 

Many Accounting Departments expect these PDFs to serve as their record of a Paid Invoice, not an email, which they don't quite know what to do with.

 

Any help on this much appreciated.

0 Upvotes
1 Accepted solution
HubDoPete
Solution
Guide | Gold Partner
Guide | Gold Partner

Send link to download PDF of Paid Invoice for Recurring Payments

SOLVE

Hi Dan,

 

I was browsing this topic and saw that you did not have an answer for 2 weeks. Sorry for the delay. I will weigh in, in case you haven't solved it already, and for others who might want to solve it too.

 

HubSpot Invoice Objects have a property called "PDF download link"

The internal name if you use API access is: hs_pdf_download_link
"name": "hs_pdf_download_link",
"label": "PDF download link",
 Create an Invoice-Based HubSpot workflow to trigger when this property is "Known"
Have the workflow email it to whomever you need to, personalised with other Invoice properties.
 
If it is triggering before payment was made, you might need to include checking this property in your trigger:
"name": "hs_status",
"label": "External Invoice Status",
"type": "enumeration",
"fieldType": "radio",
"description": "The external status of the current invoice. This value is retrieved from a third party and may not be modified",
"groupName": "invoiceinformation",
"options": [
{
"label": "Waiting to be sent",
"value": "INVOICE_WAITING_TO_BE_SENT",
"description": "Invoice has been created and is waiting to be sent.",
"displayOrder": 0,
"hidden": false
},
{
"label": "Sent to customer",
"value": "INVOICE_SENT",
"description": "Invoice has been sent to customer.",
"displayOrder": 1,
"hidden": false
},
{
"label": "Partial payment made",
"value": "INVOICE_PAYMENT_MADE",
"description": "Partial payment has been made for invoice.",
"displayOrder": 2,
"hidden": false
},
{
"label": "Fully paid",
"value": "INVOICE_FULLY_PAID",
"description": "Invoice is fully paid and closed.",
"displayOrder": 3,
"hidden": false
},
{
"label": "Overdue",
"value": "INVOICE_OVERDUE",
"description": "Invoice is overdue.",
"displayOrder": 4,
"hidden": false
},
{
"label": "Voided",
"value": "INVOICE_VOIDED",
"description": "Invoice has been voided.",
"displayOrder": 5,
"hidden": false
}
]
 
 
If you are accepting some Quote payments, quotes have similar properties:
"name": "hs_pdf_download_link",
"label": "Quote PDF download link",
 
And you could check for this property too: Triggering when the Quote paid date is known:
"name": "hs_payment_date",
"label": "Payment date",
"type": "datetime",
"fieldType": "date",
"description": "The date the quote was paid by the customer",
"groupName": "quoteinformation",
 
or this one:
"name": "hs_amount_paid",
"label": "Amount paid",
"type": "number",
"fieldType": "calculation_equation",
"description": "The total value of non-failed payments associated to the invoice."
 
or this one:
"name": "hs_payment_status",
"label": "Payment Status",
"type": "enumeration",
"fieldType": "calculation_equation",
"description": "Payment status for the quote",
"groupName": "quoteinformation",
"options": [
{
"label": "Pending",
"value": "PENDING",
"description": "Waiting for payment",
"displayOrder": 1,
"hidden": false
},
{
"label": "Processing",
"value": "PROCESSING",
"description": "Processing payment",
"displayOrder": 2,
"hidden": false
},
{
"label": "Paid",
"value": "PAID",
"description": "Paid",
"displayOrder": 3,
"hidden": false
},
{
"label": "No payment options",
"value": "PAYMENT_NOT_ENABLED",
"description": "No payment options",
"displayOrder": 4,
"hidden": false
}
]
 
There are many properties you can trigger and filter on, to create the automation you need, not just for payments, but also for chasing up failed payments.
 
I got the details above via the HubSpot API to get properties on Invoice and Quote objects.
If you are not an API user, you can see a lot of the same information by checking out the properties available to choose in your workflow triggers and choosing what works for you.
 
Reply again here and tag me if you have any problems.
Happy Automating!
best
Pete

View solution in original post

0 Upvotes
5 Replies 5
vLisa
Member

Send link to download PDF of Paid Invoice for Recurring Payments

SOLVE

When developing a front-end strategy, starting with a solid foundation in tools like React and Vite can be crucial for success. For instance, integrating React with LIFF (LINE Front-end Framework) effectively can enhance your application’s capabilities. Similarly, just as https://www.electrasolutions.com/ leverages cutting-edge technology to deliver advanced solutions, using modern frameworks and tools can significantly streamline your development process and drive better results. Hands-on experience with these technologies can be a game-changer for your projects.

0 Upvotes
HubDoPete
Solution
Guide | Gold Partner
Guide | Gold Partner

Send link to download PDF of Paid Invoice for Recurring Payments

SOLVE

Hi Dan,

 

I was browsing this topic and saw that you did not have an answer for 2 weeks. Sorry for the delay. I will weigh in, in case you haven't solved it already, and for others who might want to solve it too.

 

HubSpot Invoice Objects have a property called "PDF download link"

The internal name if you use API access is: hs_pdf_download_link
"name": "hs_pdf_download_link",
"label": "PDF download link",
 Create an Invoice-Based HubSpot workflow to trigger when this property is "Known"
Have the workflow email it to whomever you need to, personalised with other Invoice properties.
 
If it is triggering before payment was made, you might need to include checking this property in your trigger:
"name": "hs_status",
"label": "External Invoice Status",
"type": "enumeration",
"fieldType": "radio",
"description": "The external status of the current invoice. This value is retrieved from a third party and may not be modified",
"groupName": "invoiceinformation",
"options": [
{
"label": "Waiting to be sent",
"value": "INVOICE_WAITING_TO_BE_SENT",
"description": "Invoice has been created and is waiting to be sent.",
"displayOrder": 0,
"hidden": false
},
{
"label": "Sent to customer",
"value": "INVOICE_SENT",
"description": "Invoice has been sent to customer.",
"displayOrder": 1,
"hidden": false
},
{
"label": "Partial payment made",
"value": "INVOICE_PAYMENT_MADE",
"description": "Partial payment has been made for invoice.",
"displayOrder": 2,
"hidden": false
},
{
"label": "Fully paid",
"value": "INVOICE_FULLY_PAID",
"description": "Invoice is fully paid and closed.",
"displayOrder": 3,
"hidden": false
},
{
"label": "Overdue",
"value": "INVOICE_OVERDUE",
"description": "Invoice is overdue.",
"displayOrder": 4,
"hidden": false
},
{
"label": "Voided",
"value": "INVOICE_VOIDED",
"description": "Invoice has been voided.",
"displayOrder": 5,
"hidden": false
}
]
 
 
If you are accepting some Quote payments, quotes have similar properties:
"name": "hs_pdf_download_link",
"label": "Quote PDF download link",
 
And you could check for this property too: Triggering when the Quote paid date is known:
"name": "hs_payment_date",
"label": "Payment date",
"type": "datetime",
"fieldType": "date",
"description": "The date the quote was paid by the customer",
"groupName": "quoteinformation",
 
or this one:
"name": "hs_amount_paid",
"label": "Amount paid",
"type": "number",
"fieldType": "calculation_equation",
"description": "The total value of non-failed payments associated to the invoice."
 
or this one:
"name": "hs_payment_status",
"label": "Payment Status",
"type": "enumeration",
"fieldType": "calculation_equation",
"description": "Payment status for the quote",
"groupName": "quoteinformation",
"options": [
{
"label": "Pending",
"value": "PENDING",
"description": "Waiting for payment",
"displayOrder": 1,
"hidden": false
},
{
"label": "Processing",
"value": "PROCESSING",
"description": "Processing payment",
"displayOrder": 2,
"hidden": false
},
{
"label": "Paid",
"value": "PAID",
"description": "Paid",
"displayOrder": 3,
"hidden": false
},
{
"label": "No payment options",
"value": "PAYMENT_NOT_ENABLED",
"description": "No payment options",
"displayOrder": 4,
"hidden": false
}
]
 
There are many properties you can trigger and filter on, to create the automation you need, not just for payments, but also for chasing up failed payments.
 
I got the details above via the HubSpot API to get properties on Invoice and Quote objects.
If you are not an API user, you can see a lot of the same information by checking out the properties available to choose in your workflow triggers and choosing what works for you.
 
Reply again here and tag me if you have any problems.
Happy Automating!
best
Pete
0 Upvotes
DBerger
Participant

Send link to download PDF of Paid Invoice for Recurring Payments

SOLVE

Thanks @HubDoPete ! I will see if our developers have time to implement this, though I still think it would be worthwhile as a feature in the web version of Hubspot so those without API access can use it as well. It could be just a checkmark as an option for clients with recurring subscriptions.
Best,

Dan

0 Upvotes
DBerger
Participant

Send link to download PDF of Paid Invoice for Recurring Payments

SOLVE

Thank you @BérangèreL for your help here. Will look out for a response 🙂

0 Upvotes
BérangèreL
Community Manager
Community Manager

Send link to download PDF of Paid Invoice for Recurring Payments

SOLVE

Hi @DBerger,

Thank you for reaching out to the Community!

 I'd like to thank you for sharing your valuable feedback and your use case! This means a lot to us.

I have shared it internally to bring more visibility to it.

I'd like to invite a couple of subject matter experts to this conversation: Hi @Jnix284, @jonchim and @HFisher7 do you have suggestions on how to achieve this, to help @DBerger, please?

Also, if anybody else has anything to add and/or share, please feel free to join in the conversation 🙂

Thanks a lot and have a great day!

Best,
Bérangère


Saviez-vous que la Communauté est disponible en Français ?
Rejoignez les discussions francophones en changeant votre langue dans les paramètres !

Did you know that the Community is available in other languages?
Join regional conversations by changing your language settings!


0 Upvotes