Internal approvals
Protect your margins: a quote that exceeds your caps doesn’t reach the client until someone with authority approves it.
What it is
Internal approvals are a rule for your organization. You define how far a seller can go without asking (maximum discount, maximum amount, and minimum margin). When a quote exceeds any of those caps when it’s sent (with Create and send, Save and send, Send to client, from the board, or through the API), Cord doesn’t send it: it keeps it as a draft marked Pending approval and notifies whoever can decide.
This is not the client’s approval. That’s the signature on the link; this is an internal control for your team.
Requirements
- Plan: Scale or Developer. On other plans the caps can’t be saved with a value above 0 and Cord doesn’t evaluate them.
- Permission to configure: Settings.
- Permission to decide: Approvals. The account owner can always decide.
- Country: available in all 12 markets.
Set up the caps
- Go to Settings › Quotes › Approvals.
- Under Approval thresholds, enter the caps you want to use. Each one is independent; a value of 0 means “no cap”.
- Save your changes. They apply to every send from then on, including drafts and new versions.
| Cap | What Cord compares | When it asks for approval |
|---|---|---|
| Max discount without approval (%) | The largest discount on any line: the difference between its List price and its Price. | If any line has a discount above the cap. |
| Max amount without approval | The quote total. | If the total is above the cap. |
| Minimum gross margin without approval (%) | The margin of each line with a captured cost: (price − cost) ÷ price. | If any line with a cost falls below the minimum. Lines without a cost don’t count. |
If the quote carries a manual document discount, Cord counts it as a discount on each line for the discount and margin caps: moving the reduction to the footer doesn’t get around the rule. A coupon doesn’t count toward those caps, because it was created by whoever manages Settings and is already an authorized reduction.
The amount is compared in your business currency. The amount cap is entered in your business currency. If you quote in another currency, Cord converts the total with the quote’s own locked exchange rate or, if the quote doesn’t carry one, with that day’s rate. If there’s no exchange rate to prove it, Cord doesn’t guess: it asks for approval and the reason says the total can’t be compared with the cap because it’s in another currency.
What happens on send
When the seller sends the quote (Create and send or Save and send in the editor, Send to client on the detail, or by dragging it to Sent on the board) and it exceeds at least one cap:
- The quote is saved as a Draft with the internal status Pending approval. The client gets no email and the link isn’t activated. In the editor, the seller sees “Approval requested for COT-0149. Waiting for an approver’s sign-off.”
- Cord writes the reason: which cap was exceeded and by how much (for example, a 22% discount against an allowed 15%, or a USD 310,000 total against a USD 250,000 cap). The reason shows on the quote detail and in its activity.
- The quote appears under Quotes with the Needs approval filter, and above the list you see how many are awaiting your approval.
- Cord emits the approval-request event, which feeds Slack, Teams, webhooks, and workflows.
With Save draft (or autosave), Cord doesn’t evaluate the caps: the rule is checked every time someone tries to send. A draft that’s already waiting for approval can’t be sent from the detail: Cord replies that the quote is waiting for approval and that the approver will send it when they decide. If you reopen it in the editor and lower the discount until it’s within the caps, Save and send sends it and the request no longer applies.
On a new version
A new version (Modify and resend) is also evaluated when you click Send new version. If the quote had already been approved by a manager and the version doesn’t make anything worse than what was approved (same or lower discount, same or lower total, same or better margin), it’s sent. If it exceeds a cap it didn’t exceed before, or exceeds it by more, Cord doesn’t send it and replies that the version needs approval, with the reason, and asks you to adjust it or have an approver review it.
Who approves and how
The quote detail shows the Pending approval notice with the reason. Anyone with the Approvals permission sees two buttons:
- Approve and send: the quote moves to Sent, the link becomes active, the client gets the email with the link (if their profile has an email), and the activity logs that management approved it and sent it to the client. It counts as one of the month’s sends.
- Reject: Cord asks you to confirm (“Reject this approval request?”). The quote stays a draft and the detail shows Approval request rejected by management.
If you connected Cord’s Slack app, the request arrives in your channel with the number, client, total, reason, and Approve and Reject buttons.
For the button to decide, the email of your Slack account must match an active Cord member with the Approvals permission. If it doesn’t, Slack replies that your account doesn’t match a member with that permission and that you should decide from Cord. Once decided, the message updates with who approved or rejected.
If you connected Microsoft Teams, the request arrives in the channel as a card with the number, client, total, and reason, and a Decide in Cord button that opens the detail. Teams doesn’t allow deciding from the card: the decision is made in Cord.
The Approve the internal request action in Workflows approves the pending request and sends the quote. Use it with care: a workflow that approves without conditions defeats the purpose of the cap.
Behavior and edge cases
- Approve and send does email the client when their profile has an email, just like a normal send. If it doesn’t, share the link from the detail with Copy link, WhatsApp, or your own email.
- Every send goes through the rule. Whether the quote is sent on creation, from a draft, from the board, or through the API, Cord checks the caps every time.
- A request is decided only once. If two managers decide at the same time, the second is told there’s no pending approval request.
- The seller sees the margin before sending. In the editor, the Margin column turns red when a line falls below your minimum margin.
- If your plan drops below Scale, Cord stops evaluating the caps and requests left pending can no longer be decided with Approve and send; the seller can send that draft directly and the request no longer applies.
Limits by plan
| Free | Starter | Pro | Scale | Developer | |
|---|---|---|---|---|---|
| Internal approvals | No | No | No | Yes | Yes |
Common problems
I can’t save a cap above 0. Your plan doesn’t include internal approvals.
The margin cap doesn’t trigger. The lines have no cost. Capture the cost on each product’s profile; free lines have no cost.
I approved and the client got nothing. Their profile has no email, or the email didn’t arrive. Look for the email entry in the activity and, if it isn’t there, share the link from the detail.
The version needs approval. The new version exceeds a cap by more than the approved version did. Adjust the discount or margin, or ask an approver to review it.
The Slack button says I don’t have permission. Your Slack email doesn’t match your Cord user, or your role doesn’t have Approvals.