Overview
Onboard a client before running payin or payout flows: provision the Due customer, complete KYC (hosted or API-driven), request endorsements for the channels you need, and accept terms of service when required.Portal proxies these endpoints to Due and returns Due’s responses verbatim. Example responses below are illustrative; exact fields come from Due and may evolve.
1. Provision the Due customer
CallPOST /customers to create the Due customer for the authenticated client.
typeisindividualorbusiness.kycReturnUrlis optional and controls where the user lands after a hosted KYC session.
GET /customers to fetch the customer and its status at any time.
2. Check KYC state and requirements
GET /kyc returns the customer’s KYC state and outstanding requirements. Drive your onboarding UI from this response.
3. Complete KYC
Due supports two paths. The hosted session is the fastest way to get started; the API-driven flow gives you full control of the UI.Option A: hosted KYC session (recommended)
CallPOST /kyc/session to create a hosted session, then redirect the user to the returned URL.
kycReturnUrl you provided at provisioning. Subscribe to webhooks to detect approval. GET /kyc returns the current state whenever you need to read it directly.
Option B: API-driven KYC (build your own UI)
1. Start a submission
2. Read the submission’s required fields
3. Submit collected information
POST /kyc/submissions/{submissionId}/info accepts the form values as key-value pairs. Due validates them and returns field-level errors for anything missing or malformed.
4. Upload documents
First create the document against the submission to receive an upload token:dataBase64is required. The decoded file can be up to 10MB.- The MIME type is inferred from the
filenameextension (jpg,jpeg,png,webp,heic,pdf), or passcontentTypeexplicitly.
5. Complete the submission
6. Detect the outcome
Subscribe to webhooks to learn when the customer is approved.GET /kyc returns the current state whenever you need to read it directly.
4. Endorsements
Some channels require channel-specific approvals on top of base KYC. Each channel fromGET /channels lists its endorsementsRequired.
List the customer’s endorsements:
Requesting an endorsement that already exists returns a
409. Treat it as already in progress and fetch its state instead.GET /kyc; collect them through the same submission flow above.
5. Terms of service
Some requirements include a terms of service token. Fetch the document and record the user’s acceptance:ipAddress is required and should be the end user’s IP address, not your server’s.