Triggering Limit Upgrade (EDD Widget)
The Saber Enhanced Due Diligence (EDD) Web Widget enables merchants to seamlessly guide their users through the required enhanced due diligence verification process. After user registration and initial KYC, merchants can redirect users to the EDD Widget to complete additional verification steps required for higher transaction limits and advanced features.
EDD requirements vary by geography and the services utilised by the merchant. Saber Money configures these requirements for each merchant to ensure compliance and user experience fit.
Launching the EDD Web Widget
To open the EDD Widget:
- Redirect User: After user completes initial KYC, redirect them to the Saber Money EDD Widget when enhanced verification is required
- Pass Required Parameters: Ensure to pass the unique user ID and authentication parameters during URL generation
- Configurations: Saber Team will set up EDD configurations for each merchant, including specific verification requirements based on the services utilised and the user's region
Note: The EDD Widget uses HMAC-based authentication for secure server-side implementations.
Authentication Method
The EDD Widget uses HMAC-based authentication:
- Secure, as your secret never leaves your server
- Requires signature generation on your backend
- Suitable for all web application implementations
Integration Steps
Prerequisite
Create the User: Ensure the user is initialised in the Saber system with proper phone, email, and has completed basic KYC verification.
Step 1: Generate the HMAC Signature
For each session, a unique signature needs to be generated every time:
// Variables (these should be securely stored on your server)
var clientId = 'YOUR_CLIENT_ID'; // Replace with your actual client ID
var clientSecret = 'YOUR_CLIENT_SECRET'; // Replace with your actual client secret
var user_id = 'USER_ID'; // Replace with the user's ID from Saber system
// Step 1: Generate timestamp
var timestamp = Math.floor(Date.now() / 1000).toString();
// Step 2: Create the signature string
var sigString = clientId + timestamp + "sdk" + user_id;
// Step 3: Generate the HMAC-SHA256 signature
var signature = CryptoJS.HmacSHA256(sigString, clientSecret).toString().toUpperCase();
// The 'signature' can now be used to authenticate the EDD Widget requestStep 2: Generate Redirect URL
Once the signature is created for the user, the following query parameters are required:
| Query Parameter | Description |
|---|---|
client_id (or api_key) | Provided by Saber |
user_id | The user's UUID from the Saber system |
timestamp | The timestamp used when creating the signature |
signature (or secret) | The HMAC signature generated in step 1 |
redirect_url (optional) | URL to redirect user after EDD completion. If not provided, user will see the status screen |
Base URLs:
| Environment | URL |
|---|---|
| Production | https://edd.saber.money |
| Sandbox | https://edd.sandbox.saber.money |
Example URLs:
With redirect URL (user will be redirected after completion):
https://edd.sandbox.saber.money?client_id=d951b040-ecb0-432b-ae3c-2ae7d2d19987&user_id=d951b040-ecb0-432b-ae3c-2ae7d1998×tamp=1687276964&signature=CE1B5BD087BA408C2AFF01B00595007858DF496D3468CE3307CB1A7966DDC265&redirect_url=https://yourapp.com/success
Without a redirect URL (user will see a Saber status screen after completion):
https://edd.sandbox.saber.money?client_id=d951b040-ecb0-432b-ae3c-2ae7d2d19987&user_id=d951b040-ecb0-432b-ae3c-2ae7d1998×tamp=1687276964&signature=CE1B5BD087BA408C2AFF01B00595007858DF496D3468CE3307CB1A7966DDC265
Step 3: Redirect User to the Widget
Once the URL is generated, redirect your user to the link. The user will see the EDD form interface.
Post-Completion Behaviour:
- With
redirect_url: After successful EDD completion, the user will be automatically redirected to the specified URL after 10 seconds - Without
redirect_url: After completion, the user will remain in the widget and see the EDD status screen showing their verification status
Integration Options
Option 1: Direct Redirect
Redirect the user directly to the EDD Widget URL in the same browser tab.
window.location.href = eddWidgetUrl;Option 2: Iframe Integration (Recommended)
Embed the EDD Widget as an iframe for a seamless user experience:
<iframe
src="https://edd.saber.money?client_id=YOUR_CLIENT_ID&user_id=USER_ID×tamp=TIMESTAMP&signature=SIGNATURE"
width="100%"
height="800px"
frameborder="0"
style="border-radius: 8px;">
</iframe>Note: For iframe integration, it's recommended to omit redirect_url so users see the status screen within the iframe rather than being redirected away from your application.
Option 3: WebView Integration (Mobile Apps)
For React Native or native mobile apps, use a WebView component:
import { WebView } from 'react-native-webview';
<WebView
source={{ uri: eddWidgetUrl }}
style={{ flex: 1 }}
onMessage={handleMessage}
/>EDD Status Flow
The EDD Widget supports the following status states:
| Status | Description |
|---|---|
UNINITIATED | EDD process not started |
INITIATED | User has started the EDD process |
RESUBMISSION_REQUESTED | Additional information required |
VERIFICATION_IN_PROGRESS | EDD under review |
APPROVED | EDD approved - user can access higher limits |
REJECTED | EDD rejected - user cannot proceed |
Security Considerations
URL Expiration
⚠️ Important: The URL validity is 10 minutes from the creation of the signature. Generate URLs just before redirecting users.
CORS and Origin Validation
The widget validates the origin of requests. Ensure your domain is whitelisted with Saber Money for iframe integration.
HTTPS Required
All integrations must use HTTPS in production environments.
Error Handling
Common Error Scenarios
- Invalid Signature: Check timestamp and signature generation
- Expired URL: Generate a fresh signature
- User Not Found: Ensure user exists in Saber system
- Insufficient Permissions: Verify user has completed basic KYC
Event Timing
close: Fired when user clicks the close button or navigates away from the widgetcompleted: Fired when user successfully submits all required EDD informationerror: Fired when validation fails, API errors occur, or other issues prevent EDD completiontoken_expired: Fired when the HMAC signature expires (10-minute validity window)
Event Handling Best Practices
- Always Verify Origin: Check that events come from the correct Saber Money domain
- Handle All Events: Implement handlers for all four event types to provide smooth user experience
- Token Expiration: For
token_expired, automatically generate a new signature and reload the widget - Error Recovery: For
errorevents, provide clear messaging and retry options when appropriate - User Feedback: Show appropriate loading states, success messages, and error notifications
- Graceful Closure: Handle
closeevents by returning users to a logical point in your application flow
Updated about 2 months ago