Implementation examples for each SDk service.
# Run an example Platform API method <SERVICE_NAME> <METHOD_NAME>
$ go run cmd/platform/main.go -s CustomerService -m List
For a lightweight example on how to consume paginated results, see ExampleClientService_WithPagination
The steps below will walk through the process of onboarding a new customer. Be sure to check out the Onboarding Documentation in our Resource Center before getting started.
The first call to start the onboarding flow will be Customers.Create
. Make a request to create a Customer with an ExternalUID, Email and CustomerType. A new Customer{}
will be returned.
params := &rize.CustomerCreateParams{
ExternalUID: "client-generated-id",
CustomerType: "primary",
Email: "olive.oyl@popeyes.com",
}
resp, err := rc.Customers.Create(context.Background(), params)
if err != nil {
log.Fatal("Error creating customer\n", err)
}
customer := resp // Customer data
Next, we need to retrieve the list of Products available for your Program, along with all of the requirements needed for the new Customer to complete. Later on, we'll use the Product.ProfileRequirements
to submit Profile Responses for all required questions.
params := &rize.ProductListParams{
ProgramUID: customer.UID,
}
resp, err := rc.Products.List(context.Background(), params)
if err != nil {
log.Fatal("Error fetching Products\n", err)
}
product := resp.Data[0] // First Product
Creating a Compliance Workflow requires the new Customer UID and the ProductCompliancePlanUID from the last two steps.
params := &rize.WorkflowCreateParams{
CustomerUID: customer.UID,
ProductCompliancePlanUID: product.ProductCompliancePlanUID,
}
resp, err := rc.ComplianceWorkflows.Create(context.Background(), params)
if err != nil {
log.Fatal("Error creating Compliance Workflow\n", err)
}
complianceWorkflowUID := resp.UID // Workflow UID
Sending a request to the Compliance Workflow initiates a Compliance Workflow for the onboarding Customer. The Compliance Workflow contains disclosure and Compliance Documents that the Customer must acknowledge before opening a Custodial Account.
Disclosure and Compliance Documents are defined by the Custodian(s) participating in your Program. The disclosure documents and acknowledgments keep your Program and the Custodian(s) operating in a manner compliant with the Custodian's regulations.
Rize stores all acknowledgements, documents, document versions, and timestamps to assist Custodians with regulatory inquiries. These records are available to you and your customers through the Compliance Workflows endpoint.
params := &rize.WorkflowLatestParams{
ProductCompliancePlanUID: product.ProductCompliancePlanUID,
}
resp, err := rc.ComplianceWorkflows.ViewLatest(context.Background(), customer.UID, params)
if err != nil {
log.Fatal("Error fetching Compliance Workflow\n", err)
}
documents := resp.CurrentStepDocumentsPending
Your application can display or allow users to download the Compliance Document using the ComplianceDocumentURL
value returned with each document in the Compliance Workflows response.
Rize supplies Compliance Documents in steps. All Documents in the current step must be acknowledged before the Documents in the next step are supplied. Any Documents that are awaiting acknowledgement in the current step are available in the CurrentStepDocumentsPending
array. Once Rize receives the acknowledgements for all Documents in the current step, the documents in the next step will be supplied.
The requirements for acknowledging a Document will differ depending on the Document content. If a Document requires an electronic signature, additional fields must be supplied in the acknowledgment. Your application can discern which Documents require an electronic signature through the ElectronicSignatureRequired
field returned with each Document in the Compliance Workflows response.
params := &rize.WorkflowBatchDocumentsParams{
CustomerUID: customer.UID,
Documents: []*rize.WorkflowDocumentParams{{
Accept: "yes",
DocumentUID: documents[0].UID,
IPAddress: "107.56.230.156",
UserName: "gilbert chesterton",
}, {
Accept: "yes",
DocumentUID: documents[1].UID,
}},
}
resp, err := rc.ComplianceWorkflows.BatchAcknowledgeDocuments(context.Background(), complianceWorkflowUID, params)
if err != nil {
log.Fatal("Error acknowledging compliance document\n", err)
}
After a Customer starts a Compliance Workflow, Rize expects you to submit their remaining PII.
params := &rize.CustomerUpdateParams{
Email: "olive.oyl@rizemoney.com",
Details: &rize.CustomerDetails{
FirstName: "Olive",
MiddleName: "Olivia",
LastName: "Oyl",
Suffix: "Jr.",
Phone: "5555551212",
DOB: internal.DOB(time.Now()),
SSN: "111-22-3333",
Address: &rize.CustomerAddress{
Street1: "123 Abc St.",
Street2: "Apt 2",
City: "Chicago",
State: "IL",
PostalCode: "12345",
},
},
}
resp, err := rc.Customers.Update(context.Background(), customer.UID, params)
if err != nil {
log.Fatal("Error updating customer\n", err)
}
To update profile answers:
params := &rize.CustomerProfileResponseParams{
ProfileRequirementUID: customer.ProfileResponses[0].ProfileRequirementUID,
ProfileResponse: &internal.CustomerProfileResponseItem{
Response: "yes",
},
}
resp, err := rc.Customers.UpdateProfileResponses(context.Background(), customer.UID, []*rize.CustomerProfileResponseParams{params})
if err != nil {
log.Fatal("Error updating profile response\n", err)
}
The last step will trigger verification that all Product requirements have been met. After completion, Rize will automatically initiate the KYC process for the Customer's first Product. Upon successful creation, all required Custodial Accounts will be created and the customer will be active. This is a billable event and is intentionally isolated for you to confirm that the Customer record is complete.
To request for identity verification:
params := &rize.CustomerProductCreateParams{
CustomerUID: customer.UID,
ProductUID: productUID,
}
resp, err := rc.CustomerProducts.Create(context.Background(), params)
if err != nil {
log.Fatal("Error creating Customer Product\n", err)
}
Once Rize receives complete PII, complete Compliance Document acknowledgments, and the new Customer Product request within the duration requirements, your Customer record will automatically be sent to Rize's identity verification partner.
Because your Customers have assets held by financial institutions, Customers must undergo a KYC/AML evaluation before they can onboard to the Rize Platform.
In the Rize Sandbox, you can generate and test your receipt of the customer evaluation statuses using the last names supplied with the Customer record. The statuses in the Rize Sandbox and the last names that trigger these statuses are listed below.
Customer Last Name | Customer KYC_Status Returned | Description |
---|---|---|
Any value, excluding Smith and Johnson | Approved | Approved status indicates that the Custodian will allow the Customer to access their Service Offering immediately. The Customer has completed onboarding to the Program. No documentation is required. |
Johnson | Denied | The Customer is denied access to the Custodian's products. No recourse is available through the Custodian or Rize. |
Smith | Manual Review | The Custodian is unable to onboard the Customer through an automated process, and additional information is required. |