Skip to main content

Language

Unit's white-label UIs have customizable language configuration. In order to create a new language configuration, you would need to upload a JSON that contains your language configuration via an API. In response, you will get a URL. You will then specify that URL as you initialize any UI component, under the language attribute.

Customization Options

The settings that make up a language are divided into two main categories - global settings and component specific settings.

  • Global settings are meant to reflect general terms like month names.
  • Component specific settings are meant to allow you to customize texts that are unique to a specific component (e.g. the title of the account actions menu). On the component specific level, you may also provide overrides to any parameter specified in the global settings.
note

Please reach out to Unit if you need additional customization options to support your brand.

Global Settings

  • See the default json for full list of global values.
  • This object located on the root of the language JSON object, but it can also be overridden on the component level.
FieldtypeDescription
accountPurposeobjectAccount purpose tag
monthsobjectMonth names
statesobjectNames of states
toastsobjectToasts values

Component Specific Settings

Account

Supported Variables

The Account component language configuration supports these variables:

VariableUsage ExampleResult
accountNameAccount Owner: {{accountName}}Account Owner: Peter Parker
accountNumberAccount Number: {{accountNumber}}Account Number: 12345678
accountNumberLast4DigitsAccount ending with: {{accountNumberLast4Digits}}Account ending with: 5678
maskedAccountNumberAccount number: {{maskedAccountNumber}}Account Number: ·5678
accountRoutingNumberAccount routing number: {{accountRoutingNumber}}Account routing number: 234567
accountPurpose{{accountPurpose}}savings_account
accountPurposeWithSpaces{{accountPurposeWithSpaces}}Savings account

Supported Fields

FieldtypeDescriptionDefault ValueSupported Variables
overrideGlobalOverride global language configuration-
titlestringThe main title used in the component"Account {{maskedAccountNumber}}"maskedAccountNumber, accountNumber, accountRoutingNumber
availableBalancestringTitle above the account balance"Available Balance"-
accountActionsAccountActionsAccount actions menu language configuration
accountDetailsaccountDetailsAccount details menu language configuration
accountStatementsaccountStatementsAccount statements menu language configuration
accountListaccountListAccount list menu language configuration

Account Actions

FieldtypeDescriptionDefault ValueSupported Variables
titlestringThe main title used in the component"Account Actions"-
accountDetailsstringText for the link to the account details menu"Account Details"-
accountStatementsstringText for the link to the account statements menu"Account Statements"-
bankVerificationLetterstringText for the link to download the bank verification letter"Bank Verification Letter"-

Account Details

FieldtypeDescriptionDefault ValueSupported Variables
titlestringThe main title used in the component"Account {{maskedAccountNumber}}"all
subtitlestringThe subtitle used in the component"{{accountName}}"all
accountOwnerstringLabel for the account owner field"Account owner"-
accountNumberstringLabel for the account number field"Account number"-
accountRoutingNumberstringLabel for the account routing number field"Routing number"-
accountPurposestringLabel for the account purpose field"Account Purpose"-
bankstringLabel for the bank field"Bank"-

Account Statements

FieldtypeDescriptionDefault ValueSupported Variables
titlestringThe main title displayed for the component"Account Statements"all
subtitlestringSubtitle displayed for the component"Download account statement for account ending with #{{accountNumberLast4Digits}}"all
downloadStatementButtonstringText for the download statement button"Save Statement"-

Account List

FieldtypeDescriptionDefault ValueSupported Variables
titlestringThe main title used in the component"Switch Account"-
accountTitlestringTitle for specific account in the account list"{{accountPurposeWords}} {{maskedAccountNumber}}"all
accountSubtitlestringSubtitle for specific account in the account list"{{accountName}}"all

Default Language JSON

