The Customer Portal contains everything to fully automatically calculate a project, allow the customer to place orders, and handle payments using Stripe.
In some cases, you might need more flexibility and control over the calculation, order options, and payment methods, but still give your customers an automated and instant checkout experience.
Here are some use cases:
Extend the calculation for custom parts/PCBs (potentially using input from your ERP)
Provide more accurate lead time estimates (potentially using input from your MRP)
Handle payments without Stripe
…and many more
The rest of the page describes how you can customize the quotation and purchasing flow using our APIs.
Prerequisites:
In Settings → Customer Portal, the setting for allowing customers to place purchases is set to “After manual quotation upload”.
💡 This option allows either a user to upload the quotation via the “Quotation” tab in the UI or your code to upload the quotation via API. In either case, the option to purchase is only presented to the user after the upload.
If you want to send invoices from your ERP or CRM instead of using Stripe as a payment processor, uncheck the option “Use Stripe for payment by invoice”. Please note that instant payment, if you allow it as a payment option, always uses Stripe.
These are the steps for the quotation and purchase process:
The customer submits the project.
The project status changes to “Quotation in progress”.
The webhook rfq_status_change is called with status
QuotationInProgress.As a reaction to the webhook, your code is run:
💡 Webhooks may not be called in some situations, e.g. due to temporary loss of network connection. Therefore, you code should periodically go through the list of projects using the Get all RfQs API, check for projects that have newly entered the status of
QuotationInProgress, and process them .Your code can retrieve information about the project:
Your code can optionally override the order selection options that will be offered to the customer for purchase using the Create order selection options API.
💡 You can provide more or fewer options than were in the original calculation and you can freely change the order size, lead time, and price. If the options relate to price points stored in your ERP, you can provide an external_id for each option that you can later retrieve when the customer placed an order.
Your code uploads a quotation document using the Upload a quotation API.
Once your code has uploaded a quotation document, the project status is automatically changed to “Quotation Available” (
QuotationAvailable).The customer is now able to click the “Checkout” button.
The customer is presented with the order selection options.
The customer places a purchase.
The project status changes to “Order placed”.
The webhook rfq_status_change is called with status
OrderPlaced.As a reaction to the webhook (or upon a periodic check of the list of projects), your code is run:
Your code retrieves information about the order selection option that the customer purchased using the Order details API.
💡 The order details include the external_id that you can use to correlate to a price point stored in your ERP.
If your are not using Stripe to handle the payment, your code triggers the invoicing process in your ERP or CRM.



