Batch Mandates
Overview
The Batch Mandates module provides comprehensive bulk mandate processing capabilities for processing multiple mandate orders simultaneously through CSV file uploads. It offers real-time progress tracking, status monitoring, and detailed reporting for all mandate operations processed through the Juspay payment platform.
This module is designed for a wide range of users, including:
Operations Teams: For processing mandate orders in bulk and monitoring mandate processing performance across different payment methods and gateways with comprehensive operational logs.
Finance Teams: For bulk mandate processing, financial reconciliation, and tracking mandate amounts across multiple transactions with detailed audit trails.
Customer Support: To process customer mandate requests in bulk, track mandate status, and provide accurate updates to customers on mandate processing and execution.
Accessing the Module
Log in to the Juspay dashboard.
From the main navigation menu on the left, click on Payments.
Select Bulk Operations from the Payments submenu.
Click on the Mandates tab from the bulk operations navigation.
The navigation URL for this module is https://portal.juspay.in/batch/batch-mandates
.
Step-by-Step Usage Instructions
Creating Batch Mandates
Step 1: Access the Batch Mandates Interface
Navigate to the Batch Mandates module using the steps above.
You will see the main dashboard with a description: "This module helps in creating mandates in bulk using a file upload. It provides a holistic view of the files uploaded. Upon clicking the filename in the table below a detailed view of each mandate uploaded is displayed."
The interface displays any previously uploaded batch mandate files in a table format.
Step 2: Initiate New Batch Mandate Upload
Click the "Create Batch Mandates" button (visible only to users with appropriate permissions).
If maker-checker workflow is enabled for your account, you will first see a description modal:
Enter a description for the batch mandate request in the text field.
Click "Submit" to proceed to the file upload interface.
Step 3: Prepare and Upload CSV File
Download Sample File: Click on the sample file link to download the CSV template (
batch_mandate_sample.csv).Prepare Your Data: Fill in your mandate data following the CSV field specifications (see table below).
File Limitations:
Maximum 1000 rows per file
CSV format only
File size limitations apply
Upload Process:
Click "Choose File" or drag and drop your CSV file
The system validates the file format and structure
Mandatory fields are checked (Order ID, Amount, Customer ID, Mandate ID)
Column types are validated (Order ID as String, Amount as Number)
Step 4: File Processing and Validation
File Validation: The system performs the following checks:
CSV format validation
Mandatory field presence (orderid, amount, customerid, mandate_id)
Data type validation for each column
Amount validation (must be positive numeric value)
Row count validation (maximum 1000 rows)
Error Handling: If validation fails, specific error messages are displayed:
Missing mandatory fields
Invalid data types
Invalid amount values
File format errors
Row limit exceeded
Successful Upload: Upon successful validation:
File is queued for processing
Batch ID is generated
Initial status is set to processing
Mandate processing begins
Step 5: Monitor Processing Status
Real-time Updates: The dashboard automatically updates with processing status.
Status Indicators:
ACCEPTED: Successfully processed mandates (Green indicator)
FAILED: Failed mandate attempts (Red indicator)
QUEUED: Mandates waiting in processing queue (Blue indicator)
Monitoring and Managing Batch Mandates
Viewing Batch Mandate Details
Table View: The main interface displays all uploaded batch files with:
File Name: Name of the uploaded CSV file
File Upload Status: Current processing status with color-coded labels
Date Created: File upload timestamp
Last Modified: Last update timestamp
Total Tasks: Number of mandate requests in the file
Tasks Progress: Visual progress bar showing completion status
Actions: Sync with Gateway button for manual synchronization
Detailed View: Click on any filename to access detailed information:
Batch Details Card: Expandable/collapsible interface showing:
Batch ID: Unique identifier for the uploaded file
Date Created and Date Updated timestamps
Current status with color-coded indicators
Search and Filter Capabilities
File Name Search:
Use the search input field with search icon
Enter filename to filter results
Search is case-sensitive and supports partial matches
Clear search using the cross icon
Table Sorting:
Click column headers to sort data
Available sorting for: File Name, Status, Date Created, Total Tasks
Toggle between ascending and descending order
Data Export and Download
Downloading Processed Data
Access Download: Click the "Download Data" button in the batch details view.
CSV Export: Downloads include:
Serial numbers (S.No column)
All processed mandate data with the following headers:
Order ID
Amount
Customer ID
Mandate ID
Mandate Status
Unique Id
epgTxnId
Udf1 through Udf10 (User Defined Fields)
Task Status
Error Message
Created At
Updated At
File Format:
CSV format with comma-separated values
Filename format:
batch_mandate.csvIncludes header row with column names
Gateway Synchronization
Manual Sync: Click the "Sync with Gateway" button for individual batch files.
Purpose: Synchronizes mandate status with payment gateway systems.
Metadata Configuration
Overview
The Batch Mandates module supports custom metadata configuration, allowing you to add additional columns to your CSV files for enhanced data tracking and processing flexibility.
Accessing Metadata Configuration
Upload Interface: When creating a new batch mandate upload, you'll see two tabs:
Upload CSV File: Standard file upload functionality
Configure Metadata: Custom metadata field configuration
Configure Metadata Tab: Click on the "Configure Metadata" tab to access metadata configuration options.
Configuring Custom Metadata Fields
Step 1: Add Metadata Fields
Add Metadata Columns: Use the "Add Metadata Columns" section on the right side of the interface.
Field Input: Enter your custom metadata field names in the input field.
Field Prefix: All metadata fields will be automatically prefixed with "metadata." in the CSV template.
Step 2: Download Enhanced Template
Template Generation: After configuring metadata fields, the system generates an enhanced CSV template.
Download Sample: Click "Download Sample CSV" to get the template with your custom metadata columns.
Column Structure: The downloaded template includes:
All standard mandate fields
Your custom metadata fields (prefixed with "metadata.")
Proper column ordering and formatting
Metadata Configuration Guidelines
Security and Data Privacy
Sensitive Information Warning: Do not include sensitive personal or financial information in metadata fields
Prohibited Data: Avoid including:
Names, Aadhaar numbers, PAN details
Bank account numbers, IFSC codes
Mobile numbers or personal identifiers
Data Protection: Ensure metadata complies with data protection regulations
Best Practices for Metadata Fields
Field Naming: Use descriptive, clear field names for easy identification
Data Consistency: Maintain consistent data formats across all metadata fields
Field Purpose: Document the purpose of each metadata field for team reference
Validation: Ensure metadata values are properly formatted and validated before upload
Metadata Field Examples
metadata.campaign_id: Marketing campaign identifier
metadata.source_system: Originating system reference
metadata.priority_level: Processing priority indicator
metadata.business_unit: Department or business unit reference
metadata.external_ref: External system reference number
Instructions for Metadata Usage
Pre-Configuration: Add metadata fields before downloading the CSV file template to ensure they are included as columns in the sheet.
Template Download: Always download the sample CSV after configuring metadata to get the correct column structure.
Data Population: Fill in both standard mandate fields and custom metadata fields in the downloaded template.
Upload Process: Upload the completed CSV file with both standard and metadata columns populated.
CSV File Upload Specifications
CSV Field Requirements
|
Field Name
|
Mandatory/Optional
|
Data Type
|
Description
|
Sample Value
|
Validation Rules
|
|---|---|---|---|---|---|
order_id
| Mandatory
| String
| Unique order identifier for the mandate
| "ORD_123456789"
| Must be a valid string, cannot be empty
|
amount
| Mandatory
| Number
| Mandate amount to be processed
| 100.50
| Must be a valid numeric value, supports decimal places
|
customer_id
| Mandatory
| String
| Customer identifier for the mandate
| "CUST_987654321"
| Must be a valid string, cannot be empty
|
mandate_id
| Mandatory
| String
| Mandate identifier for processing
| "MAN_456789123"
| Must be a valid string, cannot be empty
|
notification_id
| Optional
| String
| Notification identifier for the mandate
| "NOTIF_123456"
| String value, can be empty
|
currency
| Optional
| String
| Currency code for the mandate amount
| "INR"
| Valid currency code (ISO 4217 format)
|
customer_email
| Optional
| String
| Customer email address
| "customer@example.com"
| Valid email format
|
customer_phone
| Optional
| String
| Customer phone number
| "+919876543210"
| Valid phone number format
|
description
| Optional
| String
| Description of the mandate
| "Monthly subscription payment"
| String value, descriptive text
|
return_url
| Optional
| String
| Return URL after mandate processing
| "https://merchant.com/return"
| Valid URL format
|
product_id
| Optional
| String
| Product identifier for the mandate
| "PROD_789123"
| String value, product reference
|
display_invoice_number
| Optional
| String
| Invoice number for display
| "INV2023001"
| String value, invoice reference
|
execution_date
| Optional
| String
| Scheduled execution date for the mandate
| "2023-12-31"
| Date format (YYYY-MM-DD)
|
billing_address_first_name
| Optional
| String
| Billing address first name
| "John"
| String value, customer name
|
billing_address_last_name
| Optional
| String
| Billing address last name
| "Doe"
| String value, customer surname
|
billing_address_line1
| Optional
| String
| Billing address line 1
| "123 Main Street"
| String value, address line
|
billing_address_line2
| Optional
| String
| Billing address line 2
| "Apartment 4B"
| String value, address line
|
billing_address_line3
| Optional
| String
| Billing address line 3
| "Near City Center"
| String value, address line
|
billing_address_city
| Optional
| String
| Billing address city
| "Mumbai"
| String value, city name
|
billing_address_state
| Optional
| String
| Billing address state
| "Maharashtra"
| String value, state name
|
billing_address_country
| Optional
| String
| Billing address country
| "India"
| String value, country name
|
billing_address_postal_code
| Optional
| String
| Billing address postal code
| "400001"
| String value, postal code
|
billing_address_phone
| Optional
| String
| Billing address phone number
| "+919876543210"
| Valid phone number format
|
billing_address_country_code_iso
| Optional
| String
| Billing address ISO country code
| "IN"
| ISO country code (2-letter)
|
shipping_address_first_name
| Optional
| String
| Shipping address first name
| "John"
| String value, customer name
|
shipping_address_last_name
| Optional
| String
| Shipping address last name
| "Doe"
| String value, customer surname
|
shipping_address_line1
| Optional
| String
| Shipping address line 1
| "456 Oak Avenue"
| String value, address line
|
shipping_address_line2
| Optional
| String
| Shipping address line 2
| "Building C"
| String value, address line
|
shipping_address_line3
| Optional
| String
| Shipping address line 3
| "Tech Park"
| String value, address line
|
shipping_address_city
| Optional
| String
| Shipping address city
| "Bangalore"
| String value, city name
|
shipping_address_state
| Optional
| String
| Shipping address state
| "Karnataka"
| String value, state name
|
shipping_address_country
| Optional
| String
| Shipping address country
| "India"
| String value, country name
|
shipping_address_postal_code
| Optional
| String
| Shipping address postal code
| "560001"
| String value, postal code
|
shipping_address_phone
| Optional
| String
| Shipping address phone number
| "+919876543210"
| Valid phone number format
|
shipping_address_country_code_iso
| Optional
| String
| Shipping address ISO country code
| "IN"
| ISO country code (2-letter)
|
udf1
| Optional
| String
| User Defined Field 1
| "CustomValue1"
| String value, custom data field
|
udf2
| Optional
| String
| User Defined Field 2
| "CustomValue2"
| String value, custom data field
|
udf3
| Optional
| String
| User Defined Field 3
| "CustomValue3"
| String value, custom data field
|
udf4
| Optional
| String
| User Defined Field 4
| "CustomValue4"
| String value, custom data field
|
udf5
| Optional
| String
| User Defined Field 5
| "CustomValue5"
| String value, custom data field
|
udf6
| Optional
| String
| User Defined Field 6
| "CustomValue6"
| String value, custom data field
|
udf7
| Optional
| String
| User Defined Field 7
| "CustomValue7"
| String value, custom data field
|
udf8
| Optional
| String
| User Defined Field 8
| "CustomValue8"
| String value, custom data field
|
udf9
| Optional
| String
| User Defined Field 9
| "CustomValue9"
| String value, custom data field
|
udf10
| Optional
| String
| User Defined Field 10
| "CustomValue10"
| String value, custom data field
|
Mandate Validation Rules
Order ID Requirements:
Format: Must be a unique string identifier
Length: No specific length restrictions, but should be reasonable
Uniqueness: Each order ID should be unique within the batch
Amount Validation:
Format: Numeric value with optional decimal places
Range: Must be positive (greater than 0)
Precision: Supports up to 2 decimal places for currency precision
Customer and Mandate ID Requirements:
Format: String identifiers for customer and mandate references
Validation: Must be non-empty strings
Purpose: Used for linking mandates to customers and tracking
CSV Format Examples
Complete CSV Format with Sample Data:
CSV Format with Metadata Fields:
File Upload Constraints
Maximum Rows: 1000 rows per CSV file
File Format: CSV (Comma Separated Values) only
Encoding: UTF-8 encoding recommended
File Size: Standard file size limitations apply
Column Order: Must match the specified header format
Empty Values: Optional fields can be left empty but commas must be maintained
Metadata Fields: Custom metadata fields are optional and can be configured as needed
Use Cases
Subscription Service Management
Export subscription customer data from billing systems
Prepare CSV file with order IDs, amounts, customer IDs, and mandate IDs
Upload file through Batch Mandates interface
Monitor processing status and download results for subscription activation
Recurring Payment Setup
Prepare CSV with recurring payment information for mandate creation
Include customer details and billing addresses for proper mandate setup
Upload file for automated mandate processing
Track individual mandate status and download mandate results
Bulk Payment Processing
Compile payment data from various customer sources
Create CSV with mandate details and tracking references in UDF fields
Process bulk mandates and export results for payment processing
Use downloaded mandate data for payment execution and reconciliation
Troubleshooting
File Upload Validation Errors:
"Invalid file format": Ensure file is in CSV format with proper comma separation
"Missing mandatory fields": Verify that orderid, amount, customerid, and mandate_id columns are present and not empty
"Row limit exceeded": Reduce file size to maximum 1000 rows per upload
"Invalid data type": Check that amount field contains only numeric values
"Invalid amount value": Ensure amount values are positive numbers
Permissions and Roles
Access to the Batch Mandates module is controlled by the following permissions:
Mandates Module Access: Required for accessing the batch mandates interface (ACL:
mandate)Mandates Write Permission: Required for creating and uploading batch mandate files (ACL:
mandatewith ReadWrite access)Mandates Read Permission: Needed to view batch mandate status and download processed data (ACL:
mandate)Mandate Analytics Access: Required for accessing mandate analytics and reporting features (ACL:
mandate_analytics)Settings Mandate Access: Required for advanced mandate configuration and revoke operations (ACL:
settings_mandate)