{
"data": {
"type": "whiteLabelLanguage",
"attributes": {
"name": "Default English Localization",
"local": "en",
"global": {
"days": {
"day": "Day",
"days": "Days",
"yesterday": "Yesterday",
"today": "Today",
"tomorrow": "Tomorrow"
},
"toasts": {
"copy": "Copied"
},
"months": {
"january": "January",
"february": "February",
"march": "March",
"april": "April",
"may": "May",
"june": "June",
"july": "July",
"august": "August",
"september": "September",
"october": "October",
"november": "November",
"december": "December"
},
"accountPurpose": {
"taxes": "taxes",
"saving": "saving",
"savings": "savings",
"generic": "generic",
"account": "account",
"checking": "checking",
"expenses": "expenses",
"spending": "spending"
},
"accountStatus": {
"Open": "Open",
"Frozen": "Frozen",
"Closed": "Closed"
},
"form": {
"firstName": {
"errorMessages": {
"required": "Please enter your first name",
"pattern": "First name must contain only letters",
"minLength": "First name must be at least 2 characters"
}
},
"lastName": {
"errorMessages": {
"required": "Please enter your last name",
"pattern": "Last name must contain only letters",
"minLength": "Last name must be at least 2 characters"
}
},
"email": {
"errorMessages": {
"required": "Please enter your email address",
"pattern": "Invalid email address"
}
},
"phone": {
"errorMessages": {
"required": "Please enter your mobile phone number",
"pattern": "Invalid phone number"
}
},
"birthDate": {
"errorMessages": {
"required": "Please enter your date of birth",
"max": "You must be at least 18 years old"
}
},
"nationality": {
"errorMessages": {
"required": "Please select your citizenship",
"noExist": "Please choose citizenship from the list"
}
},
"ssn": {
"errorMessages": {
"required": "Please enter your social security number",
"pattern": "Please enter a valid social security number"
}
},
"occupation": {
"errorMessages": {
"required": "Please select your occupation"
}
},
"ein": {
"errorMessages": {
"required": "Please enter your employer Identification number (must be 9 digits long)",
"pattern": "Please enter a valid employer Identification number (must be 9 digits long)"
}
},
"businessWebsite": {
"errorMessages": {
"pattern": "Please enter a valid website"
}
},
"businessVertical": {
"errorMessages": {
"required": "Please select business vertical"
}
},
"businessName": {
"errorMessages": {
"required": "Please enter your business name",
"minLength": "Business name must be at least 2 characters"
}
},
"businessEntityType": {
"errorMessages": {
"required": "Please select entity type"
}
},
"year": {
"errorMessages": {
"required": "Please enter a valid year",
"pattern": "Please enter a valid year",
"max": "Year must be less than or equal to current year"
}
},
"state": {
"errorMessages": {
"noExist": "Please choose state from the list"
}
},
"title": {
"errorMessages": {
"required": "Please select your title"
}
},
"equityStake": {
"errorMessages": {
"required": "Please enter equity stake",
"min": "Range must be between 25 and 100",
"max": "Range must be between 25 and 100"
}
},
"passport": {
"errorMessages": {
"required": "Please enter your passport number"
}
},
"sourceOfIncome": {
"errorMessages": {
"required": "Please select source of income"
}
},
"numberOfEmployees": {
"errorMessages": {
"required": "Please select number of employees"
}
},
"cashFlow": {
"errorMessages": {
"required": "Please choose cash flow"
}
},
"countriesOfOperation": {
"errorMessages": {
"required": "Please select country"
}
},
"stockSymbol": {
"errorMessages": {
"required": "Please enter stock symbol"
}
}
}
},
"elementsCard": {
"title": {
"virtual": "Virtual Card {{cardNumberLast4Digits}}",
"physical": "Physical Card {{cardNumberLast4Digits}}"
},
"goodThru": "GOOD \n THRU",
"types": {
"debit": "Debit",
"credit": "Credit",
"individual": "Individual",
"business": "Business",
"virtual": "Virtual",
"physical": "Physical"
},
"statuses": {
"lost": "Lost",
"active": "Active",
"stolen": "Stolen",
"frozen": "Frozen",
"inactive": "Inactive",
"closedByCustomer": "Closed",
"suspectedFraud": "Disabled",
"activeForOnlineUse": "Active"
},
"sensitiveDataButton": {
"show": "Show Details",
"hide": "Hide Details"
},
"menuItems": {
"title": "Manage Card",
"freeze": "Freeze",
"close": "Close Card",
"unfreeze": "Unfreeze",
"managePin": "Manage PIN",
"replace": "Replace Card",
"lostOrStolen": "Report Lost or Stolen",
"addToWallet": "Manage {{walletName}} {{walletNameSuffix}}"
},
"actions": {
"common": {
"proceedButton": "Proceed",
"backButton": "Back",
"errorResponse": {
"title": "Something went wrong",
"description": "Please try again later"
}
},
"activate": {
"overlayButton": "Activate",
"form": {
"flowTitle": "Card Activation",
"mainTitle": "Activate your card",
"description": "Provide your card details below",
"expirationDate": {
"label": "Expiration Date",
"errorMessages": {
"required": "Required",
"expirationDate": "The expiration date is invalid"
}
},
"cvv2": {
"label": "CVV2",
"errorMessages": {
"required": "Required",
"securityCode": "The security code is invalid"
}
}
},
"response": {
"title": "The card has been activated",
"description": "Taking you to set up your Pin"
}
},
"freeze": {
"flowTitle": "Freeze card",
"mainTitle": "Are you sure you want to freeze this card?",
"description": "You won’t be able to use your card while it is frozen, but you can unfreeze it at any time."
},
"unfreeze": {
"flowTitle": "Unfreeze card",
"mainTitle": "Are you sure you want to unfreeze this card?"
},
"managePin": {
"flowTitle": "Manage PIN",
"setPin": {
"mainTitle": "Set your new card PIN",
"enterPin": {
"label": "Enter a four digit PIN code",
"errorMessages": {
"required": "Required",
"pattern": "PIN must be 4 digits"
}
},
"reenterPin": {
"label": "Re-enter PIN",
"errorMessages": {
"required": "Required",
"pattern": "PIN must be 4 digits",
"comparison": "Make sure to enter the same PIN number"
}
},
"response": {
"title": "Your card PIN is set",
"description": "Your card is ready for use"
}
},
"changePin": {
"mainTitle": "Change your PIN",
"currentPin": {
"label": "Your current PIN",
"errorMessages": {
"required": "Required",
"pattern": "PIN must be 4 digits"
}
},
"newPin": {
"label": "New PIN code",
"errorMessages": {
"required": "Required",
"pattern": "PIN must be 4 digits"
}
},
"newPinConfirm": {
"label": "Confirm new PIN",
"errorMessages": {
"required": "Required",
"pattern": "PIN must be 4 digits",
"comparison": "Make sure to enter the same PIN number"
}
},
"response": {
"title": "Your card PIN is set"
}
}
},
"replace": {
"flowTitle": "Replace card",
"mainTitle": "Confirm shipping address",
"description": "Your card will be shipped to this address in 5-7 business days",
"formButton": "Change address",
"form": {
"title": "Update your shipping address",
"subtitle": "Your card will be shipped to this address in 5-7 business days",
"submitButton": "Confirm address",
"street": {
"label": "Street address",
"errorMessages": {
"required": "Please enter your street address"
}
},
"street2": {
"label": "Apt, Suite, Unit"
},
"city": {
"label": "City",
"errorMessages": {
"required": "Please enter your city"
}
},
"state": {
"label": "State",
"errorMessages": {
"required": "Please choose state from the list",
"pattern": "Please select a valid state from the list."
}
},
"postalCode": {
"label": "Zip code",
"errorMessages": {
"required": "Please enter your zip code",
"pattern": "Zip code must be 5 or 9 digits long"
}
}
},
"response": {
"title": "Your replacement card is on the way",
"description": "Expect your card to arrive in 5-7 business days"
}
},
"report": {
"flowTitle": "Report card",
"mainTitle": "Report card ending with {{maskedCardNumberLast4Digits}}",
"description": "What happened to your card?",
"confirmationTitle": "Are you sure you want to report this card?",
"confirmationDescription": "Reporting your card will close it permanently.",
"radioButtons": {
"lost": "My card was lost",
"stolen": "My card was stolen"
},
"admonition": {
"description": "A Lost or Stolen card will be permanently closed.",
"link": "Learn more"
},
"response": {
"title": "Your card was closed",
"description": {
"lost": "Your card was reported Lost and you won't be able to make transactions using it",
"stolen": "Your card was reported Stolen and you won't be able to make transactions using it"
}
}
},
"close": {
"flowTitle": "Close card",
"mainTitle": "Are you sure you want to close card ending with {{maskedCardNumberLast4Digits}}?",
"description": "You won't be able to activate this card later",
"admonition": {
"description": "Closing this card is permanent and cannot be reversed.",
"link": "Learn more"
},
"response": {
"title": "Your card is closed",
"description": "It can no longer be used"
}
},
"addToWallet": {
"flowTitle": "Mobile wallet",
"mainTitle": "Add your card to {{walletName}} {{walletNameSuffix}}",
"description": "Add your card for easy payment with the wallet app anywhere.",
"response": {
"title": "Your card was successfully added to {{walletName}} {{walletNameSuffix}}"
}
}
},
"suspectedFraudMessage": "Your card was disabled due to suspicious activity. Contact support for more information."
},
"elementsAccount": {
"title": "{{accountPurposeWords}} {{maskedAccountNumber}}",
"availableBalance": "Available Balance",
"creditBalance": "Balance",
"leftToSpend": "Available to spend",
"moreDetails": "More Details",
"accountActions": {
"title": "Account Actions",
"accountDetails": "Account Details",
"accountStatements": "Account Statements",
"bankVerificationLetter": "Bank Verification Letter"
},
"accountDetails": {
"title": "Account {{maskedAccountNumber}}",
"subtitle": "{{accountName}}",
"accountOwner": "Account Owner",
"accountNumber": "Account Number",
"accountRoutingNumber": "Routing Number",
"accountPurpose": "Account Purpose",
"bank": "Bank"
},
"accountStatements": {
"title": "Account Statements",
"subtitle": "Download account statement for account ending with #{{accountNumberLast4Digits}}",
"downloadStatementButton": "Save Statement",
"downloadStatementErrorMessage": "Download failed, try again later",
"emptyStatementsMessage": "There are no account statements available"
},
"accountList": {
"title": "Switch Account",
"accountTitle": "{{accountPurposeWords}} {{maskedAccountNumber}}",
"accountSubtitle": "{{accountName}}"
}
},
"elementsAchDebit": {
"flowTitle": "Fund my account",
"accountsListStage": {
"title": "Pull funds to",
"listTitle": "Select destination account",
"backButton": "Back",
"destination": "Destination account"
},
"counterpartiesListStage": {
"title": "Pull funds from",
"addButton": "New account"
},
"emptyListStage": {
"title": "Pull funds from",
"nextButton": "Connect New Account",
"message": {
"title": "Connect your first account",
"subtitle": "Log in instantly and securely to your accounts, no matter in which bank. This will allow you to transfer money and fund your account"
}
},
"counterpartyAddedStage": {
"successMessage": {
"firstLine": "New account was",
"secondLine": "connected successfully!"
}
},
"enterAmountStage": {
"title": "New transfer",
"nextButton": "Continue",
"backButton": "Back",
"input": {
"title": "Amount"
}
},
"reviewStage": {
"title": "Review transfer",
"nextButton": "Complete payment",
"backButton": "Back",
"descriptionList": {
"amount": "Amount",
"fee": "Fee",
"date": "Date"
},
"input": {
"label": "Description (optional)",
"note": "Visible to the recipient"
}
},
"completedStage": {
"messages": {
"pendingMessage": {
"title": "Account funded",
"subtitle": "Transfer expected by {{date}}"
},
"errorMessage": {
"title": "Something went wrong",
"subtitle": "Please try again later"
},
"rejectedMessages": {
"title": "The transfer could not be sent",
"subtitle": {
"accountClosed": "The recipient's account has been closed",
"accountFrozen": "The recipient's account has been frozen",
"insufficientFunds": "The recipient's account has insufficient funds",
"dailyAchDebitLimitExceeded": "The payment could not be created, since it puts you over your daily ACH debit limit",
"monthlyAchDebitLimitExceeded": "The payment could not be created, since it puts you over your monthly ACH debit limit"
}
}
},
"doneButton": "Done"
}
},
"elementsActivity": {
"activityTable": {
"title": "Account Activity",
"tableSubTitle": {
"pending": "Pending",
"recentActivity": "Recent Activity"
},
"columns": {
"summary": "DESCRIPTION",
"type": "TYPE",
"amount": "AMOUNT",
"account": "ACCOUNT"
},
"messages": {
"filterTooNarrow": "Your filter settings are too narrow, try again.",
"noActivity": "There was no activity in your account."
},
"backToTop": "Back to top"
},
"activityRecord": {
"keys": {
"paidBy": "Paid by",
"date": "Date",
"time": "Time",
"method": "Method",
"purchaseFrom": "Purchase from",
"address": "Address",
"type": "Type",
"status": "Status",
"name": "Name",
"routingNumber": "Routing Number",
"summary": "Summary",
"direction": "Direction",
"madeBy": "Made by",
"atmName": "ATM Name",
"atmLocation": "ATM Location",
"purpose": "Purpose",
"accountNumber": "Account Number",
"checkFront": "Front",
"checkBack": "Back",
"description": "Description",
"category": "Category",
"merchantDescription": "Merchant description"
},
"titles": {
"checkImages": "Check images",
"businessDetails": "Business Details",
"transactionDetails": "Transaction Details"
},
"statuses": {
"statusRefund": "Refund",
"statusPending": "Pending"
},
"merchantWebsite": "Visit Merchant Website",
"recurring": "Recurring payment"
},
"activityFilters": {
"title": "Filter",
"directionFilter": {
"title": "Direction",
"all": "All",
"received": "Received",
"sent": "Sent"
},
"typeFilter": {
"title": "Type",
"all": "All",
"checks": "Checks",
"bankTransfer": "Bank Transfer",
"cards": "Cards",
"atm": "ATM",
"interest": "Interest",
"fee": "Fee",
"reward": "Reward",
"fallback": "Transfer"
},
"dateFilter": {
"title": "Date",
"allTime": "All time",
"last7days": "Last 7 days",
"last30days": "Last 30 days",
"last3months": "Last 3 months",
"last6months": "Last 6 months",
"lastYear": "Last year"
},
"actions": {
"clearAll": "Clear All",
"applyFilters": "Apply filters"
}
}
},
"elementsAchCredit": {
"flowTitle": "Make Payment",
"accountsListStage": {
"title": "Send payment from"
},
"counterpartiesListStage": {
"title": "Send payment to",
"backButton": "Back",
"listTitle": "Select destination recipient",
"addButton": "New recipient",
"destination": "Destination recipient"
},
"emptyListStage": {
"title": "Send payment to",
"nextButton": "Add New Recipient",
"backButton": "Back",
"destination": "Destination recipient",
"message": {
"title": "You haven’t added any recipients",
"subtitle": "Easily add your first recipient and transfer money easily & quickly"
}
},
"addNewCounterpartyStage": {
"title": "New recipient",
"nextButton": "Continue",
"backButton": "Back",
"form": {
"fullName": {
"label": "Full Name",
"errorMessages": {
"minLength": "Full name must contain at least 2 letters",
"maxLength": "Full name must contain less than 50 letters",
"required": "Full name is required"
}
},
"routingNumber": {
"label": "Routing No.",
"errorMessages": {
"pattern": "Routing number must be 9 digits long",
"required": "Routing number is required"
},
"unknownInstitution": {
"message": "Unknown Institution",
"tooltip": "The routing number was not recognized. Please verify the routing number is correct before you proceed. If the routing number is wrong, the payment may be returned."
}
},
"accountNumber": {
"label": "Account No.",
"errorMessages": {
"pattern": "Account number must contain only digits",
"required": "Account number is required"
}
},
"recipient": {
"label": "The recipient is",
"personTitle": "A person",
"businessTitle": "A business",
"notSureTitle": "I'm not sure"
},
"saveCounterparty": {
"label": "Save contact for future transactions"
}
}
},
"counterpartyAddedStage": {
"successMessage": {
"firstLine": "New recipient was",
"secondLine": "added successfully!"
}
},
"enterAmountStage": {
"title": "New payment",
"nextButton": "Continue",
"backButton": "Back",
"input": {
"title": "Amount",
"balance": {
"validMessage": "Available Balance",
"errorMessage": "Exceeding the available balance of",
"errorMessageWithFee1": "You can send up to",
"errorMessageWithFee2": "due to the transaction fee"
}
}
},
"reviewStage": {
"title": "Review payment",
"nextButton": "Complete payment",
"backButton": "Back",
"descriptionList": {
"amount": "Amount",
"date": "Date",
"fee": "Fee",
"fundsAvailability": {
"key": "Funds availability",
"value": "1-3 business days"
}
},
"input": {
"label": "Description (optional)",
"note": "Visible to the recipient"
}
},
"completedStage": {
"messages": {
"sentMessage": {
"title": "Payment sent",
"subtitle": ""
},
"pendingMessage": {
"title": "Payment created",
"subtitle": "Transfer expected by {{date}}"
},
"errorMessage": {
"title": "Something went wrong",
"subtitle": "Please try again later"
},
"rejectedMessages": {
"title": "The payment could not be sent",
"subtitle": {
"accountClosed": "The recipient's account has been closed",
"accountFrozen": "The recipient's account has been frozen",
"insufficientFunds": "The recipient's account has insufficient funds",
"dailyAchCreditLimitExceeded": "The payment could not be created, since it puts you over your daily ACH credit limit",
"monthlyAchCreditLimitExceeded": "The payment could not be created, since it puts you over your monthly ACH credit limit"
}
}
},
"doneButton": "Done"
},
"withPlaid": {
"flowTitle": "Make Payment",
"accountsListStage": {
"title": "Pull funds from"
},
"counterpartiesListStage": {
"title": "Push funds to",
"backButton": "Back",
"listTitle": "Select destination account",
"addButton": "New account",
"destination": "Destination account"
},
"emptyListStage": {
"title": "Send payment to",
"nextButton": "Add New Recipient",
"backButton": "Back",
"destination": "Destination account",
"message": {
"title": "You haven’t added any accounts",
"subtitle": "Easily add your first account and transfer money easily & quickly"
}
},
"counterpartyAddedStage": {
"successMessage": {
"firstLine": "New account was",
"secondLine": "connected successfully!"
}
},
"enterAmountStage": {
"title": "New transfer",
"nextButton": "Continue",
"backButton": "Back",
"input": {
"title": "Amount"
}
},
"reviewStage": {
"title": "Review transfer",
"nextButton": "Complete payment",
"backButton": "Back",
"descriptionList": {
"amount": "Amount",
"date": "Date",
"fee": "Fee",
"fundsAvailability": {
"key": "Funds availability",
"value": "1-3 business days"
}
},
"input": {
"label": "Description (optional)",
"note": "Visible to the account"
}
},
"completedStage": {
"messages": {
"pendingMessage": {
"title": "Payment created",
"subtitle": "Transfer expected by {{date}}"
},
"errorMessage": {
"title": "Something went wrong",
"subtitle": "Please try again later"
},
"rejectedMessages": {
"title": "The transfer could not be sent",
"subtitle": {
"accountClosed": "The recipient's account has been closed",
"accountFrozen": "The recipient's account has been frozen",
"insufficientFunds": "The recipient's account has insufficient funds",
"dailyAchCreditLimitExceeded": "**** exceeds your daily / monthly limit"
}
}
},
"doneButton": "Done"
}
}
},
"elementsWirePayment": {
"flowTitle": "Make Payment",
"accountsListStage": {
"title": "Send payment from"
},
"counterpartiesListStage": {
"title": "Send payment to",
"backButton": "Back",
"listTitle": "Select destination recipient",
"addButton": "New recipient",
"destination": "Destination recipient"
},
"emptyListStage": {
"title": "Send payment to",
"nextButton": "Add New Recipient",
"backButton": "Back",
"destination": "Destination recipient",
"message": {
"title": "You haven’t added any recipients",
"subtitle": "Easily add your first recipient and transfer money easily & quickly"
}
},
"addNewCounterpartyStage": {
"title": "Send payment to",
"nextButton": "Continue",
"backButton": "Back",
"form": {
"fullName": {
"label": "Full Name",
"errorMessages": {
"minLength": "Full name must contain at least 2 letters",
"required": "Full name is required"
}
},
"routingNumber": {
"label": "Routing No.",
"errorMessages": {
"pattern": "Routing number must be 9 digits long",
"required": "Routing number is required"
},
"unknownInstitution": {
"message": "Unknown Institution",
"tooltip": "The routing number was not recognized. Please verify the routing number is correct before you proceed. If the routing number is wrong, the payment may be returned."
}
},
"accountNumber": {
"label": "Account No.",
"errorMessages": {
"pattern": "Account number must contain only digits",
"required": "Account number is required"
}
},
"addressFields": {
"street": {
"label": "Street address",
"errorMessages": {
"required": "Please enter your street address"
}
},
"city": {
"label": "City",
"errorMessages": {
"required": "Please enter your city"
}
},
"state": {
"label": "State",
"errorMessages": {
"required": "Please choose state from the list"
}
},
"postalCode": {
"label": "Zip code",
"errorMessages": {
"required": "Please enter your zip code",
"pattern": "Zip code must be 5 or 9 digits long"
}
}
}
}
},
"counterpartyAddedStage": {
"successMessage": {
"firstLine": "New recipient was",
"secondLine": "added successfully!"
}
},
"enterAmountStage": {
"title": "New transfer",
"nextButton": "Continue",
"backButton": "Back",
"input": {
"title": "Amount",
"balance": {
"validMessage": "Available Balance",
"errorMessage": "Exceeding the available balance of",
"errorMessageWithFee1": "You can send up to",
"errorMessageWithFee2": "due to the transaction fee"
}
}
},
"reviewStage": {
"title": "Review transfer",
"nextButton": "Complete payment",
"backButton": "Back",
"descriptionList": {
"amount": "Amount",
"date": "Date",
"fee": "Fee",
"fundsAvailability": {
"key": "Funds availability",
"value": "Immediately"
}
},
"input": {
"label": "Description (optional)",
"note": "Visible to the recipient"
}
},
"completedStage": {
"messages": {
"pendingMessage": {
"title": "Payment sent",
"subtitle": ""
},
"errorMessage": {
"title": "Something went wrong",
"subtitle": "Please try again later"
},
"rejectedMessages": {
"title": "The payment could not be sent",
"subtitle": {
"accountClosed": "The recipient's account has been closed",
"accountFrozen": "The recipient's account has been frozen",
"insufficientFunds": "The recipient's account has insufficient funds",
"dailyAchCreditLimitExceeded": "The payment could not be created, since it puts you over your daily ACH credit limit",
"monthlyAchCreditLimitExceeded": "The payment could not be created, since it puts you over your monthly ACH credit limit"
}
}
},
"doneButton": "Done"
}
},
"elementsAchRepayment": {
"flowTitle": "Make a repayment",
"accountsListStage": {
"title": "From account",
"listTitle": "Select destination account",
"backButton": "Back",
"destination": "Destination account"
},
"counterpartiesListStage": {
"title": "From account",
"addButton": "New account"
},
"emptyListStage": {
"title": "From account",
"nextButton": "Connect New Account",
"message": {
"title": "Connect your first account",
"subtitle": "Log in instantly and securely to your accounts, no matter in which bank. This will allow you to transfer money and fund your account"
}
},
"counterpartyAddedStage": {
"successMessage": {
"firstLine": "New account was",
"secondLine": "connected successfully!"
}
},
"enterAmountStage": {
"title": "New repayment",
"nextButton": "Continue",
"backButton": "Back",
"input": {
"title": "Amount",
"balance": {
"errorMessage": "Cannot repay more than the remaining balance"
}
}
},
"reviewStage": {
"title": "Review repayment",
"nextButton": "Complete payment",
"backButton": "Back",
"descriptionList": {
"amount": "Amount",
"fee": "Fee",
"date": "Date"
},
"input": {
"label": "Description (optional)",
"note": "Visible to the recipient"
}
},
"completedStage": {
"messages": {
"pendingMessage": {
"title": "Repayment submitted",
"subtitle": ""
},
"errorMessage": {
"title": "Something went wrong",
"subtitle": "Please try again later"
},
"rejectedMessages": {
"title": "The transfer could not be sent",
"subtitle": {
"accountClosed": "The recipient's account has been closed",
"accountFrozen": "The recipient's account has been frozen",
"insufficientFunds": "The recipient's account has insufficient funds",
"dailyAchRepaymentLimitExceeded": "The payment could not be created, since it puts you over your daily ACH debit limit",
"monthlyAchRepaymentLimitExceeded": "The payment could not be created, since it puts you over your monthly ACH debit limit"
}
}
},
"doneButton": "Done"
}
},
"elementsBookPayment": {
"flowTitle": "Make Payment",
"accountsListStage": {
"title": "Send payment from"
},
"counterpartiesListStage": {
"title": "Send payment to",
"listTitle": "Select destination account",
"backButton": "Back",
"destination": "Destination account"
},
"enterAmountStage": {
"title": "New transfer",
"nextButton": "Continue",
"backButton": "Back",
"input": {
"title": "Amount",
"balance": {
"validMessage": "Available Balance",
"errorMessage": "Exceeding the available balance of"
}
}
},
"reviewStage": {
"title": "Review transfer",
"nextButton": "Complete payment",
"backButton": "Back",
"descriptionList": {
"amount": "Amount",
"date": "Date",
"fundsAvailability": {
"key": "Funds availability",
"value": "Immediately"
}
},
"input": {
"label": "Description (optional)",
"note": "Visible to the recipient"
}
},
"completedStage": {
"messages": {
"sentMessage": {
"title": "Payment sent",
"subtitle": ""
},
"errorMessage": {
"title": "Something went wrong!",
"subtitle": "Please try again later"
},
"rejectedMessages": {
"title": "The payment could not be sent",
"subtitle": {
"accountClosed": "The recipient's account has been closed",
"accountFrozen": "The recipient's account has been frozen",
"insufficientFunds": "The recipient's account has insufficient funds"
}
}
},
"doneButton": "Done"
}
},
"elementsFundAccount": {
"flowTitle": "Fund my account",
"accountsListStage": {
"title": "Push funds to",
"backButton": "Back",
"destination": "Destination account"
},
"counterpartiesListStage": {
"title": "Pull funds from",
"addButton": "New card"
},
"emptyListStage": {
"title": "Pull funds from",
"nextButton": "Add New Card",
"message": {
"title": "Connect a Debit card",
"subtitle": "Instantly fund your account by connecting your card"
}
},
"counterpartyAddedStage": {
"successMessage": {
"firstLine": "New card was added",
"secondLine": "successfully!"
}
},
"enterAmountStage": {
"title": "Push funds to",
"nextButton": "Continue",
"backButton": "Back",
"input": {
"title": "Amount"
}
},
"reviewStage": {
"title": "Review payment",
"nextButton": "Complete payment",
"backButton": "Back",
"descriptionList": {
"amount": "Amount",
"fee": "fee",
"date": "Date",
"fundsAvailability": {
"key": "Funds availability",
"value": "Immediately"
}
},
"input": {
"label": "Description (optional)",
"note": "Visible to the recipient"
}
},
"completedStage": {
"messages": {
"pendingMessage": {
"title": "Account funded",
"subtitle": "Transfer expected by {{date}}"
},
"errorMessage": {
"title": "Something went wrong",
"subtitle": "Please try again later"
},
"rejectedMessages": {
"title": "The payment could not be sent",
"subtitle": {
"accountClosed": "The recipient's account has been closed",
"accountFrozen": "The recipient's account has been frozen",
"insufficientFunds": "The recipient's account has insufficient funds"
}
}
},
"doneButton": "Done"
},
"addNewCounterpartyStage": {
"title": "Pull funds from",
"nextButton": "Complete payment",
"backButton": "Back",
"note": "The card will be saved for future payments",
"loaderInfo": "Loading...",
"form": {
"title": "Connect a new debit card",
"sensitiveFields": {
"firstName": {
"label": "First Name",
"errorMessages": {
"required": "Required"
}
},
"lastName": {
"label": "Last Name",
"errorMessages": {
"required": "Required"
}
},
"cardNumber": {
"label": "Card Number",
"errorMessages": {
"required": "Required",
"cardNumber": "is not a valid card number"
}
},
"expirationDate": {
"label": "Expiration Date",
"errorMessages": {
"required": "Required",
"expirationDate": "is not a valid expiration date"
}
},
"cvv2": {
"label": "CVV2",
"errorMessages": {
"required": "Required",
"securityCode": "is not a valid security code"
}
}
},
"nonSensitiveFields": {
"street": {
"label": "Street address",
"errorMessages": {
"required": "Please enter your street address"
}
},
"city": {
"label": "City",
"errorMessages": {
"required": "Please enter your city"
}
},
"state": {
"label": "State",
"errorMessages": {
"required": "Please choose state from the list"
}
},
"postalCode": {
"label": "Zip code",
"errorMessages": {
"required": "Please enter your zip code",
"pattern": "Zip code must be 5 or 9 digits long"
}
}
}
}
}
},
"elementsCheckDeposit": {
"enterAmount": {
"actionTitle": "Check Deposit",
"actionSubtitle": "New Check",
"fromTitle": "Check Deposit",
"amountTitle": "Check amount",
"dailyLimitWarning": "Exceeding the daily limit of ",
"monthlyLimitWarning": "Exceeding the monthly limit of ",
"nextButton": "Continue",
"backButton": "Back"
},
"frontGuide": {
"title": "Mobile Check Deposit Guide",
"placement": "Place the check on a dark surface, in a well lit area",
"center": "Center the check within the photo borders",
"hold": "Hold still, we’ll capture the photo for you",
"backButton": "Back",
"nextButton": "I’m ready"
},
"backGuide": {
"description": "Your {{brandName}} bank account is managed by {{bankName}}",
"instruction": "Please make sure to sign the back and write",
"writeOnBack": "“For mobile deposit at {{bankName}}“",
"nextButton": "Got it"
},
"checkScan": {
"frontTitle": "Front",
"backTitle": "Back",
"messages": {
"firstMessage": "Make sure to place the check on a dark, flat surface",
"errorFourCorners": "Make sure all 4 corners of the check are inside the borders",
"errorTooClose": "Move the camera further away from your check",
"errorTooFar": "Move the camera closer to your check",
"errorNotCentered": "Center your document on a dark background",
"errorTooDark": "There is not enough light on your check",
"errorLowContrast": "Center your document on a dark background"
}
},
"checkImageReview": {
"frontTitle": "Front",
"backTitle": "Back",
"retake": "Retake",
"use": "Use"
},
"checkDepositReview": {
"actionTitle": "Check Deposit",
"actionSubtitle": "Review deposit",
"fromTitle": "Check Deposit",
"amount": "Amount",
"fee": "Fee",
"date": "Date",
"front": "Front",
"back": "Back",
"description": "Description (optional)",
"nextButton": "Authorize deposit",
"backButton": "Back"
},
"success": {
"actionTitle": "Check deposit submitted",
"actionSubtitle": "Deposit to {{accountPurpose}} account",
"processing": "Processing",
"confirmationNumber": "Confirmation #",
"infoMessage": "Make sure to keep your check for 14 days or until it clears",
"nextButton": "Deposit another check",
"doneButton": "Done"
},
"failure": {
"actionTitle": "Something went wrong",
"actionSubtitle": "Please try again later",
"backButton": "Back"
},
"deviceHandoff": {
"title": "Link your mobile device to make a check deposit",
"list": {
"item1": "Capture this QR code using your phone’s camera and open the private secure link",
"item2": "Follow the instructions on your phone on how to deposit the check",
"item3": "Once finished, you can return here to view the check deposit"
},
"backButton": "Back"
}
},
"elementsMultipleCards": {
"title": "Cards",
"emptyText": "No cards yet...",
"backToTop": "Back to Top",
"columns": {
"details": "CARD DETAILS",
"fullName": "CARD HOLDER",
"account": "ACCOUNT",
"type": "TYPE",
"expirationDate": "EXP. DATE",
"status": "STATUS"
}
},
"elementsNextRepayment": {
"title": "Next payment due",
"nextRepaymentOn": "Next repayment on",
"amountDue": "Amount due",
"amountOverdue": "Amount overdue",
"due": "Due",
"dueIn": "Due in",
"statementTitle": "Statement receiving date",
"recurringRepaymentTitle": "Auto repayment account",
"recurringRepaymentDefaultValue": "Not set",
"setUpAccount": "Set up account",
"freezeReason": {
"accountFrozen": "Autopay if turned off when your account is frozen.",
"counterpartyAccountFrozen": {
"text": "Your auto repayment account is frozen.",
"linkText": "Set up a new account"
}
},
"overdue": "Overdue {{overdueDays}} days ago {{remainingAmountDue}}",
"nextStatement": "Next statement:",
"statuses": {
"amountDue": "Unpaid"
},
"actionButtons": {
"setUp": "Set up auto repayments",
"repay": "Repay now"
}
},
"elementsProgramDetails": {
"limit": "Limit",
"onHold": "on hold",
"title": "Program Details",
"leftToSpend": "Available to spend"
},
"elementsPayeeManagement": {
"title": "Contacts",
"emptyText": "No contacts yet...",
"backToTop": "Back to Top",
"addNewButton": "New",
"menuItems": {
"title": "Manage Contact",
"sendFunds": "Send Funds",
"deletePayee": "Delete Payee"
},
"singleCounterparty": {
"bank": "Bank",
"routing": "Routing number",
"account": "Account number",
"backButton": "Back"
},
"rows": {
"externalAccounts": "My external accounts",
"contacts": "Contacts",
"contact": {
"type": {
"person": "Person",
"business": "Business",
"unknown": "Unknown"
}
},
"externalAccount": {
"chip": "Action needed"
}
},
"columns": {
"name": "NAME",
"bank": "BANK",
"routing": "ROUTING #",
"account": "ACCOUNT #",
"type": "TYPE"
},
"payeeActions": {
"delete": {
"title": "Are you sure you want to delete this account?",
"subtitle": "{{counterpartyName}} will no longer be on your contact list unless you add them again",
"confirmButton": "Yes, delete",
"cancelButton": "Cancel"
}
},
"microDepositConnection": {
"admonition": {
"title": "This account isn’t connected yet.",
"subtitle": "A small deposit of $0.01 was sent from Plaid to this account, and should be available in 1-2 business days. If you already received it, click to finish the account verification."
},
"confirmButton": "Finish connecting your account"
},
"payeeCreation": {
"title": "New Contact",
"subtitle": "What type of payee do you wish to add?",
"externalAccountButton": {
"title": "My external account",
"subtitle": "Connect an account under your name using Plaid"
},
"internalAccountButton": {
"title": "New Contact",
"subtitle": "Using Routing and Account numbers"
},
"addNewCounterpartyForm": {
"actionTitle": "New Contact",
"title": "Recipient details",
"nextButton": "Continue",
"backButton": "Cancel",
"form": {
"fullName": {
"label": "Full Name",
"errorMessages": {
"minLength": "Full name must contain at least 2 letters",
"required": "Full name is required"
}
},
"routingNumber": {
"label": "Routing No.",
"errorMessages": {
"pattern": "Routing number must be 9 digits long",
"required": "Routing number is required"
},
"unknownInstitution": {
"message": "Unknown Institution",
"tooltip": "The routing number was not recognized. Please verify the routing number is correct before you proceed. If the routing number is wrong, the payment may be returned."
}
},
"accountNumber": {
"label": "Account No.",
"errorMessages": {
"pattern": "Account number must contain only digits",
"required": "Account number is required"
}
},
"recipient": {
"label": "The recipient is",
"personTitle": "A person",
"businessTitle": "A business",
"notSureTitle": "I'm not sure"
},
"saveCounterparty": {
"label": ""
}
}
}
}
},
"elementsRecurringRepaymentSettings": {
"flowTitle": "Make a repayment",
"title": "Automatic repayment setup",
"accountListStage": {
"label": "Choose the funding account",
"addButton": "New account",
"backButton": "Back",
"nextButton": "Cancel auto repayment"
},
"reviewStage": {
"backButton": "Back",
"nextButton": "Authorize",
"recurringRepaymentAccount": {
"label": "Auto repayment account",
"unknownInstitution": "Unknown Institution",
"errorMessage": "Please connect a new auto repayment account"
},
"repaymentDetails": {
"label": "Repayment details",
"amount": {
"key": "Amount",
"value": "Statement balance & any applicable fees"
},
"repaymentTo": "To",
"repaymentDueDate": {
"key": "Frequency",
"value": "Every"
},
"createdAt": {
"key": "Created at",
"value": "Today"
}
}
},
"completedStage": {
"errorResponse": "Something went wrong",
"doneButtonText": "Done",
"errorButtonText": "Try again"
},
"canceledStage": {
"title": "Auto repayment was canceled",
"subTitle": "By canceling the automatic repayment function, you will be required to manually make periodic repayments to maintain your balance.",
"setupButton": "Set up a new auto repayment"
},
"cancelRecurringRepayment": {
"title": "Cancel auto repayment",
"subtitle": {
"firstLine": "Are you sure you want to cancel the auto repayment?",
"secondLine": "By canceling the automatic repayment function, you will be required to manually make periodic repayments to maintain your balance."
},
"backButton": "Back",
"confirmButton": "Cancel"
}
},
"elementsApplicationForm": {
"intro": {
"title": "Let's Get Started",
"subtitle": "Complete the application form to establish your account. You can save your progress and return to it at your convenience."
},
"individualInformationSetupSubtitle": "During this step, you will be asked to provide personal contact details. Providing accurate information is crucial to ensure a fast and efficient application process.",
"createAccountSetupSubtitle": {
"displayText": "Before we start, please choose the type of account that best suits your needs and provide the requested details. If you’re uncertain, don’t hesitate to",
"anchorText": "contact us."
},
"citizenshipFieldTooltipText": "The citizenship field was defined in the first step of the form. It can be changed by going back to the beginning of the form",
"beneficialOwnerDetails": "In this step, you are asked to provide details about individuals who are Beneficial Owners and hold a stake of 25% or more in the business.",
"reviewAndSubmit": "Before submitting your application, we recommend taking a moment to review the information you've provided. Ensuring everything is accurate will greatly improve the application process.",
"applicationTypes": {
"individual": {
"title": "Individual",
"subtitle": "This account will be used for personal finances."
},
"soleProp": {
"title": "Sole-Prop",
"subtitle": "You are an individual who operates a business on their own, without any formal separation between their personal and business finances."
},
"singleMemberBusiness": {
"title": "Single - Member Business",
"subtitle": "You are applying on behalf of a business that doesn’t have beneficial owners."
},
"multipleMemberBusiness": {
"title": "Multiple - Member Business",
"subtitle": "You are applying on behalf of a business with beneficial owners."
},
"publiclyTradedCorporation": {
"title": "Public Traded Company",
"subtitle": "You are applying on behalf of a business that doesn’t have beneficial owners."
}
}
},
"elementsWhiteLabelApp": {
"defaultLayout": {
"title": "Banking",
"fundAccountButton": "Fund Account",
"sendPaymentButton": "Pay someone"
},
"creditLayout": {
"title": "Charge Card",
"statementButton": "Statements",
"repayBalanceButton": "Repay balance"
}
},
"elementsCreateCard": {
"flowTitle": "Order card",
"sidebar": {
"title": "New Card",
"cardTitle": "Visa Debit",
"linkedAccount": "Linked account",
"shippingAddress": "Shipping address",
"shippingTime": "Shipping time",
"totalFees": "Total fees",
"cardholder": "Card Holder",
"doneButton": "Order Card"
},
"accountsListStage": {
"title": "From account"
},
"cardTypeStage": {
"title": "Choose debit card",
"backButton": "Back",
"physicalCard": {
"title": "Physical card",
"subtitle": "Order Physical card for and get it delivered to your address.",
"shippingTime": "7-10 Business days",
"fees": "fees",
"backButton": "Back",
"nextButton": "Continue"
},
"virtualCard": {
"title": "Virtual card",
"subtitle": "Create a virtual card and manage online payments easy and secure. ",
"shippingTime": "Immediate",
"fees": "fees",
"backButton": "Back",
"nextButton": "Continue"
}
},
"cardDetailsStage": {
"title": "Card details",
"shippingAddress": {
"title": "Shipping address",
"subtitle": "Your card will be shipped to this address in 5-7 business days"
},
"cardholder": "Card holder",
"addCardholder": "Add new card holder",
"businessCheckbox": "Print only business name",
"backButton": "Back",
"nextButton": "Continue"
},
"editAddressStage": {
"title": "Change your shipping address",
"subtitle": "Your card will be shipped to this address in 5-7 business days",
"submitButton": "Confirm address",
"backButton": "Back"
},
"editCardHolderStage": {
"title": "New card Holder",
"submitButton": "Add card holder",
"backButton": "Back"
},
"cardSettingsStage": {
"title": "Card settings",
"cardName": {
"title": "Card name",
"placeholder": "Add card name"
},
"cardSetUp": {
"title": "Card set up",
"purchase": {
"title": "Purchase",
"subtitle": "When enabled, you can use your card for purchases.",
"setUp": "Set a purchase limit"
},
"atm": {
"title": "ATM",
"subtitle": "When enabled, you can withdraw funds at ATMs.",
"setUp": "Set an ATM limit"
},
"dailyLimit": "Daily limit",
"monthlyLimit": "Monthly limit",
"maxLimitErrorMessage": "The max limit is",
"disableSwitchMessage": "You must keep at least one of the options enabled"
},
"backButton": "Back",
"nextButton": "Continue"
},
"cardConfirmationStage": {
"title": "Card has been ordered",
"doneButton": "Done",
"descriptionList": {
"orderDate": "Order date",
"shippingTime": "Shipping time",
"shippingAddress": "Shipping to",
"fees": "Fees"
},
"chip": "On the way"
},
"cardReviewStage": {
"title": "Your card order",
"subtitle": "Confirm your details to receive your new card",
"backButton": "Back",
"doneButton": "Order Card"
}
}
}
}
}

