Partner API — v2.5.0
Type: Minor Release · Previous version: v2.0.0
✅ New Endpoints
GET /offchainTransaction/transfer-method
Tag: Off Chain Transactions
Summary: fetch transfer methods
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
type |
string | Yes | e.g. ach |
namespace |
string | No | e.g. fourthunicorn.raju1bh4.ul |
blockchainAddress |
string | No | e.g. 0x8262f83b50e933677a89c854ba7dc64d3ae52001 |
Response Codes
| Code | Description |
|---|---|
| 200 | will fetch transfer methods via identityId |
| 400 | Bad request response if transfer methods fetching get failed |
200 — will fetch transfer methods via identityId
{
"data": {
"id": "string",
"bankDetails": "string",
"type": "string",
"createdAt": "string"
},
"message": "Successfully fetched from transfer methods"
}
400 — Bad request response if transfer methods fetching get failed
{
"errors": [
{
"type": "catch",
"message": "shows the error message while API failed in execution"
},
{
"type": "Transfer Method",
"message": "Please provide either namespace or blockchain address"
},
{
"type": "Transfer Method",
"message": "Tenant Id is missing in Headers"
},
{
"message": "Please provide valid namespace",
"type": "No data found"
},
{
"type": "Transfer Method",
"message": "Couldn't allow the transaction, customer doesn't belong to Tenant"
},
{
"type": "Transfer Method",
"message": "isTenantAuthorized?.message"
},
{
"message": "Please provide valid namespace",
"type": "No data found"
},
{
"data": [],
"message": "No Transfer Method Available For : namespace"
},
{
"type": "Transfer Method",
"message": "Couldn't allow the transaction, customer doesn't belong to Tenant"
},
{
"type": "Transfer Method",
"message": "isTenantAuthorized?.message"
},
{
"message": "Please provide valid namespace",
"type": "No data found"
},
{
"message": "Failed to fetch the transfer method",
"type": "catch"
}
]
}
GET /tenant/badge
Tag: Badge Management
Summary: fetch all badges
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
page |
number | Yes | Page index e.g. 1 |
pagesize |
number | Yes | Page size |
filters |
string | No | — |
search |
string | No | search key |
Response Codes
| Code | Description |
|---|---|
| 200 | will list all the badges |
| 400 | Bad request response if list all badges |
200 — will list all the badges
{
"data": [
{
"badgeId": "36d166e5-c9d9-445b-8458-281546dd8171",
"badgeName": "BRONZE-IDENTIFICATION-BADGE",
"badgeType": "FIN",
"badgeDescription": null,
"userGroup": "WALLET-USER",
"badgeSymbolRef": null,
"createdBy": null,
"createdAt": "2023-12-11T07:05:22.0000000+00:00",
"updatedAt": "2023-12-11T07:05:22.0000000+00:00"
}
],
"pageNumber": 1,
"pagesize": 10
}
400 — Bad request response if list all badges
{
"errors": [
{
"type": "catch",
"message": "shows the error message while API failed in execution"
},
{
"message": "Page or pagesize should be positive value or atleast 1",
"type": "page"
},
{
"type": "catch",
"message": "err.message"
}
]
}
GET /tenant/badge/assign/fetch-all/{identificationBadgeId}
Tag: Badge Management
Summary: Get all assigned financial badge & identification badge & information badge & Token List
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
identificationBadgeId |
string | Yes | — |
Response Codes
| Code | Description |
|---|---|
| 200 | — |
GET /tenant/badge/{badgeId}
Tag: Badge Management
Summary: fetch badges details by badgeId
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
badgeId |
string | Yes | badge Id |
Response Codes
| Code | Description |
|---|---|
| 200 | Success response |
| 400 | Bad request response if badge detail update get failed |
200 — Success response
{
"data": [
{
"badgeId": "2cbfdc48-072c-40e5-8976-7ade3586faf6",
"badgeName": "Qamar Khan",
"badgeType": "IDENTIFICATION",
"badgeDescription": "bronze identification badge",
"userGroup": "WALLET_USER",
"badgeSymbolRef": "https://ulcheckpointstaging.blob.core.windows.net/staging-blob-container/Sheetal%20Kumar",
"createdBy": "dff33fea-b456-4cfa-b2a1-0cbf9071aefe",
"storageProvider": "abc",
"createdAt": "2022-12-07T00:00:00.0000000+00:00",
"updatedAt": "2022-12-07T00:00:00.0000000+00:00",
"financial_badge_token": [
{
"financialBadgeId": "2cbfdc48-072c-40e5-8976-7ade3586faf6",
"tokenSymbol": "USBC",
"createdAt": "2022-12-07T00:00:00.0000000+00:00",
"updatedAt": "2022-12-07T00:00:00.0000000+00:00"
}
],
"badge_rules": [
{
"ruleId": "2cbfdc48-072c-40e5-8976-7ade3586faf6",
"badgeId": "2cbfdc48-072c-40e5-8976-7ade3586faf6",
"tenantId": "2cbfdc48-072c-40e5-8976-7ade3586faf6",
"isActive": "true",
"startDate": "2023-12-18T18:30:00.0000000+00:00",
"endDate": "2023-12-18T18:30:00.0000000+00:00",
"ruleGroup": "wallet-user",
"ruleVersion": "1",
"isDefaultRule": "false",
"createdBy": "dff33fea-b456-4cfa-b2a1-0cbf9071aefe",
"status": "pending",
"inactiveDate": "2022-12-07T00:00:00.0000000+00:00",
"createdAt": "2022-12-07T00:00:00.0000000+00:00",
"updatedAt": "2022-12-07T00:00:00.0000000+00:00"
}
]
}
],
"message": "Badge details fetched successfully"
}
400 — Bad request response if badge detail update get failed
{
"CatchError": {
"errors": [
{
"type": "Identification Badge",
"message": "Updating identification badge got failed"
}
]
}
}
POST /digital-wallet/deposit
Tag: Digital Wallet
Summary: Deposit via digital wallet in wallet user account
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
amount |
number | Yes | amount |
namespace |
string | Yes | Fund user namespace e.g. test.jones1.ul |
successUrl |
string | No | success redirect url e.g. https://example.com/payments/success |
failureUrl |
string | No | failure redirect url e.g. https://example.com/payments/failure |
cancelUrl |
string | No | cancel redirect url e.g. https://example.com/payments/cancel |
ipAddress |
string | Yes | Ip Address e.g. 127.0.0.1 |
token |
string | Yes | Token Symbol e.g. THAI |
Example Request
{
"amount": 0,
"namespace": "test.jones1.ul",
"successUrl": "https://example.com/payments/success",
"failureUrl": "https://example.com/payments/failure",
"cancelUrl": "https://example.com/payments/cancel",
"ipAddress": "127.0.0.1",
"token": "THAI"
}
Response Codes
| Code | Description |
|---|---|
| 201 | Success Response when url is fetched successfully |
| 400 | Error response for all possible cases when calling add fund api gets failed. |
201 — Success Response when url is fetched successfully
{
"data": {
"url": "https://www.sandbox.paypal.com/checkoutnow?token=6KY73853N7081953X",
"fiatTransactionId": "dca665ae-ffae-4249-9b5b-31439d470258",
"fiatStatus": "PENDING",
"namespace": "digit.sheetalku55.ul",
"amount": 87,
"fiatTransactionHistory": {
"fiatTxnHistoryId": "be02917c-c515-4579-9e99-a159f81bb333",
"status": "PENDING",
"description": "Digital wallet transaction status is initiated, default status is pending.",
"createdAt": "2024-07-19T07:48:20.0000000+00:00"
}
}
}
400 — Error response for all possible cases when calling add fund api gets failed.
{
"errors": [
{
"type": "Add Fund",
"message": "please enter namespace of user"
},
{
"type": "Add Fund ",
"message": "no payment provider detail found"
},
{
"type": "Add Fund",
"message": "Something went wrong, please try again"
}
]
}
POST /offchainTransaction/transfer-method
Tag: Off Chain Transactions
Summary: create a transfer for tenant or customer
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
namespace |
string | Yes | Transfer method identity owner |
blockchainAddress |
string | Yes | Blockchain Address |
type |
string | Yes | Transfer method type One of: card, ach e.g. ['card', 'ach'] |
bankName |
string | Yes | bank Name of User e.g. Royal bank |
bankAccountName |
string | Yes | bank Account Name of User e.g. foobar |
bankAccountNumber |
string | Yes | bank Account Number of User e.g. GB94BARC10201530093459 |
routingNumber |
string | Yes | routingNumber e.g. 011401533 |
accountType |
string | Yes | Account type checking | saving e.g. checking |
Example Request
{
"namespace": "string",
"blockchainAddress": "string",
"type": [
"card",
"ach"
],
"bankName": "Royal bank",
"bankAccountName": "foobar",
"bankAccountNumber": "GB94BARC10201530093459",
"routingNumber": "011401533",
"accountType": "checking"
}
Response Codes
| Code | Description |
|---|---|
| 400 | Bad request response if transfer methods fetching get failed |
400 — Bad request response if transfer methods fetching get failed
{
"errors": [
{
"type": "catch",
"message": "shows the error message while API failed in execution"
},
{
"type": "Transfer Method",
"message": "Please provide either namespace or blockchain address"
},
{
"type": "Transfer Method",
"message": "Tenant Id is missing in Headers"
},
{
"message": "Please provide valid namespace",
"type": "No data found"
},
{
"type": "Transfer Method",
"message": "Couldn't allow the transaction, customer doesn't belong to Tenant"
},
{
"type": "Transfer Method",
"message": "isTenantAuthorized?.message"
},
{
"message": "Please provide valid namespace",
"type": "No data found"
},
{
"data": [],
"message": "No Transfer Method Available For : namespace"
},
{
"type": "Transfer Method",
"message": "Couldn't allow the transaction, customer doesn't belong to Tenant"
},
{
"type": "Transfer Method",
"message": "isTenantAuthorized?.message"
},
{
"message": "Please provide valid namespace",
"type": "No data found"
},
{
"message": "Failed to fetch the transfer method",
"type": "catch"
}
]
}
POST /tenant/customer/update
Tag: Tenant Customers
Summary: update tenant customer | Modifier - Gurumoorthy
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
identificationBadgeId |
string | Yes | identification badge id |
customerAccountId |
string | Yes | customer account id of customer e.g. cbf2f17a-d0d1-42da-a6cc-cb28f99484ea |
firstName |
string | No | tenant customer first name e.g. Jone |
middleName |
string | No | tenant customer middle name |
lastName |
string | No | tenant customer last name e.g. Doe |
fullName |
string | No | tenant customer Full name e.g. Jone Doe |
address |
object | Yes | — |
additionalAddress |
object | No | — |
maritalStatus |
string | No | marital status One of: MARRIED, UNMARRIED e.g. ['MARRIED', 'UNMARRIED'] |
email |
string | Yes | tenant email e.g. lorem@mygmail.com |
gender |
string | No | please give every letter in CAPS One of: male, female, others, unknown e.g. unknown |
phoneNumber |
string | Yes | phone number of tenant customer e.g. +91123456789 |
nationality |
string | No | Nationality of user |
ip_address |
string | Yes | ip address |
ssn |
string | No | ssn details |
lat_long |
object | No | — |
selfieContent |
string | Yes | selfie of user |
additionalLatLong |
object | No | — |
metroLocationDetails |
object | No | — |
geoLocationDetails |
object | No | — |
metroAreaDetails |
object | No | — |
countryDetails |
object | No | — |
tax |
object | No | — |
tin |
string | No | Tin Id |
stateLicenseId |
string | No | state license id |
governmentDocuments |
array[string] | No | — |
proofOfAddress |
array[object] | No | — |
verifiedName |
string | No | GID Name |
verifiedDOB |
string | No | GID DOB e.g. 2012-12-12 |
verifiedPhoto |
string | No | GID Photo |
verifiedIDNumber |
string | No | GID ID Number |
verifiedCountry |
string | No | GID Country |
verifiedState |
string | No | GID State |
verifiedIDIssueDate |
string | No | GID Issue Date e.g. 2012-12-12 |
verifiedIDExpirationDate |
string | No | GID Expiration Date e.g. 2012-12-12 |
verifiedAddress |
object | No | — |
verifiedGender |
string | No | GID Gender |
reRunComplianceCheck |
boolean | No | Re - Run Compliance Check |
bankAccount |
boolean | No | bank account e.g. false |
bankAccountDetails |
object | Yes | — |
plaidDetails |
object | Yes | — |
Example Request
{
"identificationBadgeId": "string",
"customerAccountId": "cbf2f17a-d0d1-42da-a6cc-cb28f99484ea",
"firstName": "Jone",
"middleName": "string",
"lastName": "Doe",
"fullName": "Jone Doe",
"address": {
"city": "Lorem",
"state": "KY",
"address1": "address1 ",
"country": "BO",
"postalCode": "Lorem",
"isoCountryCode": "US"
},
"additionalAddress": {
"fullName": "United States of America",
"nameISO3": "USA"
},
"maritalStatus": [
"MARRIED",
"UNMARRIED"
],
"email": "lorem@mygmail.com",
"gender": "unknown",
"phoneNumber": "+91123456789",
"nationality": "string",
"ip_address": "string",
"ssn": "string",
"lat_long": {
"lat_long_data": "Lorem",
"lat_long_country": "US",
"lat_long_city": "address1 "
},
"selfieContent": "string",
"additionalLatLong": {
"lat": "37.8888888",
"long": "-122.1777777"
},
"metroLocationDetails": {
"shortName": "San Francisco",
"fullName": "San Francisco, California",
"code": "USA-SFO"
},
"geoLocationDetails": {
"declaredAddress": "San Francisco",
"phoneNumber": "+91-9876676556",
"iPAddress": "127.0.0.1"
},
"metroAreaDetails": {
"deviceData": "example",
"declaredAddress": "San Francisco, California",
"phoneNumber": "+91-987765566",
"iPAddress": "127.0.0.1"
},
"countryDetails": {
"deviceData": "example",
"declaredAddress": "San Francisco, California",
"phoneNumber": "+91-9876665654",
"iPAddress": "127.0.0.1"
},
"tax": {
"country": "BO",
"idNumber": "134567890",
"state": "US"
},
"tin": "string",
"stateLicenseId": "string",
"governmentDocuments": [
{
"description": "national id card of user",
"fileName": "idCard.png",
"side": "front",
"type": "DriversLicense",
"content": "string",
"number": "123455",
"issuedCountry": "INDIA",
"expired": false,
"validFromDate": "2012-12-12",
"validTillDate": "2012-02-02"
},
{
"description": "national id card of user",
"fileName": "idCard.png",
"side": "back",
"type": "DriversLicense",
"content": "string",
"number": "123455",
"issuedCountry": "INDIA",
"expired": false,
"validFromDate": "2012-12-12",
"validTillDate": "2012-02-02"
}
],
"proofOfAddress": [
{
"description": "credit card statement for Sep2024",
"fileName": "cc1.png",
"side": "front",
"type": "front",
"content": "string",
"number": "123455",
"issuedCountry": "INDIA",
"expired": false,
"validFromDate": "2012-12-12",
"validTillDate": "2012-02-02"
}
],
"verifiedName": "string",
"verifiedDOB": "2012-12-12",
"verifiedPhoto": "string",
"verifiedIDNumber": "string",
"verifiedCountry": "string",
"verifiedState": "string",
"verifiedIDIssueDate": "2012-12-12",
"verifiedIDExpirationDate": "2012-12-12",
"verifiedAddress": {
"fullAddress": "Lorem Ipsum 30, 13612 Tallinn, Estonia"
},
"verifiedGender": "string",
"reRunComplianceCheck": true,
"bankAccount": "false",
"bankAccountDetails": {
"bankLegalName": "US Bank",
"bankAccountHolderName": "John Doe",
"bankAccountType": "Savings",
"bankAccountNumber": "Ul22440412",
"bankAccountHolderPhoneNumber": "+917347634906",
"bankAccountHolderEmail": "unknown@gmail.com",
"bankAccountHolderAddress": "Lorem Ipsum 30, 13612 Tallinn, Estonia"
},
"plaidDetails": {
"plaidToken": "token",
"plaidConsentTimestamp": "2024-09-25T10:51:39.1788210+00:00"
}
}
Response Codes
| Code | Description |
|---|---|
| 202 | Success response |
| 400 | Error response |
202 — Success response
400 — Error response
{
"errors": [
{
"type": "Customer",
"message": "There is no account for the given customer Id"
},
{
"type": "Upgrade",
"message": "Customer cannot able to upgrade while ONBOARDING status is PENDING"
},
{
"type": "Upgrade",
"message": "Customer cannot able to upgrade while ONBOARDING status is REJECTED"
},
{
"type": "Documents",
"message": "There are no sufficient documents"
},
{
"type": "Finclusive",
"message": "messages"
},
{
"type": "Rule failed",
"message": "ruleCheck.errors"
},
{
"type": "Upgrade customer",
"message": "Customer is already upgraded to silver"
},
{
"type": "catch",
"message": "err[1]"
},
{
"type": "catch",
"message": "error"
}
]
}
PUT /transaction/redeem/fiat-transfer/{transactionHash}
Tag: Redeem
Summary: Updates fiat transaction details for the redeem transactions
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
referenceId |
string | Yes | A unique identifier used to track the transaction journey for the initiator. e.g. 12345_abcd |
fiatAmount |
number | Yes | fiat Amount |
tokenSymbol |
string | Yes | Representing the token that corresponds to the initiated fiat redeem request e.g. USBC |
fiatSymbol |
string | Yes | Representing the fiat currency for which the redeem request was initiated e.g. USD |
type |
string | Yes | Representing the type for which the redeem request was initiated e.g. BANK-BOOK |
Example Request
{
"referenceId": "12345_abcd",
"fiatAmount": 0,
"tokenSymbol": "USBC",
"fiatSymbol": "USD",
"type": "BANK-BOOK"
}
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
transactionHash |
string | Yes | — |
Response Codes
| Code | Description |
|---|---|
| 200 | Success Response |
| 400 | Error response |
200 — Success Response
{
"data": {
"transactionId": "5ea3eb51-8a02-415d-bf74-add22ed74803",
"referenceId": "5",
"tokenSymbol": "USBC",
"fiatSymbol": "USD",
"fiatAmount": 5,
"tokenAmount": 1,
"type": "BANK-BOOK"
},
"message": "fiat transaction status updated successfully."
}
400 — Error response
{
"errors": [
{
"type": "redeem",
"message": "please enter correct amount"
},
{
"type": "redeem",
"message": "token symbol is incorrect"
},
{
"type": "redeem",
"message": "Something went wrong, please try again"
}
]
}
✏️ Modified Endpoints
GET /consent/consent-message/{tenantId}
Tag: Consent
Summary: get consent message
Updated Query Parameters
subCategory (string)
- Example updated:
Deposits
type (string)
- Example updated:
ACH
Response Examples
| Code | Description |
|---|---|
| 200 | Get consent message |
| 400 | Error response when consent-message api gets failed. |
| 404 | No data response if there is no details for the given vendor |
200 — Get consent message
{
"data": {
"vendorName": "string",
"currentActiveVersion": "string",
"consentMessage": "string",
"dssId": "string"
},
"message": "Vendor consent details fetched successfully"
}
400 — Error response when consent-message api gets failed.
404 — No data response if there is no details for the given vendor
GET /consent/consent-status
Tag: Consent
Summary: check consent status
Updated Query Parameters
subCategory (string)
- Example updated:
Deposits
type (string)
- Example updated:
ACH
Response Examples
| Code | Description |
|---|---|
| 200 | Check consent status |
| 400 | Error response when consent-status api gets failed. |
| 404 | will give you the error response when no consent is present for the customer |
200 — Check consent status
{
"data": {
"latestConsentVersion": "string"
},
"message": [
"Consent is accepted",
"Consent is not valid. Please accept the consent"
]
}
400 — Error response when consent-status api gets failed.
404 — will give you the error response when no consent is present for the customer
{
"errors": {
"type": "No data found",
"message": "No consent is available, please accept the consent"
}
}
GET /consent/fetch-tnc
Tag: Consent
Summary: Get latest active version of Terms & Condition or Privacy Policy
Updated Query Parameters
type (string)
- Example updated:
PRIVACY_POLICY / TERMS_CONDITIONS
Response Examples
| Code | Description |
|---|---|
| 200 | Fetch the latest version of Terms & Condition or Privacy Policy by Id |
| 400 | Error response while fetching the Terms & Condition or Privacy Policy failed |
| 401 | Only the universal leger can able to execute the operations |
200 — Fetch the latest version of Terms & Condition or Privacy Policy by Id
{
"message": " PRIVACY_POLICY / TERMS_CONDITIONS html content fetched successfully",
"content": "string"
}
400 — Error response while fetching the Terms & Condition or Privacy Policy failed
{
"errors": [
{
"type": "catch",
"message": "error[1]"
},
{
"message": "err.message",
"type": "catch"
}
]
}
401 — Only the universal leger can able to execute the operations
{
"errors": [
{
"type": "Not Authorized",
"message": "This tenant has no access / unauthorized."
}
]
}
GET /transactions/identifier/{identifier}/type/{type}/history
Tag: chaincore
Summary: API endpoint to fetch the on chain or off chain transactions history
Added Query Params
| Parameter | Type | Description |
|---|---|---|
memo |
string | search the memo field for on-chain transfer |
Deprecated Query Params
None
Response Examples
| Code | Description |
|---|---|
| 200 | Fetch on chain or off chain transactions history |
| 400 | Error : 400 response |
200 — Fetch on chain or off chain transactions history
{
"data": [
{
"trxId": "0xca6ede3c859f76289f2da6cdf5774645eb155795b685c20b28ee9a4e74445d82",
"blockHash": "0xc24cf427119c9d125490782468368e6c06c47eec842f904b2fa0baaf27c754c5",
"blockNumber": "362839",
"amount": "2000000000000000000",
"paymentType": "credit",
"from": "itech.sheetalus.ul",
"to": "itech.punitus.ul",
"status": "Completed",
"timestamp": "1672925586",
"isError": "0",
"revertReason": null,
"navigationURL": "https://rpc.tst.ent.universalledger.publicmint.io:8545/tx/0xca6ede3c859f76289f2da6cdf5774645eb155795b685c20b28ee9a4e74445d82/internal-transactions"
},
{
"trxId": "0xd55658107bf03b592064204f90457fd61ad0109f9f09e43eeb4ce003d351288b",
"blockHash": "0x88555a433ff5891771daa097f5824cd54ae44e7531f60bb2cd27c2e05bf34a07",
"blockNumber": "362830",
"amount": "1000000000000000000",
"paymentType": "credit",
"from": "itech.sheetalus.ul",
"to": "itech.punitus.ul",
"status": "Completed",
"timestamp": "1672925550",
"isError": "0",
"revertReason": null,
"navigationURL": "https://rpc.tst.ent.universalledger.publicmint.io:8545/tx/0xd55658107bf03b592064204f90457fd61ad0109f9f09e43eeb4ce003d351288b/internal-transactions"
},
{
"trxId": "0xc2c415def09cb7bbaa9b8d419f917bb7e7e20d345447dadeac04a0a40c730269",
"blockHash": "0x74f1beb868586e1047b1fc72044ed31f0490261875cefa4004278704f57c09e8",
"blockNumber": "362823",
"amount": "500000000000000000000",
"paymentType": "credit",
"from": "itech.sheetalus.ul",
"to": "itech.punitus.ul",
"status": "Completed",
"timestamp": "1672925522",
"isError": "0",
"revertReason": null,
"navigationURL": "https://rpc.tst.ent.universalledger.publicmint.io:8545/tx/0xc2c415def09cb7bbaa9b8d419f917bb7e7e20d345447dadeac04a0a40c730269/internal-transactions"
}
]
}
400 — Error : 400 response
{
"errors": [
{
"type": "Transaction error",
"error": "No address found for namespace john.ul"
},
{
"type": "Transaction error",
"error": "Identifier does not belong to tenant_id"
},
{
"type": "filterError",
"message": "Start date can not be greater than the End date"
},
{
"type": "filterError",
"message": "type can only be on-chain || off-chain"
},
{
"type": "filterError",
"message": "Error in fetchOnChainTransactionHistory: ${error.message}"
},
{
"type": "filterError",
"message": "Error in fetchOffChainTransactionHistory: ${error.message}"
}
]
}
POST /tenant/business-user
Tag: Business User
Summary: Onboard business user
Added Fields
Deprecated Fields
None
Current Request Example
{
"businessUserLegalName": "Jone Doe",
"domain": "jonedoe",
"accountAddress": "0x5179ba651a8ab0d2da5dc3e54ee6c8aa73272f5eac1",
"businessUserName": "Jone Doe",
"customNamespace": "jonedoebusiness",
"provider": "ens",
"businessUserAddress": {
"address1": "Mr John Smith. 132, 40ft Street, Kingston",
"city": "San Francisco",
"state": "CA",
"isoCountryCode": "US",
"postalCode": "90213"
},
"businessEntityName": "Not Applicable",
"incorporationDocs": {
"documentType": "8",
"fileName": "filename.png",
"content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
"countryCode": "US"
},
"jurisdictionDocs": {
"documentType": "8",
"fileName": "filename.png",
"content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
"countryCode": "US"
},
"otherDocs": [
{
"documentType": "8",
"fileName": "filename.png",
"content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
"countryCode": "US"
}
],
"entityBeneficialOwners": [
{
"ownershipPercentage": 20,
"ownershipType": 1,
"entityBeneficialOwners": [
{}
],
"individualBeneficialOwners": [
{
"ownershipPercentage": 20,
"ownershipType": 1,
"title": "<string>",
"identification": {
"documentType": "8",
"fileName": "filename.png",
"content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
"countryCode": "US"
},
"isControlPerson": "<boolean>",
"otherDocs": {
"documentType": "8",
"fileName": "filename.png",
"content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
"countryCode": "US"
},
"dob": "<string>",
"email": "<string>",
"firstName": "<string>",
"lastName": "<string>",
"phoneNumber": "9822222",
"phoneType": "<string>",
"taxIdNumber": "122-22-2332",
"taxCountry": "US",
"taxState": "California",
"address": {
"address1": "Lorem Ipsum is simply dummy text",
"city": "Lorem",
"state": "CA",
"isoCountryCode": "US",
"postalCode": "90213"
},
"bankVerificationNumber": "<string>",
"proofOfAddress": {
"documentType": "8",
"fileName": "filename.png",
"content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
"countryCode": "US"
}
}
],
"controlPersons": [
{
"title": "supervisor",
"identification": {
"documentType": "8",
"fileName": "filename.png",
"content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
"countryCode": "US"
},
"documents": [
{
"documentType": "8",
"fileName": "filename.png",
"content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
"countryCode": "US"
}
],
"dateOfBirth": "2000-12-01",
"emailAddress": "test@test.com",
"firstName": "First name",
"lastName": "Last name",
"phoneNumber": "9100000000",
"phoneNumberType": "0",
"taxIdNumber": "122-22-2332",
"address": {
"address1": "Lorem Ipsum is simply dummy text",
"city": "Lorem",
"state": "CA",
"isoCountryCode": "US",
"postalCode": "90213"
},
"bvn": "bn01910190",
"customAttributes": [
{
"name": "name",
"value": "value"
}
],
"proofOfAddress": {
"documentType": "8",
"fileName": "filename.png",
"content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
"countryCode": "US"
}
}
],
"incorporationDocs": {
"documentType": "8",
"fileName": "filename.png",
"content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
"countryCode": "US"
},
"jurisdictionDocs": {
"documentType": "8",
"fileName": "filename.png",
"content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
"countryCode": "US"
},
"legalName": "<string>",
"taxIdNumber": "12-3123123",
"taxCountry": "US",
"taxState": "California",
"phoneNumber": "9800000",
"address": {
"address1": "Lorem Ipsum is simply dummy text",
"city": "Lorem",
"state": "CA",
"isoCountryCode": "US",
"postalCode": "90213"
},
"bvn": "<string>",
"proofOfAddress": {
"documentType": "8",
"fileName": "filename.png",
"content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
"countryCode": "US"
}
}
],
"individualBeneficialOwners": [
{
"ownershipPercentage": 20,
"ownershipType": 1,
"title": "<string>",
"identification": {
"documentType": "8",
"fileName": "filename.png",
"content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
"countryCode": "US"
},
"isControlPerson": "<boolean>",
"otherDocs": {
"documentType": "8",
"fileName": "filename.png",
"content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
"countryCode": "US"
},
"dob": "<string>",
"email": "<string>",
"firstName": "<string>",
"lastName": "<string>",
"phoneNumber": "9822222",
"phoneType": "<string>",
"taxIdNumber": "122-22-2332",
"taxCountry": "US",
"taxState": "California",
"address": {
"address1": "Lorem Ipsum is simply dummy text",
"city": "Lorem",
"state": "CA",
"isoCountryCode": "US",
"postalCode": "90213"
},
"bankVerificationNumber": "<string>",
"proofOfAddress": {
"documentType": "8",
"fileName": "filename.png",
"content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
"countryCode": "US"
}
}
],
"memoFields": {
"name": "<string>",
"value": "<string>"
},
"bankVerificationNumber": "bnk009198",
"businessUserEmail": "lorem@mygmail.com",
"taxIdNumber": "122-22-2332",
"phoneNumber": "123456789",
"controlPersons": {
"title": "supervisor",
"identification": {
"documentType": "8",
"fileName": "filename.png",
"content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
"countryCode": "US"
},
"documents": [
{
"documentType": "8",
"fileName": "filename.png",
"content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
"countryCode": "US"
}
],
"dateOfBirth": "2000-12-01",
"emailAddress": "test@test.com",
"firstName": "First name",
"lastName": "Last name",
"phoneNumber": "9100000000",
"phoneNumberType": "0",
"taxIdNumber": "122-22-2332",
"gender": "Male",
"address": {
"address1": "Mr John Smith. 132, 40ft Street, Kingston",
"city": "San Francisco",
"state": "CA",
"isoCountryCode": "US",
"postalCode": "90213"
},
"bvn": "bn01910199",
"customAttributes": [
{
"name": "name",
"value": "value"
}
],
"proofOfAddress": {
"documentType": "8",
"fileName": "filename.png",
"content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
"countryCode": "US"
},
"tax": {
"idNumber": "134567890",
"country": "US",
"state": "NY"
}
},
"registeredOfficeAddress": {
"address1": "Lorem Ipsum is simply dummy text",
"address2": "Lorem Ipsum is simply dummy text",
"city": "Lorem",
"state": "CA",
"isoCountryCode": "US",
"postalCode": "90213"
},
"proofOfAddress": {
"documentType": "8",
"fileName": "filename.png",
"content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
"countryCode": "US"
},
"signatories": [
{
"title": "supervisor",
"identification": {
"documentType": "8",
"fileName": "filename.png",
"content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
"countryCode": "US"
},
"documents": [
{
"documentType": "8",
"fileName": "filename.png",
"content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
"countryCode": "US"
}
],
"dateOfBirth": "2000-12-01",
"emailAddress": "test@test.com",
"firstName": "First name",
"lastName": "Last name",
"phoneNumber": "9100000000",
"phoneNumberType": "0",
"taxIdNumber": "122-22-2332",
"gender": "Male",
"address": {
"address1": "Mr John Smith. 132, 40ft Street, Kingston",
"city": "San Francisco",
"state": "CA",
"isoCountryCode": "US",
"postalCode": "90213"
},
"bvn": "bn01910199",
"customAttributes": [
{
"name": "name",
"value": "value"
}
],
"proofOfAddress": {
"documentType": "8",
"fileName": "filename.png",
"content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
"countryCode": "US"
},
"tax": {
"idNumber": "134567890",
"country": "US",
"state": "NY"
}
}
],
"governingDocuments": [
{
"documentType": "8",
"fileName": "filename.png",
"content": "base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAEDCAYAAAAFhGKSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUA",
"countryCode": "US"
}
],
"clientToken": "CLT",
"badgeId": "2852ea54-b77d-4853-96bb-e9e484765b35"
}
Response Examples
| Code | Description |
|---|---|
| 201 | Created Response after business user onboard |
| 400 | Bad request response if business user onboarding get failed |
201 — Created Response after business user onboard
{
"data": {
"domain": "jonedoe",
"business_user_name": "jone doe",
"business_user_metadata": {
"email": "lorem@mygmail.com",
"phone": "9540217306",
"legal_name": "jone doe",
"tax_id": "12345",
"businessUserId": "57b99458-f481-4822-b8b3-516d6bd611ca",
"businessUserMetadataId": "57b99458-f481-4822-b8b3-516d6bd611ca",
"business_entity_name": "Not Applicable",
"company_address": {
"address1": "Mr John Smith. 132, 40ft Street, Kingston",
"city": "San Francisco",
"state": "CA",
"isoCountryCode": "US",
"postalCode": "90213"
}
},
"is_active": true,
"created_at": "2022-11-11T09:47:44.0070000+00:00",
"start_date": "2022-11-11T09:47:44.0070000+00:00",
"end_date": "2022-11-11T09:47:44.0070000+00:00",
"tenant_id": "57b99458-f481-4822-b8b3-516d6bd611ca"
},
"message": "Tenant onboarded successfully"
}
400 — Bad request response if business user onboarding get failed
[
{
"type": [
{
"type": "Duplicate",
"message": "Business domain already exists"
},
{
"message": "Business user is already registered with provided email id",
"type": "Duplicate"
},
{
"message": "Business's control person is already registered with provided email id",
"type": "Duplicate"
},
{
"type": "onboard",
"message": "error"
},
{
"type": "onboard",
"message": "Business name already exists"
},
{
"type": "onboard",
"message": "Not able to create account"
},
{
"type": "onboard/Identity",
"message": "publicMint.errors[0].message"
},
{
"type": "onboard",
"message": "Not able to onboard business"
}
],
"message": "some error message"
}
]
POST /tenant/customer
Tag: Tenant Customers
Summary: onboard tenant customer
Added Fields
Deprecated Fields
Updated Request Body Fields
phoneNumber (string)
- Example updated:
+91123456789
Current Request Example
{
"identificationBadgeId": "string",
"firstName": "Jone",
"middleName": "string",
"lastName": "Doe",
"fullName": "Jone Doe",
"accountAddress": "string",
"customerMetaData": {},
"tenantId": "e1e9adb4-d3bd-4ba5-98b8-011c03a9d2b1",
"customNamespace": "jonedoe",
"provider": "ens",
"ulNamespace": "digit.sam.ul",
"maritalStatus": [
"married",
"unmarried"
],
"dateOfBirth": "1997-02-02",
"email": "lorem@mygmail.com",
"gender": "unknown",
"phoneNumber": "+91123456789",
"nationality": "string",
"ip_address": "string",
"ssn": "string",
"stateLicenseId": "string",
"tin": "string",
"address": {
"city": "Lorem",
"state": "KY",
"address1": "address1 ",
"country": "BO",
"postalCode": "Lorem",
"isoCountryCode": "US"
},
"lat_long": {
"lat_long_data": "Lorem",
"lat_long_country": "US",
"lat_long_city": "address1 "
},
"tax": {
"country": "BO",
"idNumber": "122-22-2332",
"state": "string"
},
"governmentDocuments": [
{
"description": "national id card of user",
"fileName": "idCard.png",
"side": "front",
"type": "DriversLicense",
"content": "string",
"number": "123455",
"issuedCountry": "INDIA",
"expired": false,
"validFromDate": "2012-12-12",
"validTillDate": "2012-02-02"
}
],
"proofOfAddress": [
{
"description": "credit card statement for Sep2024",
"fileName": "cc1.png",
"side": "front",
"type": "front",
"content": "string",
"number": "123455",
"issuedCountry": "INDIA",
"expired": false,
"validFromDate": "2012-12-12",
"validTillDate": "2012-02-02"
}
],
"passport": {
"description": "national id card of user",
"fileName": "idCard.png",
"side": "front",
"type": "DriversLicense",
"content": "string",
"number": "123455",
"issuedCountry": "INDIA",
"expired": false,
"validFromDate": "2012-12-12",
"validTillDate": "2012-02-02"
},
"others": {
"stateIdLicense": "321",
"proofOfAddress": "321",
"alienIdCard": "321"
},
"selfieContent": "string",
"metroLocationDetails": {
"shortName": "San Francisco",
"fullName": "San Francisco, California",
"code": "USA-SFO"
},
"additionalLatLong": {
"lat": "37.8888888",
"long": "-122.1777777"
},
"additionalAddress": {
"fullName": "United States of America",
"nameISO3": "USA"
},
"geoLocationDetails": {
"declaredAddress": "San Francisco",
"phoneNumber": "+91-9876676556",
"iPAddress": "127.0.0.1"
},
"metroAreaDetails": {
"deviceData": "example",
"declaredAddress": "San Francisco, California",
"phoneNumber": "+91-987765566",
"iPAddress": "127.0.0.1"
},
"countryDetails": {
"deviceData": "example",
"declaredAddress": "San Francisco, California",
"phoneNumber": "+91-9876665654",
"iPAddress": "127.0.0.1"
},
"verifiedName": "string",
"verifiedDOB": "2012-12-12",
"verifiedPhoto": "string",
"verifiedIDNumber": "string",
"verifiedCountry": "string",
"verifiedState": "string",
"verifiedIDIssueDate": "2012-12-12",
"verifiedIDExpirationDate": "2012-12-12",
"verifiedAddress": {
"fullAddress": "Lorem Ipsum 30, 13612 Tallinn, Estonia"
},
"verifiedGender": "string",
"bankAccountDetails": {
"bankLegalName": "US Bank",
"bankAccountHolderName": "John Doe",
"bankAccountType": "Savings",
"bankAccountNumber": "Ul22440412",
"bankAccountHolderPhoneNumber": "+917347634906",
"bankAccountHolderEmail": "unknown@gmail.com",
"bankAccountHolderAddress": "Lorem Ipsum 30, 13612 Tallinn, Estonia"
},
"plaidDetails": {
"plaidToken": "token",
"plaidConsentTimestamp": "2024-09-25T10:51:39.1788210+00:00"
}
}
Response Examples
| Code | Description |
|---|---|
| 201 | Created response after tenant customer successfully onboard |
| 400 | Error response after tenant customer onboarding gets failed |
201 — Created response after tenant customer successfully onboard
{
"data": {
"firstName": "Jone",
"middleName": "string",
"lastName": "Doe",
"accountAddress": "string",
"tenantId": "e1e9adb4-d3bd-4ba5-98b8-011c03a9d2b1",
"dateOfBirth": "1997-02-02",
"email": "lorem@mygmail.com",
"gender": "male",
"phoneNumber": "123455656789",
"address": {
"city": "Lorem",
"state": "KY",
"address1": "address1 ",
"country": "BO",
"postalCode": "Lorem",
"isoCountryCode": "US"
},
"tax": {
"country": "BO",
"idNumber": "122-22-2332",
"state": "string"
},
"documents": [
{
"description": "national id card of user",
"fileName": "idCard.png",
"side": "front",
"type": "DriversLicense",
"content": "string",
"number": "123455",
"issuedCountry": "INDIA",
"expired": false,
"validFromDate": "2012-12-12",
"validTillDate": "2012-02-02"
}
],
"faceImage": "string",
"complianceStatus": "PENDING",
"customerAccountId": "11167c62-b6b4-4031-ac92-6ef56e9648bd",
"domainNamespace": "allahabad.amitp.ul"
},
"message": "Customer's profile submitted for review"
}
400 — Error response after tenant customer onboarding gets failed
{
"errors": [
{
"type": "catch",
"message": "Please provide valid tenant id"
},
{
"type": "Onboard Customer",
"message": "Please provide a valid ISO 3166-1 alpha-2 country and state code"
},
{
"type": "Onboard Customer",
"message": "Custom namespace is taken"
},
{
"type": "Duplicate",
"message": "Account address already taken"
},
{
"type": "Tenant",
"message": "Tenant's account has been blocked. You will be not able to onboard any user. Please get in touch with support team"
},
{
"type": "Duplicate",
"message": "No data found with given tenant Id"
},
{
"type": "Tenant",
"message": "Tenant onboarding status is isTenantAvailableCheck?.onboardingStatus"
},
{
"type": "onboard",
"message": "A user is already been registered with provided email id"
},
{
"type": "onboard",
"message": "Wallet user already exists inside tenant"
},
{
"message": "There are no sufficient documents",
"type": "Documents"
},
{
"message": "A user is already been registered with provided email id",
"type": "Duplicate"
},
{
"type": "Finclusive",
"message": "messages"
},
{
"type": "catch",
"message": "err[1]"
},
{
"type": "catch",
"message": "error.message"
},
{
"type": "Identity",
"message": "error in deleting identity"
},
{
"type": "Rule Error",
"errors": "axiosResponse.errors"
}
]
}
POST /tenant/customer/add-wallet
Tag: Tenant Customers
Summary: Add wallet to wallet user
Added Fields
+ financialBadgeId string # financial badge to assign on the wallet level
+ tokenSymbol string # token symbol to assign financial badge
Deprecated Fields
None
Current Request Example
{
"customerAccountId": "e1e9adb4-d3bd-4ba5-98b8-011c03a9d2b1",
"tenantId": "e1e9adb4-d3bd-4ba5-98b8-011c03a9d2b1",
"customNamespace": "jonedoe",
"provider": "ens",
"accountAddress": "walletUserAccountAddress",
"financialBadgeId": "d573926e-358f-482d-8375-6842477ce736",
"tokenSymbol": "USBC"
}
Response Examples
| Code | Description |
|---|---|
| 201 | Success Response when wallet is added successfully |
| 400 | Error response for all possible cases when adding wallet api gets failed. |
201 — Success Response when wallet is added successfully
{
"data": {
"customerAccountId": "1a310d45-0f5f-4f44-bc1d-6ddfd9547787e",
"namespace": "tenantDomain.sheetalku1.ul"
},
"message": "wallet added successfully"
}
400 — Error response for all possible cases when adding wallet api gets failed.
{
"errors": [
{
"type": "Add Wallet ",
"message": "Multi wallet feature has been disabled by tenant name"
},
{
"type": "Add Wallet",
"message": "Not able to fetch basic details of wallet user"
},
{
"type": "Add Wallet",
"message": "Wallet user details not found"
},
{
"type": "Add Wallet",
"message": "Please use unique account address"
},
{
"type": "Add Wallet",
"message": "Custom namespace is already taken"
},
{
"type": "Add Wallet",
"message": "Something went wrong, please try again"
}
]
}
🚫 Deprecated Endpoints
Deprecated in this version
- POST
/tenant/customer/upgrade— update tenant customer | Modifier - Gurumoorthy