PhoenixXM
Category: Core Connectors
Market: US
Overview
The PhoenixXM connector exposes REST endpoints under /phoenixxm/v1 and translates JSON requests into Finastra PhoenixXM XAPI SOAP operations.
The connector provides:
- Customer/member onboarding (RIM record creation)
- Deposit and ATM account creation
- Customer search and lookup by name, RIM, TIN, phone, or account
- Account and email inquiries
- DepositPro flows (product data, forms, CIP/eSign config, and TIS submission)
The connector handles token acquisition and caching, Phoenix operation routing, and Phoenix error normalization.
Vault Configuration
| Key | Description |
|---|---|
phoenixxmUrl
|
PhoenixXM SOAP endpoint template. Supports <BankID>, {BankID}, ${BankID} placeholder replacement. |
bankId
|
Bank identifier injected into the URL template. |
phoenixxmConnString
|
Phoenix connection string passed in auth/process calls. |
phoenixDefaultEmployeeId
|
Employee ID used in Phoenix user context. |
phoenixServiceId
|
Service/application ID used for Phoenix authentication. |
phoenixServiceSecretKey
|
Service secret key used for Phoenix authentication. |
Example Vault Configuration
{
"phoenixxmUrl": "https://<host>/<BankID>/ST1_WS/phoenixxm.asmx",
"bankId": "2669",
"phoenixxmConnString": "",
"phoenixDefaultEmployeeId": "8859",
"phoenixServiceId": "1003",
"phoenixServiceSecretKey": "******"
}
Customer and Account Onboarding
Endpoints
| Endpoint | Method | Description |
|---|---|---|
/finastra/v1/phoenixxm/customers
|
POST | Create a new Phoenix customer/member (RIM). |
/finastra/v1/phoenixxm/deposits
|
POST | Create a new deposit account. |
/finastra/v1/phoenixxm/atm-accounts
|
POST | Create ATM account, card, and relations. |
Create Customer
POST /finastra/v1/phoenixxm/customers
Request Structure
{
"rmAcct": {},
"rmAddress": [],
"rmPersonalInfo": {},
"rmRel": [],
"rmUserDefVal": [],
"rmIdent": {},
"rmNonPersonalInfo": {},
"dpUmb": {},
"dpUmbBene": []
}
Sample Request
{
"rmAcct": {
"new": "",
"classCode": 100,
"lastName": "Wayne",
"rimType": "Personal",
"branchNo": 1,
"firstName": "Bruce",
"tin": "123-34-2345",
"tinFormat": "S"
},
"rmAddress": [
{
"new": "",
"addrTypeId": 1,
"addressLine1": "1007 Mountain Dr",
"city": "Gotham",
"state": "NJ",
"zip": "07001"
}
]
}
Sample Response
{
"response": {
"record": {
"rmAcct": {
"rimNo": 74846
}
}
},
"returnCode": 0
}
Create Deposit
POST /finastra/v1/phoenixxm/deposits
Request Structure
{
"dpAcct": {},
"createNewCustomer": {},
"dpUmb": {},
"dpUmbBene": [],
"dpAcctIntOpt": [],
"dpUserDefVal": [],
"gbCombStmt": {},
"gbCombStmtAcct": {},
"gbCombStmtAddr": [],
"gbMapAcctRel": [],
"gbMapAcctImage": [],
"gbServices": [],
"gbAdditionTitles": [],
"generateAccountNumberRequest": {
"outputDepLoan": "string",
"acctType": "string"
}
}
Sample Request
{
"dpAcct": {
"new": "",
"rimNo": 21535,
"acctType": "CK",
"acctNo": "",
"classCode": 100,
"title1": "Test CK Account",
"branchNo": 1,
"rsmId": 1
}
}
Sample Response
{
"record": {
"dpAcct": {
"acctNo": "965437"
}
},
"returnCode": 0
}
Create ATM Account
POST /finastra/v1/phoenixxm/atm-accounts
Request Structure
{
"atmAcct": {},
"atmCard": [],
"atmRelAcct": [],
"atmUserDefVal": []
}
Validation: atmAcct is required.
Sample Request
{
"atmAcct": {
"new": "",
"rimNo": 21535,
"atmAcctNo": "",
"atmAcctType": "V11"
},
"atmCard": [
{
"new": "",
"rimNo": 21535,
"atmAcctType": "V11",
"atmAcctNo": "",
"branchNo": 1,
"cardMailer": "Y"
}
],
"atmRelAcct": [
{
"new": "",
"atmAcctType": "V11",
"atmAcctNo": "",
"acctType": "SV",
"acctNo": "5025-187"
}
]
}
Sample Response
{
"record": {
"atmAcct": {
"atmAcctType": "V11",
"atmAcctNo": "000058128"
}
},
"returnCode": 0
}
Search and Inquiry
Endpoints
| Endpoint | Method | Description |
|---|---|---|
/finastra/v1/phoenixxm/customers/search
|
POST | Search customers by name criteria. |
/finastra/v1/phoenixxm/customers/search/rim
|
POST | Search by RIM number. |
/finastra/v1/phoenixxm/customers/search/tin
|
POST | Search by TIN. |
/finastra/v1/phoenixxm/customers/search/phone
|
POST | Search by phone number. |
/finastra/v1/phoenixxm/customers/search/account
|
POST | Search by account number. |
/finastra/v1/phoenixxm/customers/accounts
|
POST | Get customer accounts. |
/finastra/v1/phoenixxm/customers/emails
|
POST | Get customer email addresses. |
Search Customers
POST /finastra/v1/phoenixxm/customers/search*
All search endpoints share the same request structure. The connector routes the request based on which fields are populated:
/search/rimusesrimNo/search/tinusestin/search/phoneusesphone/search/accountusestranAcct.acctNo/searchuses name fields (lastName/firstName)
Request Structure
{
"tranInfo": {
"referenceNo": "string",
"xapiTranCode": "13005"
},
"lastName": "string",
"firstName": "string",
"rimNo": "string",
"tin": "string",
"phone": "string",
"defPhoneFormat": "string",
"tranAcct": {
"acctNo": "string"
}
}
Note: Customer search enforces Phoenix transaction code 13005 server-side. The connector overrides any client-provided transaction code.
Get Customer Accounts
POST /finastra/v1/phoenixxm/customers/accounts
{
"tranInfo": {
"xapiTranCode": "13015"
},
"rimNo": "string",
"tranAcct": {},
"outputDepLoan": "string",
"closedDt": "string"
}
Get Customer Emails
POST /finastra/v1/phoenixxm/customers/emails
{
"rimNo": "string",
"relRimNo": "string"
}
Validation: rimNo is required.
Update Operations
Endpoints
| Endpoint | Method | Description |
|---|---|---|
/finastra/v1/phoenixxm/accounts/generate-number
|
POST | Generate a new account number. |
/finastra/v1/phoenixxm/customers/emails/create
|
POST | Create a customer email address. |
Generate Account Number
POST /finastra/v1/phoenixxm/accounts/generate-number
{
"outputDepLoan": "string",
"acctType": "string"
}
Create Customer Email
POST /finastra/v1/phoenixxm/customers/emails/create
{
"tranInfo": {},
"rimNo": "string",
"relRimNo": "string",
"email": "string",
"sendStmtAlert": "Y|N"
}
Validation: rimNo and email are required.
DepositPro
Endpoints
| Endpoint | Method | Description |
|---|---|---|
/finastra/v1/phoenixxm/deposit-pro/product-data
|
GET | Retrieve product data. |
/finastra/v1/phoenixxm/deposit-pro/forms
|
POST | Retrieve forms. |
/finastra/v1/phoenixxm/deposit-pro/cip-config
|
GET | Retrieve CIP configuration. |
/finastra/v1/phoenixxm/deposit-pro/esign-config
|
GET | Retrieve eSign configuration. |
/finastra/v1/phoenixxm/deposit-pro/tis
|
POST | Submit TIS (Transaction Integration Services). |
Get Product Data
GET /finastra/v1/phoenixxm/deposit-pro/product-data
| Parameter | Type | Required | Description |
|---|---|---|---|
depositProProdType
|
string | No | Product type filter |
depositProProduct
|
string | No | Product filter |
acctType
|
string | No | Account type filter |
classCode
|
string | No | Class code filter |
Get Forms
POST /finastra/v1/phoenixxm/deposit-pro/forms
{
"depositProTransNumber": "string",
"depositProFormName": "string"
}
Validation: Both fields are required.
Get CIP Config
GET /finastra/v1/phoenixxm/deposit-pro/cip-config
No request body required.
Get eSign Config
GET /finastra/v1/phoenixxm/deposit-pro/esign-config
No request body required.
Submit TIS
POST /finastra/v1/phoenixxm/deposit-pro/tis
{
"rmAcct": [],
"rmAddress": [],
"rmNonPersonalInfo": [],
"rmPersonalInfo": [],
"rmIdent": [],
"rmRel": [],
"rmCipAdditional": [],
"rmTrust": [],
"rmTrustCapacity": [],
"dpAcct": [],
"dpAcctIntOpt": [],
"gbMapAcctRel": [],
"depositproEsignAuth": [],
"depositproAuthQa": []
}
Error Handling
Errors follow the platform-standard problem JSON format. Request validation errors and Phoenix application-level errors are classified by the connector. Transport, timeout, and dependency failures are classified by the Data Core platform.
Error Response Format
{
"status": 502,
"title": "Bad Gateway",
"detail": "Dependency failure",
"code": "Server",
"instance": "/finastra/v1/phoenixxm/customers/search/phone",
"timestamp": "2026-06-16T12:51:12Z",
"dependency": {
"status": 500,
"title": "Server was unable to process request. ...",
"detail": "..."
}
}
codecarries the upstream SOAP fault code when present (for example,Server); otherwise it contains the mapped HTTP status.dependencyis present only for upstream/transport failures, not for client validation or500errors.
HTTP Status Codes
| Status | Meaning | Triggered By |
|---|---|---|
200
|
Success | Successful call; body contains the XAPI response. |
400
|
Bad Request (validation) | Invalid or missing fields, malformed JSON, bean-validation failure. |
400
|
Bad Request (Phoenix business rule) | PhoenixXM returned HTTP 200 with non-zero ReturnCode/Rc/UserReturnCode or an E-severity message. |
403
|
Forbidden | Access denied. |
4xx
|
Passthrough | Upstream returned a 4xx (preserved as-is). Upstream 401/403 are remapped to 502. |
500
|
Internal Server Error | Unexpected runtime error not otherwise classified. |
502
|
Bad Gateway | Phoenix system/auth failure (__SystemException tag), upstream 5xx (other than 503/504), upstream 401/403, repeated 401 after token refresh. |
503
|
Service Unavailable | Connection refused, DNS failure, no route to host, TLS/SSL failure. |
504
|
Gateway Timeout | Connect/read/request timeout reaching PhoenixXM. |
Dependency Status Mapping
| Upstream Status | Returned Status |
|---|---|
401, 403 |
502
|
Other 4xx |
Same status (passthrough) |
503
|
503
|
504
|
504
|
Other 5xx |
502
|
PhoenixXM Application-Level Codes
PhoenixXM always responds over HTTP 200, even on failure. The connector inspects the XAPI_RESPONSE and classifies errors as follows:
- System error: A message tagged
__SystemExceptionmaps to502. - Business error: Non-zero
ReturnCode/Rc/UserReturnCode, or a message withMsgSeverity = Emaps to400. - No error: Passes through unchanged (
200), including empty search results.
The Phoenix ReturnCode / UserReturnCodeDesc is propagated into the response detail field. These codes are defined by Phoenix; consult the PhoenixXM Technical Guide for their meaning.