Create Language

Creates language for white label components.

VerbPOST
Urlhttps://api.s.unit.sh/white-label/language
Data TypewhiteLabelLanguage
Timeout (Seconds)5

Attributes

NameTypeDescription
namestringLanguage Name.
localstringLanguage Local.
globalobjectGlobal language setup.
elementsCardobjectCard element language setup.
elementsAccountobjectAccount element language setup.
elementsBookPaymentobjectBook payment element language setup.
elementsAchCreditobjectACH Credit element language setup.
elementsAchDebitobjectACH Debit element language setup.
elementsCheckDepositobjectCheck deposit element language setup.
elementsActivityobjectActivity element language setup.
elementsWhiteLabelAppobjectWhite Label app language setup.
Example Request:
curl -X POST 'https://api.s.unit.sh/white-label/language'
-H 'Content-Type: application/vnd.api+json'
-H 'Authorization: Bearer ${TOKEN}'
--data-raw '{
"data": {
"type": "whiteLabelLanguage",
"attributes": {
"name": "Default English Localization",
"local": "en",
"global": {
"months": {
"january": "January",
"february": "February",
"march": "March",
"april": "April",
"may": "May",
"june": "June",
"july": "July",
"august": "August",
"september": "September",
"october": "October",
"november": "November",
"december": "December"
}
},
"elementsAccount": {
"title": "Account {{maskedAccountNumber}}",
"availableBalance": "Available Balance",
"accountActions": {
"title": "Account Actions",
"accountDetails": "Account Details",
"accountStatements": "Account Statements",
"bankVerificationLetter": "Bank Verification Letter"
},
"accountDetails": {
"title": "Account {{maskedAccountNumber}}",
"subtitle": "{{accountName}}",
"accountOwner": "Account owner",
"accountNumber": "Account number",
"accountRoutingNumber": "Routing number",
"accountPurpose": "Account Purpose",
"bank": "Bank"
},
"accountStatements": {
"title": "Account Statements",
"subtitle": "Download account statement for account ending with #{{accountNumberLast4Digits}}",
"downloadStatementButton": "Save Statement"
},
"accountList": {
"title": "Switch Account",
"accountTitle": "{{accountPurposeWords}} {{maskedAccountNumber}}",
"accountSubtitle": "{{accountName}}"
}
}
}
}
}'

