White-Label Partner Program
Offer e-signing that looks like your own, on your domain and brand. Refer customers, earn a kickback, and get an API key for every new account.
The partner program lets an existing NextSign company refer new customers. Customers who sign up through your referral link are linked to your company for good. From then on they can get a discount on credits, you earn a kickback on what they spend, and if you integrate NextSign for your customers, you can receive an API key for each new account through a webhook.
With full white-labelling, signing pages, signing links and emails carry your own domain and brand, so the signing flow looks like your own solution. See White-Labelling.
How It Works
NextSign sets you up as a partner
Partner status and the commercial terms are configured by NextSign on your company. There is no self-service signup and no API for it. Contact NextSign to become a partner.
You share your referral link
Copy the link from Dashboard → Partners and share it with the companies you refer.
The customer signs up
The signup page shows your company's name and logo. When the account is created, the new company is permanently attributed to yours.
You receive the new account (optional)
If the integration webhook is enabled for you and the customer consents, NextSign creates an API key for the new account and sends it to your webhook.
Credit purchases earn a kickback
Every credit purchase the customer makes is discounted by your agreed discount, and your agreed kickback is recorded to your company.
Partner Configuration
Your terms are stored on your company and are set by NextSign.
| Field | Type | Description |
|---|---|---|
isPartner | boolean | Whether the company is an active partner. Discounts, kickbacks and the webhook only apply while this is true |
code | string | Optional friendly referral code, such as acme. Without one, your company ID is used in the link |
kickbackPercent | number | Your share of what referred customers pay, as a fraction: 0.15 means 15% |
discountPercent | number | The discount referred customers get on credits, as a fraction: 0.10 means 10% |
webhookEnabled | boolean | Whether you can receive the partner.customer.registered webhook |
The percentages are read live at the time of each purchase. They are not locked in when a customer signs up. If your terms change, the new percentages apply to the next purchase of every customer you have referred. Purchases already recorded stay as they are.
Referral Link
https://www.nextsign.dk/user/register?ref=<code>ref accepts either your referral code or your company ID. The link in Dashboard → Partners uses your code if you have one. For signups in another language, the dashboard adds a locale prefix, for example /en/user/register?ref=acme.
Co-branded signup
The signup page looks up the ref value with a public endpoint and, if it belongs to an active partner, shows your name and logo:
GET https://api.nextsign.dk/v3/public/partner/:ref{
"isPartner": true,
"name": "Acme ApS",
"logo": "...",
"webhookEnabled": true
}For an unknown ref, or for a company that is not an active partner, the endpoint returns 200 with { "isPartner": false } and the signup page looks like a normal signup.
Attribution
Attribution happens once, when the account is created through the link. It is permanent and is never moved to another company.
- It is set even if the referring company is not a partner yet, so customers you refer before you become a partner count once you do.
- An existing NextSign company cannot be attached to you afterwards by opening your link.
- Every signup through a referral link also gives the referring company 25 free credits. This is the general refer-a-friend perk and applies to partners and non-partners alike.
Discount and Kickback
Only credit purchases count, whether the customer buys credits manually or through auto-refill by card, invoice or EAN.
- Discount: the customer pays the credit price reduced by
discountPercent. At card checkout it shows as a Partner referral discount coupon. Auto-refills are charged at the discounted price directly. - Kickback: you earn
kickbackPercentof the amount the customer actually paid, excluding VAT and after the discount.
Example: with a 10% discount and a 15% kickback, a customer buys credits listed at 1,000 DKK excl. VAT.
| Amount | |
|---|---|
| Customer pays (excl. VAT) | 900 DKK |
| Customer's saving | 100 DKK |
| Your kickback (15% × 900 DKK) | 135 DKK |
Kickbacks are recorded as a balance owed to your company, once per invoice. Payout is handled manually by NextSign.
Partner dashboard
Dashboard → Partners shows your referral link, your current percentages, and for each referred customer their signup date, spend, the kickback you have earned and the discount they have received.
Integration Webhook
If you integrate NextSign for your customers, you can receive an API key for every new account the moment it signs up through your link. This feature is off by default. Ask NextSign to turn on webhookEnabled for your company.
Set up the webhook
Go to Dashboard → Webhooks and create a webhook with the trigger New referred customer (partner.customer.registered). The trigger only appears in the list for partners with webhookEnabled. The URL, method, active toggle and custom headers work as described in Webhooks.
Customer consent
When webhookEnabled is on, the signup page shows an extra checkbox the customer must tick before continuing:
I accept that NextSign creates and sends integration details to your company name.
The key is only created and sent when all of the following are true:
- the customer signed up through your referral link and ticked the consent box
- your company is an active partner with
webhookEnabled - you have at least one active webhook with the
partner.customer.registeredtrigger
If you have no matching active webhook, no key is created.
Request
NextSign sends one request to each matching webhook, using the method you configured (POST by default) and your custom headers. If you do not set Content-Type yourself, NextSign sends application/json.
{
"trigger": "partner.customer.registered",
"company": {
"id": "66263484e601d81006d1a132",
"name": "Sample Customer ApS",
"cvr": "12345678",
"apiKey": "key_Wb22OsfMPpEkAHeS6LHqBWoaFkpEuCdyZx3pt5RvICo"
}
}| Field | Type | Description |
|---|---|---|
trigger | string | Always partner.customer.registered |
company.id | string | The new customer company's ID |
company.name | string | The company name entered at signup |
company.cvr | string | The company's CVR number |
company.apiKey | string | A new API key for the customer's account, in full |
The payload contains exactly these fields. Nothing else is sent.
Delivery
This webhook is delivered differently from case and flow webhooks:
- One attempt only. There is no retry, and the key is never sent again. If your endpoint is down or returns an error, the key is lost to you.
- No signature. NextSign does not sign the request. To verify that it came from NextSign, configure a shared secret as a custom header, such as
X-Webhook-Secret, and check it in your handler. - Not in delivery runs. Deliveries of this trigger do not appear in the webhook's recent runs in the dashboard.
- Signup waits for you. The request is sent while the customer's account is being created, so a slow endpoint makes their signup slow.
Respond with a 2xx status as fast as you can. Store the payload first and do any slow work, such as provisioning on your side, in a background job afterwards.
If a delivery is lost, the customer still has the key in their account, but the full key cannot be shown again. Ask the customer to create a new key under Dashboard → Config → API Keys and share it with you, and to revoke the unused one.
Use the key
The key belongs to the customer's company. Use it like any other API key, with Authorization: Bearer against https://api.nextsign.dk/v3/api/*:
curl https://api.nextsign.dk/v3/api/cases \
-H "Authorization: Bearer $CUSTOMER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Rental agreement",
"recipients": [{ "name": "Andreas Lauridsen", "email": "al@example.com" }],
"documents": [{ "name": "contract.pdf", "content": "JVBERi0xLjQK..." }]
}'See Create a Case for the full request reference.
- Full access. The key is created as the person who signed up, who is an admin of the new company, so it can do everything that person can.
- Attributed to the person who signed up. Cases created with the key come from that person unless you name another sender. See Who your cases belong to.
- Visible to the customer. The key appears in the customer's API keys as Partner integration (your company name). It does not expire, but the customer can revoke it at any time, after which requests fail with
401 key-revoked.
Treat the key as a secret. It gives full access to your customer's account. Store it encrypted, keep it out of logs and client-side code, and never pass it on.
Example handler
const express = require('express');
const app = express();
app.use(express.json());
app.post('/webhooks/nextsign/partner', async (req, res) => {
if (req.headers['x-webhook-secret'] !== process.env.NEXTSIGN_WEBHOOK_SECRET) {
return res.status(401).send('Unauthorized');
}
const { trigger, company } = req.body;
if (trigger !== 'partner.customer.registered') {
return res.status(200).send('Ignored');
}
// Store the key before responding. It is sent once and never again.
await saveCustomerKey({
companyId: company.id,
name: company.name,
cvr: company.cvr,
apiKey: encrypt(company.apiKey),
});
res.status(200).send('OK');
// Slow provisioning work belongs in a background job.
enqueueCustomerProvisioning(company.id);
});
app.listen(3000);White-Labelling
Combine these to make signing look like part of your own product:
| What | How it looks to the recipient | Where to set it up |
|---|---|---|
| Own signing domain | Signing pages open on your domain, such as sign.yourcompany.com | Dashboard → Config → Integrations → Custom signing domain (paid add-on, set up with a CNAME record) |
| Own email domain | Signing emails are sent from your domain instead of a NextSign sender | Email domain add-on (paid), then Dashboard → Config → Company → DNS |
| Own logo and design | Your logo, colours and styling on the signing pages | Dashboard → Config → Design |
| Neutral document key | The document key printed on signed PDFs reads Document Key instead of NextSign Document Key | Part of a full white-label agreement. Contact NextSign |
The signing links the API returns in signingUrl automatically use the account's own signing domain once it is active, so an integration needs no changes to benefit from it.
Branding is set per NextSign account. Each customer account has its own logo, design, signing domain and email domain.