Transfer Money V1
The Unified Payment API serves as a single entry point for initiating real-time and fallback payments through multiple supported networks, including FedNow, TCH, and ACH. It abstracts the complexity of routing logic and network compatibility checks, allowing clients (such as mobile / middleware systems) to initiate payments with minimal integration effort.
Key Features:
Unified interface for multi-rail payments (FedNow, TCH, ACH)
Automatic routing based on beneficiary bank support
Built-in fallback mechanism if real-time networks are unavailable
Typical Use Case:
Client system (Mobile / Middleware) send a payment request to the XD Ledger via this API. The ledger then parses the request, determines the optimal payment rail, and processes the transaction end-to-end.
Method: POST
{{URL}}/jsonrpc
Example
Request Parameters
Parameter | Description |
---|---|
method Mandatory | String Method Name must be "TransactionService.Transfermoneyv2" |
id Optional | String Unique identifier for the request. Sample Value : "1" |
params | Object |
payload | Object Root Object containing the payment instruction details. |
purpose Optional | String Describes the purpose of the transaction. |
transactionAmount Mandatory | Object |
amount Mandatory | String Value of the transaction must be in Cents Sample Value: "220" |
currency Mandatory | String Currency type used for the transaction Sample Value: "USD" |
creditor Mandatory | Object |
userType | String Specifies the type of creditor Constant Value : "INDIVIDUAL / BUSINESS" |
identificationType Optional | String Type of identification Constant Value : " SSN / TIN" |
identification Optional | String Unique identifier of the identification provided by creditor Sample Value: "89900200002" |
firstName Optional | String First name of the creditor (INDIVIDUAL) or Name of the Company (BUSINESS). Sample Value - INDIVIDUAL : "James" Sample Value - BUSINESS : "XYZ LTD" |
middleName Optional | String Middle name of creditor Sample Value: "Edward" |
lastName Optional | String Last name of creditor Sample Value: "Harrington" |
creditorAccount Mandatory | Object |
identificationType Optional | String Type of account identification Sample Value: "ACCOUNT_NUMBER" |
identificationType2 Optional | String Type of account Constant Values : " CHECKING / SAVINGS"" |
identification Mandatory | String Account number of the creditor's account Sample Value: "200522479517839" |
institution Mandatory | Object |
name Optional | String Name of the creditor bank Sample Value: "THE BANK OF NEW YORK MELLON" |
identificationType Optional | String Identification type of bank Sample Value: "ABA" |
identification Mandatory | String Bank's identification number Sample Value: "101110802" |
debtorPostalAddress Optional | Object |
addressType | String Type of address Sample Value: "HOUSE" |
addressLine1 | String First line of the address Sample Value: "3745 SW anamaker RD" |
addressLine2 | String Second line of the address Sample Value: "Suite C" |
city | String City of the debtor's address Sample Value: "Topeka" |
state | String State of the debtor's address Sample Value: "KS" |
zipCode | String Postal code of the debtor's address Sample Value: "66610" |
countryCode | String Country code in numeric form Sample Value: "840" |
nationality | String Nationality of the debtor Sample Value: "USA" |
debtorContact Optional | Object |
primaryEmail | String Primary email address for the debtor Sample Value: "john@gmail.com" |
primaryPhone | String Primary phone number for the debtor Sample Value: "7850010001" |
debtorAccount Mandatory | Object |
identificationType Optional | String Type of account identification Sample Value: "ACCOUNT_NUMBER" |
identification Mandatory | String Account number for the debtor's account Sample Value: "200401278247450" |
institution Mandatory | Object |
name Optional | String Name of debtor bank Sample Value: "ABC BANK" |
identificationType Optional | String Type of bank identification Sample Value: "ABA" |
identification Mandatory | String Bank's identification number Sample Value: "124303298" |
api | Object API credentials and metadata. |
credential Mandatory | String Basic (space) [( "<Username>:<apiKey>" ) as Base64 encoded value] to be provided Sample Value: "Basic amVnYW4uckBuZXR4ZC5jb206ZmE3NTg4NzYyMDUxNDRhM2FmZTRlMDJiNzIzOTM2M2E=" |
signature Mandatory | String Sign the request payload (params.payload) using private key. Sample Value: "MEQCIAbpxHpdOyBEVlmxPYv7m4Z1OvWJJYw7g7u3GE3T9nmvAiBjKHckSvb1M6O4t7FeWsn2z9Y3dMeYn3HyX/k28ek/Dw==" |
apiKey Optional | String API key is provided at the time of device registration. Sample Value : "fa758876205144a3afe4e02b7239363a" |
keyId Mandatory | String Key ID is provided at the time of device registration. Sample Value : "41199" |
- cURL
- C#
- Go
- NodeJs
curl --location '{{URL}}/jsonrpc' \
--header 'Content-Type: application/json' \
--data-raw '{"method":"TransactionService.Transfermoney","id":"1","params":{"payload":{"purpose":"wages of June month included with loan repayment","transactionAmount":{"amount":"50000","currency":"USD"},"creditor":{"userType":"INDIVIDUAL","identification":"748514523","identificationType":"SSN","firstName":"Zusen","middleName":"Mark","lastName":"Linda"},"creditorAccount":{"identification":"252511012545002","identificationType":"ACCOUNT_NUMBER","identificationType2":"CHECKING","institution":{"name":"Indo East","identification":"011002550","identificationType":"ABA"}},"debtorPostalAddress":{"addressType":"HOUSE","addressLine1":"La Maison","addressLine2":"16 Washington Mews","city":"Brooklyn","state":"NY","zipCode":"11201","countryCode":"021","nationality":"USA"},"debtorContact":{"primaryEmail":"zusenlamark@yahoo.com","primaryPhone":"+1-9877845785"},"debtorAccount":{"identification":"200515264448391","identificationType":"ACCOUNT_NUMBER","institution":{"name":"ABC BANK","identification":"124303298","identificationType":"ABA"}}},"api":{"credential":"Basic bmF2eWEubitlbXBAbmV0eGQuY29tOmY1OWIwY2NlOTU4ZTQ1YTc4MGVhZWIzYWVjOWVjZDAx","signature":"MEUCIQCxBNm8iCJ0e2rwstvqIuMWQagXao71UC4qTR9HzmYIeQIgVvi2DHVH2qGpkMwmZQIMstZDB/dou6zmraBP8zuQCIY=","apiKey":"f59b0cce958e45a780eaeb3aec9ecd01","keyId":"348076"}}}'
var options = new RestClientOptions("{{URL}}")
{
MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("/pl/jsonrpc", Method.Post);
request.AddHeader("Content-Type", "application/json");
var body = @"{""method"":""TransactionService.Transfermoney"",""id"":""1"",""params"":{""payload"":{""purpose"":""wages of June month included with loan repayment"",""transactionAmount"":{""amount"":""50000"",""currency"":""USD""},""creditor"":{""userType"":""INDIVIDUAL"",""identification"":""748514523"",""identificationType"":""SSN"",""firstName"":""Zusen"",""middleName"":""Mark"",""lastName"":""Linda""},""creditorAccount"":{""identification"":""252511012545002"",""identificationType"":""ACCOUNT_NUMBER"",""identificationType2"":""CHECKING"",""institution"":{""name"":""Indo East"",""identification"":""011002550"",""identificationType"":""ABA""}},""debtorPostalAddress"":{""addressType"":""HOUSE"",""addressLine1"":""La Maison"",""addressLine2"":""16 Washington Mews"",""city"":""Brooklyn"",""state"":""NY"",""zipCode"":""11201"",""countryCode"":""021"",""nationality"":""USA""},""debtorContact"":{""primaryEmail"":""zusenlamark@yahoo.com"",""primaryPhone"":""+1-9877845785""},""debtorAccount"":{""identification"":""200515264448391"",""identificationType"":""ACCOUNT_NUMBER"",""institution"":{""name"":""ABC BANK"",""identification"":""124303298"",""identificationType"":""ABA""}}},""api"":{""credential"":""Basic bmF2eWEubitlbXBAbmV0eGQuY29tOmY1OWIwY2NlOTU4ZTQ1YTc4MGVhZWIzYWVjOWVjZDAx"",""signature"":""MEUCIQCxBNm8iCJ0e2rwstvqIuMWQagXao71UC4qTR9HzmYIeQIgVvi2DHVH2qGpkMwmZQIMstZDB/dou6zmraBP8zuQCIY="",""apiKey"":""f59b0cce958e45a780eaeb3aec9ecd01"",""keyId"":""348076""}}}";
request.AddStringBody(body, DataFormat.Json);
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://plus.netxd.com/pl/jsonrpc"
method := "POST"
payload := strings.NewReader(`{"method":"TransactionService.Transfermoney","id":"1","params":{"payload":{"purpose":"wages of June month included with loan repayment","transactionAmount":{"amount":"50000","currency":"USD"},"creditor":{"userType":"INDIVIDUAL","identification":"748514523","identificationType":"SSN","firstName":"Zusen","middleName":"Mark","lastName":"Linda"},"creditorAccount":{"identification":"252511012545002","identificationType":"ACCOUNT_NUMBER","identificationType2":"CHECKING","institution":{"name":"Indo East","identification":"011002550","identificationType":"ABA"}},"debtorPostalAddress":{"addressType":"HOUSE","addressLine1":"La Maison","addressLine2":"16 Washington Mews","city":"Brooklyn","state":"NY","zipCode":"11201","countryCode":"021","nationality":"USA"},"debtorContact":{"primaryEmail":"zusenlamark@yahoo.com","primaryPhone":"+1-9877845785"},"debtorAccount":{"identification":"200515264448391","identificationType":"ACCOUNT_NUMBER","institution":{"name":"ABC BANK","identification":"124303298","identificationType":"ABA"}}},"api":{"credential":"Basic bmF2eWEubitlbXBAbmV0eGQuY29tOmY1OWIwY2NlOTU4ZTQ1YTc4MGVhZWIzYWVjOWVjZDAx","signature":"MEUCIQCxBNm8iCJ0e2rwstvqIuMWQagXao71UC4qTR9HzmYIeQIgVvi2DHVH2qGpkMwmZQIMstZDB/dou6zmraBP8zuQCIY=","apiKey":"f59b0cce958e45a780eaeb3aec9ecd01","keyId":"348076"}}}`)
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/json")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
var https = require('follow-redirects').https;
var fs = require('fs');
var options = {
'method': 'POST',
'hostname': 'plus.netxd.com',
'path': '/pl/jsonrpc',
'headers': {
'Content-Type': 'application/json'
},
'maxRedirects': 20
};
var req = https.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function (chunk) {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
res.on("error", function (error) {
console.error(error);
});
});
var postData = JSON.stringify({
"method": "TransactionService.Transfermoney",
"id": "1",
"params": {
"payload": {
"purpose": "wages of June month included with loan repayment",
"transactionAmount": {
"amount": "50000",
"currency": "USD"
},
"creditor": {
"userType": "INDIVIDUAL",
"identification": "748514523",
"identificationType": "SSN",
"firstName": "Zusen",
"middleName": "Mark",
"lastName": "Linda"
},
"creditorAccount": {
"identification": "252511012545002",
"identificationType": "ACCOUNT_NUMBER",
"identificationType2": "CHECKING",
"institution": {
"name": "Indo East",
"identification": "011002550",
"identificationType": "ABA"
}
},
"debtorPostalAddress": {
"addressType": "HOUSE",
"addressLine1": "La Maison",
"addressLine2": "16 Washington Mews",
"city": "Brooklyn",
"state": "NY",
"zipCode": "11201",
"countryCode": "021",
"nationality": "USA"
},
"debtorContact": {
"primaryEmail": "zusenlamark@yahoo.com",
"primaryPhone": "+1-9877845785"
},
"debtorAccount": {
"identification": "200515264448391",
"identificationType": "ACCOUNT_NUMBER",
"institution": {
"name": "ABC BANK",
"identification": "124303298",
"identificationType": "ABA"
}
}
},
"api": {
"credential": "Basic bmF2eWEubitlbXBAbmV0eGQuY29tOmY1OWIwY2NlOTU4ZTQ1YTc4MGVhZWIzYWVjOWVjZDAx",
"signature": "MEUCIQCxBNm8iCJ0e2rwstvqIuMWQagXao71UC4qTR9HzmYIeQIgVvi2DHVH2qGpkMwmZQIMstZDB/dou6zmraBP8zuQCIY=",
"apiKey": "f59b0cce958e45a780eaeb3aec9ecd01",
"keyId": "348076"
}
}
});
req.write(postData);
req.end();
Request Body
{
"method": "TransactionService.Transfermoney",
"id": "1",
"params": {
"payload": {
"purpose": "Loan Account number - 011011258698745",
"transactionAmount": {
"amount": "220",
"currency": "USD"
},
"creditor": {
"userType": "INDIVIDUAL",
"identificationType": "SSN",
"identification": "89900200002",
"firstName": "James",
"middleName": "Edward",
"lastName": "Harrington"
},
"creditorAccount": {
"identificationType": "ACCOUNT_NUMBER",
"identificationType2": "CHECKING",
"identification": "200522479517839",
"institution": {
"name": "THE BANK OF NEW YORK MELLON",
"identificationType": "ABA"
"identification": "101110802",
}
},
"debtorPostalAddress": {
"addressType": "HOUSE",
"addressLine1": "3745 SW anamaker RD",
"addressLine2": "Suite C",
"city": "Topeka",
"state": "KS",
"zipCode": "66610",
"countryCode": "840",
"nationality": "USA"
},
"debtorContact": {
"primaryEmail": "jane@gmail.com",
"primaryPhone": "7850010001"
},
"debtorAccount": {
"identificationType": "ACCOUNT_NUMBER",
"identification": "200401278247450",
"institution": {
"name": "ABC BANK",
"identificationType": "ABA"
"identification": "124303298",
}
}
},
"api": {
"credential": "Basic amVnYW4uckBuZXR4ZC5jb206ZmE3NTg4NzYyMDUxNDRhM2FmZTRlMDJiNzIzOTM2M2E=",
"signature": "{{signature}}",
"apiKey": "fa758876205144a3afe4e02b7239363a",
"keyId": "41199"
}
}
}
Response: 200
Response Parameters
Parameter | Description |
---|---|
id Mandatory | String Unique response id Sample Value: "1" |
result Mandatory | Object |
status Mandatory | String Status of the transaction Sample Value: "COMPLETED" Possible values: "COMPLETED", "FAILED" |
referenceID Mandatory | String Unique reference id of the transaction Sample Value: "b3d721e8f36a40b58e3caf3509e9508c" |
supportedChannel Mandatory | String Channel through which transaction is processed Sample Value: "TCH" Possible values: "TCH", "FEDNOW", "ACH", "WIRE" |
transactionType Mandatory | String Type of transaction Sample Value: "RTP_OUT" Possible values: "RTP_OUT", "CCT_OUT", "ACH_OUT", "WIRE_OUT" |
jsonrpc Mandatory | String RPC Version Sample Value: "2.0" |
Response Body
{
"id": "1",
"result": {
"status": "COMPLETED",
"referenceID": "b3d721e8f36a40b58e3caf3509e9508c",
"supportedChannel": "TCH",
"transactionType": "RTP_OUT"
},
"jsonrpc": "2.0"
}
Error Codes
Error Codes
Code | Message | Recommended Action |
---|---|---|
ACCOUNT_NOT_EXIST | Debtor Account doesn't Exist | Please enter a valid Account Number |
ACCOUNT_NOT_MATCH_WITH_CRJ_ACCOUNT | CRJ account number does not match with parent account number | Please review the Sub Account and Parent Account details |
ACCOUNT_NOT_MATCHED_WITH_LEGALREP | Account not matched with legalrep | Legalrep do not have access to this account. Please contact Support. |
BAD_INPUT | CreditorAccount is invalid or missing | Please check the error message and fix the request payload |
BAD_INPUT | CreditorAccount.Identification is invalid or missing | Please check the error message and fix the request payload |
BAD_INPUT | CreditorAccount.Institution is invalid or missing | Please check the error message and fix the request payload |
BAD_INPUT | CreditorAccount.InstitutionId is invalid or missing | Please check the error message and fix the request payload |
BAD_INPUT | DebtorAccount is invalid or missing | Please check the error message and fix the request payload |
BAD_INPUT | DebtorAccount.Identification is invalid or missing | Please check the error message and fix the request payload |
BAD_INPUT | DebtorAccount.Institution is invalid or missing | Please check the error message and fix the request payload |
BAD_INPUT | DebtorAccount.InstitutionId is invalid or missing | Please check the error message and fix the request payload |
BAD_INPUT | TransactionAmount is invalid or missing | Please check the error message and fix the request payload |
BAD_INPUT | Amount is invalid or missing | Please check the error message and fix the request payload |
BAD_INPUT | Currency is invalid or missing | Please check the error message and fix the request payload |
BAD_INPUT | DebitorAccount is invalid or missing | Please check the error message and fix the request payload |
BAD_INPUT | DebitorAccount.IdentificationType is invalid or missing | Please check the error message and fix the request payload |
BAD_INPUT | DebitorAccount.IdentificationValue is invalid or missing | Please check the error message and fix the request payload |
BAD_INPUT | Fee Amount is invalid or missing | Please check the error message and fix the request payload |
BAD_INPUT | Fee Currency is invalid or missing | Please check the error message and fix the request payload |
BAD_INPUT | Tax Amount is invalid or missing | Please check the error message and fix the request payload |
BAD_INPUT | Tax Currency is invalid or missing | Please check the error message and fix the request payload |
BAD_INPUT | Fee subsidiary source account doesn't have sufficient balance | Please check the error message and fix the request payload |
BAD_INPUT | Request is invalid or missing | Please check the error message and fix the request payload |
BAD_INPUT | ReferenceId is invalid or missing | Please check the error message and fix the request payload |
BAD_INPUT | ProcessId is invalid or missing | Please check the error message and fix the request payload |
BAD_INPUT | For wire transfers, Amount field should not be more then 12 digits | Please check the error message and fix the request payload |
BAD_INPUT | Debitor AccountNumber is invalid or missing | Please check the error message and fix the request payload |
BAD_INPUT | Product account is invalid or missing | Please check the error message and fix the request payload |
BAD_INPUT | Creditor Account is invalid or missing | Please check the error message and fix the request payload |
BAD_INPUT | CreditorAccount InstitutionId is invalid or missing | Please check the error message and fix the request payload |
BAD_INPUT | CreditorAccount Party is invalid or missing | Please check the error message and fix the request payload |
BAD_INPUT | CreditorAccount Party Name is invalid or missing | Please check the error message and fix the request payload |
BAD_INPUT | requestID is invalid or missing | Please check the error message and fix the request payload |
BAD_INPUT | applicationCode is invalid or missing | Please check the error message and fix the request payload |
BAD_INPUT | ticketName is invalid or missing | Please check the error message and fix the request payload |
BAD_INPUT | createdBy is invalid or missing | Please check the error message and fix the request payload |
BAD_INPUT | payloadJSON is invalid or missing | Please check the error message and fix the request payload |
BAD_INPUT | status is invalid or missing | Please check the error message and fix the request payload |
CANNOT_PROCESS_TRANSACTION | Transaction cannot be process | Transaction Type is not supported. Please contact Support with the Error message |
DUPLICATE_REFERENCE_ID | A request with ReferenceId already exist | Please Use a unique reference/request ID |
FED_NOW_PROFILE_SETTINGS_NOT_FOUND | Fednow profile Settings not found for the Account | Please Reach out to Support and share this error message |
IN_ACTIVE_ACCOUNT | Account is + status | Your Account is "INACTIVE". Please Contact Support |
IN_ACTIVE_CUSTOMER | Customer is not in active state | Your Customer Profile is "INACTIVE". Please Contact Support |
INSUFFICIENT_BALANCE | Insufficient [balance] in account [acc no] | Please Review account limits or balances |
INTERNAL_ERROR | Please contact the system administrator and try again later. | Temporary error - Please try again later |
INVALID_CURRENCY | Account Currency and Instructed Currency mismatched | Please fix the Currency Code and Try again |
INVALID_POSTED_DATE | Invalid Posted Date. Must be RFC3339 Format | Please Fix the Posted Date Format and Try again |
NOT_FOUND_ACCOUNT | Account not found | Please fix the payload with the Correct Account Number |
NOT_FOUND_APPLICATION | Application not found | Please fix the payload with the Correct Application ID |
NOT_FOUND_CUSTOMER | Customer not found | Please fix the payload with the Correct Customer ID |
NOT_FOUND_INSTITUTION | Institution not found in Network for Payment Channel | Please fix the payload with the Correct Institution ID |
NOT_FOUND_PRODUCT | Product not found | Please fix the payload with the relevant Product Name |
NOT_FOUND_PROGRAM_CHANNEL | Program channel setting not found | Please fix the payload with the Correct Program Channel |
NOT_FOUND_TRANSACTION | Transaction not found | Please Reach out to Support and share this error message |
PER_DAY_MONEY_IN_LIMIT_BREACHED | per day money_in limit breached | Please Review account limits or balances |
PER_DAY_MONEY_IN_LIMIT_BREACHED_FOR_RECEIVER | per day money_in limit breached for receive | Please Review account limits or balances |
PER_DAY_MONEY_OUT_LIMIT_BREACHED | per day money_out limit breached | Please Review account limits or balances |
PER_DAY_TRANSACTION_LIMIT_BREACHED | per day transaction limit breached | Please Review account limits or balances |
PER_MONTH_MONEY_IN_LIMIT_BREACHED | per month money_in limit breached | Please Review account limits or balances |
PER_MONTH_MONEY_OUT_LIMIT_BREACHED | per month money_out limit breached | Please Review account limits or balances |
PER_MONTH_TRANSACTION_LIMIT_BREACHED | per month transaction limit breached | Please Review account limits or balances |
PER_TRANSACTION_LIMIT_BREACHED | per transaction limit breached | Please Review account limits or balances |
PER_YEAR_TRANSACTION_LIMIT_BREACHED | per year transaction limit breached | Please Review account limits or balances |
RTP_PROFILE_SETTINGS_NOT_FOUND | RTP Profile Settings not found for the Account | Please Reach out to Support and share this error message |
SUPPORTED_CHANNEL_UNAVAILABLE | Supported channel unavailable | Please Reach out to Support and share this error message |
TCH_REF_BALANCE_EXCEEDED | - | Please Reach out to Support and share this error message |
TRANSACTION_NOT_SUPPORTED | transaction not supported | Please Verify if the requested action is allowed or supported |
TXN_NOT_ALLOWED_FOR_NON_ADDRESSABLE_ACC | Not allowed Transaction for non-addressable | Please Verify if the requested action is allowed or supported |
WIRESETTING_NOT_FOUND | Wire Settings not found for the Account | Please Reach out to Support and share this error message |