Response

Response is a JSON:API document.

201 Created

FieldTypeDescription
dataobjectThe requested resource after the operation was completed.
linksobjectRelated Link object with url to be used in component.
FieldTypeDescription
typeStringType of the resource in link.
hrefobjectURL to be set in language property of component.
Example Response:
{
"data": {
"type": "whiteLabelLanguage",
"id": "10008",
"attributes": {
"...": "..."
},
"links": {
"related": {
"type": "application/json",
"href": "https://ui.s.unit.sh/resources/982/languages/605676c1-b00b-4748-9fa4-258d1a28c3fb.json"
}
}
}
}

Update Language

Updates language for white label components.
note

You need to send the full language object in the request body, not only the fields that were changed.

VerbPUT
Urlhttps://api.s.unit.sh/white-label/language/{id}
Data TypewhiteLabelLanguage
Timeout (Seconds)5

Get Language

Get white label language by id.
VerbGET
Urlhttps://api.s.unit.sh/white-label/language/{id}
Data TypewhiteLabelLanguage
Timeout (Seconds)5
Example Request:
curl -X GET 'https://api.s.unit.sh/white-label/language/{id}' \
-H "Authorization: Bearer ${TOKEN}"

List

List languages resources. Paging and sorting can be applied.

VerbGET
Urlhttps://api.s.unit.sh/language
Timeout (Seconds)5

Query Parameters

NameTypeDefaultDescription
page[limit]integer100Optional. Maximum number of resources that will be returned. Maximum is 1000 resources. See Pagination.
page[offset]integer0Optional. Number of resources to skip. See Pagination.
filter[fileName]string(empty)Optional. Find by file name.
sortstringsort=-createdAtOptional. sort=createdAt for ascending order or sort=-createdAt (leading minus sign) for descending order.
curl -X GET 'https://api.s.unit.sh/language?page[limit]=20&page[offset]=10' \
-H "Authorization: Bearer ${TOKEN}"