diff --git a/README.md b/README.md
index 5bead7b4..d8b5b4a7 100644
--- a/README.md
+++ b/README.md
@@ -34,6 +34,35 @@ Cloning and editing in local is faster due to virtual workspace in online VS Cod
Go through this [detailed guide](./content/README.md) on how to write content
+## Asset Management
+
+### Strapi Assets Bucket
+
+All images and assets for the documentation are stored in the `strapi-assets` bucket. When uploading images or assets:
+
+1. **Bucket Name**: `strapi-assets`
+2. **Folder Structure**: Follow the same folder structure as the content layer in `/content`
+3. **URL Format**: `https://docs-assets.setu.co/latest/{path-to-asset}`
+
+### Example Asset Upload
+
+If you have an image for the Account Aggregator consent object flow diagram:
+
+- **Content path**: `/content/data/account-aggregator/consent-object.mdx`
+- **Asset path**: `/data/account-aggregator/consent-object-flow.png`
+- **Final URL**: `https://docs-assets.setu.co/latest/data/account-aggregator/consent-object-flow.png`
+
+### Using Assets in Content
+
+Reference assets in your MDX files using the `MainImage` component:
+
+```mdx
+
+```
+
### Install VS code extensions
For easy syntax higlighting, `VSCode MDX`
diff --git a/content/data/account-aggregator/api-integration.mdx b/content/data/account-aggregator/api-integration.mdx
index 15bc2aea..6841ffde 100644
--- a/content/data/account-aggregator/api-integration.mdx
+++ b/content/data/account-aggregator/api-integration.mdx
@@ -14,7 +14,7 @@ Setu’s AA APIs can be broken down into 3 broad flows—
- **Notifications flow**—To receive notifications from Setu for key events like approval/rejection of consent or be notified when FI data is ready to be fetched.
diff --git a/content/data/account-aggregator/api-integration/consent-flow.mdx b/content/data/account-aggregator/api-integration/consent-flow.mdx
index bbd3f7ef..e5698340 100644
--- a/content/data/account-aggregator/api-integration/consent-flow.mdx
+++ b/content/data/account-aggregator/api-integration/consent-flow.mdx
@@ -394,7 +394,7 @@ In the Account Aggregator (AA) ecosystem in India, the multi consent feature all
-
+
##### Features
diff --git a/content/data/account-aggregator/api-integration/data-apis.mdx b/content/data/account-aggregator/api-integration/data-apis.mdx
index 68b99898..bae3e5f5 100644
--- a/content/data/account-aggregator/api-integration/data-apis.mdx
+++ b/content/data/account-aggregator/api-integration/data-apis.mdx
@@ -12,7 +12,7 @@ Below is a summary of the APIs you need to use to fetch FI data. These APIs are
- **Create Data Session**—Call this API against an `APPROVED` consent. This initiates data preparation at user's linked FIP accounts. You will be notified by Setu once the data is ready to be fetched.
- **Fetch FI data**—Fetch decrypted FI data with data session id.
-
+
@@ -453,7 +453,7 @@ Auto-Fetch data feature aims to absorb this complexity from the FIUs. With Auto-
- For one time consents, Auto-Fetch executes only once, right after the consent is approved.
- For recurring consents, Auto-Fetch can fetch data periodically. Set up the frequency of Auto-Fetch data in your configuration on the Bridge.
-
+
Auto-Fetch can be set up on Bridge, under Step 1 of your product
diff --git a/content/data/account-aggregator/consent-object.mdx b/content/data/account-aggregator/consent-object.mdx
index 718dda67..9d899600 100644
--- a/content/data/account-aggregator/consent-object.mdx
+++ b/content/data/account-aggregator/consent-object.mdx
@@ -155,4 +155,142 @@ The `context` parameter accepts key-value pairs to customize the consent flow. B
+
+
+## FIP Selector Screen
+
+### Overview
+
+The FIP Selector Screen is a feature that helps improve AA journey success rates by intelligently routing users to the best performing Account Aggregator (AA) - FIP pair.
+
+It enables FIUs to:
+
+- Select the best-performing AA for a given FIP (instead of just the highest overall-performing AA).
+- Provide explicit user consent for using PII (mobile number) to discover pre-existing handles on AAs.
+- Reduce drop-offs on the account linking page by routing users to an AA where they already have a handle.
+- Move away from latency-prone autodiscovery flows by adopting a faster, targeted manual discovery approach.
+
+All of this enables better consent conversion across the funnel
+
+### How it works
+
+1. User lands on the FIP Selector Screen before the AA journey
+2. FIU (or Setu module) shows available FIPs and takes explicit user consent to use PII data via a checkbox.
+3. Setu uses this consent to:
+ - Discover pre-existing AA handles (using mobile number).
+ - Route requests to the best-performing AA for that specific FIP.
+4. The improved routing logic kicks in, reducing drop-offs and boosting success rates.
+
+### Flow diagram
+
+
+
+The FIP Selector Screen flow works as follows:
+
+1. **User selects FIP** → User chooses their preferred Financial Information Provider
+2. **Consent checkbox for discovery** → User provides explicit consent for PII usage
+3. **Setu checks AA handles using mobile number** → System discovers pre-existing handles
+4. **Best performing AA for FIP** → Intelligent routing based on performance data
+5. **Consent creation via AA** → Consent is created through the optimal AA
+6. **Account linking + Data fetch** → Final step of account connection and data retrieval
+
+### How FIUs can enable this
+
+#### ✅ Case 1: FIUs with an existing FIP Selector Screen
+
+1. Add the consent checkbox to your FIP Selector Screen.
+2. Share a screenshot of the updated screen with Setu.
+3. For Finvu, also complete the AA Profile Discovery API Access Request form.
+4. For OneMoney and Anumati, Setu will share your screenshot with the AA for approval.
+5. Once confirmed, this data will be used in the AA routing logic.
+
+#### ✅ Case 2: FIUs without an FIP Selector Screen
+
+1. Setu will provide an opt-in module for the FIP Selector Screen.
+2. No need to share screenshots - Setu will handle UI, routing, and compliance requirements end-to-end.
+3. Setu will also assist with form submissions for AA sign-offs
+
+### Tech implementation
+
+#### Case 1: FIUs NOT passing Account Aggregator the context filter (Multi AA)
+
+**Create Consent API Changes**
+
+Request Payload:
+
+
+{`{
+ "vua": "9999999999" // Only mobile number (no AA suffix)
+}`}
+
+
+Response Payload:
+
+
+{`{
+ "vua": "9999999999", // Only mobile number
+ "status": "INITIATED", // Initial status (PENDING status sent via notification once actual consent is created with AA)
+ // ...other fields remain unchanged
+}`}
+
+
+**Key Changes:**
+- Initial status is `INITIATED` instead of `PENDING`
+- VUA contains only mobile number without AA suffix
+- Actual `PENDING` status communicated via notification after consent creation
+
+**Notification Handler Updates**
+
+Once the user completes the bank selection, we'll create consent on the most optimal Account Aggregator (AA) for the selected Financial Information Provider (FIP) and then send the PENDING status.
+
+Success Notification Payload:
+
+
+{`{
+ "data": {
+ "status": "PENDING", // New additional status
+ "vua": "9999999999@selectedAA" // Updated with selected AA
+ },
+ "success": true,
+ "type": "CONSENT_STATUS_UPDATE",
+ "error": null,
+ "consentId": "<>",
+ "notificationId": "<>",
+ "timestamp": "2024-01-29T07:28:24.547Z"
+}`}
+
+
+Failure Notification Payload:
+
+
+{`{
+ "success": false,
+ "error": {
+ "code": "ConsentObjectCreationFailure",
+ "message": "Internal server error occurred while fetching consent details from upstream AA"
+ },
+ "data": null,
+ "consentId": "<>",
+ "notificationId": "<>",
+ "timestamp": "2024-01-29T07:28:24.547Z",
+ "type": "CONSENT_STATUS_UPDATE"
+}`}
+
+
+**Required Implementation:**
+- Add `CONSENT_STATUS_UPDATE` notification handler
+- Update status management logic
+- Handle VUA format changes
+
+#### Case 2: FIUs passing specific AA in the context filter
+
+✅ **No changes required from FIUs for Case 2**
+
+This case works immediately with existing implementations as it's purely an optimization that doesn't affect consent status transitions.
+
+
+
diff --git a/content/data/account-aggregator/embed-setu-aa.mdx b/content/data/account-aggregator/embed-setu-aa.mdx
index 6e8c3e85..1fd387a2 100644
--- a/content/data/account-aggregator/embed-setu-aa.mdx
+++ b/content/data/account-aggregator/embed-setu-aa.mdx
@@ -68,7 +68,7 @@ The Account Aggregator ecosystem does not have a native method to truly auto dis
mobileSpan="12"
>
-
+
Setu managed lite auto discovery—Setu FIP is the
@@ -83,7 +83,7 @@ The Account Aggregator ecosystem does not have a native method to truly auto dis
mobileSpan="12"
>
-
+
Setu managed manual discovery—Setu FIP and{" "}
@@ -97,7 +97,7 @@ The Account Aggregator ecosystem does not have a native method to truly auto dis
mobileSpan="12"
>
-
+
FIU managed guided auto discovery—Setu FIP and{" "}
@@ -155,7 +155,7 @@ Please find the below integration steps to embed Setu’s consent manager screen
Redirect your customer to consent manager `url` received after Create Consent request. Once your customer has approved or rejected consent, this final screen in the consent manager will show a button that will redirect your customer to the `redirectUrl` provided by you in the Create consent API.
-
+
diff --git a/content/data/account-aggregator/multi-aa-gateway.mdx b/content/data/account-aggregator/multi-aa-gateway.mdx
index 04adbfde..9fb3013b 100644
--- a/content/data/account-aggregator/multi-aa-gateway.mdx
+++ b/content/data/account-aggregator/multi-aa-gateway.mdx
@@ -12,7 +12,7 @@ Setu’s multi-AA gateway is a powerful enhancement for Account Aggregator (AA)
This improves consent conversion, offers redundancy with multiple AA partners, and ensures higher performance across AA integrations.
diff --git a/content/data/account-aggregator/overview.mdx b/content/data/account-aggregator/overview.mdx
index 6c020eaa..61ce58e0 100644
--- a/content/data/account-aggregator/overview.mdx
+++ b/content/data/account-aggregator/overview.mdx
@@ -23,7 +23,7 @@ _Note_—Setu’s AA gateway has introduced a powerful enhancement in the form o
For example, let’s say a lender wants to check the bank statements of a user to check their loan eligibility. Here’s how the AA handles it—
diff --git a/content/data/account-aggregator/quickstart.mdx b/content/data/account-aggregator/quickstart.mdx
index af728ed6..bab4eb95 100644
--- a/content/data/account-aggregator/quickstart.mdx
+++ b/content/data/account-aggregator/quickstart.mdx
@@ -28,11 +28,11 @@ Try out our sample app built using Setu AA sandbox
+
- Create Account Aggreagator Data product
-
+
@@ -53,7 +53,7 @@ You can also enable developer specific features to reduce your integration effor
- Partial fetch
- Auto-Fetch data
-
+
@@ -80,7 +80,7 @@ You will be notified for two types of events—
You can read about notifications in detail here.
-
+
@@ -88,7 +88,7 @@ You can read about notifications in detail
diff --git a/content/data/account-aggregator/v1/api-integration.mdx b/content/data/account-aggregator/v1/api-integration.mdx
index 15bc2aea..6841ffde 100644
--- a/content/data/account-aggregator/v1/api-integration.mdx
+++ b/content/data/account-aggregator/v1/api-integration.mdx
@@ -14,7 +14,7 @@ Setu’s AA APIs can be broken down into 3 broad flows—
- **Notifications flow**—To receive notifications from Setu for key events like approval/rejection of consent or be notified when FI data is ready to be fetched.
diff --git a/content/data/account-aggregator/v1/api-integration/data-apis.mdx b/content/data/account-aggregator/v1/api-integration/data-apis.mdx
index 76c05121..78dd5e47 100644
--- a/content/data/account-aggregator/v1/api-integration/data-apis.mdx
+++ b/content/data/account-aggregator/v1/api-integration/data-apis.mdx
@@ -12,7 +12,7 @@ Below is a summary of the APIs you need to use to fetch FI data. These APIs are
- **Create Data Session**—Call this API against an `APPROVED` consent. This initiates data preparation at user's linked FIP accounts. You will be notified by Setu once the data is ready to be fetched.
- **Fetch FI data**—Fetch decrypted FI data with data session id.
-
+
diff --git a/content/data/account-aggregator/v1/embed-setu-aa.mdx b/content/data/account-aggregator/v1/embed-setu-aa.mdx
index d363a943..e5133036 100644
--- a/content/data/account-aggregator/v1/embed-setu-aa.mdx
+++ b/content/data/account-aggregator/v1/embed-setu-aa.mdx
@@ -30,7 +30,7 @@ Please find the below integration steps to embed Setu’s consent manager screen
Redirect your customer to consent manager `url` received after Create Consent request. Once your customer has approved or rejected consent, this final screen in the consent manager will show a button that will redirect your customer to the `redirectUrl` provided by you in the Create consent API.
-
+
### React Native
diff --git a/content/data/account-aggregator/v1/overview.mdx b/content/data/account-aggregator/v1/overview.mdx
index 6962492a..d70f8903 100644
--- a/content/data/account-aggregator/v1/overview.mdx
+++ b/content/data/account-aggregator/v1/overview.mdx
@@ -19,7 +19,7 @@ Account aggregators(AAs) are
diff --git a/content/data/account-aggregator/v1/postman.mdx b/content/data/account-aggregator/v1/postman.mdx
index 30240cb6..a2c1ecec 100644
--- a/content/data/account-aggregator/v1/postman.mdx
+++ b/content/data/account-aggregator/v1/postman.mdx
@@ -26,7 +26,7 @@ Postman collection comes wth default test credentials. Set the following variabl
- Set `client_secret` to the FIU app client secret received on Bridge.
- Set `mobile_number` to the user's mobile number that will be used for testing.
-
+
Remove any new lines at the end after pasting values, to avoid errors.
diff --git a/content/data/account-aggregator/v1/quickstart-v1.mdx b/content/data/account-aggregator/v1/quickstart-v1.mdx
index 6dba0f3a..95bd9cce 100644
--- a/content/data/account-aggregator/v1/quickstart-v1.mdx
+++ b/content/data/account-aggregator/v1/quickstart-v1.mdx
@@ -78,7 +78,7 @@ The following flowchart gives a quick snapshot of how the overall API flow works
-
+
diff --git a/content/data/account-aggregator/v1/quickstart.mdx b/content/data/account-aggregator/v1/quickstart.mdx
index d5fd9c93..67b49915 100644
--- a/content/data/account-aggregator/v1/quickstart.mdx
+++ b/content/data/account-aggregator/v1/quickstart.mdx
@@ -29,7 +29,7 @@ Register on The Bridge, if
You can read a bit about the FIU product on the profile page before clicking on the **Create an FIU** button.
@@ -40,7 +40,7 @@ You can read a bit about the FIU product on the profile page before clicking on
Enter a name for the FIU app. This is what the FIU will be registered as eventually, but you can always edit before going live.
@@ -52,7 +52,7 @@ Setu provides a set of prebuilt screens that your customer sees upon receiving t
You can theme these screens to match your brand—add your logo, primary and secondary colours, font colour and background colour—to provide a seamless UI transition for your customers.
-
+
@@ -79,7 +79,7 @@ You will be notified for two types of events—
You can read about notifications in detail here.
-
+
@@ -87,7 +87,7 @@ You can read about notifications in detail
diff --git a/content/data/account-aggregator/v1/request-signing.mdx b/content/data/account-aggregator/v1/request-signing.mdx
index 6ca3a651..5cbd9856 100644
--- a/content/data/account-aggregator/v1/request-signing.mdx
+++ b/content/data/account-aggregator/v1/request-signing.mdx
@@ -44,7 +44,7 @@ A public-key-private-key pair is required for the request signing.
In the Setu Bridge, you can generate these keys with just a simple click of a button and download the keys in CSV format.
-
+
Setu will share its public key during the creation of app (available in the "grab credentials" step). Your app code will use this key to verify requests from Setu.
diff --git a/content/data/digilocker/quickstart.mdx b/content/data/digilocker/quickstart.mdx
index 6549f79a..3356889f 100644
--- a/content/data/digilocker/quickstart.mdx
+++ b/content/data/digilocker/quickstart.mdx
@@ -52,7 +52,7 @@ Call this API to create a new DigiLocker request. Pass the `redirectUrl` in the
-
+
diff --git a/content/data/insights/overview.mdx b/content/data/insights/overview.mdx
index 26491b6a..51e30ae8 100644
--- a/content/data/insights/overview.mdx
+++ b/content/data/insights/overview.mdx
@@ -38,7 +38,7 @@ With Setu Insights, you can analyse various financial statements like bank state
### How does it work?
diff --git a/content/data/insights/quickstart/postman.mdx b/content/data/insights/quickstart/postman.mdx
index 58d1eec0..2b93dc42 100644
--- a/content/data/insights/quickstart/postman.mdx
+++ b/content/data/insights/quickstart/postman.mdx
@@ -26,7 +26,7 @@ Postman environment comes wth default test credentials, which are passed as head
- Set `clientSecret` to the FIU app client secret received from our support team. This variable is passed as the `x-client-secret` header.
- Set `productInstanceId` to the FIU product instance ID received from our support team. This variable is passed as the `x-product-instance-id` header.
-
+
Remove any new lines at the end after pasting values, to avoid errors.
diff --git a/content/data/insights/v1/overview.mdx b/content/data/insights/v1/overview.mdx
index 26491b6a..51e30ae8 100644
--- a/content/data/insights/v1/overview.mdx
+++ b/content/data/insights/v1/overview.mdx
@@ -38,7 +38,7 @@ With Setu Insights, you can analyse various financial statements like bank state
### How does it work?
diff --git a/content/data/insights/v1/quickstart/postman.mdx b/content/data/insights/v1/quickstart/postman.mdx
index 58d1eec0..2b93dc42 100644
--- a/content/data/insights/v1/quickstart/postman.mdx
+++ b/content/data/insights/v1/quickstart/postman.mdx
@@ -26,7 +26,7 @@ Postman environment comes wth default test credentials, which are passed as head
- Set `clientSecret` to the FIU app client secret received from our support team. This variable is passed as the `x-client-secret` header.
- Set `productInstanceId` to the FIU product instance ID received from our support team. This variable is passed as the `x-product-instance-id` header.
-
+
Remove any new lines at the end after pasting values, to avoid errors.
diff --git a/content/data/insights/v2/overview.mdx b/content/data/insights/v2/overview.mdx
index 26491b6a..51e30ae8 100644
--- a/content/data/insights/v2/overview.mdx
+++ b/content/data/insights/v2/overview.mdx
@@ -38,7 +38,7 @@ With Setu Insights, you can analyse various financial statements like bank state
### How does it work?
diff --git a/content/data/uli/quickstart.mdx b/content/data/uli/quickstart.mdx
index 3b95cbff..f2f8d31f 100644
--- a/content/data/uli/quickstart.mdx
+++ b/content/data/uli/quickstart.mdx
@@ -25,7 +25,7 @@ The URLs you would need for this API—
diff --git a/content/dev-tools/bridge/analytics-and-reports.mdx b/content/dev-tools/bridge/analytics-and-reports.mdx
index 22151cc2..299905a0 100644
--- a/content/dev-tools/bridge/analytics-and-reports.mdx
+++ b/content/dev-tools/bridge/analytics-and-reports.mdx
@@ -15,9 +15,9 @@ Analytics and reports are separate per product, since they function differently.
**Reports, with all columns included, can also be downloaded in CSV or Excel formats for a specified time range.** If the count of rows in the table is too large, you will get an option to mail it to yourself.
-
+
-
+
diff --git a/content/dev-tools/bridge/explore-and-configure-products.mdx b/content/dev-tools/bridge/explore-and-configure-products.mdx
index 94b0e41d..e878eda9 100644
--- a/content/dev-tools/bridge/explore-and-configure-products.mdx
+++ b/content/dev-tools/bridge/explore-and-configure-products.mdx
@@ -9,7 +9,7 @@ visible_in_sidebar: true
Use **Home or Product store** to see all the products that you can configure with Setu. Select any one, and start setting up your product integration.
-
+
##### 1. Create a child sub-org account
The first step is to set up a child sub-org account, which contains context about a product category and the organisation that can legally use this product. There are different types of legal entities allowed to use different product categories. For example, you will set up an FIU to use Account Aggregator, or set up a merchant to use UPI products.
@@ -23,7 +23,7 @@ While this is rarely needed, you can also create multiple child sub-org accounts
Consider creating another product instance for your chosen product before creating a new child sub-org account. This approach helps in easily reusing KYC and other common product details, and it results in a faster review process for the new instance to go live.
-
+
##### 2. Set up product instance
Depending on the product you choose, you need to fill in different details to start using the product. At times, our products also allow you to directly use the APIs for our products, by generating test credentials and using the “Product ID” in the `product-instance-id` header field.
@@ -36,12 +36,12 @@ Usually, the details you need to fill out for a product instance include the fol
- **KYC details** — Mandatory details as per government regulations, needed and reviewed by Setu only if you intend to go live with a product. These might include PAN, GST, certificates, and other relevant information.
-
+
##### 3. Submit all the details
Finally, check and verify all the details you have provided, and submit them. A Setu admin will verify all details and if everything looks good, approve your config. This typically takes 2-5 days and you can start transacting on production after approval.
-
+
UPI Setu
KYC
@@ -53,7 +53,7 @@ Finally, check and verify all the details you have provided, and submit them. A
##### 4. Edit configurations
You can change the configuration provided before you complete the final step of any configuration, which is reviewing the details you have provided. Once you click on the "submit to go live" button, you will not be able to change the details you have provided for the product. The details will first be reviewed by Setu. Once the review is complete, and if any changes are required, you will be able to edit the steps that remain or require changes.
-
+
1. Your organisation, either reused from sign-up or a relevant subsidiary, for which KYC will be done.
2. The product category you want to use.
Here are a few examples:
• **Account Aggregator FIUs (Financial Information Users):** In the AA ecosystem, entities using financial information, such as personal finance apps or loan providers.
• **UPI merchants:** In the UPI ecosystem, entities collecting payments through UPI.
• **BBPS BOU billers:** Entities collecting repeat payments for their services via BBPS-enabled apps.
• **BBPS COU agents:**Entities offering BBPS-enabled platforms to collect bill payments for BBPS billers. |
| **Aggregator account (coming soon)** | This is a type of parent Bridge account, that is allowed to resell Setu products to its business customers. The Bridge allows additional features for an aggregator—like viewing combined reports and analytics for all their business customers, or managing their corresponding Parent Bridge accounts with a single login.
If you want to become an aggregator, please contact [onboarding@setu.co](mailto:onboarding@setu.co) for more details.|
-
+
diff --git a/content/dev-tools/bridge/overview.mdx b/content/dev-tools/bridge/overview.mdx
index fec22167..4dce2648 100644
--- a/content/dev-tools/bridge/overview.mdx
+++ b/content/dev-tools/bridge/overview.mdx
@@ -9,7 +9,7 @@ visible_in_sidebar: true
Bridge is a free self-serve platform provided by Setu, where you can explore and use multiple products provided by Setu—fill in details to go live with products, manage user access to those products, and also check reports and analytics related to your configured products, on a single platform.
-
+
**Explore the platform and get started with Setu Bridge **
@@ -24,7 +24,7 @@ You can sign up on the Bridge in a few simple steps:
5. Provide your business name. This should belong to the business you’re setting up the Bridge account for. **Quick note:** You can use a different business name later when you configure the product (say, if you have a subsidiary or a different legal name).
6. Optionally, set up 2FA (two-factor authentication) for account login. Enable or disable 2FA, which asks for a password and an OTP sent to your registered e-mail ID whenever you login.
-
+
### Log in to Bridge
@@ -33,16 +33,16 @@ You can log in to the Bridge in a few simple steps:
2. Enter your password.
3. Enter OTP. **Note**, you need to provide an OTP only if you have enabled 2FA.
-
+
### Navigating Bridge
-
+
##### Side navigation items
Explore the different sections on the Bridge sidebar.
-
+
- The **Home page** is a central view for all products. This is where you can see details of your child accounts, pending integrations, and data on live integrations.
@@ -60,7 +60,7 @@ Explore the different sections on the Bridge sidebar.
##### Your Profile
-
+
Users
-
+
@@ -42,7 +42,7 @@ Check for users who can access the account, the roles assigned to each user, the
-
+
@@ -71,7 +71,7 @@ Check for users who can access the account, the roles assigned to each user, the
-
+
@@ -89,7 +89,7 @@ Check for users who can access the account, the roles assigned to each user, the
-
+
@@ -113,21 +113,21 @@ Live credentials work only for product instance IDs with “Live config
Also, don’t worry about “accidentally” using live credentials for an instance ID that is not yet live—you simply cannot use live credentials for the instance ID, before it acquires the “Live config” status.
-
+
##### Settings > Account preferences
Set two-factor-authentication for better security, so that every user who logs into your parent account has to additionally provide an OTP sent to their email, along with their password for Bridge.
-
+
##### Settings > Your profile
Your user profile contains account details—like e-mail, phone number—and access details to one or more Bridge accounts.
-
+
@@ -139,7 +139,7 @@ You can check all the details attached to your personal profile.
3. **Security preferences:** Enable or disable two-factor authentication (2FA) and change your password.
-
+
@@ -154,7 +154,7 @@ To switch between organisations you are part of, follow these steps:
3. **Select or search for another organisation:** Click on the organisation you want to switch to. In case you have access to more than 3 accounts, a search bar will be visible and you can search by typing in the name (at least 3 characters) or ID of the Bridge account. You can click the organisation and that account’s details will appear in Bridge.
-
+
+
@@ -21,7 +21,7 @@ You can check all the details attached to your personal profile.
2. **Organisation listing:** View the list of organisations where you are invited.
3. **Security preferences:** Enable or disable two-factor authentication (2FA) and change your password.
-
+
@@ -35,6 +35,6 @@ To switch between organisations you are part of, follow these steps:
2. **Check the list of organisations:** The currently active organisation is marked with a green tick. You can view the list of all other organisations.
3. **Select or search for another organisation:** Click on the organisation you want to switch to. In case you have access to more than 3 accounts, a search bar will be visible and you can search by typing in the name (at least 3 characters) or ID of the Bridge account. You can click the organisation and that account’s details will appear in Bridge.
-
+
\ No newline at end of file
diff --git a/content/dev-tools/bridge/v1/configure.mdx b/content/dev-tools/bridge/v1/configure.mdx
index f1d85626..b5e4adb2 100644
--- a/content/dev-tools/bridge/v1/configure.mdx
+++ b/content/dev-tools/bridge/v1/configure.mdx
@@ -26,7 +26,7 @@ On clicking a specific product card, you can get know more about what the produc
The following example shows the Collect BBPS product for which the supported configuration is called a “biller”, and so the button reads “Create biller”—
diff --git a/content/dev-tools/bridge/v1/org-settings.mdx b/content/dev-tools/bridge/v1/org-settings.mdx
index 1d7b2849..01048e9a 100644
--- a/content/dev-tools/bridge/v1/org-settings.mdx
+++ b/content/dev-tools/bridge/v1/org-settings.mdx
@@ -10,7 +10,7 @@ visible_in_sidebar: true
You can access your company-level settings by clicking on the “Org settings” on the left nav panel.
diff --git a/content/dev-tools/bridge/v1/org-settings/api-keys/jwt.mdx b/content/dev-tools/bridge/v1/org-settings/api-keys/jwt.mdx
index a2320088..1c3a8fa1 100644
--- a/content/dev-tools/bridge/v1/org-settings/api-keys/jwt.mdx
+++ b/content/dev-tools/bridge/v1/org-settings/api-keys/jwt.mdx
@@ -23,7 +23,7 @@ At Setu, JSON Web Token, or
@@ -35,7 +35,7 @@ Another way to view the JWT key assigned to a configuration is from within its p
Click on a product card from the “Configured products” page, and the click on the “⚙” settings icon on the right-hand side of the top section.
diff --git a/content/dev-tools/bridge/v1/org-settings/api-keys/oauth.mdx b/content/dev-tools/bridge/v1/org-settings/api-keys/oauth.mdx
index 152a8017..037ff1bc 100644
--- a/content/dev-tools/bridge/v1/org-settings/api-keys/oauth.mdx
+++ b/content/dev-tools/bridge/v1/org-settings/api-keys/oauth.mdx
@@ -30,7 +30,7 @@ Click on the “Org settings” icon on the left navbar. Here, if you are an Adm
You should be greeted by an empty page, nudging you to generate your first key. Click on the “Generate your first key” button. Now you should see a simple form like the one in the image below.
@@ -45,7 +45,7 @@ For example, a name like “Bangalore Schools—Setu BBPS” would indicate that
**Add products**—This is where you can select the individual product configurations that this key can access.
@@ -67,7 +67,7 @@ You can also enable or disable a key as required. API requests made with a key t
Select a key from the main page, and you should now be in the Edit key page. In the “Key details” section, click on the switch to toggle between the enabled and disabled states.
@@ -76,7 +76,7 @@ Be sure to hit the “Save changes” button on the top to commit the edits.
The list page also indicates which keys are active, and which aren’t.
@@ -89,7 +89,7 @@ In case a key is compromised at any point, you can regenerate the `clientID` and
Click on the key to go to the Edit key page, and scroll down to the Credentials section. Click on the “Regenerate key” button. You will be asked for confirmation twice, as key regeneration cannot be undone.
@@ -108,7 +108,7 @@ Just like regenerating a key, this process is irreversible, and Setu too cannot
Select a key from the list page, and in the Edit page at the top, click on the red “Delete key“ button. Confirm twice, and the key is deleted, and removed from the list page.
diff --git a/content/dev-tools/bridge/v1/org-settings/people.mdx b/content/dev-tools/bridge/v1/org-settings/people.mdx
index 8aa959fb..291f6aeb 100644
--- a/content/dev-tools/bridge/v1/org-settings/people.mdx
+++ b/content/dev-tools/bridge/v1/org-settings/people.mdx
@@ -74,7 +74,7 @@ Navigate to “Org settings” from the left nav panel. If you are an Admin for
Now, click on the “Invite new member” button on the top right. You should see the invite form as shown below.
diff --git a/content/dev-tools/bridge/v1/overview.mdx b/content/dev-tools/bridge/v1/overview.mdx
index b221aff3..0aaefe8b 100644
--- a/content/dev-tools/bridge/v1/overview.mdx
+++ b/content/dev-tools/bridge/v1/overview.mdx
@@ -17,7 +17,7 @@ The Bridge is a single web portal that lets you pick, configure and go live with
@@ -56,7 +56,7 @@ Here, in the production environment, partners can create as many fresh configura
Data is not shared between sandbox and production—so configurations exist independently on sandbox and production. You can switch between them easily by hovering over the coloured border on the top of each page. Sandbox is coloured orange, and production is coloured green.
diff --git a/content/dev-tools/bridge/v1/reports.mdx b/content/dev-tools/bridge/v1/reports.mdx
index 2d2d2049..88aca734 100644
--- a/content/dev-tools/bridge/v1/reports.mdx
+++ b/content/dev-tools/bridge/v1/reports.mdx
@@ -21,7 +21,7 @@ You can use the various filters available on the top to help narrow down and fin
@@ -30,7 +30,7 @@ Keep in mind that the reports data depends on the environment you are currently
Here’s how you can make the switch—
@@ -45,7 +45,7 @@ The records are listed below the filter section in the form of a large table. By
Click on a row—and an info panel open up on the right, which displays in-depth information about that transaction. Click on the cross at the top of this panel to close it again. You can also keep the panel open persistently—simply click on another record to update the details displayed in the info panel.
@@ -56,7 +56,7 @@ Click on a row—and an info panel open up on the right, which displays in-depth
You can change the default information displayed on this table to show more data. Click on the “Show / hide columns” option just above the table, and check the columns you want displayed, and uncheck the ones you do not. Close the info panel, and you should see the updated table with the new columns.
diff --git a/content/payments/bbps/go-live.mdx b/content/payments/bbps/go-live.mdx
index 34dfaf27..8ef308e6 100644
--- a/content/payments/bbps/go-live.mdx
+++ b/content/payments/bbps/go-live.mdx
@@ -18,7 +18,7 @@ In case you face an issue with any of the following steps, environments.
@@ -42,7 +42,7 @@ Head to the Products page, select one the required provider for Collect BBPS sec
Configuring a biller on Production is the exact same as on Sandbox. You can refer to the CSV or API integration quickstart for a detailed step-by-step guide.
@@ -55,7 +55,7 @@ This is what sets the Production apart from the Sandbox. Because Production hand
Click on the “KYC” tab to see the list of details you need to add.
diff --git a/content/payments/bbps/quickstart/api-integration.mdx b/content/payments/bbps/quickstart/api-integration.mdx
index 22b9bc23..e4f96a74 100644
--- a/content/payments/bbps/quickstart/api-integration.mdx
+++ b/content/payments/bbps/quickstart/api-integration.mdx
@@ -22,7 +22,7 @@ The primary entity on the BBPS network is called a “biller”. Go to the
@@ -55,7 +55,7 @@ And done! The biller has been created, and you can proceed to the biller dashboa
After the biller creation step, we should be on the biller profile. Here, you will see four tabs—**Dashboard**, which is an overview page, **Configuration** has all the integration details for this biller, **Transactions** where you can see test payments made to this biller, and **Copy to Production**, to copy the same config to Production later.
@@ -79,7 +79,7 @@ Begin by defining _at least_ one identifier. An app like PhonePe or GPay will as
@@ -94,7 +94,7 @@ Begin by defining _at least_ one identifier. An app like PhonePe or GPay will as
Once you enter these values, you can save it, and add another if you wish.
@@ -143,7 +143,7 @@ The `callbackURL` is for Setu to send notifications for `BILL_SETTLEMENT_STATUS`
@@ -158,7 +158,7 @@ If you require notifications along with every settlement event, then setup the `
Settlement accounts are where Setu will deposit money into after the customer has made the payment. Keep in mind that in Sandbox, these are mocked, and involve no money movement.
diff --git a/content/payments/bbps/quickstart/api-integration/fetch-pay.mdx b/content/payments/bbps/quickstart/api-integration/fetch-pay.mdx
new file mode 100644
index 00000000..05b2d208
--- /dev/null
+++ b/content/payments/bbps/quickstart/api-integration/fetch-pay.mdx
@@ -0,0 +1,372 @@
+---
+sidebar_title: Fetch & Pay
+page_title: API integration - Fetch & Pay
+order: 1
+visible_in_sidebar: true
+---
+
+## Fetch & Pay
+
+
+
+### APIs to implement
+
+##### Fetch customer bill
+
+This is a multi-leg transaction between BBPS, Setu, and the biller system.
+
+BBPS calls Setu with customer identifier(s) details entered by a customer on a BBPS enabled app / offline collection point.
+
+Setu calls the biller with the same details with the API to fetch bill ↗ for the customer, and then, shares it with BBPS.
+
+
+
+The biller’s API URL is expected to be in the following format—
+
+
+ {`https:///bills/fetch`}
+
+
+
+
+
+ Please note, Setu will add the /bills/fetch at the end of this
+ URL.
+
+
+
+
+The request body will specify the customer identifier—
+
+
+ {`{
+ "customerIdentifiers": [
+ {
+ "attributeName": "customerId",
+ "attributeValue": "9117534711"
+ }
+ ]
+}`}
+
+
+
+
+**Note:**
+
+- `customerId` is defined as per biller's use case, such as loanNumber, studentId, etc
+
+###### Response scenarios
+
+When BBPS sends a fetch bill request to Setu, Setu forwards the request to biller specified `baseURL`. Setu expects to receive a response from the biller system, with three possible scenarios—
+
+- Success, with outstanding bill for customer
+- Identifier matched, but no outstanding bill for customer
+- Failure, no customer found
+
+
+
+**Scenario 1: Success, with outstanding bill for customer**
+
+The is when the customer is present in the biller system, and has outstanding bills. In this case, the biller can return a `200` response—
+
+
+ {`{
+ "data": {
+ "customer": {
+ "name": "Sharmaji Ka Beta",
+ "additionalInfo": [
+ {
+ "EMI Amount": "900"
+ },
+ {
+ "Charges": "100"
+ }
+ ]
+ },
+ "billDetails": {
+ "bills": [
+ {
+ "items": [],
+ "generatedOn": "2022-06-07T05:18:02.234Z",
+ "customerAccount": {
+ "id": "9117534711"
+ },
+ "recurrence": "ONE_TIME",
+ "aggregates": {
+ "total": {
+ "amount": {
+ "value": 100000, // in paise
+ "currencyCode": "INR"
+ },
+ "displayName": "Total Receivable"
+ }
+ },
+ "billerBillID": "891234567",
+ "amountExactness": "EXACT"
+ }
+ ],
+ "billFetchStatus": "AVAILABLE"
+ }
+ },
+ "status": 200,
+ "success": true
+}`}
+
+
+
+
+**Note**
+
+- `additionalInfo` items will be displayed in the Payment App/site which can describe additional information about the bill.
+- `items` are used to show details about the bill / itemized break up. Maximum of 4.
+- `generatedOn` and `dueDate` must adhere to the following guidelines from NPCI
+ - `generatedOn` should not be greater than `dueDate`
+ - `generatedOn` should not be a future date
+ - `dueDate` should not be equal to `generatedOn`
+
+
+
+**Scenario 2: Identifier matched, but no outstanding bill for customer**
+
+When a customer is identified in the biller system but has paid all bills, and so, has no outstanding bill amount. In this case, the biller can return a `200` response—
+
+
+ {`{
+ "data": {
+ "billDetails": {
+ "billFetchStatus": "NO_OUTSTANDING",
+ "bills": []
+ },
+ "customer": {
+ "name": "Sharmaji Ka Beta"
+ }
+ },
+ "success": true,
+ "status": 200
+}`}
+
+
+
+
+The `dueDate` can be the last payment date from the customer or the current timestamp.
+
+
+
+**Scenario 3: Failure, no customer found**
+
+Either the biller does not recognise the parameter, or there are no customers with that particular parameter.
+Then, the biller can return a `400` response—
+
+
+ {`{
+ "success": false,
+ "status": 400,
+ "error": {
+ "traceID": "XXXXXX",
+ "code": "customer-not-found",
+ "docURL": "",
+ "detail": "A customer with the provided credentials does not exist in the biller system.",
+ "title": "customer-not-found"
+ }
+}`}
+
+
+
+
+
+
+##### Fetch bill payment receipt
+
+This is a multi-leg transaction between BBPS, Setu, and the biller system. As described in the diagram below, BBPS calls Setu, and Setu in turn calls the biller with fetchBillReceipt ↗
+
+
+
+Once a payment is received against a bill, Setu gets a notification and in turn makes the fetchBillReceipt ↗ API call to the biller system. The biller’s API URL should be in the following format—
+
+
+ {`https:///bills/fetchReceipt`}
+
+
+
+
+
+ Setu adds the /bills/fetchReceipt at the end of biller provided{" "}
+ baseURL.{" "}
+
+
+
+
+A typical request for a receipt would look something like—
+
+
+ {`{
+ "platformBillID": "906910589572351478",
+ "billerBillID": "891234567",
+ "paymentDetails": {
+ "amountPaid": {
+ "value": 1000,
+ "currencyCode": ""
+ },
+ "billAmount": {
+ "value": 1000,
+ "currencyCode": ""
+ },
+ "platformTransactionRefID": "26602931-3b6a-4c87-a14d-5d7cf584008f",
+ "uniquePaymentRefID": "PP012151MYB616O9BSY1",
+ "instrument": "UPI",
+ "additionalInfo": null,
+ "transactionNote": "",
+ "transactionTimestamp": "2020-05-22T03:05:22.000Z",
+ "campaignID": ""
+ }
+}`}
+
+
+
+
+Once you receive this call—
+
+1. Create a receipt against `uniquePaymentRefID`.
+2. Update your ledger to reflect this new balance.
+3. Return a `200` response with `id` and `date`.
+
+###### Success response
+
+
+ {`{
+ "status": 200,
+ "success": true,
+ "data": {
+ "receipt": {
+ "id": "XYZ987-891234567",
+ "date": "2022-06-07T05:55:54.789Z"
+ }
+ }
+}`}
+
+
+
+
+###### Failure scenarios
+
+**Case 1**
+
+If your system cannot accept or process payment due to some use case or validation related error or business requirement or Technical error on biller server (such as server down, bad gateway, unavailable, etc), you respond with a `500` response -
+
+
+ {`{
+ "status": 500,
+ "success": false,
+ "error": {
+ "code": "unable-to-fulfill-request",
+ "detail": "An error occured while processing this request.",
+ "docURL": "",
+ "title": "API_ERROR",
+ "errors": [],
+ "traceID": "XXXXXX"
+ }
+}`}
+
+
+
+
+**Note:**
+
+- During Payment request, when your system fails to respond to Setu in 30 secs or responds with an error, the request to `/fetchReceipt`
+ will be reattempted with the same request body as the first attempt.
+- You must implement a Duplicate check against `uniquePaymentRefID`
+ - If the `uniquePaymentRefID` doesn't exist for that Transaction, you must update the same and return a `200` Success response
+ - If the same `uniquePaymentRefID` exists in your system for that Transaction, you can return a `200` Success response
+
+
+
+##### Security considerations
+
+1. The API should work from only whitelisted IPs (on production)
+2. HTTPS is mandatory
+3. Authentication mechanism is required. Supported
+ methods—Basic auth, JWT, OAuth.
+
+
+
+#### APIs to call
+
+##### Expire Bill (optional)
+
+This API immediately changes the status of an unpaid link to `BILL_EXPIRED`. The customer would not be able to pay using the link or the associated VPA, but even if they are somehow able to do that (due to app caching or similar issues) the amount would automatically be refunded.
+
+`platformBillID` is a unique identifier for a bill on Setu's system and has to be provided to expire the bill. This is made available in the Create Payment Link API's response.
+
+
+
+
+ | Method |
+
+ POST
+ |
+
+
+ | Path |
+
+
+ /utilities/bills/<platformBillId>/expire
+
+ |
+
+
+ | Header |
+
+ X-Setu-Product-Instance-ID
+
+
+ Authorization: Bearer (insert_token_here). Read
+ about how to generate this token
+ here
+ .
+ |
+
+
+
+
+###### Success
+
+
+ {`{
+ "status" : 200,
+ "success" : true
+}`}
+
+
+###### Failure
+
+In case the `platformBillID` provided is incorrect, Setu will respond with `400` bill not found error—
+
+
+ {`{
+ "status": 400,
+ "success": false,
+ "error": {
+ "code": "bill-not-found",
+ "detail": "Bill with ID [] not found.",
+ "docURL": "",
+ "title": "PLATFORM_ERROR",
+ "errors": [],
+ "traceID": "XXXXXX"
+ }
+}`}
+
+
+If a bill has been expired, ideally, a payment by a customer would not be allowed, if verify VPA call returns an error on a payment app.
+
+But if the verify VPA call was not made and the customer makes a payment, payment will go through but will be refunded in the settlement flow.
+
+
diff --git a/content/payments/bbps/quickstart/no-code-integration.mdx b/content/payments/bbps/quickstart/no-code-integration.mdx
index 703629f2..3e562f64 100644
--- a/content/payments/bbps/quickstart/no-code-integration.mdx
+++ b/content/payments/bbps/quickstart/no-code-integration.mdx
@@ -39,7 +39,7 @@ Start by signing up on The Bri
Head to the **Available products** page via the sidebar and click on one of the Collect BBPS cards under the **Payments** tab. Click on **Create a Biller** button. Make sure you select the **CSV upload** option while creating your biller.
@@ -62,7 +62,7 @@ Click the **Configuration** tab from the biller profile. Add biller details and
You can define up to 4 customer idenitifers.
@@ -79,7 +79,7 @@ You can define up to 4 customer idenitifers.
Now scroll down to the integration setup section. Here, you should see a sample CSV generated based on the customer identifiers you entered in the **Bill details** section. You may also edit the column names, should you wish to do so.
@@ -107,7 +107,7 @@ Upload progress will be shown on the right side panel. On the panel, you will al
Once the CSV upload is successful, you should be able to see the number of bills uploaded and saved in the system.
diff --git a/content/payments/bbps/resources/oauth.mdx b/content/payments/bbps/resources/oauth.mdx
index bf37f31e..5a23486d 100644
--- a/content/payments/bbps/resources/oauth.mdx
+++ b/content/payments/bbps/resources/oauth.mdx
@@ -136,7 +136,7 @@ On clicking “Generate new key”, you should see a simple form
**Add products**—Here's where you can select the product configurations that this key can access.
diff --git a/content/payments/billpay/pre-built-screens/custom-payment.mdx b/content/payments/billpay/pre-built-screens/custom-payment.mdx
index 50a50a12..5503c034 100644
--- a/content/payments/billpay/pre-built-screens/custom-payment.mdx
+++ b/content/payments/billpay/pre-built-screens/custom-payment.mdx
@@ -26,7 +26,7 @@ Setu’s pre-built screens solution supports UPI payments by default. However, y
diff --git a/content/payments/billpay/pre-built-screens/custom-payment/website.mdx b/content/payments/billpay/pre-built-screens/custom-payment/website.mdx
index c2b76d5f..abd01f91 100644
--- a/content/payments/billpay/pre-built-screens/custom-payment/website.mdx
+++ b/content/payments/billpay/pre-built-screens/custom-payment/website.mdx
@@ -28,7 +28,7 @@ The following steps describe a typical payment scenario—
6. You redirect the user back to the post payment URL, depending on success or failure of payment.
diff --git a/content/payments/billpay/v1/api-integration/deprecated/polling.mdx b/content/payments/billpay/v1/api-integration/deprecated/polling.mdx
index a536c278..14b08283 100644
--- a/content/payments/billpay/v1/api-integration/deprecated/polling.mdx
+++ b/content/payments/billpay/v1/api-integration/deprecated/polling.mdx
@@ -39,7 +39,7 @@ These APIs are mandatory to consume, and asynchronous and dependent on each othe
-
+
diff --git a/content/payments/billpay/v1/pre-built-screens/custom-payment.mdx b/content/payments/billpay/v1/pre-built-screens/custom-payment.mdx
index 50a50a12..5503c034 100644
--- a/content/payments/billpay/v1/pre-built-screens/custom-payment.mdx
+++ b/content/payments/billpay/v1/pre-built-screens/custom-payment.mdx
@@ -26,7 +26,7 @@ Setu’s pre-built screens solution supports UPI payments by default. However, y
diff --git a/content/payments/billpay/v1/pre-built-screens/custom-payment/website.mdx b/content/payments/billpay/v1/pre-built-screens/custom-payment/website.mdx
index c2b76d5f..abd01f91 100644
--- a/content/payments/billpay/v1/pre-built-screens/custom-payment/website.mdx
+++ b/content/payments/billpay/v1/pre-built-screens/custom-payment/website.mdx
@@ -28,7 +28,7 @@ The following steps describe a typical payment scenario—
6. You redirect the user back to the post payment URL, depending on success or failure of payment.
diff --git a/content/payments/umap/mandates.mdx b/content/payments/umap/mandates.mdx
index 181ad8fa..e41abc1a 100644
--- a/content/payments/umap/mandates.mdx
+++ b/content/payments/umap/mandates.mdx
@@ -24,7 +24,7 @@ Choose one or more of our products under the UPI Setu mandates stack to—
### Key features
diff --git a/content/payments/umap/mandates/generic/pause.mdx b/content/payments/umap/mandates/generic/pause.mdx
index d8bc15f3..fe4984fc 100644
--- a/content/payments/umap/mandates/generic/pause.mdx
+++ b/content/payments/umap/mandates/generic/pause.mdx
@@ -45,7 +45,7 @@ Read more about
The notifications are depicted in the below diagram—
diff --git a/content/payments/umap/mandates/generic/revoke.mdx b/content/payments/umap/mandates/generic/revoke.mdx
index ba5cbe40..8f9dec14 100644
--- a/content/payments/umap/mandates/generic/revoke.mdx
+++ b/content/payments/umap/mandates/generic/revoke.mdx
@@ -31,7 +31,7 @@ The process for revoking a mandate initiated from the
customer's UPI app is described in the below diagram
@@ -88,7 +88,7 @@ The process for revoking a mandate by the merchant is
described in the below diagram
The merchant or aggregator will have to call the
diff --git a/content/payments/umap/mandates/generic/unpause.mdx b/content/payments/umap/mandates/generic/unpause.mdx
index 335e0ef2..bd5bb4b7 100644
--- a/content/payments/umap/mandates/generic/unpause.mdx
+++ b/content/payments/umap/mandates/generic/unpause.mdx
@@ -47,7 +47,7 @@ Only the end customer has the option of unpausing a paused UPI mandate from thei
The notifications are depicted in the below diagram
diff --git a/content/payments/umap/mandates/generic/update.mdx b/content/payments/umap/mandates/generic/update.mdx
index d619d2de..cb0703c4 100644
--- a/content/payments/umap/mandates/generic/update.mdx
+++ b/content/payments/umap/mandates/generic/update.mdx
@@ -36,7 +36,7 @@ There are only two updates possible on a UPI mandate
The process for updating an intent based mandate is described in the
below diagram
The merchant will have to call the{" "}
@@ -174,7 +174,7 @@ There are only two updates possible on a UPI mandate
The process for updating a collect based mandate is described in the
below diagram
The merchant will have to call the{" "}
diff --git a/content/payments/umap/mandates/one-shot/create.mdx b/content/payments/umap/mandates/one-shot/create.mdx
index 4405eee4..ffcc57aa 100644
--- a/content/payments/umap/mandates/one-shot/create.mdx
+++ b/content/payments/umap/mandates/one-shot/create.mdx
@@ -20,7 +20,7 @@ There are two ways to create a one time mandate—**Intent based** and **Collect
The process for mandate creation is described in the below diagram:
@@ -254,7 +254,7 @@ There are two ways to create a one time mandate—**Intent based** and **Collect
The process for mandate creation is described in the below diagram:
diff --git a/content/payments/umap/mandates/one-shot/pre-debit-notify.mdx b/content/payments/umap/mandates/one-shot/pre-debit-notify.mdx
index dac33682..b7bb503b 100644
--- a/content/payments/umap/mandates/one-shot/pre-debit-notify.mdx
+++ b/content/payments/umap/mandates/one-shot/pre-debit-notify.mdx
@@ -28,7 +28,7 @@ Once the mandate is **LIVE** the merchant needs to send a pre debit notification
The process for mandate pre debit notification is described in the below diagram:
diff --git a/content/payments/umap/mandates/recur/create.mdx b/content/payments/umap/mandates/recur/create.mdx
index 34633c95..0c920723 100644
--- a/content/payments/umap/mandates/recur/create.mdx
+++ b/content/payments/umap/mandates/recur/create.mdx
@@ -20,7 +20,7 @@ There are 2 ways to create a recurring mandate: **Intent based**, **Collect base
The process for mandate creation is described in the below diagram:
@@ -228,7 +228,7 @@ There are 2 ways to create a recurring mandate: **Intent based**, **Collect base
1-7 |
|
@@ -238,7 +238,7 @@ There are 2 ways to create a recurring mandate: **Intent based**, **Collect base
1-16 |
|
@@ -251,7 +251,7 @@ There are 2 ways to create a recurring mandate: **Intent based**, **Collect base
1-31 |
|
@@ -374,7 +374,7 @@ There are 2 ways to create a recurring mandate: **Intent based**, **Collect base
The process for mandate creation is described in the below diagram:
@@ -578,7 +578,7 @@ There are 2 ways to create a recurring mandate: **Intent based**, **Collect base
1-7 |
|
@@ -588,7 +588,7 @@ There are 2 ways to create a recurring mandate: **Intent based**, **Collect base
1-16 |
|
@@ -601,7 +601,7 @@ There are 2 ways to create a recurring mandate: **Intent based**, **Collect base
1-31 |
|
diff --git a/content/payments/umap/mandates/recur/pre-debit-notify.mdx b/content/payments/umap/mandates/recur/pre-debit-notify.mdx
index cb045cb8..ffc9abc6 100644
--- a/content/payments/umap/mandates/recur/pre-debit-notify.mdx
+++ b/content/payments/umap/mandates/recur/pre-debit-notify.mdx
@@ -27,7 +27,7 @@ Once the mandate is **LIVE** the merchant needs to send a pre debit notification
The process for mandate pre debit notification is described in the below diagram:
diff --git a/content/payments/umap/mandates/reserve-plus/create.mdx b/content/payments/umap/mandates/reserve-plus/create.mdx
index c446a1f8..f0c06464 100644
--- a/content/payments/umap/mandates/reserve-plus/create.mdx
+++ b/content/payments/umap/mandates/reserve-plus/create.mdx
@@ -243,7 +243,7 @@ visible_in_sidebar: true
The process for mandate creation is described in the below diagram
diff --git a/content/payments/umap/mandates/reserve.mdx b/content/payments/umap/mandates/reserve.mdx
index b61de5c1..1365c9a8 100644
--- a/content/payments/umap/mandates/reserve.mdx
+++ b/content/payments/umap/mandates/reserve.mdx
@@ -29,7 +29,7 @@ MCC 6211 - Capital Markets & Securities Brokers merchants can block upto ₹5 la
diff --git a/content/payments/umap/mandates/reserve/create.mdx b/content/payments/umap/mandates/reserve/create.mdx
index f47a7cbd..c3b42e98 100644
--- a/content/payments/umap/mandates/reserve/create.mdx
+++ b/content/payments/umap/mandates/reserve/create.mdx
@@ -20,7 +20,7 @@ There are two ways to create a Reserve mandate—**Intent based** and **Collect
The process for mandate creation is described in the below diagram:
@@ -254,7 +254,7 @@ There are two ways to create a Reserve mandate—**Intent based** and **Collect
The process for mandate creation is described in the below diagram:
diff --git a/content/payments/umap/notifications/mandates.mdx b/content/payments/umap/notifications/mandates.mdx
index ac904370..805f6e6c 100644
--- a/content/payments/umap/notifications/mandates.mdx
+++ b/content/payments/umap/notifications/mandates.mdx
@@ -23,7 +23,7 @@ Below is a list mandate statuses that are uniform across all types of mandates.
Here is the expected life-cycle of a mandate—
diff --git a/content/payments/umap/notifications/mandates/create.mdx b/content/payments/umap/notifications/mandates/create.mdx
index 5e58c35d..b3194df4 100644
--- a/content/payments/umap/notifications/mandates/create.mdx
+++ b/content/payments/umap/notifications/mandates/create.mdx
@@ -10,7 +10,7 @@ visible_in_sidebar: true
The first step to start utilising mandates is to create a mandate. Here is a quick view of how the status moves from `mandate.initiated` to `mandate.live` or `mandate.rejected`—
diff --git a/content/payments/umap/notifications/mandates/pause.mdx b/content/payments/umap/notifications/mandates/pause.mdx
index c6592eb4..f90830ae 100644
--- a/content/payments/umap/notifications/mandates/pause.mdx
+++ b/content/payments/umap/notifications/mandates/pause.mdx
@@ -19,7 +19,7 @@ visible_in_sidebar: true
These are the available webhooks for merchants, when their customers attempt to pause their mandate (which can be a temporary action). Here is a quick view of how the status moves from `mandate.live` to `mandate.paused`—
diff --git a/content/payments/umap/notifications/mandates/revoke.mdx b/content/payments/umap/notifications/mandates/revoke.mdx
index b5993620..14084c75 100644
--- a/content/payments/umap/notifications/mandates/revoke.mdx
+++ b/content/payments/umap/notifications/mandates/revoke.mdx
@@ -19,7 +19,7 @@ visible_in_sidebar: true
These are the available webhooks for merchants, when revoking of mandate is done by either the customer or in rarer cases, the merchant. Here is a quick view of how the status moves from `mandate.live` to `mandate.revoked`—
diff --git a/content/payments/umap/notifications/mandates/unpause.mdx b/content/payments/umap/notifications/mandates/unpause.mdx
index 5080211f..9a3160fc 100644
--- a/content/payments/umap/notifications/mandates/unpause.mdx
+++ b/content/payments/umap/notifications/mandates/unpause.mdx
@@ -19,7 +19,7 @@ visible_in_sidebar: true
These are the available webhooks for merchants, when their customer unpauses their mandate. Here is a quick view of how the status moves from `mandate.paused` to `mandate.unpaused`—
diff --git a/content/payments/umap/notifications/mandates/update.mdx b/content/payments/umap/notifications/mandates/update.mdx
index ee7209b1..06615293 100644
--- a/content/payments/umap/notifications/mandates/update.mdx
+++ b/content/payments/umap/notifications/mandates/update.mdx
@@ -19,7 +19,7 @@ visible_in_sidebar: true
Here is a quick view of how the status moves from `mandate.live` to `mandate.updated`—
diff --git a/content/payments/umap/notifications/payments.mdx b/content/payments/umap/notifications/payments.mdx
index 31eaf6f6..812a36f6 100644
--- a/content/payments/umap/notifications/payments.mdx
+++ b/content/payments/umap/notifications/payments.mdx
@@ -12,7 +12,7 @@ Most of the products on our platform end up creating a payment event when a cust
Any UPI Setu product relies on creating and presenting payment request to a customer. Setu's UPI Setu stack provides consistent and transparent payment statuses for a merchant, to be able to track the life-cycle of a payment request. These statuses are shown in the diagram below.
diff --git a/content/payments/umap/notifications/refunds.mdx b/content/payments/umap/notifications/refunds.mdx
index d8674489..a32ca95b 100644
--- a/content/payments/umap/notifications/refunds.mdx
+++ b/content/payments/umap/notifications/refunds.mdx
@@ -36,7 +36,7 @@ The statuses are consistent across all UPI Setu products—
Here is the life-cycle for refund statuses—
diff --git a/content/payments/umap/overview.mdx b/content/payments/umap/overview.mdx
index c1f378fe..2ef733ec 100644
--- a/content/payments/umap/overview.mdx
+++ b/content/payments/umap/overview.mdx
@@ -16,7 +16,7 @@ UPI Setu connects directly with NPCI, absorbing both acquirer and beneficiary ba
_Unified Payments Interface (UPI) is a digital payment system developed by NPCI that enables customers to pay for goods and services real-time, across any UPI app with different payment methods—like savings accounts or credit cards—from the convenience of their phone._
diff --git a/content/payments/umap/payments.mdx b/content/payments/umap/payments.mdx
index d90d6ea9..1f0931f5 100644
--- a/content/payments/umap/payments.mdx
+++ b/content/payments/umap/payments.mdx
@@ -34,7 +34,7 @@ UPI Setu relies on a few features that persist across various products offered u
UPI Setu has consistent and transparent payment statuses across all transaction flows.
diff --git a/content/payments/umap/payments/collect.mdx b/content/payments/umap/payments/collect.mdx
index b3327892..09f790bb 100644
--- a/content/payments/umap/payments/collect.mdx
+++ b/content/payments/umap/payments/collect.mdx
@@ -62,7 +62,7 @@ After the customer responds to the collect request, transaction details can be f
## Collect flow interactions
diff --git a/content/payments/umap/payments/flash.mdx b/content/payments/umap/payments/flash.mdx
index 6d615b51..5f0daefb 100644
--- a/content/payments/umap/payments/flash.mdx
+++ b/content/payments/umap/payments/flash.mdx
@@ -62,7 +62,7 @@ Following the initiation of the transaction, the system retrieves the payment de
## Payment flow interactions
diff --git a/content/payments/umap/payments/tpv.mdx b/content/payments/umap/payments/tpv.mdx
index c2803889..3363bcff 100644
--- a/content/payments/umap/payments/tpv.mdx
+++ b/content/payments/umap/payments/tpv.mdx
@@ -47,7 +47,7 @@ Based on the outcome of the validation check, the UPI Setu system decides whethe
### TPV Process Flow
diff --git a/content/payments/umap/refunds-disputes.mdx b/content/payments/umap/refunds-disputes.mdx
index 7c65d296..3cc300d4 100644
--- a/content/payments/umap/refunds-disputes.mdx
+++ b/content/payments/umap/refunds-disputes.mdx
@@ -23,7 +23,7 @@ UPI Setu empowers merchants with direct API access to issue refunds and contest
### Refund process overview
@@ -55,7 +55,7 @@ In addition to notifications, merchants can also use the
diff --git a/content/payments/upi-deeplinks/quickstart.mdx b/content/payments/upi-deeplinks/quickstart.mdx
index 2c6c8b1c..da517ba6 100644
--- a/content/payments/upi-deeplinks/quickstart.mdx
+++ b/content/payments/upi-deeplinks/quickstart.mdx
@@ -32,7 +32,7 @@ Also, listed below are some other details you need to get started. If you do fac
These will be applicable to all APIs you call, unless specified otherwise—
- `X-Setu-Product-Instance-ID`—this is a unique identifier for your merchant configuration set up on the Bridge. Look for the “Merchant ID” on the top left, inside your merchant configuration.
- 
+ 
- `authorization`—Bearer <**insert_token_here**>. Generate this token using OAuth or JWT.
- `Content-Type`—will be `application/json`. This will not be present in the header for Check link status API.
diff --git a/content/payments/upi-deeplinks/resources/oauth.mdx b/content/payments/upi-deeplinks/resources/oauth.mdx
index 8f2f4626..13bccff6 100644
--- a/content/payments/upi-deeplinks/resources/oauth.mdx
+++ b/content/payments/upi-deeplinks/resources/oauth.mdx
@@ -53,7 +53,7 @@ On clicking “Generate new key”, you should see a simple form
**Add products**—Here's where you can select the product configurations that this key can access.
diff --git a/content/payments/whatsapp-collect/journey.mdx b/content/payments/whatsapp-collect/journey.mdx
index 50e9be1b..9a4dd8d3 100644
--- a/content/payments/whatsapp-collect/journey.mdx
+++ b/content/payments/whatsapp-collect/journey.mdx
@@ -34,7 +34,7 @@ These QR codes can be used in your physical branches and can be part of the prin
Below is a QR code created by Setu using the previously shared sample WhatsApp Deeplink. Scan and try out the flow—
diff --git a/content/sample-category/sample-product/sample-page.mdx b/content/sample-category/sample-product/sample-page.mdx
index f1676bf1..5b2d4cf8 100644
--- a/content/sample-category/sample-product/sample-page.mdx
+++ b/content/sample-category/sample-product/sample-page.mdx
@@ -10,14 +10,14 @@ visible_in_sidebar: false
#### Full width image
#### Normal image