The LT Trust API is a RESTful API. Our API has predictable, resource-oriented URLs, and uses HTTP response codes to indicate API errors. We use built-in HTTP features, like HTTP authentication and HTTP verbs, which are understood by off-the-shelf HTTP clients. JSON is returned by all API responses, including errors.
LT Trust supports two API environments TEST and PROD. The TEST domain is rc.ltetire.com, and the PROD domain is connect.ltretire.com. This documentation only contains references to TEST.
https://rc.ltretire.com/v1/
Get the API system status
Field | Description |
---|---|
Content-Type string |
Always set to 'application/json' |
Authorization string |
'Bearer' plus JSON Web Token (JWT) provided by LT |
curl https://rc.ltretire.com/v1/status \
-X GET \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer xxx.xxx.xxx'
{
"status": "OK"
}
Field | Description |
---|---|
ein
string
|
Employer Identification Number
Size range: 1..9 |
planId
string
|
Plan's unique Id
Size range: 1..12 |
planName
string
|
Name of the plan
Size range: 1..60 |
yrEndDate
date
|
Plan's year-end-date (e.g. 2018-12-31)
Format: YYYY-MM-DD
|
ssn
string
|
Employee's social security number without dashes. Arguments will be validated against known bad SSNs.
Size range: 9 |
investment
object
|
An object whose fields define an investment vehicle |
displaymodels
query string param
string, optional
|
To display or not to display models, which are typically funds-of-funds. In either case, "core" funds are always displayed.
Y - Displays models but not the model holdings N - Default; Does not display models but does display model holdings Allowed values: see above
|
payFrequencyCode
string
|
The pay frequency code:
B - Biweekly S - Semimonthly W - Weekly M - Monthly O - Off-cycle* A - Annual C - Correction* 2 - Semiannual Allowed values: see above
*Not available for onboarding
|
payFrequencySequenceNumber
integer
|
Typically used for payroll corrections
Size range: 1-5
|
checkDateExpected
date
|
The date this payroll was expected to be processed.
Size range: 10
Format: "YYYY-MM-DD"
Validation: Must be within 7 days of checkDateActual. See YearsSubmittedDoNotMatch, InvalidCheckDateExpected, and InvalidDayOfTheWeek in Error Types
|
currPeriodComp
float
|
Compensation for the current pay period. Can be positive or negative. Can be zero. Can have a precision of up to two decimal places. |
businessEntityTypeCode
string
|
The business entity type code:
1 - Corporation 2 - Partnership 3 - Subchapter S corp 4 - Sole Prop. 5 - Multi-employer 6 - Professional corp. 7 - Non-profit 8 - Other A - Hospital B - School division (K-12) C - University D - Church E - Government F - Home Health Service Agency G - Health/Welfare Svc Agency Allowed values: see above
|
Field | Description |
---|---|
id
string
|
Investment vehicle unique identifier. If type is M for Model, id is a numeric value like 1600. If type is F for Fund/non-model, id is an alphanumeric value like VTSMX (usually the ticker symbol).
Size range: 1..38
|
type
char
|
Type of investment vehicle; M is for Model; F is generally for Fund, but it can represent other securities too (e.g. ETFs).
Allowed Values: M, F
|
modelOnly
string, optional
|
Values:
Y - Fund is only available as part of a model and not as a core fund. Only valid when "type" is "F for Fund". N - Fund is available as part of a model as well as a core fund. Only valid when "type" is "F for Fund". NA - Only valid when "type" is "M for Model". Allowed values: see above
|
description
string, optional
|
Investment vehicle description
Size range: 1..150
|
cusip
string, optional
|
Fund's CUSIP; "NA" for models
Size range: 1..14
|
closeDate
date, optional
|
The date at wich the investment vehicle became closed to the plan
Format: YYYY-MM-DD
|
Most transactions involve spawning several batch jobs within our system of record. In transactional responses, LT returns the status of each of those spawned batch jobs. You can find the status of each batch job in the response's jobQResponses object as described below.
Field | Description |
---|---|
groupName
string
|
NOTE: names are subject to change. Name of the task group to which this job belongs |
jobId
integer
|
The Id of the job that was created in LT's system of record (e.g. 3488736) |
jobStatusCode
string
|
The current status of the job:
successful successful_with_warnings cancelled errors on_hold in_progress - the spawned batch job hasn't completed yet pending - typically happens within a task group where the job is waiting for its dependancy(s) to finish released_to_be_run - most likely the job agent is not running or busy Allowed values: see above
|
queueDateTime
timestamp
|
The datetime at which the job was queued (e.g. 2018-03-23T18:18:40) |
jobStartDateTime
timestamp
|
The datetime at which the job started |
jobEndDateTime
timestamp
|
The datetime at which the job completed |
requestId
integer
|
The Id returned by system of record upon adding the job to the queue (e.g. 3713537) |
taskGroupId
integer
|
The positive or negative Id of the task group from which the job was created (e.g. -13, 1919, etc.) |
taskId
integer
|
The Id of the specific task (e.g. 29) |
taskName
string
|
NOTE: names are subject to change. Name of the task that was performed by this job (e.g. "Post Transfers") |
transactionIds
integer[]
|
Array of associated transactions ids
Size range: 0..
|
output
string[], optional
|
HTML encoded errors from the system of record. To view, copy and paste each element to an HTML file, and open that file in a browser. |
{
"jobQResponses": [
{
"jobId": "3488736",
"requestId": "3713537",
"taskGroupId": "-13",
"taskId": "34",
"jobStatusCode": "successful",
"queueDateTime": "2018-03-23T18:18:40",
"jobStartDateTime": "2018-03-23T18:18:41",
"jobEndDateTime": "2018-03-23T18:18:42",
"groupName": "Create allocations",
"taskName": "Update Allocation Percents",
"transactionIds": [123]
},
{
"jobId": "3488737",
"requestId": "3713538",
"taskGroupId": "1919",
"taskId": "29",
"jobStatusCode": "successful",
"queueDateTime": "2018-03-23T18:18:49",
"jobStartDateTime": "2018-03-23T18:18:49",
"jobEndDateTime": "2018-03-23T18:18:49",
"groupName": "AutoInvestElect",
"taskName": "Create transactions",
"transactionIds": [456,789]
},
{
"jobId": "3488737",
"requestId": "3713538",
"taskGroupId": "1919",
"taskId": "17",
"jobStatusCode": "successful",
"queueDateTime": "2018-03-23T18:18:49",
"jobStartDateTime": "2018-03-23T18:18:50",
"jobEndDateTime": "2018-03-23T18:18:51",
"groupName": "AutoInvestElect",
"taskName": "Post Transfers",
"transactionIds": []
}
]
}
LT uses conventional HTTP response codes to indicate the success or failure of an API request. In general: Codes in the 2xx range indicate success. Codes in the 4xx range indicate an error that failed given the information provided (e.g., a required parameter was omitted, invalid value, etc.). Codes in the 5xx range indicate an error with LT's system processing.
Important: Different error types can be added and removed over time so you should make sure your application accepts new ones as well.
Field | Description |
---|---|
code
integer
|
HTTP status code |
message
string
|
Error message. Typcially, the corresponding HTTP message (e.g. "OK", "Internal Server Error", etc.) |
name
string
|
Name of error. Defaults to APIError. (see below) |
error
string
|
Descriptive error message (e.g. "One or more records contained errors") |
requestId
string, optional
|
Used as an internal reference |
details
string[], optional
|
Typically used to list erroneous, input records. Not applicable to all errors. |
jobQResponses
object[], optional
|
Array of JobQResponse Objects. Not applicable to all errors. |
stack
string, optional
|
Stack trace |
Name | Description |
---|---|
DuplicateSsnDataMismatch
|
For a given SSN, each record must have the same indicative values (e.g. For a given SSN, each record must have the same email address) |
InactivePlan
|
The plan is inactive and cannot be processed |
InvalidCheckDateExpected
|
The checkDateExpected does not match the value in the system of record |
InvalidDayOfTheWeek
|
While validating the checkDateExpected, an invalid day of the week was returned |
InvalidDivisionId
|
The division is not valid for the specified plan |
InvalidPayScheduleName
|
The specified plan does not have a valid off-cycle pay schedule name |
YearsSubmittedDoNotMatch
|
The checkDateActual and checkDateExpected are not within the same calender year |
JobFailed
|
A job(s) failed within the system of record. See the JobQResponse Object |
InvalidData
|
Unspecified validation error |
APIError
|
Unspecified error |
{
"code": 500,
"message": "Internal Server Error",
"name": "APIError",
"error": "Failed executing database command",
"requestId": "acc95307-09d2-4052-bc3a-ba5666fee519",
"stack": "APIError: Internal Server Error\n at..."
}
{
"code": 400,
"message": "Bad Request",
"name": "InvalidData",
"error": "One or more records contained errors. Please check the details below, correct any errors, and resubmit.",
"requestId": "15b816f4-0964-4578-9f0a-05d01814cfeb",
"details": [
"For field<dateOfBirth> for SSN<123456789>, the provided value<1984-06-05> did not match the known value<1984-06-06>",
"For field<xyz> for SSN<123456789>,...",
...
],
"stack": "..."
}
{
"code": 500,
"message": "Internal Server Error",
"name": "JobFailed",
"error": "The system of record failed to process the job(s).",
"requestId": "cc44a773-87ed-4d3b-9bfe-227011228d7f",
"jobQResponse": [
{
"requestId": "3713735",
...
"jobStatusCode": "successful",
...
},
{
"requestId": "3713736",
...
"jobStatusCode": "successful",
...
},
{
"jobId": "3488737",
"requestId": "3713538",
"taskGroupId": "1919",
"taskId": "17",
"jobStatusCode": "errors",
"queueDateTime": "2018-03-23T18:18:49",
"jobStartDateTime": "2018-03-23T18:18:50",
"jobEndDateTime": "2018-03-23T18:18:51",
"groupName": "AutoInvestElect",
"taskName": "Post Transfers",
"output": ["<meta http-equiv=...","<meta http-equiv=..."]
}
],
"stack": "..."
}
Field | Description |
---|---|
allocationPercent
float
|
IMPORTANT: allocations for a given ssn must total 100. Allocation can have a precision of 2 (e.g. 50.25). Watch out for allocations like 33.3333, which could be problematic for two reasons: 1) repeating decimal beyond 2 decimals and 2) needs to total like this 33.33, 33.33, and 33.34.
Size range: 0-100
|
investmentProductId
string
|
See Common Fields |
investmentProductType
char
|
See Common Fields |
Get the entire list of allocations associated with the specified plan. Note the response is three-tiered: 1) employees, 2) sources, 3) allocations.
Field | Description |
---|---|
planId
url param
string
|
See Common Fields |
Field | Description |
---|---|
employees
object[]
|
Array of Employee-source-allocation Objects
Size range: 0..
|
Field | Description |
---|---|
ssn string |
See Common Fields |
sources
object[] |
Array of Source-allocation objects (see below)
Size range: 0..
|
Field | Description |
---|---|
sourceId integer |
See Source Object |
typeCode char |
See Source Object |
typeDescription
string |
See Source Object |
allocations
object[] |
Array of Allocation objects (see above)
Size range: 0..
|
curl https://rc.ltretire.com/v1/plans/WXYZ/allocations \
-X GET \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer xxx.xxx.xxx'
{
"employees": [
{
"ssn": "000000012",
"sources": [
{
"sourceId": "1",
"typeCode": "B",
"typeDescription": "Employer Disc2",
"allocations": [
{
"allocationPercent": "60.00",
"investmentProductID": "1699",
"investmentProductType": "M"
},
{
"allocationPercent": "40.00",
"investmentProductID": "ACRNX",
"investmentProductType": "F"
}
] // end allocations array
} // end source obj
] // end sources array
} // end employee obj
] // end employees array
} // end response
Modify plan allocations for some or all employees. Six concurrent request limit. Allocations are not allowed between 1:30 - 4:30 PM MST in order to support our trading process
Field | Description |
---|---|
planId string |
Plan's unique Id
Size range: 1..12 |
conformEndingBalanceCode char |
Flag indicating whether to conform ending balance - Y = Yes; N = No |
employees
object[] |
Array of Employee objects (see below)
Size range: 1..
|
Field | Description |
---|---|
ssn string |
See Common Fields
Validation: must be a valid SSN associated to the specified plan
|
allocations
object[] |
Array of Allocation objects (see above)
Size range: 1..
|
Field | Description |
---|---|
jobQResponses
object[]
|
Array of JobQResponse Objects. If conformEndingBalanceCode is 'N', the array
will contain 1 element. Otherwise, it will contain 3 elements. NOTE: If conformEndingBalanceCode is 'Y' and if any participants have pending/unsettled trades, the "Post Transfers" task (taskId 17) will return "errors" for the "jobStatus". Note that LT's TEST environment does NOT settle trades; therefore, for a given participant, the initial conform-ending-balance allocation call will succeed, but subsequent calls will fail. Size range: 1-3
|
curl https://rc.ltretire.com/v1/plans/PLAN101/allocations \
-X PATCH \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer xxx.xxx.xxx' \
-d '{
"conformEndingBalanceCode": "N",
"employees": [
{
"ssn": "123456789",
"allocations": [
{
"allocationPercent": "60.00",
"investmentProductID": "1699",
"investmentProductType": "M"
},
{
"allocationPercent": "40.00",
"investmentProductID": "1700",
"investmentProductType": "M"
}
]
},
{
"ssn": "333224444",
"allocations": [
{
"allocationPercent": "100.00",
"investmentProductID": "1699",
"investmentProductType": "M"
}
]
}
]
}'
{
"jobQResponses": [
{
"jobId": "3488736",
"requestId": "3713537",
"taskGroupId": "-13",
"taskId": "34",
"jobStatusCode": "successful",
"queueDateTime": "2018-03-23T18:18:40",
"jobStartDateTime": "2018-03-23T18:18:41",
"jobEndDateTime": "2018-03-23T18:18:42",
"groupName": "Create allocations",
"taskName": "Update Allocation Percents"
},
{
"jobId": "3488737",
"requestId": "3713538",
"taskGroupId": "1919",
"taskId": "29",
"jobStatusCode": "successful",
"queueDateTime": "2018-03-23T18:18:49",
"jobStartDateTime": "2018-03-23T18:18:49",
"jobEndDateTime": "2018-03-23T18:18:49",
"groupName": "AutoInvestElect",
"taskName": "Create transactions"
},
{
"jobId": "3488737",
"requestId": "3713538",
"taskGroupId": "1919",
"taskId": "17",
"jobStatusCode": "successful",
"queueDateTime": "2018-03-23T18:18:49",
"jobStartDateTime": "2018-03-23T18:18:50",
"jobEndDateTime": "2018-03-23T18:18:51",
"groupName": "AutoInvestElect",
"taskName": "Post Transfers"
}
]
}
{
"code": 400,
"message": "Bad Request",
"name": "JobFailed",
"error": "Job was unsuccessful and has a status code of errors. Job Aborted.",
"requestId": "c7c9b7c1-f07b-419f-b198-68375578c042",
"jobQResponses": [
{
"jobId": "5590669",
"requestId": "5840353",
"taskGroupId": "-13",
"taskId": "34",
"jobStatusCode": "successful",
"queueDateTime": "2021-05-04T20:40:09.000Z",
"jobStartDateTime": "2021-05-04T20:40:18.000Z",
"jobEndDateTime": "2021-05-04T20:40:18.000Z",
"groupName": "Create allocations",
"taskName": "Update Allocation Percents",
"transactionIds": []
},
{
"jobId": "5590670",
"requestId": "5840354",
"taskGroupId": "1919",
"taskId": "29",
"jobStatusCode": "successful",
"queueDateTime": "2021-05-04T20:40:23.000Z",
"jobStartDateTime": "2021-05-04T20:40:24.000Z",
"jobEndDateTime": "2021-05-04T20:40:25.000Z",
"groupName": "AutoInvestElect",
"taskName": "Create transactions",
"transactionIds": []
},
{
"jobId": "5590670",
"requestId": "5840354",
"taskGroupId": "1919",
"taskId": "17",
"jobStatusCode": "errors",
"queueDateTime": "2021-05-04T20:40:23.000Z",
"jobStartDateTime": "2021-05-04T20:40:25.000Z",
"jobEndDateTime": "2021-05-04T20:40:36.000Z",
"groupName": "AutoInvestElect",
"taskName": "Post Transfers",
"transactionIds": [
1043
],
"output": [
"{HTML DETAILS LISTED HERE}"
]
}
]
}
Field | Description |
---|---|
allocationAmount
float |
The amount of this gain/loss
Max two decimal points
|
effectiveDate
date |
Date this transaction is effective
Format: YYYY-MM-DD
|
gainMethod
char |
Currently the only valid value is "D" for Dollars. Future enhancements might enable "U" for Units.
Allowed values: D
|
investmentProductID
string |
Unique Id for the investment product/security
Size range: 1..9
|
investmentProductType
char |
Type of investment product/security; fund or model
Allowed values: F, M
|
ssn
string |
See Common Fields |
Post a gain/loss transaction. Typically used by partners to submit late payroll interest, which they have calculated. Typical usage: A partner calculates lost earnings via the DOL lost earnings calculator. Then that partner posts those lost earning via this endpoint.
Field | Description |
---|---|
planId url param,string |
Plan's unique Id
Size range: 1..12 |
divisionId string, optional |
Plan's unique division Id
Size range: 6 |
responsibleParty string |
The party responsible for the gain/loss; client or partner.
Allowed values: C, P |
gainLossRecords object[] |
Array of gainLoss objects (see above)
Size range: 1.. |
Field | Description |
---|---|
jobQResponses
object[]
|
Array of JobQResponse Objects |
Field | Description |
---|---|
requestId
integer
|
relius system request Id |
planId
string
|
plan's unique Id |
yearEndDate
datetime
|
year end date of the plan |
transId
integer
|
relius transaction Id |
ssnum
string
|
See Common Fields |
transactionStatus
string
|
the status of the request. P = Posted, I = Incomplete |
fund
string
|
fund of the gainloss allocation |
amount
float
|
the amount for gain/loss |
curl https://rc.ltretire.com/v1/plans/PLAN101/gainloss \
-X POST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer xxx.xxx.xxx'
-d '{
"divisionId": "1234",
"responsibleParty": "C",
"gainLossRecords": [
{
"allocationAmount": "1.3000",
"effectiveDate": "2020-05-04",
"gainMethod": "D",
"investmentProductID": "XXXX",
"investmentProductType": "F",
"ssn": "012345678"
},
{
"allocationAmount": "5.0000",
"effectiveDate": "2020-05-04",
"gainMethod": "D",
"investmentProductID": "0000",
"investmentProductType": "M"
},
{
"allocationAmount": "1.3000",
"effectiveDate": "2020-05-04",
"gainMethod": "D",
"investmentProductID": "XXXX",
"investmentProductType": "F",
"ssn": "012345679"
}
]
}'
{
"jobQResponses": [
{
"jobId": "4934037",
"requestId": "5174121",
"taskGroupId": "2665",
"taskId": "29",
"jobStatusCode": "successful",
"queueDateTime": "2020-06-09T10:48:50",
"jobStartDateTime": "2020-06-09T10:48:55",
"jobEndDateTime": "2020-06-09T10:48:55",
"groupName": "GainLossImportTransaction XML",
"taskName": "Create transactions",
"transactionIds": []
},
{
"jobId": "4934037",
"requestId": "5174121",
"taskGroupId": "2665",
"taskId": "21",
"jobStatusCode": "successful_with_warnings",
"queueDateTime": "2020-06-09T10:48:50",
"jobStartDateTime": "2020-06-09T10:48:55",
"jobEndDateTime": "2020-06-09T10:48:59",
"groupName": "GainLossImportTransaction XML",
"taskName": "Post Gain/Loss",
"transactionIds": [
899,
900,
901
],
"output": [
]
}
],
"transactionStatus": [
{
"requestId": "5174121",
"planId": "PLAN101",
"yearEndDate": "2020-12-31T06:00:00.000Z",
"transId": 899,
"ssnum": "012345678",
"transactionStatus": "I",
"fund": "XXXX",
"amount": 1.3
},
{
"requestId": "5174121",
"planId": "PLAN101",
"yearEndDate": "2020-12-31T06:00:00.000Z",
"transId": 900,
"ssnum": null,
"transactionStatus": "P",
"fund": null,
"amount": 5
},
{
"requestId": "5174121",
"planId": "PLAN101",
"yearEndDate": "2020-12-31T06:00:00.000Z",
"transId": 901,
"ssnum": "012345679",
"transactionStatus": "I",
"fund": "XXXX",
"amount": 1.3
}
]
}
Get the list of open payroll slots associated with the specified plan
Field | Description |
---|---|
planId
url param
string
|
See Common Fields |
Field | Description |
---|---|
payschedules
object[]
|
Array of Payschedule Objects
Size range: 0..
|
Field | Description |
---|---|
ein
string
|
See Common Fields. The system of record associates payrolls to employers not plans |
payFrequencyCode
string
|
See Common Fields |
payFrequencySequenceNumber
char
|
See Common Fields |
payScheduleName
string
|
Name of the payschedule |
payPeriods
object[]
|
Array of Pay Period Objects
Size range: 0..
|
Field | Description |
---|---|
payPeriodBeginDate
date
|
Begin date for the pay period |
checkDateExpected
date
|
See Common Fields |
isValid
boolean, optional
|
Is the specified date valid for this pay period? |
curl https://rc.ltretire.com/v1/plans/WXYZ/payschedules \
-X GET \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer xxx.xxx.xxx'
[
{
"ein": "000000009",
"payFrequencyCode": "S",
"payFrequencySequenceNumber": 0,
"payScheduleName": "PA_S_DOOR01",
"payPeriods": [
{
"payPeriodBeginDate": "2019-01-16",
"checkDateExpected": "2019-01-31"
}, ...
}, ...
]
Validate that the specified date is a valid checkDateExpected for an off-cycle payroll.
Field | Description |
---|---|
planId
url param
string
|
See Common Fields |
date
date
query str param
|
The checkDateExpected date to validate |
Field | Description |
---|---|
payschedules
object[]
|
Array of Payschedule Objects
Size range: 0..
|
curl https://rc.ltretire.com/v1/plans/WXYZ/payschedules/offcycles?date={YYYY-MM-DD} \
-X GET \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer xxx.xxx.xxx'
[
{
"ein": "000000009",
"payFrequencyCode": "C",
"payFrequencySequenceNumber": 1,
"payScheduleName": "PA_CYE",
"payPeriods": [
{
"payPeriodBeginDate": "2019-01-18",
"checkDateExpected": "2019-01-18",
"isValid": false
}
]
},
{
"ein": "000000009",
"payFrequencyCode": "O",
"payFrequencySequenceNumber": 2,
"payScheduleName": "PayrollAuto_OffCycle",
"payPeriods": [
{
"payPeriodBeginDate": "2019-01-18",
"checkDateExpected": "2019-01-18",
"isValid": true
}
]
}
]
Process a payroll. Twelve concurrent request limit.
Field | Description |
---|---|
planId string |
Plan's unique Id
Size range: 1..12
Validation: See InactivePlan in Error Types
|
checkDateActual
date
|
The date this payroll was processed.
Size range: 10
Format: "YYYY-MM-DD"
Validation: Must be within 60 days from current system date. If payFrequencyCode is for off-cycle, date will be validated against system of record. Otherwise, date must not have been previously used. Must be within 7 days of checkDateExpected. See also YearsSubmittedDoNotMatch in Error Types
|
checkDateExpected
date, optional
|
See Common Fields |
count
integer, optional
|
Used to calculate pay date during the submission of an off-cycle or correction. For example, if a client submits a correction on 2020-01-31 with a file count of 1, the API will create a payday for 2020-01-31. If in a subsequent request, the client submits a correction for 2020-01-31 with a file count of 1 it will fail because the payday is already used, but if they submit the same file with a file count of 2 the API will create a payday of 2020-01-30 and use that. The client can submit for the same date 5 times before it will fail.
Size range: 1-5
|
divisionId
string, optional
|
Must be a valid Division Id for the given plan. The API only supports one submission per division per pay period. An ACH bank account must be on record for the specified division.
Size range: 0..6
Validation: See InvalidDivisionId in Error Types
|
payFrequencyCode
string
|
See Common Fields |
responsibleParty
string, required if payFrequencyCode = 'C'
|
LTTrust - LT will calculate market value adjustments/NAV gain/loss; Net proceeds will be covered by LT if appropriate
Sponsor - LT will calculate market value adjustments/NAV gain/loss; Net proceeds will be drawn from Sponsor's account
Partner - LT will calculate market value adjustments/NAV gain/loss; Net proceeds will be drawn from Partner's account
NoGL - LT will NOT calculate any market value adjustments/NAV gain/loss
Allowed Values: see above
|
payrollRecords
object[]
|
An array of payroll records (see below)
Size range: 1..
|
Field | Category | Description |
---|---|---|
ssn
string
|
Indicative | See Common Fields |
lastName
string, optional
|
Indicative | Employee's last name
Size range: 1..20
Validation*
|
firstName
string, optional
|
Indicative | Employee's first name
Size range: 1..20
Validation*
|
gender
string, optional
|
Indicative | Employee's gender (case insensitive)
Size range: 1,4,6
Allowed values: m, f, male, female
Validation*
|
dateOfBirth
date
|
Indicative | Employee's date of birth
Size range: 10
Format: "YYYY-MM-DD"
Validation*: Must match the value in system of record. Must not equal dateOfHire.
|
dateOfHire
date
|
Indicative | Employee's hire date. If all of the following conditions are true, the system will use the provided dateOfHire to update the dateOfRehire field instead of the dateOfHire field.
Size range: 10
Format: "YYYY-MM-DD"
Validation*
|
dateOfRehire
date, optional
|
Indicative | Employee's date of rehire
Size range: 10
Format: "YYYY-MM-DD"
Validation*: If value provided, dateOfTermination must also be provided if it's not already on record (in other words, can't have a rehire date if employee was never terminated in the 1st place)
|
dateOfTermination
date, optional
|
Indicative | Employee's date of termination
Size range: 10
Format: "YYYY-MM-DD"
Validation*
|
addressLine1
string, optional
|
Indicative | Employee's address line 1
Size range: 1..30
Validation*
|
addressLine2
string, optional
|
Indicative | Employee's address line 2
Size range: 1..30
Validation*
|
city
string, optional
|
Indicative | Employee's city
Size range: 1..30
Validation*
|
state
string, optional
|
Indicative | Employee's two-character state code
Size range: 2
Validation*
|
zip
string, optional
|
Indicative | Employee's zip code
Size range: 5
Format: "NNNNN"
Validation*
|
maritalStatus
string, optional
|
Indicative | Employee's marital status.
Allowed values: married, single, divorced, widowed, head of household, other, m, s, d, w, h, o
Validation*
|
email
string, optional
|
Indicative | Employee's email address
Size range: ..100
Validation*
|
electronicStatement
char, optional
|
Indicative | Employee's electronic statement flag
Allowed values: Y, N
Validation*
|
eePreTax
float, optional
|
Source Amount | Employee pre-tax contribution
Validation**
|
eeRoth
float, optional
|
Source Amount | Employee Roth contribution
Validation**
|
erMatch
float, optional
|
Source Amount | Employer match
Validation**
|
shMatch
float, optional
|
Source Amount | Safe harbor match. May be QACA or non-QACA
Validation**
|
profitSharing
float, optional
|
Source Amount | Profit sharing
Validation**
|
shNonelective
float, optional
|
Source Amount | Safe Harbor Non-elective. May be QACA or non-QACA
Validation**
|
loanPayment
float, optional
|
Source Amount | Employee's loan payment amount
Validation**
|
currPeriodComp
float, optional
|
Current Period | See Common Fields |
currPeriodHours
float, optional
|
Current Period | Employee's hours for the current pay period. Must be positive. Can be zero. Can have a precision of up to two decimal places. |
*See DuplicateSsnDataMismatch in Error Types
**Validation rules for Correction Payrolls:
Every person in the file must have a financial change (passing ONLY salary/hours will not work). If only some people have a financial change and others do not the, file will reject
Financial fields include: eePreTax, eeRoth, erMatch, shMatch, profitSharing, shNonelective and loanPayment
Participant must be eligible. If ineligible, please contact your Relationship Manager to bypass the rule on an ad-hoc basis
***Validation rules for source amounts:
Can be positive or negative (except loanPayment, which must be positive). Negative amounts can be related to adjustments
For a negative contribution, sources for available funds cannot have pending trades
Participant must be eligible
Source must be allowed to accept contributions
Can have a precision of up to two decimal places
Must be zero or null/not-provided if not a valid source for the plan
Account balance must be greater than total negative contributions (e.g. If deferral = 100, roth = -50, and shne = -100, account balance must be greater than 150)
If amount is not zero:
Participant must be eligible to contribute
Deferral Status must not be suspended (e.g. participant took a hardship). Before submitting a payroll, one should check the Deferral Suspension Dates using the Participants endpoint. checkDateExpected should not be between a participant’s start & end suspension dates.
Field | Description |
---|---|
jobQResponses
object[]
|
Array of JobQResponse Objects
Size range: 4
|
curl https://rc.ltretire.com/v1/plans/WXYZ/payroll \
-X POST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer xxx.xxx.xxx' \
-d '{
"checkDateActual": "2018-04-01",
"checkDateExpected": "2018-04-01",
"count": 1,
"divisionId": "DIV",
"payFrequencyCode": "B",
"payrollRecords": [
{
"ssn": "123456789",
"lastName": "Smith",
"firstName": "John",
"gender": "M",
"maritalStatus": "S",
"addressLine1": "123 Main Street",
"addressLine2": "Apt. 123",
"city": "Anywhere",
"state": "Any State",
"zip": "12345",
"dateOfBirth": "1970-02-01",
"dateOfHire": "1998-01-01",
"dateOfRehire": "2015-01-01",
"dateOfTermination": "2016-12-12",
"electronicStatement": "Y",
"email": "me@myemail.com",
"eePreTax": "213.02",
"profitSharing": "1002.33",
"erMatch": "22.56",
"eeRoth": "123.00",
"shMatch": "33.44",
"shNonelective": "223.33",
"loanPayment": "23.32",
"currPeriodComp": "55555.00",
"currPeriodHours": "40"
},
{
...
}
]
}
}'
[
{
"jobId": "3710264",
"requestId": "3937340",
"taskGroupId": "1490",
"taskId": "4",
"jobStatusCode": "successful_with_warnings",
"queueDateTime": "2018-05-10T11:12:26",
"jobStartDateTime": "2018-05-10T11:12:30",
"jobEndDateTime": "2018-05-10T11:12:34",
"groupName": "PayrollAuto-Payrol Import w/posting",
"taskName": "Import census payroll data via DER"
},
{
"jobId": "3710264",
"requestId": "3937340",
"taskGroupId": "1490",
"taskId": "12",
"jobStatusCode": "successful",
"queueDateTime": "2018-05-10T11:12:26",
"jobStartDateTime": "2018-05-10T11:12:34",
"jobEndDateTime": "2018-05-10T11:12:38",
"groupName": "PayrollAuto-Payrol Import w/posting",
"taskName": "Post Eligibility transaction - All employees"
},
{
"jobId": "3710264",
"requestId": "3937340",
"taskGroupId": "1490",
"taskId": "14",
"jobStatusCode": "successful_with_warnings",
"queueDateTime": "2018-05-10T11:12:26",
"jobStartDateTime": "2018-05-10T11:12:38",
"jobEndDateTime": "2018-05-10T11:12:45",
"groupName": "PayrollAuto-Payrol Import w/posting",
"taskName": "Post Contributions"
},
{
"jobId": "3710264",
"requestId": "3937340",
"taskGroupId": "1490",
"taskId": "19",
"jobStatusCode": "successful",
"queueDateTime": "2018-05-10T11:12:26",
"jobStartDateTime": "2018-05-10T11:12:45",
"jobEndDateTime": "2018-05-10T11:12:46",
"groupName": "PayrollAuto-Payrol Import w/posting",
"taskName": "Post Loan Payments"
}
]
Field | Description |
---|---|
allocationAmount
float
|
The fee amount to post.
Validation: must be a negative number with two decimal points
|
endDate
date |
The end of quarter date.
Size range: 10
Format: YYYY-MM-DD
|
feeIsPerParticipantCode
string |
This will label the fee transaction based on ssn or plan.
Y - fee is based on individual ssn N - fee is based on plan
|
feeLabelStatutoryCategoryCode
string |
The category where the fee will be distributed under.
Validation: must be a fee label associated with plan.
|
gloabalFeeScheduleID
string |
The fee schedule that the amount will post under.
Validation: must be a valid combination of globalFeeScheduleID and subTypeCode.
|
startDate
date |
The start of quarter date
Size range: 10
Format: YYYY-MM-DD
|
subTypeCode
string |
Type code should align with fee schedule
Validation: must be a valid combination of globalFeeScheduleID and subTypeCode.
|
yearEndDate
date |
Plan's year-end-date (e.g. 2018-12-31)
Size range: 10
Format: YYYY-MM-DD.
|
ssn
string, optional |
See Common Fields |
Post fee transactions to the specified plan. Four concurrent request limit.
Field | Description |
---|---|
planId string |
Plan's unique Id
Size range: 1..12 |
fees
object[] |
Array of fee objects (see above)
Size range: 1..
|
Field | Description |
---|---|
jobQResponses
object[]
|
Array of JobQResponse Objects.
Size range: 2
|
*Validation rules for Posting Fees
If the plan has a pending transfer buy trade, the transaction will fail.
If the plan has pending sell order, the transaction will fail
Calls are not accepted between 11:00 AM and 4:00 PM MST.
Calls are only accepted between the 4th and 12th business day after quarter end
curl https://rc.ltretire.com/v1/plans/PLAN101/fees \
-X POST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer xxx.xxx.xxx' \
-d '[
{
"allocationAmount": "-1709.4000",
"endDate": "2019-12-31",
"feeIsPerParticipantCode": "N",
"feeLabelStatutoryCategoryCode": "NamedFiduc",
"globalFeeScheduleID": "{gblFeeId}",
"startDate": "2019-10-01",
"subTypeCode": "As",
"yearEndDate": "2020-12-31"
},
{
"allocationAmount": "-188.7900",
"endDate": "2019-12-31",
"feeIsPerParticipantCode": "Y",
"feeLabelStatutoryCategoryCode": "NamedFiduc",
"globalFeeScheduleID": "{gblFeeId}",
"ssn": "xxxxxxxxx",
"startDate": "2019-10-01",
"subTypeCode": "As",
"yearEndDate": "2020-12-31"
}
]'
{
"jobQResponses": [
{
"jobId": "4687392",
"requestId": "4924249",
"taskGroupId": "2861",
"taskId": "29",
"jobStatusCode": "successful",
"queueDateTime": "2020-02-26T08:42:38",
"jobStartDateTime": "2020-02-26T08:45:08",
"jobEndDateTime": "2020-02-26T08:45:09",
"groupName": "API-Fees",
"taskName": "Create transactions",
"transactionIds": []
},
{
"jobId": "4687392",
"requestId": "4924249",
"taskGroupId": "2861",
"taskId": "20",
"jobStatusCode": "successful",
"queueDateTime": "2020-02-26T08:42:38",
"jobStartDateTime": "2020-02-26T08:45:09",
"jobEndDateTime": "2020-02-26T08:45:32",
"groupName": "API-Fees",
"taskName": "Post Fees",
"transactionIds": [
2494,
2495
]
}
]
}
Field | Description |
---|---|
partnerCode
string |
The company abbreviated code.
Size Range: 2-3
|
employerIdentificationNumber
string |
See Common Fields: ein |
templatePlanId
string |
The template the new plan will be modeled after. |
planTypeCode
string
|
The plan type codes:
4 - 401(k) 3 - 403(b) 7 - 403(b)(7) 5 - 457 C - 501(c)(3) D - Defined Contribution E - ESOP I - IRA K - Keogh M - Money Purchase Q - Non-Qualified O - ORP X - Other P - Profit Sharing R - SARSEP S - SEP Z - SIMPLE T - Target Benefit B - Defined Benefit F - Cafeteria A - Cash Balance Allowed values: see above
|
sponsorEmail
string |
The main sponsors email address.
Validation: must include valid email address with '@' symbol
|
companyName
string |
The company's main legal name.
Size Range: 50
|
phoneNumber
string |
The phone number of the sponsor.
Size range: 12
Format: 123-456-7890
|
street1Address
string |
The street address where the company is located.
Size range: 30
|
street2Address
string, optional |
The apt, suite or room number the company is located.
Size range: 30
|
cityAddress
string |
The city where the company is located.
Size range: 30
|
stateAddress
string |
The state where the company is located.
Size range: 2
Validation: character state abbreviation
|
zipAddress
date |
The zip code where the company is located.
Size range: 5
Format: XXXXX.
|
fiscalYearEndDate
date |
The Plan's fiscal year-end date.
Size range: 10
Format: YYYY-MM-DD.
|
incorporationDate
date |
The plan's date of incorporation.
Size range: 10
Format: YYYY-MM-DD.
|
actualPayFrequencyCode
string |
The actual frequency in which loan repayments are made. See Common Fields: payFrequencyCode |
businessEntityTypeCode
string |
See Common Fields |
yearEndDate
date |
Plan's year-end date (e.g. 2018-12-31)
Size range: 10
Format: YYYY-MM-DD.
|
planName
string |
The plan's official name.
Size range: 60
|
isConversionPlan
string |
If a conversion or takeover plan, show 'Y'.
if a new plan, show 'N'.
Allowed values: Y,N
|
achBankName
string |
Plan's payroll bank name.
Size range: 50
|
achAccountNumber
string |
The payroll bank account number.
Size range: 30
|
achRoutingNumber
string |
The payroll bank account routing number.
Size range: 9
|
planContactFirstName
string |
The sponsor's first name.
Size range: 20
|
planContactLastName
string |
The sponsor's last name.
Size range: 20
|
planContactPhoneNumber
string |
The phone number of the sponsor.
Size range: 12
Format: 123-456-7890
|
planContactEmail
string |
The main sponsors email address.
Validation: must include valid email address with '@' symbol
|
planContactStreet1Address
string, optional |
The plan contact's street address.
Size range: 30
|
planContactStreet2Address
string, optional |
The plan contact's secondary street address.
Size range: 30
|
planContactCityAddress
string, optional |
The plan contact's city address.
Size range: 30
|
planContactStateAddress
string, optional |
The plan contact's state location.
Size range: 2
|
planContactZipAddress
string, optional |
The plan contact's zip address.
Size range: 5
Format: XXXXX
|
payrollSchedule
object[], optional |
Array of payrollSchedule objects (see below)
Size range: 1..
|
division
object[], optional |
Array of division objects (see below)
Size range: 1..
|
Post onboarding requests for each employer. Two concurrent request limit.
Field | Description |
---|---|
onboarding object[] |
Array of onboarding objects (see above)
Size range: 1..
|
Field | Description |
---|---|
payFrequencyCode string |
See Common Fields |
firstPayPeriodBeginDate
date |
Plan's first pay period start date.
Size range: 10
Format: YYYY-MM-DD
|
firstPayPeriodEndDate
date |
Plan's first pay period end date.
Size range: 10
Format: YYYY-MM-DD
|
Field | Description |
---|---|
divisionId string |
The ID number for the plan division.
Size range: 6
|
divisionName string |
The plan division name.
Size range: 50
|
payrollDivision object[] |
Array of payroll schedule objects associated with the division. (see below)
Size range: 1..
|
achBankName string |
The name of the plan's divisional bank.
Size range: 50
|
achAccountNumber
string |
The bank account number for the divisional bank.
Size range: 30
|
achRoutingNumber
string |
The bank account routing number for the divisional bank.
Size range: 9
|
Field | Description |
---|---|
payFrequencyCode string |
See Common Fields |
firstPayPeriodBeginDate
date |
Plan's divisional first pay period start date.
Size range: 10
Format: YYYY-MM-DD
|
firstPayPeriodEndDate
date |
Plan's divisional first pay period end date.
Size range: 10
Format: YYYY-MM-DD
|
Field | Description |
---|---|
jobQResponses
object[]
|
Array of JobQResponse Objects.
Size range: 1
|
createPlanStatus
object[]
|
Array of createPlanStatus Objects.
Size range: 1..
|
curl https://rc.ltretire.com/v1/plans/onboarding \
-X POST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer xxx.xxx.xxx' \
-d '{
"onboarding": [
{
"recordType": "Employer",
"partnerCode": "partnername",
"employerIdentificationNumber": "xxxxxxxxx",
"templatePlanId": "TEMPPLANID",
"planTypeCode" : "4",
"sponsorEmail": "sbrodeur@brodeurcpa.com",
"companyName": "company1",
"phoneNumber": "123-456-7890",
"street1Address": "123 Main St",
"street2Address": "Suite 100",
"cityAddress": "Denver",
"stateAddress": "CO",
"zipAddress": "00000",
"fiscalYearEndDate": "2020-06-30",
"incorporationDate": "2000-01-01",
"actualPayFrequencyCode": "B",
"businessEntityTypeCode": "1",
"yearEndDate": "2020-12-31",
"planName": "name of plan goes here",
"isConversionPlan": "Y",
"achBankName": "Chase Bank",
"achAccountNumber": "0000000001",
"achRoutingNumber": "123456789",
"planContactFirstName": "John",
"planContactLastName": "Doe",
"planContactPhoneNumber": "123-456-7890",
"planContactEmail": "email@address.com",
"planContactTitle": "Vice President",
"planContactStreet1Address": "123 Main st",
"planContactStreet2Address": "Suite 100",
"planContactCityAddress": "Denver",
"planContactStateAddress": "CO",
"planContactZipAddress": "00000",
"esitmatedAnnualContribution": "100000",
"payrollProvider": "providerName",
"payrollSchedule": [
{
"payFrequencyCode": "B",
"firstPayPeriodBeginDate": "2020-03-13",
"firstPayPeriodEndDate":"2020-03-26"
}
],
"division": [
{
"divisionName": "newDiv",
"divisionId": "1",
"achBankName": "Chase",
"achAccountNumber":"0000000001",
"achRoutingNumber":"123456789",
"payrollDivision": [
{
"payFrequencyCode": "M",
"firstPayPeriodBeginDate": "2020-03-01",
"firstPayPeriodEndDate":"2020-03-31"
},
{
"payFrequencyCode": "B",
"firstPayPeriodBeginDate": "2020-03-13",
"firstPayPeriodEndDate":"2020-03-26"
}
]
},
{
"divisionName": "secondDiv",
"divisionId": "2",
"achBankName": "Chase",
"achAccountNumber":"0000000001",
"achRoutingNumber":"123456789",
"payrollDivision": [
{
"payFrequencyCode": "M",
"firstPayPeriodBeginDate": "2020-03-01",
"firstPayPeriodEndDate":"2020-03-31"
}
]
}
]
}
]
}'
[
{
"jobQResponses": [
{
"jobId": "4907716",
"requestId": "5144734",
"taskGroupId": "409",
"taskId": "1",
"jobStatusCode": "successful",
"queueDateTime": "2020-03-30T13:30:22",
"jobStartDateTime": "2020-03-30T13:30:23",
"jobEndDateTime": "2020-03-30T13:30:24",
"groupName": "Import ER (Fund)",
"taskName": "Import/Update employer or plan from web application via .xml schema",
"transactionIds": []
}
]
},
{
"createPlanStatus": "PlanID: XXXXX Added."
}
]
Field | Description |
---|---|
requestType
char |
Type of transfer request
B - in and out transfer
|
transferType
char |
The transfer source type.
A - All Sources
|
fromTypeCode
char, optional |
Dollar or percent to transfer out
D - Dollar P - Percent
|
toAmountTypeCode
char |
Dollar or percent to transfer in
D - Dollar P - Percent
|
ssn
string |
See Common Fields |
allocationAmount
integer, optional |
Flat dollar amount for transfer in only |
Post transfer requests for specific participants.
Field | Description |
---|---|
planId
url param
string
|
See Common Fields |
Field | Description |
---|---|
investmentProductId
string |
Unique Id for the investment product/security
Size range: 1..9
|
investmentProductType
char |
Type of investment product/security; fund or model
Allowed values: F, M
|
transferAmount
integer |
The amount of the transfer |
Field | Description |
---|---|
jobQResponses
object[]
|
Array of JobQResponse Objects.
Size range: 1
|
**Validation rules for Transfer Requests:
All Transfers
If there are pending trades associated with the planid, this process will reject
If fromTypeCode = P and toAmountTypeCode = D, process will reject
All transfer amounts must be >= 1% or $1
If Percent transaction: no fractional amounts are allowed
Allowed transfers between 12:00 am and 2:00 pm
curl https://rc.ltretire.com/v1/plans/PLAN101/transfers \
-X POST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer xxx.xxx.xxx' \
-d ' {
"requestType":"B",
"transferType":"A",
"fromTypeCode": "D",
"toAmountTypeCode": "D",
"ssn":"012345678",
"transferRecords": [{
"investmentProductType": "F",
"investmentProductId": "SCHG",
"transferAmount": "-1000.00"
}, {
"investmentProductType": "M",
"investmentProductId": "1647",
"transferAmount": "500.00"
}, {
"investmentProductType": "F",
"investmentProductId": "IJR",
"transferAmount": "500.00"
}]
}'
{
"jobQResponses": [
{
"jobId": "5933045",
"requestId": "6184182",
"taskGroupId": "3329",
"taskId": "29",
"jobStatusCode": "successful",
"queueDateTime": "2021-09-08T22:19:58.000Z",
"jobStartDateTime": "2021-09-08T22:20:00.000Z",
"jobEndDateTime": "2021-09-08T22:20:01.000Z",
"groupName": "AutoTransfers",
"taskName": "Create transactions",
"transactionIds": []
},
{
"jobId": "5933045",
"requestId": "6184182",
"taskGroupId": "3329",
"taskId": "17",
"jobStatusCode": "successful",
"queueDateTime": "2021-09-08T22:19:58.000Z",
"jobStartDateTime": "2021-09-08T22:20:01.000Z",
"jobEndDateTime": "2021-09-08T22:20:04.000Z",
"groupName": "AutoTransfers",
"taskName": "Post Transfers",
"transactionIds": [
1083
]
}
]
}
Field | Description |
---|---|
ssn
string |
See Common Fields |
deleteExistingRecords
string, optional |
This will specify which record to delete.
P - This will delete all existing records (primary and contingent)
C - Will delete only the contingent records
|
This endpoint can be used to update beneficiaries for a participant.
Field | Description |
---|---|
planId
url param
string
|
See Common Fields |
Field | Description |
---|---|
ssn
string |
Beneficiary's ssn
See Common Fields
|
name
string |
Beneficiary's name
Size range: 60
|
isSpouseCode
string |
Relationship between participant and beneficiary
Y - Spouse
N - Non Spouse
T - Trust
C - Child
|
typeCode
string |
Type of relationship
P - Primary
C - Contingent
|
dob
string |
Beneficiary's date of birth
Size range: 10
Format: "YYYY-MM-DD"
|
percent
number |
The percentage the beneficiary is due
Size range: 0..100
|
addressLine1
string, optional
|
Beneficiary's address line 1
Size range: 1..30
Validation*
|
addressLine2
string, optional
|
Beneficiary's address line 2
Size range: 1..30
|
city
string, optional
|
Beneficiary's city
Size range: 1..30
|
state
string, optional
|
Beneficiary's two-character state code
Size range: 2
|
zip
string, optional
|
Beneficiary's zip code
Size range: 5
Format: "NNNNN"
|
foreignStateAddress
string, optional
|
Beneficiary's foreign address
Size range: 1..30
|
country
string, optional
|
Beneficiary's country of residence
Size range: 1..30
|
Field | Description |
---|---|
beneficiaries
object[]
|
Array of Beneficiary Objects
Size range: 0..
|
Field | Description |
---|---|
planId
string |
See Common Fields |
participantSsn
string |
Beneficiary's ssn
See Common Fields
|
beneSsn
string |
Beneficiary's ssn
See Common Fields
|
name
string |
Beneficiary's name
Size range: 60
|
isSpouseCode
string |
Relationship between participant and beneficiary
Y - Spouse
N - Non Spouse
T - Trust
C - Child
|
typeCode
string |
Type of relationship
P - Primary
C - Contingent
|
dob
string |
Beneficiary's date of birth
Size range: 10
Format: "YYYY-MM-DD"
|
percent
number |
The percentage the beneficiary is due
Size range: 0..100
|
addressLine1
string, optional
|
Beneficiary's address line 1
Size range: 1..30
|
addressLine2
string, optional
|
Beneficiary's address line 2
Size range: 1..30
|
city
string, optional
|
Beneficiary's city
Size range: 1..30
|
state
string, optional
|
Beneficiary's two-character state code
Size range: 2
|
zip
string, optional
|
Beneficiary's zip code
Size range: 5
Format: "NNNNN"
|
foreignStateAddress
string, optional
|
Beneficiary's foreign address
Size range: 1..30
|
country
string, optional
|
Beneficiary's country of residence
Size range: 1..30
|
beneNumber
string, optional
|
Number of beneficiaries |
**Validation rules for Beneficiary Requests:
If no new records are posted and records are deleted the API will return a 204.
The ssn must belong to the specified plan
The beneficiary ssn cannot be the same as the participant ssn
The beneficiary ssn can only be listed once in either the primary or contingent set
Each set of data (primary and contingent) must add to 100%
In order to add a contingent, primary beneficiary must exist
curl https://rc.ltretire.com/v1/plans/PLAN101/beneficiaries \
-X POST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer xxx.xxx.xxx' \
-d ' {
"ssn":"000000012",
"beneficiaries": [
{
"name": "John Denver",
"ssn": "000000001",
"isSpouseCode": "Y",
"typeCode": "P",
"dob": "1960-01-01",
"percent" : 10.79,
"addressLine1" : "123 Main Street",
"addressLine2" : "Apt #302",
"city": "Roanoke",
"state": "VA",
"zip": "01234",
"foreignStateAddress": "foreign address",
"country": "United States of America"
},
{
"name": "Cyndi Lauper",
"ssn": "000000002",
"isSpouseCode": "C",
"typeCode": "C",
"dob": "1980-01-01",
"percent" : 89.21
}
],
"deleteExistingRecords" : "P"
}'
[
{
"planId": "WXYZ",
"participantSsn": "000000012",
"beneSsn": "000000001",
"name": "John Denver",
"isSpouseCode": "Y",
"typeCode": "P",
"dob": "1960-01-01",
"percent": 10.79,
"addressLine1": "123 Main Street",
"addressLine2": "Apt #302",
"city": "Roanoke",
"state": "VA",
"zip": "01234",
"foreignStateAddress": "Some foreign address",
"country": "United States of America",
"beneNumber": 1
},
{
"planId": "WXYZ",
"participantSsn": "000000012",
"beneSsn": "000000002",
"name": "Cyndi Lauper",
"isSpouseCode": "C",
"typeCode": "C",
"dob": "1980-01-01",
"percent": 89.21,
"beneNumber": 2
}
]
This is used to get a list of beneficiaries for the participant
Field | Description |
---|---|
planId
url param
string
|
See Common Fields |
Field | Description |
---|---|
beneficiaries
object[]
|
Array of Beneficiary Objects
Size range: 1..
|
Field | Description |
---|---|
planId
string |
See Common Fields |
participantSsn
string |
Beneficiary's ssn
See Common Fields
|
beneSsn
string |
Beneficiary's ssn
See Common Fields
|
name
string |
Beneficiary's name
Size range: 60
|
typeCode
string |
Type of relationship
P - Primary
C - Contingent
|
dob
string |
Beneficiary's date of birth
Size range: 10
Format: "YYYY-MM-DD"
|
percent
number |
The percentage the beneficiary is due
Size range: 0..100
|
addressLine1
string, optional
|
Beneficiary's address line 1
Size range: 1..30
Validation*
|
addressLine2
string, optional
|
Beneficiary's address line 2
Size range: 1..30
|
city
string, optional
|
Beneficiary's city
Size range: 1..30
|
state
string, optional
|
Beneficiary's two-character state code
Size range: 2
|
zip
string, optional
|
Beneficiary's zip code
Size range: 5
Format: "NNNNN"
|
foreignStateAddress
string, optional
|
Beneficiary's foreign address
Size range: 1..30
|
country
string, optional
|
Beneficiary's country of residence
Size range: 1..30
|
curl https://rc.ltretire.com/v1/plans/PLAN101/beneficiaries/012345678
-X GET \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer xxx.xxx.xxx' \
[
{
"planId": "WXYZ",
"participantSsn": "000000012",
"beneSsn": "000000001",
"name": "John Denver",
"typeCode": "P",
"dob": "1959-12-31",
"percent": 50,
"addressLine1": "123 Main Street",
"addressLine2": "Apt #302",
"city": "Roanoke",
"state": "VA",
"zip": "01234",
"foreignStateAddress": "Some foreign address",
"country": "United States of America"
},
{
"planId": "WXYZ",
"participantSsn": "000000012",
"beneSsn": "000000002",
"name": "Cyndi Lauper",
"typeCode": "P",
"dob": "1979-12-31",
"percent": 50,
"addressLine1": null,
"addressLine2": null,
"city": null,
"state": null,
"zip": null,
"foreignStateAddress": null,
"country": null
},
{
"planId": "WXYZ",
"participantSsn": "000000012",
"beneSsn": "000000011",
"name": "John Denver",
"typeCode": "C",
"dob": "1959-12-31",
"percent": 5,
"addressLine1": "123 Main Street",
"addressLine2": "Apt #302",
"city": "Roanoke",
"state": "VA",
"zip": "01234",
"foreignStateAddress": "Some foreign address",
"country": "United States of America"
},
{
"planId": "WXYZ",
"participantSsn": "000000012",
"beneSsn": "000000013",
"name": "Cyndi Lauper",
"typeCode": "C",
"dob": "1979-12-31",
"percent": 95,
"addressLine1": null,
"addressLine2": null,
"city": null,
"state": null,
"zip": null,
"foreignStateAddress": null,
"country": null
}
]
Field | Description |
---|---|
distributionName
string |
Type of distribution request
separation of service
hardship all sources
in service over 59.5
in service rollover
nra
|
traditionalAllocationAmountType
string, optional |
If this is passed in, the request is based on a Dollar amount for traditional funds. If not, it will be a percentage.
D - Dollar
|
rothAllocationAmountType
string, optional |
If this is passed in, the request is based on a Dollar amount for roth funds. If not, it will be a percentage.
D - Dollar
|
ssn
string |
See Common Fields |
distributionAllocationAmount
int, optional |
This is required for hardship and in service requests, otherwise it should not be passed in.
Must be a positive number
|
This endpoint is used to distribute funds based on a termination.
Field | Description |
---|---|
planId
url param
string
|
See Common Fields |
Field | Description |
---|---|
firstName
string |
First name of the recipient
Size range: 1..30
|
lastName
string |
Last name of the recipient
Size range: 1..30
|
addressLine1
string, optional
|
Recipient's address line 1
Size range: 1..30
Validation***
|
addressLine2
string, optional
|
Recipient's address line 2
Size range: 1..30
Validation***
|
city
string, optional
|
Recipient's city
Size range: 1..30
Validation***
|
state
string, optional
|
Recipient's two-character state code
Size range: 2
Validation***
|
zip
string, optional
|
Recipient's zip code
Size range: 5
Format: "NNNNN"
Validation***
|
country
string, optional
|
Recipient's country of residence
Size range: 1..30
|
allocationAmount
int
|
Amount of funds allocated to recipient |
sourceTypeCode
string
|
The account source type where the funds will be allocated.
R - Roth
N - Non Roth
|
manualFederalTax
float, optional
|
Amount of manual federal tax to withhold. |
manualStateTax
float, optional
|
Amount of manual state tax to withhold. |
federalWithholdMethodCode
string, optional
|
Federal withholding type
M - Mandatory
T - 10 Percent
P - 25 Percent
S - 35 Percent
N - NRA
R - Rollover
O - None
|
payment
obj[]
|
Array of payment objects
Size Range: 0..
|
Field | Description |
---|---|
accountNumber
string, optional |
Bank account number where the allocated amount will be sent.
Size range: 1..30
Validation***
|
abaNumber
string, optional |
The bank account routing number for the divisional bank.
Size range: 9
Validation***
|
companyName
string, optional |
For rollover check, this is the receiving 401k plan name. For ach or wire, this is the receiving bank name. No company name for regular check.
Size range: 1..50
Validation***
|
bankAccountName
string, optional |
The name associated with the receiving bank account unless a rollover, then receiving company name.
Size range: 1..60
Validation***
|
email
string, optional |
Recipient's email
Size range: 1..100
Validation: must include valid email address with '@' symbol
|
phone
string, optional |
Recipient's phone
Size range: 12
Format: 123-456-7890
|
methodCode
string, optional |
Type of payment method.
W - Wire to financial institution
A - ACH/direct deposit to financial institution
N - Paid to non-participant
|
subAccountNumber
string, optional |
For rollovers, the account number at the receiving company.
Size range: 1..50
Validation***
|
rolloverCode
string
|
Specification of rollover
N - Not a rollover
D - Directed rollover
|
rolloverToTypeCode
string
|
Type of money funds are rolling into.
N - Non
Q - Qualified plan
R - Roth IRA
I - IRA
|
checkRefText
string, optional
|
Check reference information
Size Range: 38
|
Field | Description |
---|---|
jobQResponses
object[]
|
Array of JobQResponse Objects.
Size range: 1
|
**Validation rules for Termination Requests:
The ssn must belong to the specified plan
Sub Account must exist if it is a rollover
Participant must be inactive
For Rollovers, LT will handle the FBO information and Check Memo/reference Line, as long as information in the following section is provided
A lump sum request is always a percentage, if there’s a split payment of either dollar or percent, the amount to split by must be placed in the final payee object
***Allowed Scenarios & Required Fields:
Rollover Outgoing ACH or Rollover Outgoing Wire
companyName
abaNumber
accountNumber
subAccountNumber
bankAccountName
rolloverCode
rolloverToTypeCode
Rollover Outgoing Check
companyName
Mailing Address for Recipient
subAccountNumber
rolloverCode
rolloverToTypeCode
curl https://rc.ltretire.com/v1/plans/PLAN101/distributions/termination \
-X POST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer xxx.xxx.xxx' \
-d ' {
"distributionName": "Separation of Service",
"payee": [
{
"accountNumber": "123456789",
"addressLine1": "123 Washington Ave",
"allocationAmount": 100,
"city": "Parker",
"country": "USA",
"firstName": "Bob",
"lastName": "Smith",
"manualFederalTax": 0,
"manualStateTax": 5,
"payment": {
"abaNumber": "121000358",
"companyName": "Bank of America",
"email": "test2@lttrust.com",
"methodCode": "A",
"phone": "2157689816",
"rolloverCode": "N",
"rolloverToTypeCode": "N",
"checkRefText": "test"
},
"sourceTypeCode": "N",
"state": "CO",
"zip": "80250"
},
{
"addressLine1": "123 Washington Ave",
"allocationAmount": 100,
"city": "Parker2",
"country": "USA",
"firstName": "Bob",
"lastName": "Smith",
"manualFederalTax": 100,
"manualStateTax": 50,
"payment": {
"email": "test@lttrust.com",
"phone": "2157689816",
"rolloverCode": "N",
"rolloverToTypeCode": "N"
},
"sourceTypeCode": "R",
"state": "CO",
"zip": "80250"
}
],
"ssn": "XXXXXXXXX"
}'
{
"jobQResponses": [
{
"jobId": "5933045",
"requestId": "6184182",
"taskGroupId": "3329",
"taskId": "29",
"jobStatusCode": "successful",
"queueDateTime": "2021-09-08T22:19:58.000Z",
"jobStartDateTime": "2021-09-08T22:20:00.000Z",
"jobEndDateTime": "2021-09-08T22:20:01.000Z",
"groupName": "AutoTransfers",
"taskName": "Create transactions",
"transactionIds": []
},
{
"jobId": "5933045",
"requestId": "6184182",
"taskGroupId": "3329",
"taskId": "17",
"jobStatusCode": "successful",
"queueDateTime": "2021-09-08T22:19:58.000Z",
"jobStartDateTime": "2021-09-08T22:20:01.000Z",
"jobEndDateTime": "2021-09-08T22:20:04.000Z",
"groupName": "Auto termination Transaction",
"taskName": "Create Transactions",
"transactionIds": [
1083
]
}
]
}
Get endpoint to receive loan details by ssn
Field | Description |
---|---|
planId
query str param
string
|
See Common Fields |
ssn
query str param
string
|
See Common Fields |
Field | Description |
---|---|
planId
string
|
See Common Fields |
loanDetails
object[]
|
Array of Loan Detail Object
Size range: 0..
|
personLoanDetail
object[]
|
Array of Person Loan Detail Object
Size range: 0..
|
Field | Description |
---|---|
Minimum_Loan_Amount
integer
|
The minimum loan amount that can be requested. |
Maximum_Loan_Amount
integer
|
The maximum loan amount that can be requested. |
Minimum_Loan_Duration
integer
|
The minimum loan duration in months that can be requested. |
Maximum_Loan_Duration
integer
|
The maximum loan duration in months that can be requested. |
Maximum_Loan_Quantity
integer
|
The maximum number of loans that can be requested for this participant. |
Personal_Loan_Available
string
|
Y - Participant can request a personal loan
N - Participant cannot request a personal loan
|
Resident_Loan_Available
string
|
Y - Resident can request a personal loan
N - Resident cannot request a personal loan
|
Personal_Loan_Interest_Rate
integer
|
Interest rate for personal loan |
Residential_Loan_Interest_Rate
integer
|
Interest rate for resident loan |
Field | Description |
---|---|
ssn
string
|
See Common Fields |
name
string
|
name of participant |
vestedBalanceCurrentPlan
float
|
the total vested balance for the plan |
currentBalanceAllLoans
float
|
the current balance of all loans |
eligibleAmount
float
|
The amount that is eligible for a loan with the participant |
curl https://rc.ltretire.com/v1/loan?planId=WXYZ&ssn=123456789 \
-X GET \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer xxx.xxx.xxx'
{
"planId": "WXYZ",
"loanDetails": {
"Minimum_Loan_Amount": 1000,
"Maximum_Loan_Amount": 50000,
"Minimum_Loan_Duration": 12,
"Maximum_Loan_Duration": 360,
"Maximum_Loan_Quantity": 1,
"Personal_Loan_Available": "Y",
"Resident_Loan_Available": "N",
"Personal_Loan_Interest_Rate": 5,
"Residential_Loan_Interest_Rate": null
},
"personLoanDetails": {
"ssn": "123456789",
"name": "SMITH BOB ",
"vestedBalanceCurrentPlan": 18704.28,
"vestedBalaceAllLoans": 9437.73,
"eligibleAmount": 0
}
}
This endpoint is used to create a loan request
Field | Description |
---|---|
planId
url param
string
|
See Common Fields |
Field | Description |
---|---|
ssn
string |
Bank account number where the allocated amount will be sent.
Size range: 1..30
|
residenceCode
string |
Residence loan type
Y - residence loan
N - primary loan
|
amount
int |
Loan amount request.
Validation: must be > 1
|
months
int
|
Number of months the loan payment is scheduled for
Validation: Must be between 12 and 60 inclusive
|
frequencyCode
string
|
Loan payment frequency
W - weekly
B - biweekly
S - semimonthly
Q - quarterly
M - monthly
|
payment
obj[]
|
Array of payment objects
Size Range: 0..
|
Field | Description |
---|---|
abaNumber
string, optional |
The bank account routing number for the recipient bank.
Size range: 9
|
companyName
string, optional |
The company that holds the bank account.
Size range: 1..50
|
bankAccountName
string, optional |
The name associated with the bank account.
Size range: 1..60
|
accountNumber
string, optional |
The account number for the loan recipient.
Size range: 1..40
|
methodCode
string, optional |
Type of payment method. If a check, do not pass in methodCode.
W - Wire to financial institution
A - ACH/direct deposit to financial institution
N - Paid to non-participant
|
addressLine1
string, optional
|
Recipient's address line 1
Size range: 1..30
|
addressLine2
string, optional
|
Recipient's address line 2
Size range: 1..30
|
city
string, optional
|
Recipient's city
Size range: 1..30
|
state
string, optional
|
Recipient's two-character state code
Size range: 2
|
zip
string, optional
|
Recipient's zip code
Size range: 5
Format: "NNNNN"
|
country
string, optional
|
Recipient's country of residence
Size range: 1..30
|
overnightCheck
string, optional
|
Recipient's preference of check to overnight
Validation: Y, N
|
Field | Description |
---|---|
jobQResponses
object[]
|
Array of JobQResponse Objects.
Size range: 2
|
curl https://rc.ltretire.com/v1/plans/PLAN101/distributions/loan \
-X POST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer xxx.xxx.xxx' \
-d ' {
"amount": 1000,
"frequencyCode": "B",
"months": 13,
"payment": {
"addressLine1": "123 Washington Ave",
"bankAccountName": "Bob Smith",
"city": "Parker",
"companyName": "Company Name",
"country": "USA",
"state": "TX",
"zip": "76701",
"overnightCheck": "Y"
},
"residenceCode": "N",
"ssn": "012345678"
}'
{
"jobQResponses": [
{
"jobId": "5933045",
"requestId": "6184182",
"taskGroupId": "3329",
"taskId": "29",
"jobStatusCode": "successful",
"queueDateTime": "2021-09-08T22:19:58.000Z",
"jobStartDateTime": "2021-09-08T22:20:00.000Z",
"jobEndDateTime": "2021-09-08T22:20:01.000Z",
"groupName": "AutoTransfers",
"taskName": "Create transactions",
"transactionIds": []
},
{
"jobId": "5933045",
"requestId": "6184182",
"taskGroupId": "3329",
"taskId": "17",
"jobStatusCode": "successful",
"queueDateTime": "2021-09-08T22:19:58.000Z",
"jobStartDateTime": "2021-09-08T22:20:01.000Z",
"jobEndDateTime": "2021-09-08T22:20:04.000Z",
"groupName": "Auto Loan Transactio",
"taskName": "Post New Loan Distributions",
"transactionIds": [
1083
]
}
]
}
This endpoint is used to post hardship requests
Field | Description |
---|---|
planId
url param
string
|
See Common Fields |
Field | Description |
---|---|
distributionObject
object[]
|
See Distribution Object |
Field | Description |
---|---|
firstName
string |
First name of the recipient
Size range: 1..30
|
lastName
string |
Last name of the recipient
Size range: 1..30
|
addressLine1
string, optional
|
Recipient's address line 1
Size range: 1..30
Validation***
|
addressLine2
string, optional
|
Recipient's address line 2
Size range: 1..30
Validation***
|
city
string, optional
|
Recipient's city
Size range: 1..30
Validation***
|
state
string, optional
|
Recipient's two-character state code
Size range: 2
Validation***
|
zip
string, optional
|
Recipient's zip code
Size range: 5
Format: "NNNNN"
Validation***
|
country
string, optional
|
Recipient's country of residence
Size range: 1..30
|
sourceTypeCode
string
|
The account source type where the funds will be allocated.
R - Roth
N - Non Roth
|
manualFederalTax
float, optional
|
Amount of manual federal tax to withhold. |
manualStateTax
float, optional
|
Amount of manual state tax to withhold. |
payment
obj[]
|
Array of payment objects
Size Range: 0..
|
Field | Description |
---|---|
accountNumber
string, optional |
Bank account number where the allocated amount will be sent.
Size range: 1..30
|
abaNumber
string, optional |
The bank account routing number for the divisional bank.
Size range: 9
|
contactName
string, optional |
For ach or wire, this is the receiving bank name. No company name for regular check.
Size range: 1..50
|
email
string, optional |
Recipient's email
Size range: 1..100
Validation: must include valid email address with '@' symbol
|
phone
string, optional |
Recipient's phone
Size range: 12
Format: 123-456-7890
|
methodCode
string, optional |
Type of payment method
W - Wire to financial institution
A - ACH/direct deposit to financial institution
N - Paid to non-participant
|
overnightCheck
string, optional
|
Recipient's preference of check to overnight
Validation: Y, N
|
Field | Description |
---|---|
jobQResponses
object[]
|
Array of JobQResponse Objects.
Size range: 2
|
**Validation
federalWithholdMethodCode is default to T. This cannot be changed with hardship requests.
When a hardship is requested, it is always a lump sum percentage based on the fund type.
If there are pending sell trades, a hardship request cannot be submitted.
The requested hardship amount must be less than or equal to the total balance.
curl https://rc.ltretire.com/v1/plans/PLAN101/distributions/hardship \
-X POST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer xxx.xxx.xxx' \
-d ' {
"distributionName": "hardship all sources",
"ssn": "123456789",
"distributionAllocationAmount": 15000,
"payee": [
{
"addressLine1": "4142 Hibiscus Dr.",
"addressLine2": "Unit 200",
"firstName": "Bob",
"lastName": "Adams",
"city": "Little River",
"state": "SC",
"zip": "29566",
"sourceTypeCode": "N",
"manualFederalTax": 5,
"manualStateTax": 10,
"payment": {
"accountNumber": "12345678",
"abaNumber": "021000021",
"contactName": "Chase Bank",
"methodCode": "A",
"phone": "9723521352",
"email": "test@gmail.com"
}
},
{
"addressLine1": "4142 Hibiscus Dr.",
"addressLine2": "Unit 200",
"firstName": "Bob",
"lastName": "Adams",
"city": "Little River",
"state": "SC",
"zip": "29566",
"sourceTypeCode": "R",
"payment": {
"accountNumber": "12345678",
"abaNumber": "021000021",
"contactName": "Chase",
"methodCode": "W",
"phone": "9723521352",
"email": "test@gmail.com"
}
}
]
}'
{
"jobQResponses": [
{
"jobId": "6202991",
"requestId": "6454775",
"taskGroupId": "3417",
"taskId": "29",
"jobStatusCode": "successful",
"queueDateTime": "2021-12-21T20:28:30.000Z",
"jobStartDateTime": "2021-12-21T20:28:31.000Z",
"jobEndDateTime": "2021-12-21T20:28:31.000Z",
"groupName": "Auto Hardship Transaction",
"taskName": "Create transactions",
"transactionIds": []
},
{
"jobId": "6202991",
"requestId": "6454775",
"taskGroupId": "3417",
"taskId": "15",
"jobStatusCode": "successful",
"queueDateTime": "2021-12-21T20:28:30.000Z",
"jobStartDateTime": "2021-12-21T20:28:31.000Z",
"jobEndDateTime": "2021-12-21T20:28:37.000Z",
"groupName": "Auto Hardship Transaction",
"taskName": "Post Withdrawals - In-service, Hardships",
"transactionIds": [
773
]
}
]
}
This endpoint is used for In Service requests. For the distributionName use the following:
in service over 59.5
in service rollover
nra
Field | Description |
---|---|
planId
url param
string
|
See Common Fields |
Field | Description |
---|---|
distributionObject
object[]
|
See Distribution Object |
Field | Description |
---|---|
firstName
string |
First name of the recipient
Size range: 1..30
|
lastName
string |
Last name of the recipient
Size range: 1..30
|
addressLine1
string, optional
|
Recipient's address line 1
Size range: 1..30
Validation***
|
addressLine2
string, optional
|
Recipient's address line 2
Size range: 1..30
Validation***
|
city
string, optional
|
Recipient's city
Size range: 1..30
Validation***
|
state
string, optional
|
Recipient's two-character state code
Size range: 2
Validation***
|
zip
string, optional
|
Recipient's zip code
Size range: 5
Format: "NNNNN"
Validation***
|
country
string, optional
|
Recipient's country of residence
Size range: 1..30
|
sourceTypeCode
string
|
The account source type where the funds will be allocated.
R - Roth
N - Non Roth
|
manualFederalTax
float, optional
|
Amount of manual federal tax to withhold. |
manualStateTax
float, optional
|
Amount of manual state tax to withhold. |
payment
obj[]
|
Array of payment objects
Size Range: 0..
|
Field | Description |
---|---|
accountNumber
string, optional |
Bank account number where the allocated amount will be sent.
Size range: 1..30
|
abaNumber
string, optional |
The bank account routing number for the divisional bank.
Size range: 9
|
contactName
string, optional |
For ach or wire, this is the receiving bank name. No company name for regular check.
Size range: 1..50
|
email
string, optional |
Recipient's email
Size range: 1..100
Validation: must include valid email address with '@' symbol
|
phone
string, optional |
Recipient's phone
Size range: 12
Format: 123-456-7890
|
methodCode
string, optional |
Type of payment method
W - Wire to financial institution
A - ACH/direct deposit to financial institution
N - Paid to non-participant
|
overnightCheck
string, optional
|
Recipient's preference of check to overnight
Validation: Y, N
|
subAccountNumber
string, optional |
For rollovers, the account number at the receiving company.
Size range: 1..50
Validation***
|
rolloverCode
string
|
Specification of rollover
N - Not a rollover
D - Directed rollover
|
rolloverToTypeCode
string
|
Type of money funds are rolling into.
N - Non
Q - Qualified plan
R - Roth IRA
I - IRA
|
Field | Description |
---|---|
jobQResponses
object[]
|
Array of JobQResponse Objects.
Size range: 2
|
**Validation
In Service 59.5
participant must be over the age of 59.5
In Service Rollover
the requested amount must be less than or equal to the total balance of rollover funds
In Service Normal Retirement Age (NRA)
participant must be over the normal retirement age of the plan
ALL
If there are pending sell trades, the request will fail until these are settled.
The requested amount must be less than or equal to the total vested balance.
curl https://rc.ltretire.com/v1/plans/PLAN101/distributions/inservice \
-X POST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer xxx.xxx.xxx' \
-d '{
"distributionName": "in service over 59.5",
"ssn": "123456789",
"distributionAllocationAmount": 15000,
"payee": [
{
"addressLine1": "4142 Hibiscus Dr.",
"firstName": "Bob",
"lastName": "Smith",
"city": "Little River",
"state": "SC",
"zip": "29566",
"sourceTypeCode": "N",
"manualFederalTax": 5,
"manualStateTax": 10,
"payment": {
"accountNumber": "12345678",
"abaNumber": "021000021",
"contactName": "Chase Bank",
"methodCode": "A",
"phone": "9723421352",
"email": "bobsmith@gmail.com",
"rolloverCode": "N",
"rolloverToTypeCode": "N"
}
},
{
"addressLine1": "4142 Hibiscus Dr.",
"firstName": "Bob",
"lastName": "Smith",
"city": "Little River",
"state": "SC",
"zip": "29566",
"sourceTypeCode": "R",
"payment": {
"accountNumber": "12345678",
"abaNumber": "021000021",
"contactName": "Chase",
"methodCode": "W",
"phone": "9723421352",
"email": "bobsmith@gmail.com",
"rolloverCode": "D",
"rolloverToTypeCode": "I"
}
}
]
}'
{
"jobQResponses": [
{
"jobId": "6204081",
"requestId": "6455851",
"taskGroupId": "3421",
"taskId": "29",
"jobStatusCode": "successful",
"queueDateTime": "2022-01-25T15:13:06.000Z",
"jobStartDateTime": "2022-01-25T15:13:08.000Z",
"jobEndDateTime": "2022-01-25T15:13:08.000Z",
"groupName": "Auto InService Transaction",
"taskName": "Create transactions",
"transactionIds": []
},
{
"jobId": "6204081",
"requestId": "6455851",
"taskGroupId": "3421",
"taskId": "15",
"jobStatusCode": "successful",
"queueDateTime": "2022-01-25T15:13:06.000Z",
"jobStartDateTime": "2022-01-25T15:13:08.000Z",
"jobEndDateTime": "2022-01-25T15:13:22.000Z",
"taskName": "Post Withdrawals - In-service, Hardships",
"groupName": "Auto InService Transaction",
"transactionIds": [
811
]
}
]
}