Introduction
This document gives you an overview of the Goji Platform API and operational processes. This site contains both detailed API documentation and accompanying guides that detail how the API should be used and the operational processes behind them.
The following icons are used to mark parts of the API:
🧪 This represents an API that exists for testing purposes and is only available in the sandbox environment.
🚧 We like to publish new APIs in draft form, as early as possible to get feedback from our users. These endpoints may not be implemented yet, or only partially functional. Use with caution!
Getting started
To make use of the Goji platform you will want to use one or more of the APIs described below.
Investors API
The Investors API can:
- Onboard Investors
- Conduct KYC checks (normally automatically)
- Open general/ISA accounts for your Investors
- Retrieve and update Investor data
Payments - Investors API
For Investors who have passed KYC checks, the Payments API can:
- Retrieve Investors bank details
- Retrieve Investors balance information
- Transfer funds between accounts
- Execute withdrawals
Payments - Manager API
For Managers (platforms) to control money that doesn't yet, or no longer, belongs to the investor:
- Retrieve and create bank details of beneficiaries
- Create wallets to hold and move platform controlled money
- Transfer funds between wallets and beneficiaries.
Payments - Bulk API
Debt Settlement API
The Debt Settlement API supports settling investments in securities that are not being managed by the Bond management module. Examples include:
- P2P loans
- Bonds
- etc.
This API can be used where the securitiy itself is being controlled by your platform and the Goji platform is being used to control the movement of client money.
Equity Settlement API
The Equity Settlement API supports settling of shares.
Bond management API
The Goji Platform supports issuing:
- Fixed term bonds
- Fixed rate bonds (debt based securities) The Bond management API allows you to configure these products, determine who has invested in each bond and when repayments are due.
Webhooks API
Many events in the Goji platform publish events which can be consumed as a webhook.
ISA administration API
The ISA administration API allows you to interact with the Goji platform for the purpose of administering an IF ISA.
Error Handling and Retry Policy
Improving resilience: We recommend Clients use circuit breakers and a retry policy to make connections to the Goji API.
Retries: Including a unique X-CLIENT-REQUEST-ID
header with each request will ensure POST
and PUT
requests are idempotent. If a call is made with a X-CLIENT-REQUEST-ID
that has been seen in the last 24 hours, no modifications will be made and a 200
response code returned. This will allow a client to retry a request in the event of a timeout or network failure with confidence that the action will only be carried out once.
Request IDs
All responses include a header X-GOJI-REQUEST-ID
. When requesting support, please include the request ID to assist with our investigation.
Test Environment
Goji supports a Sandbox environment which can be used for integration testing.
The URL for the sandbox environment is https://api-sandbox.goji.investments
.
Dates
Dates and time are in ISO 8601 format eg 2015-02-18
or 2015-02-18T04:57:56Z
Authentication
Authentication to the API is via an HMAC mechanism.
A basic HTTP API key and password is also available for easier prototyping against Goji's sandbox environment.
HMAC Authentication
HMAC authentication is a mechanism where each HTTP request made by the client of the API is cryptographically signed.
By signing the request with a secret key, known only to the API client and the API itself, the authenticity of the request can be established.
How to Sign the Request
The request is signed by including three headers:
x-nonce
A unique string for every request. This will also be included in the signature string (see below) and is used to prevent replay attacks.
x-timestamp
Milliseconds since epoch. This will also be included in the signature string (see below) and is used to prevent replay attacks.
Authorization
In the format <api-key>:<signature-string>
See below for how to build the signature-string
.
Building the Signature String
The following details are concatenated together:
nonce
+\n
+ timestamp
The string is then encrypted using HMAC-SHA256
using the private key.
The result is then Base64 encoded to produce a string.
The encrypted string is then UTF-8 URL encoded.
Examples
Java and C# examples provided - click on the tabs above
public String hashSignature(String signatureToHash, String apiSecret) {
try {
Mac sha256HMAC = Mac.getInstance("HmacSHA256");
SecretKeySpec secretKey = new SecretKeySpec(apiSecret.getBytes("UTF-8"), "HmacSHA256");
sha256HMAC.init(secretKey);
return Base64.encodeBase64String(sha256HMAC.doFinal(signatureToHash.getBytes()));
} catch (Exception e) {
throw new RuntimeException(e);
}
}
using System;
using System.Security.Cryptography;
using System.Text;
using System.Web;
public class HmacExample
{
public static void Main()
{
using (HMACSHA256 hmac = new HMACSHA256(Encoding.UTF8.GetBytes("abcd1234")))
{
string signature = "67681625-d7f9-43e3-859a-25e634c203c2\n1474982268271";
byte[] hash = hmac.ComputeHash(Encoding.UTF8.GetBytes(signature));
string result = System.Convert.ToBase64String(hash);
string urlEncoded = HttpUtility.UrlEncode(result);
Console.Out.WriteLine(result);
Console.Out.WriteLine(urlEncoded);
}
}
}
GET https://api.gojip2p.com/user/session/valid
With a nonce = 67681625-d7f9-43e3-859a-25e634c203c2
and timestamp = 1474982268271
The signature string would be as follows:
67681625-d7f9-43e3-859a-25e634c203c2
1474982268271
Assuming a secret key of abcd1234
, this will produce a signature equal to:
q0AdIAm6SphhgN/VxjMiE9UEd3uZRca9gjJXQ5+dyNI=
which is then URL encoded to q0AdIAm6SphhgN%2FVxjMiE9UEd3uZRca9gjJXQ5%2BdyNI%3D
Versioning
>If Jackson is being used, the following class level annotation can be added:
@JsonIgnoreProperties(ignoreUnknown = true)
Whenever a breaking change needs to be made to any of the following, a new version of the URL will be made available:
- URL format
- Mandatory query parameters
- Breaking change in structure of request body
- Breaking change in structure of response body
The version of the endpoint to use is specified in a header named version e.g. version : 2
If no version header is specified, version one of the endpoint will be used.
If an invalid version header is specified, a 404
response code will be returned.
A breaking change to the request or response body is defined as the following:
- Renaming a field
- Changing the type of a field e.g. from string to decimal
- Changing the format of a field e.g. changing a date format representation
- Removing a field
- Restructuring the request/response object
The following changes are not considered breaking changes:
- Adding a new field to a response object
- Adding a new, optional field to a request object
- Adding a new, optional query parameter to a URL
It is therefore important that clients of the API are liberal in the way they parse response objects such that new fields do not cause the process to fail.
Email integration
Goji can send a emails on behalf of the Platform at various points in the ISA lifecycle. When you completed the onboarding questionnaire, you will have specified which emails you want Goji to send.
In order to complete the email integration you will need to:
- Specify the email address emails should be sent from e.g.
isa@platform.com
- Create a forwarding rule, so that emails sent to the address specified above are forwarded to
platformsupport@gojip2p.com
- Specify the email address Goji should send notifications of inound transfer in funds to e.g.
isa-transfer-notifications@platform.com
In order to permission our email provider (Mandrill) to send emails using your domain you will be required to make the following DNS changes:
DKIM
v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrLHiExVd55zd/IQ/J/mRwSRMAocV/hMB3jXwaHH36d9NaVynQFYV8NaWi69c1veUtRzGt7yAioXqLj7Z4TeEUoOLgrKsn8YnckGs9i3B3tVFB+Ch/4mPhXWiNfNdynHWBcPcbJ8kjEQ2U8y78dHZj1YeRXXVvWob2OaKynO8/lQIDAQAB;
v=DKIM1\; k=rsa\; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrLHiExVd55zd/IQ/J/mRwSRMAocV/hMB3jXwaHH36d9NaVynQFYV8NaWi69c1veUtRzGt7yAioXqLj7Z4TeEUoOLgrKsn8YnckGs9i3B3tVFB+Ch/4mPhXWiNfNdynHWBcPcbJ8kjEQ2U8y78dHZj1YeRXXVvWob2OaKynO8/lQIDAQAB\;
DKIM is a DNS-based email authentication mechanism that helps Mandrill more effectively send mail on your behalf by allowing receivers to verify that we have permission to send your email.
To enable DKIM, create a TXT
record for mandrill._domainkey.yourdomain.com
(replace yourdomain.com
with the domain you're setting up).
Some DNS providers require that semicolons be escaped. If your provider requires escaping, use this value instead.
SPF
v=spf1 include:spf.mandrillapp.com ?all
SPF is another DNS-based email authentication mechanism. If you don't yet have an SPF record, you'll want to add one for your domain. At a minimum, the value should be the following if you're only sending mail through Mandrill for that domain.
If you already have a TXT
record with SPF information, you'll need to add Mandrill's servers to that record by adding include:spf.mandrillapp.com
in the record (before the last operator, which is usually ?all
, ~all
, or -all
).
Domain Ownership Verification
Additionally, we need to send a verification email to verify your ownership of the domain. Please let us know which email address to send this to and when you receive the email from Mandrill, please forward it to techsupport@goji.investments
Valid test account numbers
The following Account Number, Sort Code combinations are valid examples and can be used for testing in the sandbox environment:
Account Number | Sort Code |
---|---|
00004588 | 203002 |
00027944 | 203002 |
58110244 | 204514 |
60282377 | 204514 |
87889196 | 166051 |
99993193 | 166051 |
Quickstart Guides
Quickstart Settlement - Debt
This guide gives a brief overview on how to:
- Onboard an Investor
- Deposit funds
- Settle an investment
- Repay using the Settlement API
Please ensure you also read the complete documentation for each API.
Authentication
API calls in production need to be cryptographically signed. You can find more information here.
In Sandbox, Basic Auth
can be used to help you prototype integrations.
Registering a Webhook
Create Webhook
{
"url": "https://webhook.site/44e66f2d-eaac-4225-86aa-7549f628c5d0"
}
Webhooks are fired to inform you whenever specific events are fired in the Goji Platform.
You can register a URL to receive webhooks by calling POST https://api-sandbox.goji.investments/platformApi/webhooks with example body:
Creating an Investor
Create Investor
{
"title": "MS",
"firstName": "Jane",
"lastName": "Doe",
"accountTypes": [
"GOJI_INVESTMENT",
"ISA"
],
"address": {
"country": "GBR",
"lineOne": "1 The High Street",
"lineTwo": "",
"lineThree": "",
"postcode": "AA1 1AA",
"region": "County",
"townCity": "Town"
},
"contactDetails": {
"emailAddress": "me@email.com",
"telephoneNumber": "01234567890"
},
"dateOfBirth": "1970-01-01",
"entityType": "INDIVIDUAL",
"investorDeclarationType": "RESTRICTED",
"nationalInsuranceNumber": "JT123456D"
}
To create an Investor, the Investor must first agree to the Terms and Conditions, and optionally the ISA declaration if the Investor is opening an ISA.
Goji supports hosting the Terms and Conditions, retrieved by calling GET https://api-sandbox.goji.investments/platformApi/terms.
The ISA Declaration can be retrieved by calling GET https://api-sandbox.goji.investments/platformApi/isaDeclaration
An Investor is created by calling POST https://api-sandbox.goji.investments/platformApi/investors with example body:
The Goji Platform will generate a clientId
which should be saved as this is used for subsequent calls.
Checking the KYC/KYB details
Once the Investor has been created, a KYC/KYB check is done in the background and the status can be checked by calling GET /investors/{clientId}/kyc for individuals or GET /investors/{clientId}/kyb for corporates.
In the sandbox environment:
- All Individual Investors are considered verified unless the
lastName
field containsreferred
orforcekyc
. - All Corporate Investors are unverified by default. To verify the Investor, documents must be uploaded and verified using the KYB workflow on the Goji Admin Console.
Depositing Test Funds
Bank Transfer Details
{
"amount": {
"amount": 10000.00,
"currency": "GBP"
},
"clientId": "<client-id>",
"paymentReference": "ISA<client-id>",
"paymentType": "DEPOSIT"
}
Once an Investor is KYC approved, funds can be deposited.
An Investor's Bank Details
The Investor's unique bank details for depositing funds can be retrieved by calling: GET https://api-sandbox.goji.investments/platformApi/investors/{clientId}/bankTransferDetails
An ISA Investor's Bank Details
For an ISA account, use: GET https://api-sandbox.goji.investments/platformApi/investors/{clientId}/bankTransferDetails/isa
Testing
The payment reference must start with ISA
if the funds are to be deposited to the ISA account.
Once funds are deposited, a webhook will be fired with type INVESTOR_FUNDS_RECEIVED
.
An Investor's Balance
An Investor's balance can be queried by calling:
GET https://api-sandbox.goji.investments/platformApi/investors/{clientId}/accounts/balances
Settling an Investment
Once an Investor has a cash balance, the funds can be invested by calling the settlement API. This will move the funds from one or more investors to a predetermined account. This account may be with the Investment Manager, a Solicitor or the borrower directly.
Register the Investment Product
Investment Product
{
"id": "PRODUCT-1",
"investmentDocument": "https://document.url",
"isaEligible": "true"
}
First register the investment product:
POST https://api-sandbox.goji.investments/platformApi/settlement/product
This can be reused multiple times.
Register a Payment Destination
Payment Destination
{
"accountName": "Account name",
"accountNumber": "00004588",
"sortCode": "203002"
}
Next, register a payment destination. This is where the funds will be sent.
POST https://api-sandbox.goji.investments/platformApi/bankAccountDetails
This returns a payment destination ID which must be saved and used for the subsequent call.
The following Account Number, Sort Code combinations are valid examples and can be used for testing in the sandbox environment:
Account Number | Sort Code |
---|---|
00004588 | 203002 |
00027944 | 203002 |
58110244 | 204514 |
60282377 | 204514 |
87889196 | 166051 |
99993193 | 166051 |
After the payment destination is enabled, settle the investment.
The following example includes a single investment from a single Investor:
Settle Investment
{
"id": "investment1",
"reference": "investment1",
"productId": "PRODUCT-1",
"bankAccountId": "bankAccountId",
"investments": [
{
"id": "client-investment-1",
"clientId": "<client-id>",
"accountType": "ISA",
"amount": {
"amount": 10000.00,
"currency": "GBP"
}
}
]
}
POST https://api-sandbox.goji.investments/platformApi/settlement/tranche
The investor's investment can be queried by calling:
Repaying the Investment (customers using wallets)
This applies if you are using our flexible payments (wallets) functionality.
Record Repayment
{
"reference" : "reference",
"sourceWalletId": "sourceWalletId",
"investorRepayments" : [ {
"amount" : {
"amount" : 2.68,
"currency" : "currency"
},
"investmentId" : "investmentId",
"tax" : {
"amount" : 2.68,
"currency" : "currency"
},
"type" : "CAPITAL"
}, {
"amount" : {
"amount" : 2.68,
"currency" : "currency"
},
"investmentId" : "investmentId",
"tax" : {
"amount" : 2.68,
"currency" : "currency"
},
"type" : "CAPITAL"
} ]
}
POST https://api-sandbox.goji.investments/platformApi/settlement/investor-repayment
- The system will move money from the wallet specified referenced by
sourceWalletId
to all the investors specified in theinvestorRepayments
array. - For any successful batch, it is guaranteed that there will be at least one payment into an investor account for each entry in the
investorRepayments
array (there may be more than one payment per entry if payments are split for any reason). However, there will be exactly oneINVESTMENT_PAYMENT_RECEIVED
webhook per entry in the array, when the final payment arrives for that investor. - No guarantees of any kind are made regarding the number of outgoing payments from the source wallet. Goji's systems will move the money via pass-through accounts in the most efficient way.
- We publish a set of webhooks to update your system on the status of the repayment batch going from accepted all the way through to completed.
- These webhooks should allow full visibility of the repayment batch throughout the course of the instruction being carried out.
Repaying the Investment
This applies if you are not using our flexible payments (wallets) functionality.
Repaying Investment
{
"accountNumber": "123456",
"reference": "some-ref",
"sortCode": "112233"
}
To record a repayment against an investment, firstly generate a unique reference that will be used when sending the funds to the Goji Platform.
GET https://api-sandbox.goji.investments/platformApi/settlement/repayment/reference
This will return the account details to use when sending the funds to repay.
Record Repayment
{
"investorRepayments": [
{
"amount": {
"amount": 123.45,
"currency": "GBP"
},
"investmentId": "client-investment-1",
"tax": {
"amount": 0.00,
"currency": "GBP"
},
"type": "INTEREST"
}
],
"reference": "some-ref"
}
POST https://api-sandbox.goji.investments/platformApi/settlement/repayment
- The system will record the repayments and wait for a deposit into your receiving account matching the amount and reference you specified when making the API call.
- Once the money is deposited the system will automatically distribute the funds to investors and notify them of a repayment.
- The system will publish a BATCH_UPDATE webhook with a type of
REPAYMENTS
to update you on the progress of the distribution.
Withdrawing Funds
Register Bank Details
{
"accountName": "Jane Doe",
"accountNumber": "00004588",
"sortCode": "203002"
}
Withdraw Funds
{
"amount": {
"amount": "101234.56",
"currency": "GBP"
},
"reference": "my withdrawal ref"
}
An Investor can withdraw funds by firstly registering bank account details:
Register Withdrawal Bank Details
The following Account Number, Sort Code combinations are valid examples and can be used for testing in the sandbox environment:
Account Number | Sort Code |
---|---|
00004588 | 203002 |
00027944 | 203002 |
58110244 | 204514 |
60282377 | 204514 |
87889196 | 166051 |
99993193 | 166051 |
POST https://api-sandbox.goji.investments/platformApi/investors/{clientId}/bankDetails
Process Withdrawal
Then the funds can be withdrawn:
Quickstart Settlement - Equities
This guide gives a brief overview to how to do the following, using the settlement API:
- Onboard investors
- Deposit funds
- Create instruments
- Issue/allocate shares
- Settle trades
- Perform Corporate Actions (i.e. dividends)
For more details on each of these areas
- Investors API
- Payments API
- Instruments API
- Trade Settlement API
- Corporate Actions API
- Asset Reconciliation API
Quickstart Wallets
This guide gives a brief overview of how to do the following, using the wallet API:
- Register parties
- Create wallets
- Registering a payment destination outside the system to send money to
- Make an outbound payment
Please ensure you also read the complete documentation for each API.
All money held in wallets is eMoney and therefore might not be suitable for all use cases. Let us know if you have questions.
Registering parties
In our payments system we refer to all different types of entity as a Party. In the case of registering a company you will receive a partyId
in the response. This will look something like COM~d28360c5-07a3-4d78-ade4-bddcdd8b5502
and is our reference to that entity which will be used to create wallets under that party.
It's worth noting that money in wallets underneath this party will be held in their name. For example, if we registered Goji under the wallet API, money held in any wallet under that party would be owned by Goji. Likewise if we registered a Borrower in the P2P space, any money in wallets under that borrower is owned by the Borrower.
Registering new parties is an asynchronous process therefore the party will not be ready for use straight away. You will receive a webhook when the party is ready for use.
Creating wallets
Once you've received the webhook from the previous stage letting you know the party is registered, you will be ready to create wallets for that party.
Wallets are created under the Managing Wallets API.
Creating a wallet is an asynchronous action due to slow responses from downstream providers. Once you create a wallet for a given party you'll receive a unique id
for the wallet in the HTTP response. This is then used in any subsequent wallet related calls. You'll receive a webhook when the wallet is enabled and ready for use.
Registering a payment destination outside the system to send money to
In order to send money outside of the system we need to register the recipient bank details and run AML checks on them. You can use the bank destination API to add new accounts and these can be registered once for use across multiple party wallets.
This is also an asynchronous action so you'll receive a webhook once they've passed AML and are ready to use.
Make an outbound payment
Once you have the wallet created and the destination account enabled, you're ready to send money. To do this you can use the wallet payment API. Please note that we currently do not support sending in multiple currencies via this API. If this is a problem please get in touch.
Once a payment has cleared we will update you via webhook.
Investors
The Investors API allows you to onboard investors, run KYC/KYB/AML checks and open an ISA account.
Introduction to the Investors API
When onboarding a new investor, they need to pass through the usual registration flow on your platform to capture name, address etc. as well as complete any investor declarations that may be appropriate and sign Ts and Cs etc.
Once this is complete, the investor can be onboarded onto the Goji Platform. The investor's details are validated and subject to Goji's KYC checks. This is initially an automated process and only requires manual involvement if the automated checks are inconclusive or the investor is deemed high risk. If the KYC checks pass, a unique bank account number is created for the investor and a success message returned.
If the KYC for a customer cannot be successfully completed immediately, a member of the Goji operations team will review the workflow case and perform whatever additional checks may be necessary.
If further information is required from the customer, Goji will contact the customer directly via email (in your branding) or over the phone. A full audit of all emails are kept in the admin console.
Once the customer has been approved , a unique account number is created for the investor and a success email is sent.
Until the customer has been approved, they cannot deposit funds and invest.
Onboarding investors
Registration
To register an investor, POST /investors
is called. Note that if the investor is being migrated to the Goji system from an existing record, the dedicated investor migration endpoint should be used instead.
The investor must have previously agreed to the terms and conditions which can be accessed by calling GET /platformApi/terms
.
An ISA account can be opened at this stage by providing the National Insurance Number and ensuring they have agreed to the ISA declaration which can be accessed by calling GET /platformApi/isaDeclaration
.
Alternatively, the ISA account can be added later by calling POST /investors/{clientId}/accounts/ISA
.
KYC process
Once the individual investor has been registered, the KYC process will be initiated asynchronously.
You can verify the KYC details by calling GET /investors/{clientId}/kyc. Alternatively, you can register for webhooks and a call will be made to your system when the KYC status changes.
When documents are required, identity documents must be uploaded. Supported formats are pdf, png and jpeg. The documents are uploaded as Base64
encoded strings (maximum size 10MB) using POST /investors/{clientId}/kyc/documents.
The supported documents are:
- Passport
- Driving licence (front side only)
- Bank statement less than three months old
- Utility bill less than three months old
If the KYC documents are rejected (e.g. low quality, wrong address) then a webhook will be fired and a member of the Goji Platform Support team will contact you. The KYC status will remain as ENHANCED_VERIFICATION_REQUIRED
.
The customer is restricted from performing certain actions until they have completed the KYC process.
These restricted actions include:
- Accessing the bank transfer details for making deposits
- Making investments
KYC details
An investor can be one of the following statuses:
AWAITING_CREDIT_AGENCY_CHECK
Investor is still being electronically verified.ELECTRONICALLY_VERIFIED
The investor has been verified.ENHANCED_VERIFICATION_REQUIRED
The investor is undergoing enhanced verification .ENHANCED_VERIFIED
The investor has passed enhanced verification. All corporate and international investors are subject to enhanced verification.
For ENHANCED_VERIFIED
are required intervention from goji admin. After uploading the documents, goji admin will to approve the uploaded documents.
A detailed target operating model will be shared with you as part of the operational onboarding.
GET /terms
GET /platformApi/terms HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"version" : "version",
"termsAndConditions" : "termsAndConditions"
}
Description
Loads the current set of terms and conditions.
Response
Name | Type | Description |
---|---|---|
termsAndConditions | string | The terms and conditions in HTML format. |
version | string | The version of the terms and conditions. |
GET /investorIds
GET /investorIds HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
["INVESTOR-ID-1", "INVESTOR-ID-2"]
Description
Returns all the client ids of the investors on the platform. Intended for use in bulk tasks such as reconciliation, allowing the caller to first get the full list of investors and then call out to other endpoints for information on each investor.
Request
No body required.
Response
An array of strings.
POST /platformApi/investors
POST /platformApi/investors HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"lastName" : "lastName",
"corporateDetails" : {
"companyType" : "companyType",
"registrationNumber" : "registrationNumber",
"companyName" : "companyName"
},
"address" : {
"country" : "country",
"lineTwo" : "lineTwo",
"townCity" : "townCity",
"postcode" : "postcode",
"lineOne" : "lineOne",
"lineThree" : "lineThree",
"region" : "region"
},
"entityType" : "INDIVIDUAL",
"employmentDetails" : {
"jobTitle" : "jobTitle",
"employmentStatus" : "EMPLOYED_FULL_TIME"
},
"nationalities" : [ {
"nationality" : "GB"
}, {
"nationality" : "CH"
} ],
"dateOfBirth" : "2000-01-23",
"title" : "MISS",
"investorDeclarationType" : "RESTRICTED",
"contactDetails" : {
"emailAddress" : "emailAddress",
"telephoneNumber" : "telephoneNumber"
},
"firstName" : "firstName",
"nationality (DEPRECATED)" : "nationality (DEPRECATED)",
"nationalInsuranceNumber" : "nationalInsuranceNumber",
"accountTypes" : [ { }, { } ]
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"lastName" : "lastName",
"corporateDetails" : {
"companyType" : "companyType",
"registrationNumber" : "registrationNumber",
"companyName" : "companyName"
},
"clientId" : "clientId",
"address" : {
"country" : "country",
"lineTwo" : "lineTwo",
"townCity" : "townCity",
"postcode" : "postcode",
"lineOne" : "lineOne",
"lineThree" : "lineThree",
"region" : "region"
},
"entityType" : "INDIVIDUAL",
"employmentDetails" : {
"jobTitle" : "jobTitle",
"employmentStatus" : "EMPLOYED_FULL_TIME"
},
"dateOfBirth" : "2000-01-23",
"title" : "MISS",
"contactDetails" : {
"emailAddress" : "emailAddress",
"telephoneNumber" : "telephoneNumber"
},
"firstName" : "firstName",
"nationalInsuranceNumber" : "nationalInsuranceNumber",
"accountTypes" : "GOJI_INVESTMENT",
"investmentDeclarationType" : "RESTRICTED"
}
Description
Creates a new investor and triggers a KYC check when applicable.
Request
Name | Type | Description | Required |
---|---|---|---|
title | string | The title of the investor. Possible values are: MISS MR MRS MS DR |
optional |
nationalities | array | The list of nationalities associated with an investor. More than one nationality can be specified for a given investor i.e. if they are dual-nationality. | optional |
nationalities[].nationality | string | The ISO country code. e.g GB. | optional |
firstName | string | The first name of the investor. | required |
lastName | string | The last name of the investor. | required |
dateOfBirth | string | The date of birth of the investor. Must be between 18 and 100 years old. | required |
address | ref | required | |
address.lineOne | string | Line one of the address. | |
address.lineTwo | string | Line two of the address. | |
address.lineThree | string | Line three of the address. | |
address.townCity | string | The town/city of the address. | |
address.region | string | The region of the address eg county. | |
address.postcode | string | The post code of the address. | |
address.country | string | The country of the investor's address in 3 character ISO code. Must be GBR to be valid for ISA subscriptions. If a different country code is supplied, current year subscriptions will be blocked. | |
contactDetails | ref | required | |
contactDetails.telephoneNumber | string | The telephone number. | |
contactDetails.emailAddress | string | The email address. | |
nationalInsuranceNumber | string | The national insurance number of the investor. Only required if opening an ISA. | optional |
employmentDetails | ref | optional | |
employmentDetails.jobTitle | string | The job title. | |
employmentDetails.employmentStatus | string | The employment status. Possible values are: EMPLOYED_FULL_TIME EMPLOYED_PART_TIME SELF_EMPLOYED UNEMPLOYED HOUSE_PERSON EDUCATION RETIRED NOT_WORKING_ILLNESS_DISABILITY |
|
entityType | string | Possible values are: INDIVIDUAL CORPORATE |
required |
investorDeclarationType | string | All investors must complete a declaration to confirm the kind of investor they are. Possible values are: RESTRICTED HIGH_NET_WORTH INVESTMENT_PROFESSIONAL SOPHISTICATED |
required |
accountTypes | array | Defaults to [GOJI_INVESTMENT, ISA] if not provided for a INDIVIDUAL entityType. Defaults to [GOJI_INVESTMENT] for CORPORATE entityType. ISA invalid for CORPORATE entityType | optional |
corporateDetails | ref | Only required for CORPORATE entityType. | optional |
corporateDetails.companyName | string | The company name. Only required for CORPORATE entityType. | |
corporateDetails.companyType | string | The company type. | |
corporateDetails.registrationNumber | string | The company registration number. |
Response
Name | Type | Description |
---|---|---|
clientId | string | The ID of the investor assigned by the platform. |
title | string | The title of the investor. Possible values are: MISS MR MRS MS DR |
firstName | string | The first name of the investor. |
lastName | string | The last name of the investor. |
dateOfBirth | string | The date of birth of the investor. |
address | ref | |
address.lineOne | string | Line one of the address. |
address.lineTwo | string | Line two of the address. |
address.lineThree | string | Line three of the address. |
address.townCity | string | The town/city of the address. |
address.region | string | The region of the address eg county. |
address.postcode | string | The post code of the address. |
address.country | string | The country of the investor's address in 3 character ISO code. Must be GBR to be valid for ISA subscriptions. If a different country code is supplied, current year subscriptions will be blocked. |
contactDetails | ref | |
contactDetails.telephoneNumber | string | The telephone number. |
contactDetails.emailAddress | string | The email address. |
nationalInsuranceNumber | string | The national insurance number of the investor. |
employmentDetails | ref | |
employmentDetails.jobTitle | string | The job title. |
employmentDetails.employmentStatus | string | The employment status. Possible values are: EMPLOYED_FULL_TIME EMPLOYED_PART_TIME SELF_EMPLOYED UNEMPLOYED HOUSE_PERSON EDUCATION RETIRED NOT_WORKING_ILLNESS_DISABILITY |
entityType | string | Possible values are: INDIVIDUAL CORPORATE |
accountTypes | string | Investor's account types Possible values are: GOJI_INVESTMENT ISA |
corporateDetails | ref | only required for CORPORATE entityType. |
corporateDetails.companyName | string | The company name. |
corporateDetails.companyType | string | The company type. |
corporateDetails.registrationNumber | string | The company registration number. |
investmentDeclarationType | string | The investor type declared by the investor Possible values are: RESTRICTED HIGH_NET_WORTH INVESTMENT_PROFESSIONAL SOPHISTICATED |
GET /platformApi/investors/{clientId}
GET /platformApi/investors/{clientId} HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"lastName" : "lastName",
"corporateDetails" : {
"companyType" : "companyType",
"registrationNumber" : "registrationNumber",
"companyName" : "companyName"
},
"clientId" : "clientId",
"address" : {
"country" : "country",
"lineTwo" : "lineTwo",
"townCity" : "townCity",
"postcode" : "postcode",
"lineOne" : "lineOne",
"lineThree" : "lineThree",
"region" : "region"
},
"entityType" : "INDIVIDUAL",
"employmentDetails" : {
"jobTitle" : "jobTitle",
"employmentStatus" : "EMPLOYED_FULL_TIME"
},
"dateOfBirth" : "2000-01-23",
"title" : "MISS",
"contactDetails" : {
"emailAddress" : "emailAddress",
"telephoneNumber" : "telephoneNumber"
},
"firstName" : "firstName",
"nationalInsuranceNumber" : "nationalInsuranceNumber",
"accountTypes" : "GOJI_INVESTMENT",
"investmentDeclarationType" : "RESTRICTED"
}
Description
Retrieves an investor.
Response
Name | Type | Description |
---|---|---|
clientId | string | The ID of the investor assigned by the platform. |
title | string | The title of the investor. Possible values are: MISS MR MRS MS DR |
firstName | string | The first name of the investor. |
lastName | string | The last name of the investor. |
dateOfBirth | string | The date of birth of the investor. |
address | ref | |
address.lineOne | string | Line one of the address. |
address.lineTwo | string | Line two of the address. |
address.lineThree | string | Line three of the address. |
address.townCity | string | The town/city of the address. |
address.region | string | The region of the address eg county. |
address.postcode | string | The post code of the address. |
address.country | string | The country of the investor's address in 3 character ISO code. Must be GBR to be valid for ISA subscriptions. If a different country code is supplied, current year subscriptions will be blocked. |
contactDetails | ref | |
contactDetails.telephoneNumber | string | The telephone number. |
contactDetails.emailAddress | string | The email address. |
nationalInsuranceNumber | string | The national insurance number of the investor. |
employmentDetails | ref | |
employmentDetails.jobTitle | string | The job title. |
employmentDetails.employmentStatus | string | The employment status. Possible values are: EMPLOYED_FULL_TIME EMPLOYED_PART_TIME SELF_EMPLOYED UNEMPLOYED HOUSE_PERSON EDUCATION RETIRED NOT_WORKING_ILLNESS_DISABILITY |
entityType | string | Possible values are: INDIVIDUAL CORPORATE |
accountTypes | string | Investor's account types Possible values are: GOJI_INVESTMENT ISA |
corporateDetails | ref | only required for CORPORATE entityType. |
corporateDetails.companyName | string | The company name. |
corporateDetails.companyType | string | The company type. |
corporateDetails.registrationNumber | string | The company registration number. |
investmentDeclarationType | string | The investor type declared by the investor Possible values are: RESTRICTED HIGH_NET_WORTH INVESTMENT_PROFESSIONAL SOPHISTICATED |
PUT /platformApi/investors/{clientId}
PUT /platformApi/investors/{clientId} HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"title" : "MISS",
"firstName" : "firstName",
"middleName" : "middleName",
"lastName" : "lastName",
"dateOfBirth" : "2000-01-23",
"address" : {
"country" : "country",
"lineTwo" : "lineTwo",
"townCity" : "townCity",
"postcode" : "postcode",
"lineOne" : "lineOne",
"lineThree" : "lineThree",
"region" : "region"
},
"contactDetails" : {
"emailAddress" : "emailAddress",
"telephoneNumber" : "telephoneNumber"
},
"nationalInsuranceNumber" : "nationalInsuranceNumber"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"lastName" : "lastName",
"corporateDetails" : {
"companyType" : "companyType",
"registrationNumber" : "registrationNumber",
"companyName" : "companyName"
},
"clientId" : "clientId",
"address" : {
"country" : "country",
"lineTwo" : "lineTwo",
"townCity" : "townCity",
"postcode" : "postcode",
"lineOne" : "lineOne",
"lineThree" : "lineThree",
"region" : "region"
},
"entityType" : "INDIVIDUAL",
"employmentDetails" : {
"jobTitle" : "jobTitle",
"employmentStatus" : "EMPLOYED_FULL_TIME"
},
"dateOfBirth" : "2000-01-23",
"title" : "MISS",
"contactDetails" : {
"emailAddress" : "emailAddress",
"telephoneNumber" : "telephoneNumber"
},
"firstName" : "firstName",
"nationalInsuranceNumber" : "nationalInsuranceNumber",
"accountTypes" : "GOJI_INVESTMENT",
"investmentDeclarationType" : "RESTRICTED"
}
Description
Updates an investor.
Request
Name | Type | Description | Required |
---|---|---|---|
title | string | The title of the investor. Possible values are: MISS MR MRS MS DR |
required |
firstName | string | The first name of the investor. | required |
middleName | string | The middle name of the investor. | |
lastName | string | The last name of the investor. | required |
dateOfBirth | string | The date of birth of the investor. Must be between 18 and 100 years old. | required |
address | ref | required | |
address.lineOne | string | Line one of the address. | |
address.lineTwo | string | Line two of the address. | |
address.lineThree | string | Line three of the address. | |
address.townCity | string | The town/city of the address. | |
address.region | string | The region of the address eg county. | |
address.postcode | string | The post code of the address. | |
address.country | string | The country of the investor's address in 3 character ISO code. Must be GBR to be valid for ISA subscriptions. If a different country code is supplied, current year subscriptions will be blocked. | |
contactDetails | ref | required | |
contactDetails.telephoneNumber | string | The telephone number. | |
contactDetails.emailAddress | string | The email address. | |
nationalInsuranceNumber | string | The national insurance number of the investor. Only required if opening an ISA. | optional |
Response
Name | Type | Description |
---|---|---|
clientId | string | The ID of the investor assigned by the platform. |
title | string | The title of the investor. Possible values are: MISS MR MRS MS DR |
firstName | string | The first name of the investor. |
middleName | string | The middle name of the investor. |
lastName | string | The last name of the investor. |
dateOfBirth | string | The date of birth of the investor. |
address | ref | |
address.lineOne | string | Line one of the address. |
address.lineTwo | string | Line two of the address. |
address.lineThree | string | Line three of the address. |
address.townCity | string | The town/city of the address. |
address.region | string | The region of the address eg county. |
address.postcode | string | The post code of the address. |
address.country | string | The country of the investor's address in 3 character ISO code. Must be GBR to be valid for ISA subscriptions. If a different country code is supplied, current year subscriptions will be blocked. |
contactDetails | ref | |
contactDetails.telephoneNumber | string | The telephone number. |
contactDetails.emailAddress | string | The email address. |
nationalInsuranceNumber | string | The national insurance number of the investor. |
employmentDetails | ref | |
employmentDetails.jobTitle | string | The job title. |
employmentDetails.employmentStatus | string | The employment status. Possible values are: EMPLOYED_FULL_TIME EMPLOYED_PART_TIME SELF_EMPLOYED UNEMPLOYED HOUSE_PERSON EDUCATION RETIRED NOT_WORKING_ILLNESS_DISABILITY |
entityType | string | Possible values are: INDIVIDUAL CORPORATE |
accountTypes | string | Investor's account types Possible values are: GOJI_INVESTMENT ISA |
corporateDetails | ref | only required for CORPORATE entityType. |
corporateDetails.companyName | string | The company name. |
corporateDetails.companyType | string | The company type. |
corporateDetails.registrationNumber | string | The company registration number. |
investmentDeclarationType | string | The investor type declared by the investor Possible values are: RESTRICTED HIGH_NET_WORTH INVESTMENT_PROFESSIONAL SOPHISTICATED |
PUT /platformApi/investors/{clientId}/updateInvestmentDeclarationAgreement
GET /platformApi/investors/{clientId}/updateInvestmentDeclarationAgreement HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"type": "SOPHISTICATED",
"dateTimeSigned": "2019-12-13T14:10:30.00Z",
"reason": "reason of the change"
}
HTTP/1.1 200 OK
Content-Type: application/json
"SUCCESS"
Description
Updates the investor's classification.
Request
Name | Type | Description | Required |
---|---|---|---|
type | string | The investor type declared by the investor. Possible values are: RESTRICTED HIGH_NET_WORTH INVESTMENT_PROFESSIONAL SOPHISTICATED |
required |
dateTimeSigned | string | The date and time the new declaration was been signed | required |
reason | string | The reason for the change. Up to 300 characters. | required |
Diligence
GET /platformApi/investors/{clientId}/kyc
GET /platformApi/investors/{clientId}/kyc HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"documentsRequired" : [ "PROOF_OF_ADDRESS", "PROOF_OF_IDENTITY" ],
"documentsPendingApproval" : [ "PROOF_OF_ADDRESS", "PROOF_OF_IDENTITY" ],
"documentsApproved" : [ "PROOF_OF_ADDRESS", "PROOF_OF_IDENTITY" ],
"lastFailure" : {
"rejectedDocuments" : [ {
"reason" : "reason",
"notes" : "notes",
"type" : "type"
}, {
"reason" : "reason",
"notes" : "notes",
"type" : "type"
} ],
"failureDate" : "failureDate"
},
"status" : "AWAITING_CREDIT_AGENCY_CHECK",
"clientId" : "GOJI-1234"
}
Description
Retrieves an investor's KYC details.
Response
Name | Type | Description |
---|---|---|
clientId | string | The clientId of the investor |
status | string | The KYC details of the investor. Possible values are: AWAITING_CREDIT_AGENCY_CHECK ELECTRONICALLY_VERIFIED ENHANCED_VERIFICATION_REQUIRED ENHANCED_VERIFIED |
documentsRequired.[] | array | Required documents for upload. Possible values are: PROOF_OF_ADDRESS PROOF_OF_IDENTITY COVI PASS_CERTIFICATE RISK_ASSESSMENT CLIENT_QUESTIONNAIRE KYB_DOCUMENT |
documentsPendingApproval.[] | array | Uploaded documents that require approving. Possible values are: PROOF_OF_ADDRESS PROOF_OF_IDENTITY COVI PASS_CERTIFICATE RISK_ASSESSMENT CLIENT_QUESTIONNAIRE KYB_DOCUMENT |
documentsApproved.[] | array | Approved documents. Possible values are: PROOF_OF_ADDRESS PROOF_OF_IDENTITY COVI PASS_CERTIFICATE RISK_ASSESSMENT CLIENT_QUESTIONNAIRE KYB_DOCUMENT |
{}.lastFailure | ref | |
{}.lastFailure.failureDate | string | Date of rejection |
{}.lastFailure.rejectedDocuments | array | The rejected documents. |
GET /platformApi/investors/{clientId}/kyb
GET /platformApi/investors/{clientId}/kyb HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"documentsRequired" : [ "PROOF_OF_ADDRESS", "PROOF_OF_IDENTITY" ],
"documentsApproved" : [ ],
"requirements" : [
{
"requirementType" : "",
"status" : "",
"checkType" : ""
}
]
"overallStatus" : "DOCUMENTS_REQUIRED",
"status" : "DOCUMENTS_REQUIRED",
"clientId" : "GOJI-1234"
}
Description
Retrieves an investor's KYB status - this is only applicable for corporates.
Response
Name | Type | Description |
---|---|---|
clientId | string | The clientId of the investor |
status | string | The KYB status of the investor. Possible values are: DOCUMENTS_REQUIRED VERIFIED |
overallStatus | string | The overall KYB status of the investor. Possible values are: IN_PROGRESS PASSED DECLINED ` |
documentsRequired.[] | array | Required documents for upload. Possible values are: PROOF_OF_ADDRESS PROOF_OF_IDENTITY COVI PASS_CERTIFICATE RISK_ASSESSMENT CLIENT_QUESTIONNAIRE KYB_DOCUMENT |
documentsPendingApproval.[] | array | Uploaded documents that require approving. Possible values are: PROOF_OF_ADDRESS PROOF_OF_IDENTITY COVI PASS_CERTIFICATE RISK_ASSESSMENT CLIENT_QUESTIONNAIRE KYB_DOCUMENT |
documentsApproved.[] | array | Approved documents. Possible values are: PROOF_OF_ADDRESS PROOF_OF_IDENTITY COVI PASS_CERTIFICATE RISK_ASSESSMENT CLIENT_QUESTIONNAIRE KYB_DOCUMENT |
requirements | ref | |
requirements.[].{}.requirementType | string | |
requirements.[].{}.status | string | Possible values are: IN_PROGRESS PASSED DECLINED |
requirements.[].{}.checkType | string | Possible values are: IDENTITY_CHECK MANUAL_IDENTITY_CHECK DEPOSIT_LIMIT_CHECK PEP_CHECK SANCTIONS_CHECK BWA_CHECK MANUAL_VERIFICATION_CHECK NO_WORKFLOW_CREATED_CHECK NONE |
POST /platformApi/investors/{clientId}/kyc/documents
POST /platformApi/investors/{clientId}/kyc/documents HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"documents" : [ {
"fileName" : "fileName",
"data" : "data"
}, {
"fileName" : "fileName",
"data" : "data"
} ]
}
HTTP/1.1 200 OK
Content-Type: application/json
""
Description
Add an investor's KYC/KYB documents.
Request
Name | Type | Description | Required |
---|---|---|---|
documents | array | The documents. | required |
documents[].fileName | string | The file name eg passport.pdf. | required |
documents[].data | string | The file to upload Base64 encoded. | required |
GET /reports/investor/kyc
GET /reports/investor/kyc?id={clientId}&id={clientId} HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"documentsRequired" : [ "PROOF_OF_ADDRESS", "PROOF_OF_IDENTITY" ],
"documentsPendingApproval" : [ "PROOF_OF_ADDRESS", "PROOF_OF_IDENTITY" ],
"documentsApproved" : [ "PROOF_OF_ADDRESS", "PROOF_OF_IDENTITY" ],
"lastFailure" : {
"rejectedDocuments" : [ {
"reason" : "reason",
"notes" : "notes",
"type" : "type"
}, {
"reason" : "reason",
"notes" : "notes",
"type" : "type"
} ],
"failureDate" : "failureDate"
},
"status" : "AWAITING_CREDIT_AGENCY_CHECK",
"clientId" : "GOJI-1234"
},
{
"documentsRequired" : [ ],
"documentsPendingApproval" : [ ],
"documentsApproved" : [ "PROOF_OF_ADDRESS", "PROOF_OF_IDENTITY" ],
"lastFailure" : {
"rejectedDocuments" : [ {
"reason" : "reason",
"notes" : "notes",
"type" : "type"
}, {
"reason" : "reason",
"notes" : "notes",
"type" : "type"
} ],
"failureDate" : "failureDate"
},
"status" : "VERIFIED",
"clientId" : "GOJI-4567"
}
]
Description
Retrieves investor's KYC details. Intended for use in combination with GET /investorIds
to fetch large numbers of investor kyc statuses for purposes such as reconciliation.
The id
query parameter may repeated up to 100 times. If more than 100 ids are specified, a 400
error is returned.
If no id
query parameters are specified, an empty array is returned.
Response
Name | Type | Description |
---|---|---|
[].clientId | string | The clientId of the investor |
[].status | string | The KYC details of the investor. Possible values are: AWAITING_CREDIT_AGENCY_CHECK ELECTRONICALLY_VERIFIED ENHANCED_VERIFICATION_REQUIRED ENHANCED_VERIFIED |
[].documentsRequired.[] | array | Required documents for upload. Possible values are: PROOF_OF_ADDRESS PROOF_OF_IDENTITY COVI PASS_CERTIFICATE RISK_ASSESSMENT CLIENT_QUESTIONNAIRE KYB_DOCUMENT |
[].documentsPendingApproval.[] | array | Uploaded documents that require approving. Possible values are: PROOF_OF_ADDRESS PROOF_OF_IDENTITY COVI PASS_CERTIFICATE RISK_ASSESSMENT CLIENT_QUESTIONNAIRE KYB_DOCUMENT |
[].documentsApproved.[] | array | Approved documents. Possible values are: PROOF_OF_ADDRESS PROOF_OF_IDENTITY COVI PASS_CERTIFICATE RISK_ASSESSMENT CLIENT_QUESTIONNAIRE KYB_DOCUMENT |
[].{}.lastFailure | ref | |
[].{}.lastFailure.failureDate | string | Date of rejection |
[].{}.lastFailure.rejectedDocuments | array | The rejected documents. |
GET /reports/investor/kyb
GET /reports/investor/kyb?id={clientId}&id={clientId} HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"documentsRequired" : [ "PROOF_OF_ADDRESS", "PROOF_OF_IDENTITY" ],
"documentsApproved" : [ ],
"requirements" : [
{
"requirementType" : "",
"status" : "",
"checkType" : ""
}
]
"overallStatus" : "DOCUMENTS_REQUIRED",
"status" : "DOCUMENTS_REQUIRED",
"clientId" : "GOJI-1234"
},
{
"documentsRequired" : [ ],
"documentsApproved" : [ "PROOF_OF_ADDRESS", "PROOF_OF_IDENTITY" ],
"requirements" : [
{
"requirementType" : "",
"status" : "",
"checkType" : ""
}
]
"overallStatus" : "VERIFIED",
"status" : "VERIFIED",
"clientId" : "GOJI-4567"
}
]
Description
Retrieves corporate investors KYB details. Intended for use in combination with GET /investorIds
to fetch large numbers of corporate kyb statuses for purposes such as reconciliation.
The id
query parameter may repeated up to 100 times. If more than 100 ids are specified, a 400
error is returned.
If no id
query parameters are specified, an empty array is returned.
Response
Name | Type | Description |
---|---|---|
[].clientId | string | The clientId of the investor |
[].status | string | The KYB status of the investor. Possible values are: DOCUMENTS_REQUIRED VERIFIED |
[].overallStatus | string | The overall KYB status of the investor. Possible values are: IN_PROGRESS PASSED DECLINED ` |
[].documentsRequired.[] | array | Required documents for upload. Possible values are: PROOF_OF_ADDRESS PROOF_OF_IDENTITY COVI PASS_CERTIFICATE RISK_ASSESSMENT CLIENT_QUESTIONNAIRE KYB_DOCUMENT |
[].documentsPendingApproval.[] | array | Uploaded documents that require approving. Possible values are: PROOF_OF_ADDRESS PROOF_OF_IDENTITY COVI PASS_CERTIFICATE RISK_ASSESSMENT CLIENT_QUESTIONNAIRE KYB_DOCUMENT |
[].documentsApproved.[] | array | Approved documents. Possible values are: PROOF_OF_ADDRESS PROOF_OF_IDENTITY COVI PASS_CERTIFICATE RISK_ASSESSMENT CLIENT_QUESTIONNAIRE KYB_DOCUMENT |
[].requirements | ref | |
[].requirements.[].{}.requirementType | string | |
[].requirements.[].{}.status | string | Possible values are: IN_PROGRESS PASSED DECLINED |
[].requirements.[].{}.checkType | string | Possible values are: IDENTITY_CHECK MANUAL_IDENTITY_CHECK DEPOSIT_LIMIT_CHECK PEP_CHECK SANCTIONS_CHECK BWA_CHECK MANUAL_VERIFICATION_CHECK NO_WORKFLOW_CREATED_CHECK NONE |
ISAs
Opening an Innovative Finance ISA
An Investor can open an ISA either as part of their initial registration, or as a second step later on.
To open an ISA, the investor has to provide their National Insurance Number and agree to an ISA declaration. Once this is completed, Goji will validate the data and check that the investor is eligible for an ISA. If these checks are successful, the ISA is opened immediately and isavailable to deposit funds into.
ISA Transfers In
Investors can request to transfer funds from other ISAs they hold with other providers to their Goji ISA.
Investment Managers can embed a javascript widget into their web platform to guide investors through completing the form. Once the form is complete, they download and sign the form and return it to Goji. Goji liaises with the existing manager to arrange transfer of the funds.
Once the funds are received, they are credited to the investor's accounts and can be invested as normal.
The Goji Transfer In application exposes an ISA transfer in form intended for an investor to complete.
It supports ISA transfers of the following types:
- Cash
- Stocks and Shares
- Innovative Finance
Workflow
The investor creates a transfer in request by using the widget that we provide. You should embed this in your site according to the instructions below.
Once the form has been completed the investor will download and print the form (or optionally receive it in the mail) and return it to Goji via a PO Box.
Goji will liaise with the existing ISA manager to arrange the transfer.
Once the funds have been received they will be credited to the investor's ISA balance. An email is sent to the investor and a webhook fired.
In the case where the received funds would exceed the current year's allowance, then the surplus will be credited to their standard account.
Embedding the ISA Transfer In Widget
The Goji Transfer In application is a JavaScript component which can be integrated in a number of ways. For each possible way of integrating with the application, you will need to first obtain a one time security token.
Obtaining the uiData and the security token
To obtain the application's asset URLs one time security token, make an authenticated request to the following URL:
GET /investors/{investorId}/transferIn/uiData
The response will be structured like so:
{
"apiUrl": "https://api.goji.investments",
"styleSrc": "https://goji-assets-domain/transfer-in/assets/goji-transfer-in-123456.css",
"scriptSrc": "https://goji-assets-domain/transfer-in/assets/goji-transfer-in-123456.js",
"hostedUrl" : "https://api.goji.investments/transferIn/application/?token={oneTimeToken}&investorId={investorId}",
"investorId": "investorId",
"token": "oneTimeToken"
}
With this data you are then able to bootstrap the application using any of the methods outlined below.
If your front-end application uses Ember, using as an Ember Addon makes sense. Alternatively, the suggested approach would be to embed as a standalone JavaScript component on your existing pages - this enables full control over the application's styling.
Application Arguments
Four arguments are required for the application to function fully, these are described below:
apiUrl
: [Specified in the uiData response] The API URL the front-end application should use when interacting with the Goji serviceinvestorId
: [Specified in the uiData response] The ID of the active investortoken
: [Specified in the uiData response] The security token used to authenticate the active investor's requestsaccountUrl
: The URL used when an investor chooses to return to their account page having successfully completed a transfer in request
Using as a Standalone JavaScript Component
To include the application in your existing page as a JavaScript component, you will need to do the following:
1). In the body of your HTML include the following:
<div id="goji-application">
<div data-component="goji-transfer-in"
data-attrs='{
"apiUrl": "<uiData.apiUrl>",
"accountUrl": "<platform-manage-account-url>",
"investorId": "<uiData.investorId>",
"token": "<uiData.token>"
}'>
</div>
</div>
2). Extract the JavaScript asset's URL from the request above and include it in your page.
Please note that the inclusion of the script import must be made after inclusion of the HTML in the previous step.
e.g <script src="{{uiData.scriptSrc}}"></script>
Optionally do the same for the CSS file if you wish to have a basic layout.
e.g <link rel="stylesheet" href="{{uiData.styleSrc}}">
3). The component will then render when the document's body has fully loaded.
GET /platformApi/isaDeclaration
GET /platformApi/isaDeclaration HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"declaration" : "declaration",
"version" : "version"
}
Description
Loads the current ISA declaration.
Response
Name | Type | Description |
---|---|---|
declaration | string | The ISA declaration in HTML format. |
version | string | The version of the ISA declaration. |
POST /platformApi/investors/{clientId}/accounts/ISA
POST /platformApi/investors/{clientId}/accounts/ISA HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"nationalInsuranceNumber" : "nationalInsuranceNumber"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"lastName" : "lastName",
"corporateDetails" : {
"companyType" : "companyType",
"registrationNumber" : "registrationNumber",
"companyName" : "companyName"
},
"clientId" : "clientId",
"address" : {
"country" : "country",
"lineTwo" : "lineTwo",
"townCity" : "townCity",
"postcode" : "postcode",
"lineOne" : "lineOne",
"lineThree" : "lineThree",
"region" : "region"
},
"entityType" : "INDIVIDUAL",
"employmentDetails" : {
"jobTitle" : "jobTitle",
"employmentStatus" : "EMPLOYED_FULL_TIME"
},
"dateOfBirth" : "2000-01-23",
"title" : "MISS",
"contactDetails" : {
"emailAddress" : "emailAddress",
"telephoneNumber" : "telephoneNumber"
},
"firstName" : "firstName",
"nationalInsuranceNumber" : "nationalInsuranceNumber",
"accountTypes" : "GOJI_INVESTMENT",
"investmentDeclarationType" : "RESTRICTED"
}
Description
Add an ISA account.
Request
Name | Type | Description | Required |
---|---|---|---|
nationalInsuranceNumber | string | The national insurance number of the investor. | required |
Response
Name | Type | Description |
---|---|---|
clientId | string | The ID of the investor assigned by the platform. |
title | string | The title of the investor. Possible values are: MISS MR MRS MS DR |
firstName | string | The first name of the investor. |
lastName | string | The last name of the investor. |
dateOfBirth | string | The date of birth of the investor. |
address | ref | |
address.lineOne | string | Line one of the address. |
address.lineTwo | string | Line two of the address. |
address.lineThree | string | Line three of the address. |
address.townCity | string | The town/city of the address. |
address.region | string | The region of the address eg county. |
address.postcode | string | The post code of the address. |
address.country | string | The country of the investor's address in 3 character ISO code. Must be GBR to be valid for ISA subscriptions. If a different country code is supplied, current year subscriptions will be blocked. |
contactDetails | ref | |
contactDetails.telephoneNumber | string | The telephone number. |
contactDetails.emailAddress | string | The email address. |
nationalInsuranceNumber | string | The national insurance number of the investor. |
employmentDetails | ref | |
employmentDetails.jobTitle | string | The job title. |
employmentDetails.employmentStatus | string | The employment status. Possible values are: EMPLOYED_FULL_TIME EMPLOYED_PART_TIME SELF_EMPLOYED UNEMPLOYED HOUSE_PERSON EDUCATION RETIRED NOT_WORKING_ILLNESS_DISABILITY |
entityType | string | Possible values are: INDIVIDUAL CORPORATE |
accountTypes | string | Investor's account types Possible values are: GOJI_INVESTMENT ISA |
corporateDetails | ref | only required for CORPORATE entityType. |
corporateDetails.companyName | string | The company name. |
corporateDetails.companyType | string | The company type. |
corporateDetails.registrationNumber | string | The company registration number. |
investmentDeclarationType | string | The investor type declared by the investor Possible values are: RESTRICTED HIGH_NET_WORTH INVESTMENT_PROFESSIONAL SOPHISTICATED |
GET /platformApi/investors/{clientId}/isa
GET /platformApi/investors/{clientId}/isa HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"totalInterestReceived" : {
"amount" : 123.45,
"currency" : "currency"
},
"remainingSubscriptionAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateCreated" : "2000-01-23",
"remainingAdditionalPermittedSubscriptions" : {
"amount" : 123.45,
"currency" : "currency"
},
"cashTransactions" : [ {
"amount" : {
"amount" : 123.45,
"currency" : "currency"
},
"clientTransactionId" : "clientTransactionId",
"type" : { },
"dateTimeOfTransaction" : "2000-01-23T04:56:07.000+00:00"
}, {
"amount" : {
"amount" : 123.45,
"currency" : "currency"
},
"clientTransactionId" : "clientTransactionId",
"type" : { },
"dateTimeOfTransaction" : "2000-01-23T04:56:07.000+00:00"
} ],
"subscriptionStatus" : "VALID",
"totalIsaBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalInterestReceivedThisTaxYear" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalCashBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"investments" : [ {
"clientInvestmentId" : "clientInvestmentId",
"expectedInterest" : {
"amount" : 123.45,
"currency" : "currency"
},
"termOfInvestment" : 2.15,
"originalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"reinvestments" : [ {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
}, {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
} ],
"id" : "id",
"investmentType" : "LOAN",
"dateTimeOfInvestment" : "2000-01-23T04:56:07.000+00:00",
"repayments" : [ {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
}, {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
} ]
}, {
"clientInvestmentId" : "clientInvestmentId",
"expectedInterest" : {
"amount" : 123.45,
"currency" : "currency"
},
"termOfInvestment" : 2.15,
"originalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"reinvestments" : [ {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
}, {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
} ],
"id" : "id",
"investmentType" : "LOAN",
"dateTimeOfInvestment" : "2000-01-23T04:56:07.000+00:00",
"repayments" : [ {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
}, {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
} ]
} ],
"coolingOffPeriodEnds" : "2000-01-23",
"totalInvestedBalance" : {
"amount" : 123.45,
"currency" : "currency"
}
}
Description
Returns details of the investor's ISA if applicable.
Response
Name | Type | Description |
---|---|---|
totalIsaBalance | ref | The total current balance in the ISA, inclusive of all years. |
totalIsaBalance.amount | number | The amount |
totalIsaBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
remainingSubscriptionAmount | ref | The amount remaining that can be invested in the ISA in the current tax year. |
remainingSubscriptionAmount.amount | number | The amount |
remainingSubscriptionAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalCashBalance | ref | The total amount of cash in the ISA that is not currently invested. |
totalCashBalance.amount | number | The amount |
totalCashBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
dateCreated | string | Date the ISA was created |
coolingOffPeriodEnds | string | Date the cooling off period ends |
investments | array | The list of investments that make up the ISA |
investments[].id | string | The ID of the loan defined by Goji |
investments[].clientInvestmentId | string | The ID of the loan defined by the P2P platform |
investments[].investmentType | string | The type of the investment. Currently only loans are supported. Possible values are: LOAN |
investments[].originalAmount | ref | The original capital amount of the investment. |
investments[].expectedInterest | ref | The expected interest to receive over the life of the investment. |
investments[].dateTimeOfInvestment | string | The date and time the investment started |
investments[].termOfInvestment | number | The term of the investment in months |
investments[].repayments | array | Repayments that have been made against the investment by the borrower that were not reinvested automatically. |
investments[].reinvestments | array | Repayments that have been made against the instruments by the borrower that were reinvested automatically. |
cashTransactions | array | Cash transactions on the ISA |
cashTransactions[].clientTransactionId | string | The ID of the transaction assigned by the P2P platform |
cashTransactions[].amount | ref | The amount of the cash transaction |
cashTransactions[].dateTimeOfTransaction | string | The date and time of the transaction |
cashTransactions[].type | ref | Indicates the type of the cash transaction. |
totalInterestReceived | ref | |
totalInterestReceived.amount | number | The amount |
totalInterestReceived.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalInterestReceivedThisTaxYear | ref | |
totalInterestReceivedThisTaxYear.amount | number | The amount |
totalInterestReceivedThisTaxYear.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalInvestedBalance | ref | |
totalInvestedBalance.amount | number | The amount |
totalInvestedBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
subscriptionStatus | string | Indicates if anything is preventing further subscriptions to this ISA. Possible values are: VALID INVALID_CROWN_DEPENDENCY INVALID_NON_UK INVALID_LOCKED_DEATH INVALID_LOCKED_BANKRUPTCY UNLOCKED INVALID_CANCELLED |
remainingAdditionalPermittedSubscriptions | ref | The remaining amount that can be subscribed as an Additional Permitted Subscription. |
remainingAdditionalPermittedSubscriptions.amount | number | The amount |
remainingAdditionalPermittedSubscriptions.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
GET /platformApi/investors/{clientId}/isa/subscriptionStatus
GET /platformApi/investors/{clientId}/isa/subscriptionStatus HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"subscriptionStatus" : "VALID"
}
Description
Used to retrieve the subscription status of an investor's ISA.
Most useful for checking if the investor has entered a tax year break status whereby subscriptions are no longer allowed until redeclaration has taken place.
Tax Year Breaks
A tax year break occurs when an investor has not subscribed for a whole tax year and is therefore required to re-open an ISA before they can make further subscriptions.
For example, Investor A opens an ISA on 1st April 2016 (ie in the 2015/16 tax year) and subscribes £10,000.
The investor does not subscribe between 6th April 2016 and 5th April 2017.
This is considered a tax year break and so the investor will have to re-open their ISA to subscribe in the 2017/18 tax year.
To re-open the ISA, the investor has to agree to the ISA declaration.
Response
Name | Type | Description |
---|---|---|
subscriptionStatus | string | Indicates if anything is preventing further subscriptions to this ISA. Possible values are: VALID INVALID_CROWN_DEPENDENCY INVALID_NON_UK INVALID_LOCKED_DEATH INVALID_LOCKED_BANKRUPTCY UNLOCKED INVALID_CANCELLED |
PUT /platformApi/investors/{investorId}/isa/subscriptionStatus
PUT /platformApi/investors/{investorId}/isa/status HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"dateTime" : "2000-01-23T04:56:07.000+00:00",
"isaSubscriptionStatus" : "VALID"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"remainingSubscriptionAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalIsaBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalCashBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalAmountInvested" : {
"amount" : 123.45,
"currency" : "currency"
}
}
Description
Updates the status of an investor's ISA. This can aid testing by placing an ISA into an invalid status.
Request
Name | Type | Description | Required |
---|---|---|---|
dateTime | string | The date time the residual income payment was received. | required |
isaSubscriptionStatus | string | The status to change this ISA to. Possible values are: VALID INVALID_CROWN_DEPENDENCY INVALID_NON_UK INVALID_LOCKED_DEATH INVALID_LOCKED_BANKRUPTCY UNLOCKED INVALID_CANCELLED |
required |
Response
Name | Type | Description |
---|---|---|
totalCashBalance | ref | The total amount of cash in the ISA that is not currently invested. |
totalCashBalance.amount | number | The amount |
totalCashBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalAmountInvested | ref | The total amount of the ISA that is currently invested. |
totalAmountInvested.amount | number | The amount |
totalAmountInvested.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalIsaBalance | ref | The total current balance in the ISA, inclusive of all years. |
totalIsaBalance.amount | number | The amount |
totalIsaBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
remainingSubscriptionAmount | ref | The amount remaining that can be invested in the ISA in the current tax year. |
remainingSubscriptionAmount.amount | number | The amount |
remainingSubscriptionAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
POST /platformApi/investors/{investorId}/isa/declaration/agreement
POST /platformApi/investors/{investorId}/isa/declaration/agreement HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
""
HTTP/1.1 200 OK
Content-Type: application/json
{
"totalInterestReceived" : {
"amount" : 123.45,
"currency" : "currency"
},
"remainingSubscriptionAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateCreated" : "2000-01-23",
"remainingAdditionalPermittedSubscriptions" : {
"amount" : 123.45,
"currency" : "currency"
},
"cashTransactions" : [ {
"amount" : {
"amount" : 123.45,
"currency" : "currency"
},
"clientTransactionId" : "clientTransactionId",
"type" : { },
"dateTimeOfTransaction" : "2000-01-23T04:56:07.000+00:00"
}, {
"amount" : {
"amount" : 123.45,
"currency" : "currency"
},
"clientTransactionId" : "clientTransactionId",
"type" : { },
"dateTimeOfTransaction" : "2000-01-23T04:56:07.000+00:00"
} ],
"subscriptionStatus" : "VALID",
"totalIsaBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalInterestReceivedThisTaxYear" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalCashBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"investments" : [ {
"clientInvestmentId" : "clientInvestmentId",
"expectedInterest" : {
"amount" : 123.45,
"currency" : "currency"
},
"termOfInvestment" : 2.15,
"originalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"reinvestments" : [ {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
}, {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
} ],
"id" : "id",
"investmentType" : "LOAN",
"dateTimeOfInvestment" : "2000-01-23T04:56:07.000+00:00",
"repayments" : [ {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
}, {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
} ]
}, {
"clientInvestmentId" : "clientInvestmentId",
"expectedInterest" : {
"amount" : 123.45,
"currency" : "currency"
},
"termOfInvestment" : 2.15,
"originalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"reinvestments" : [ {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
}, {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
} ],
"id" : "id",
"investmentType" : "LOAN",
"dateTimeOfInvestment" : "2000-01-23T04:56:07.000+00:00",
"repayments" : [ {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
}, {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
} ]
} ],
"coolingOffPeriodEnds" : "2000-01-23",
"totalInvestedBalance" : {
"amount" : 123.45,
"currency" : "currency"
}
}
Description
Used to record an investor agreeing to the ISA declaration after the ISA has been opened. Can be used to re-enable ISAs in a tax year break status for example.
Response
Name | Type | Description |
---|---|---|
totalIsaBalance | ref | The total current balance in the ISA, inclusive of all years. |
totalIsaBalance.amount | number | The amount |
totalIsaBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
remainingSubscriptionAmount | ref | The amount remaining that can be invested in the ISA in the current tax year. |
remainingSubscriptionAmount.amount | number | The amount |
remainingSubscriptionAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalCashBalance | ref | The total amount of cash in the ISA that is not currently invested. |
totalCashBalance.amount | number | The amount |
totalCashBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
dateCreated | string | Date the ISA was created |
coolingOffPeriodEnds | string | Date the cooling off period ends |
investments | array | The list of investments that make up the ISA |
investments[].id | string | The ID of the loan defined by Goji |
investments[].clientInvestmentId | string | The ID of the loan defined by the P2P platform |
investments[].investmentType | string | The type of the investment. Currently only loans are supported. Possible values are: LOAN |
investments[].originalAmount | ref | The original capital amount of the investment. |
investments[].expectedInterest | ref | The expected interest to receive over the life of the investment. |
investments[].dateTimeOfInvestment | string | The date and time the investment started |
investments[].termOfInvestment | number | The term of the investment in months |
investments[].repayments | array | Repayments that have been made against the investment by the borrower that were not reinvested automatically. |
investments[].reinvestments | array | Repayments that have been made against the instruments by the borrower that were reinvested automatically. |
cashTransactions | array | Cash transactions on the ISA |
cashTransactions[].clientTransactionId | string | The ID of the transaction assigned by the P2P platform |
cashTransactions[].amount | ref | The amount of the cash transaction |
cashTransactions[].dateTimeOfTransaction | string | The date and time of the transaction |
cashTransactions[].type | ref | Indicates the type of the cash transaction. |
totalInterestReceived | ref | |
totalInterestReceived.amount | number | The amount |
totalInterestReceived.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalInterestReceivedThisTaxYear | ref | |
totalInterestReceivedThisTaxYear.amount | number | The amount |
totalInterestReceivedThisTaxYear.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalInvestedBalance | ref | |
totalInvestedBalance.amount | number | The amount |
totalInvestedBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
subscriptionStatus | string | Indicates if anything is preventing further subscriptions to this ISA. Possible values are: VALID INVALID_CROWN_DEPENDENCY INVALID_NON_UK INVALID_LOCKED_DEATH INVALID_LOCKED_BANKRUPTCY UNLOCKED INVALID_CANCELLED |
remainingAdditionalPermittedSubscriptions | ref | The remaining amount that can be subscribed as an Additional Permitted Subscription. |
remainingAdditionalPermittedSubscriptions.amount | number | The amount |
remainingAdditionalPermittedSubscriptions.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
GET /platformApi/investors/{clientId}/accounts/ISA/transferIn/UI
GET /platformApi/investors/{clientId}/accounts/ISA/transferIn/UI HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"apiUrl" : "apiUrl",
"styleSrc" : "styleSrc",
"scriptSrc" : "scriptSrc",
"token" : "token"
}
Description
Retrieve data to initialise the transfer in widget. See the documentation for details on how to embed the widget.
Response
Name | Type | Description |
---|---|---|
apiUrl | string | |
styleSrc | string | |
scriptSrc | string | |
token | string |
GET /platformApi/transferIn/open/summary
GET /platformApi/transferIn/open/summary HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
[ {
"totalTransferAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"transferInDate" : "2000-01-23",
"clientId" : "clientId",
"repairAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"bankReference" : "bankReference",
"fundsTransferType" : "fundsTransferType",
"id" : "id"
} ]
Description
Returns аll opened transfers in.
Response
Name | Type | Description |
---|---|---|
[].id | string | The ID of the transfer in |
[].clientId | string | The ID of client |
[].totalTransferAmount | ref | The total amount being transferred |
[].totalTransferAmount.amount | number | The amount |
[].totalTransferAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
[].repairAmount | ref | The repair amount |
[].repairAmount.amount | number | The amount |
[].repairAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
[].fundsTransferType | string | The funds transfer type |
[].bankReference | string | The bank reference |
[].transferInDate | string | The date stated on the transfer history form |
GET /platformApi/investors/{clientId}/transferOut
GET /platformApi/investors/{clientId}/transferOut HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
[ {
"dateFundsTransferred" : "2000-01-23",
"amountToTransfer" : {
"amount" : 123.45,
"currency" : "currency"
},
"isaManager" : {
"address" : {
"country" : "country",
"lineTwo" : "lineTwo",
"townCity" : "townCity",
"postcode" : "postcode",
"lineOne" : "lineOne",
"lineThree" : "lineThree",
"region" : "region"
},
"bankReference" : "bankReference",
"name" : "name",
"accountNumber" : "accountNumber",
"sortCode" : "sortCode"
},
"transferDetails" : {
"transferCurrentYearSubscriptions" : true,
"transferAllPriorYearSubscriptions" : true,
"transferAll" : true,
"transferDateFromNewIsaManager" : "2000-01-23",
"transferPriorYearSubscriptions" : true,
"priorYearAmountToTransfer" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTAFReceived" : "2000-01-23"
},
"id" : "id",
"amountToTransferAlert" : true
} ]
Description
Lists transfers out for the investor.
Response
Name | Type | Description |
---|---|---|
[].id | string | The ID Goji assigns to the Transfer Out request. |
[].isaManager | ref | |
[].isaManager.name | string | The name of the ISA manager. |
[].address.lineOne | string | Line one of the address. |
[].address.lineTwo | string | Line two of the address. |
[].address.lineThree | string | Line three of the address. |
[].address.townCity | string | The town/city of the address. |
[].address.region | string | The region of the address eg county. |
[].address.postcode | string | The post code of the address. |
[].address.country | string | The country of the investor's address in 3 character ISO code. Must be GBR to be valid for ISA subscriptions. If a different country code is supplied, current year subscriptions will be blocked. |
[].isaManager.accountNumber | string | The account number to transfer the funds to. |
[].isaManager.sortCode | string | The sort code to transfer the funds to. |
[].isaManager.bankReference | string | The reference to use for the bank transfer. |
[].transferDetails | ref | |
[].transferDetails.dateTAFReceived | string | The date the transfer authority form was received from the ISA manager. |
[].transferDetails.transferDateFromNewIsaManager | string | The date the ISA manager has said they will accept subscriptions from. |
[].transferDetails.transferCurrentYearSubscriptions | boolean | True if current year subscriptions should be transferred. |
[].transferDetails.transferPriorYearSubscriptions | boolean | True if prior year subscriptions should be transferred. |
[].transferDetails.transferAllPriorYearSubscriptions | boolean | True if all prior year subscriptions should be transferred. |
[].transferDetails.transferAll | boolean | True if all ISA subscriptions should be transferred. |
[].priorYearAmountToTransfer.amount | number | The amount |
[].priorYearAmountToTransfer.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
[].amountToTransfer | ref | |
[].amountToTransfer.amount | number | The amount |
[].amountToTransfer.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
[].amountToTransferAlert | boolean | True if the amount requested to be transferred cannot be satisfied. If this is true, the transfer cannot be processed until it is resolved. |
[].dateFundsTransferred | string | The date the funds were transferred to the new ISA manager. |
GET /platformApi/investors/{clientId}/transferIn
GET /platformApi/investors/{clientId}/transferIn HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
[ {
"totalTransferAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"transferInDate" : "2000-01-23",
"clientId" : "clientId",
"repairAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"bankReference" : "bankReference",
"fundsTransferType" : "fundsTransferType",
"id" : "id"
} ]
Description
Lists transfers in for the investor.
Response
Name | Type | Description |
---|---|---|
[].id | string | The ID of the transfer in |
[].clientId | string | The ID of client |
[].totalTransferAmount | ref | The total amount being transferred |
[].totalTransferAmount.amount | number | The amount |
[].totalTransferAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
[].repairAmount | ref | The repair amount |
[].repairAmount.amount | number | The amount |
[].repairAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
[].fundsTransferType | string | The funds transfer type |
[].bankReference | string | The bank reference |
[].transferInDate | string | The date stated on the transfer history form |
GET /platformApi/investors/{clientId}/transferIn/{transferInId}
GET /platformApi/investors/{clientId}/transferIn/{transferInId} HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"totalTransferAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"transferInDate" : "2000-01-23",
"clientId" : "clientId",
"repairAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"bankReference" : "bankReference",
"fundsTransferType" : "fundsTransferType",
"id" : "id"
}
Description
Gets a specific transfer in for the investor.
Response
Name | Type | Description |
---|---|---|
id | string | The ID of the transfer in |
clientId | string | The ID of client |
totalTransferAmount | ref | The total amount being transferred |
totalTransferAmount.amount | number | The amount |
totalTransferAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
repairAmount | ref | The repair amount |
repairAmount.amount | number | The amount |
repairAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
fundsTransferType | string | The funds transfer type |
bankReference | string | The bank reference |
transferInDate | string | The date stated on the transfer history form |
GET /transferIn/investors/{clientId}/open
GET /transferIn/investors/{clientId}/open HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
[ {
"isaManagerName" : "isaManagerName",
"transferSummary" : {
"previousYearsSubscriptionAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalIsaTransferAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"repairAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"currentYearSubscriptionAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
},
"cashArrived" : true,
"previousYearsAmountType" : "previousYearsAmountType",
"id" : "id",
"isaType" : "isaType",
"transferDate" : "2000-01-23",
"includeCurrentYear" : true,
"fundsTransferType": "BANK_TRANSFER"
} ]
Description
Returns an overview of all open transfers in for a particular investor.
The transferDate
is only non-null if the transfer history form has been received.
Response
Name | Type | Description |
---|---|---|
[].id | string | The id |
[].isaType | string | The type of ISA the investor holds |
[].isaManagerName | string | The name of the ISA manager involved with the Transfer In |
[].transferSummary | ref | Details of the amounts being transferred |
[].currentYearSubscriptionAmount.amount | number | The amount |
[].currentYearSubscriptionAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
[].previousYearsSubscriptionAmount.amount | number | The amount |
[].previousYearsSubscriptionAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
[].repairAmount.amount | number | The amount |
[].repairAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
[].totalIsaTransferAmount.amount | number | The amount |
[].totalIsaTransferAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
[].includeCurrentYear | boolean | True if current year subscriptions should be transferred |
[].previousYearsAmountType | string | Determines how much prior year subscription should be included in the transfer |
[].transferDate | string | The date on which the transfer should occur |
[].cashArrived | boolean | True if the cash for the Transfer In has arrived |
[].fundsTransferType | string | The funds transfer type. Possible values are: CHEQUE BANK_TRANSFER |
GET /transferIn/investors/{clientId}/closed
GET /transferIn/investors/{clientId}/closed HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
[ {
"isaManagerName" : "isaManagerName",
"transferSummary" : {
"previousYearsSubscriptionAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalIsaTransferAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"repairAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"currentYearSubscriptionAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
},
"cashArrived" : true,
"previousYearsAmountType" : "previousYearsAmountType",
"id" : "id",
"isaType" : "isaType",
"transferDate" : "2000-01-23",
"includeCurrentYear" : true,
"fundsTransferType": "BANK_TRANSFER"
} ]
Description
Returns an overview of all closed transfers in for a particular investor.
Response
Name | Type | Description |
---|---|---|
[].id | string | The id |
[].isaType | string | The type of ISA the investor holds |
[].isaManagerName | string | The name of the ISA manager involved with the Transfer In |
[].transferSummary | ref | Details of the amounts being transferred |
[].currentYearSubscriptionAmount.amount | number | The amount |
[].currentYearSubscriptionAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
[].previousYearsSubscriptionAmount.amount | number | The amount |
[].previousYearsSubscriptionAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
[].repairAmount.amount | number | The amount |
[].repairAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
[].totalIsaTransferAmount.amount | number | The amount |
[].totalIsaTransferAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
[].includeCurrentYear | boolean | True if current year subscriptions should be transferred |
[].previousYearsAmountType | string | Determines how much prior year subscription should be included in the transfer |
[].transferDate | string | The date on which the transfer should occur |
[].cashArrived | boolean | True if the cash for the Transfer In has arrived |
[].fundsTransferType | string | The funds transfer type. Possible values are: CHEQUE BANK_TRANSFER |
GET /platformApi/transferIn/deposits/{date}
GET /platformApi/transferIn/deposits/{date} HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"totalValue" : {
"amount" : 123.45,
"currency" : "currency"
},
"numberCheques" : 2.68,
"products" : [ {
"clientId" : "clientId",
"id" : "id"
}, {
"clientId" : "clientId",
"id" : "id"
} ]
}
Description
Lists deposits for transfer in for a given date
Response
Name | Type | Description |
---|---|---|
numberCheques | number | The number of cheques included in the summary |
totalValue | ref | The total value of cheque transfers in |
totalValue.amount | number | The amount |
totalValue.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
products | array | |
products[].id | string | The transfer in ID |
products[].clientId | string | The ID of the investor for the transfer in |
GET /platformApi/transfersOut
GET /platformApi/transfersOut HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
[ {
"id": "id",
"originatorId": "originatorId",
"clientId": "clientId",
"workflowId": "workflowId",
"isaManager": {
"name": "name",
"address": {
"lineOne": "lineOne",
"lineTwo": "lineTwo",
"lineThree": "lineThree",
"townCity": "townCity",
"region": "region",
"postCode": "postCode"
},
"accountNumber": "accountNumber",
"sortCode": "sortCode",
"bankReference": "bankReference"
},
"transferDetails": {
"dateTAFReceived": "2000-01-23",
"transferDateFromNewIsaManager": "2000-01-25",
"transferAll": false,
"transferCurrentYearSubscriptions": true,
"transferPriorYearSubscriptions": true,
"transferAllPriorYearSubscriptions": true,
"priorYearAmountToTransfer": {
"amount": 123.45,
"currency": "GBP"
},
"transferOutFee": {
"amount": 12.34,
"currency": "GBP"
}
},
"transferOutFee": null,
"dateEmailSentToInvestor": null,
"dateEmailSentToPlatform": null,
"dateFundsTransferred": null,
"thfUrl": null,
"amountToTransfer": null,
"amountToTransferAlert": true
} ]
Description
Lists all transfers out for all investors.
Request
No body. The activeOnly
parameter takes a true
or false
value (if not provided behaviour will be false
).
When set to true
only Transfers Out where dateFundsTransferred
is null
will be returned.
Response
Name | Type | Description |
---|---|---|
[].id | string | The ID Goji assigns to the Transfer Out request |
[].originatorId | string | The ID Goji assigns to your Company |
[].workflowId | string | The ID Goji assigns to the workflow associated with this Transfer Out |
[].isaManager | ref | |
[].isaManager.name | string | The name of the ISA manager. |
[].address.lineOne | string | The first line of the investor's address. |
[].address.lineTwo | string | The second line of the investor's address. NOT the town or region. |
[].address.lineThree | string | The third line of the investor's address. NOT the town or region. |
[].address.townCity | string | The town of the investor's address. |
[].address.region | string | The region of the investor's address. |
[].address.country | string | The country of the investor's address in 3 character ISO code. Must be GBR to be valid for ISA subscriptions. If a different country code is supplied, current year subscriptions will be blocked. |
[].address.postcode | string | The Post Code of the investor's address. |
[].isaManager.accountNumber | string | The account number to transfer the funds to. |
[].isaManager.sortCode | string | The sort code to transfer the funds to. |
[].isaManager.bankReference | string | The reference to use for the bank transfer. |
[].transferDetails | ref | |
[].transferDetails.dateTAFReceived | string | The date the transfer authority form was received from the ISA manager. |
[].transferDetails.transferDateFromNewIsaManager | string | The date the ISA manager has said they will accept subscriptions from. |
[].transferDetails.transferAll | boolean | True if all ISA subscriptions should be transferred. |
[].transferDetails.transferCurrentYearSubscriptions | boolean | True if current year subscriptions should be transferred. |
[].transferDetails.transferPriorYearSubscriptions | boolean | True if prior year subscriptions should be transferred. |
[].transferDetails.transferAllPriorYearSubscriptions | boolean | True if all prior year subscriptions should be transferred. |
[].transferOutFee.amount | number | The amount for any fee/s associated with this Transfer Out |
[].transferOutFee.currency | string | The currency of any fee/s in ISO 4217 three character codes eg 'GBP' |
[].dateEmailSentToInvestor | string | The date the investor was emailed to confirm the Transfer Out details |
[].dateEmailSentToPlatform | string | The date the platform was emailed to confirm the Transfer Out details |
[].dateFundsTransferred | string | The date the funds were transferred to the new ISA manager. |
[].thfUrl | string | The URL of the Transfer History Form associated with this Transfer Out |
[].amountToTransfer | ref | |
[].amountToTransfer.amount | number | The amount |
[].amountToTransfer.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
[].amountToTransferAlert | boolean | True if the amount requested to be transferred cannot be satisfied. If this is true, the transfer cannot be processed until it is resolved. |
Migration
Migrating Investors
If you are migrating your existing investors over to Goji, then you need to onboard the existing investors using the dedicated investor migration endpoint and include migrationDetails
data.
The migrationDetails
allows the platform to provide an existing investor ID where applicable and provide the diligence status as agreed with Goji before migration takes place.
Upgrading investors currently using the ISA Administration API
When upgrading from using the Goji ISA Administration API to the Goji Platform API, the existingClientId
in the
migrationDetails
prompts the system to upgrade the existing investor with the relevant ID.
This involves:
- Generating a new client ID
- Performing a KYC check
- Generating an account number for depositing funds
Any existing ISA data is preserved.
POST /platformApi/migrate
POST /platformApi/investors HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"title": "MS",
"firstName": "Jane",
"lastName": "Doe",
"address": {
"country": "GBR",
"lineOne": "1 The High Street",
"lineTwo": "",
"lineThree": "",
"postcode": "AA1 1AA",
"townCity": "London",
"region": "Greater London"
},
"nationalInsuranceNumber": "MG442319A",
"accountTypes": [
"GOJI_INVESTMENT",
"ISA"
],
"entityType": "INDIVIDUAL",
"employmentDetails": {
"jobTitle": "Accountant",
"employmentStatus": "EMPLOYED_FULL_TIME"
},
"nationalities": [
{"nationality": "GB"},
{"nationality": "CH"}
],
"dateOfBirth": "1990-01-19",
"migrationDetails": {
"existingClientId": "existingClientId",
"diligenceMigrationOption": "FULL_CHECK",
"previousCheckDate": "2000-01-23"
},
"investorDeclarationType": "RESTRICTED",
"contactDetails": {
"emailAddress": "example@example.com",
"telephoneNumber": "07123456789"
}
}
POST /platformApi/investors HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"title": "MS",
"firstName": "Jane",
"lastName": "Doe",
"corporateDetails": {
"companyType": "LLC",
"registrationNumber": "AB123456",
"companyName": "Fake company"
},
"address": {
"country": "GBR",
"lineOne": "1 The High Street",
"lineTwo": "",
"lineThree": "",
"postcode": "AA1 1AA",
"townCity": "London",
"region": "Greater London"
},
"accountTypes": [
"GOJI_INVESTMENT",
],
"entityType": "CORPORATE",
"nationalities": [
{"nationality": "GB"},
{"nationality": "CH"}
],
"dateOfBirth": "1990-01-19",
"migrationDetails": {
"existingClientId": "existingClientId",
"diligenceMigrationOption": "FULL_CHECK",
"previousCheckDate": "2000-01-23"
},
"investorDeclarationType": "HIGH_NET_WORTH",
"contactDetails": {
"emailAddress": "example@example.com",
"telephoneNumber": "07123456789"
}
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"title": "MS",
"firstName": "Jane",
"lastName": "Doe",
"corporateDetails": {
"companyType": "LLC",
"registrationNumber": "AB123456",
"companyName": "Fake company"
},
"address": {
"country": "GBR",
"lineOne": "1 The High Street",
"lineTwo": "",
"lineThree": "",
"postcode": "AA1 1AA",
"townCity": "London",
"region": "Greater London"
},
"accountTypes": [
"GOJI_INVESTMENT",
],
"entityType": "CORPORATE",
"nationalities": [
{"nationality": "GB"},
{"nationality": "CH"}
],
"dateOfBirth": "1990-01-19",
"migrationDetails": {
"existingClientId": "existingClientId",
"diligenceMigrationOption": "FULL_CHECK",
"previousCheckDate": "2000-01-23"
},
"investorDeclarationType": "HIGH_NET_WORTH",
"contactDetails": {
"emailAddress": "example@example.com",
"telephoneNumber": "07123456789"
}
}
Description
Migrates an existing investor onto the Goji system.
Request
Name | Type | Description | Required |
---|---|---|---|
title | string | The title of the investor. Possible values are: MISS MR MRS MS DR |
optional |
nationalities | array | The list of nationalities associated with an investor. More than one nationality can be specified for a given investor i.e. if they are dual-nationality. | optional |
nationalities[].nationality | string | The ISO country code. e.g GB. | optional |
firstName | string | The first name of the investor. | required |
lastName | string | The last name of the investor. | required |
dateOfBirth | string | The date of birth of the investor. Must be between 18 and 100 years old. | required |
address | ref | required | |
address.lineOne | string | Line one of the address. | |
address.lineTwo | string | Line two of the address. | |
address.lineThree | string | Line three of the address. | |
address.townCity | string | The town/city of the address. | |
address.region | string | The region of the address eg county. | |
address.postcode | string | The post code of the address. | |
address.country | string | The country of the investor's address in 3 character ISO code. Must be GBR to be valid for ISA subscriptions. If a different country code is supplied, current year subscriptions will be blocked. | |
contactDetails | ref | required | |
contactDetails.telephoneNumber | string | The telephone number. | |
contactDetails.emailAddress | string | The email address. | |
nationalInsuranceNumber | string | The national insurance number of the investor. Only required if opening an ISA. | optional |
employmentDetails | ref | optional | |
employmentDetails.jobTitle | string | The job title. | |
employmentDetails.employmentStatus | string | The employment status. Possible values are: EMPLOYED_FULL_TIME EMPLOYED_PART_TIME SELF_EMPLOYED UNEMPLOYED HOUSE_PERSON EDUCATION RETIRED NOT_WORKING_ILLNESS_DISABILITY |
|
entityType | string | Possible values are: INDIVIDUAL CORPORATE |
required |
investorDeclarationType | string | All investors must complete a declaration to confirm the kind of investor they are. Possible values are: RESTRICTED HIGH_NET_WORTH INVESTMENT_PROFESSIONAL SOPHISTICATED |
required |
accountTypes | array | Defaults to [GOJI_INVESTMENT, ISA] if not provided for a INDIVIDUAL entityType. Defaults to [GOJI_INVESTMENT] for CORPORATE entityType. ISA invalid for CORPORATE entityType | optional |
corporateDetails | ref | only required for CORPORATE entityType. | optional |
corporateDetails.companyName | string | The company name. Only required for CORPORATE entityType. | |
corporateDetails.companyType | string | The company type. | |
corporateDetails.registrationNumber | string | The company registration number. | |
migrationDetails | ref | required | |
migrationDetails.existingClientId | string | The existing client ID for the investor to be migrated which can be useful for referencing any investor should issues occur or indeed must reference any ISA Administration investor's existing ID when applicable | required |
migrationDetails.diligenceMigrationOption | string | The agreed KYC/B check requirements for the investor - Goji will work with the platform to review historical checks and determine what value should be specified. Possible values are: FULL_CHECK : Goji will perform a full diligence checkHISTORICAL_RELIANCE_WITH_MONITORING : Goji will place reliance on previous checks (only when agreed beforehand) and perform ongoing monitoringEVENT_BASED_FULL_CHECK : Goji will only perform a full diligence check at the point the investor becomes active (most applicable for migrated who have a zero portfolio balance and are considered inactive)EVENT_BASED_WITH_MONITORING : Goji will place reliance on previous checks (only when agreed beforehand) but will only commence ongoing monitoring when the investor becomes active (most applicable for migrated who have a zero portfolio balance and are considered inactive)FULL_RELIANCE : As agreed beforehand where Goji performs no upfront diligence checks and the platform takes on responsibility here |
required |
migrationDetails.previousCheckDate | string | The optional date when the previous diligence checks were performed against the investor if Goji is placing reliance on the historical checks | optional |
Response
Name | Type | Description |
---|---|---|
clientId | string | The ID of the investor assigned by the platform. |
title | string | The title of the investor. Possible values are: MISS MR MRS MS DR |
firstName | string | The first name of the investor. |
lastName | string | The last name of the investor. |
dateOfBirth | string | The date of birth of the investor. |
address | ref | |
address.lineOne | string | Line one of the address. |
address.lineTwo | string | Line two of the address. |
address.lineThree | string | Line three of the address. |
address.townCity | string | The town/city of the address. |
address.region | string | The region of the address, e.g. county. |
address.postcode | string | The post code of the address. |
address.country | string | The country of the investor's address as a 3 character ISO code. Must be GBR to be valid for ISA subscriptions. If a different country code is supplied, current year subscriptions will be blocked. |
contactDetails | ref | |
contactDetails.telephoneNumber | string | The telephone number. |
contactDetails.emailAddress | string | The email address. |
nationalInsuranceNumber | string | The national insurance number of the investor. |
employmentDetails | ref | |
employmentDetails.jobTitle | string | The job title. |
employmentDetails.employmentStatus | string | The employment status. Possible values are: EMPLOYED_FULL_TIME EMPLOYED_PART_TIME SELF_EMPLOYED UNEMPLOYED HOUSE_PERSON EDUCATION RETIRED NOT_WORKING_ILLNESS_DISABILITY |
entityType | string | Possible values are: INDIVIDUAL CORPORATE |
accountTypes | string | Investor's account types. Possible values are: GOJI_INVESTMENT ISA |
corporateDetails | ref | Only required for CORPORATE entityType. |
corporateDetails.companyName | string | The company name. |
corporateDetails.companyType | string | The company type. |
corporateDetails.registrationNumber | string | The company registration number. |
investmentDeclarationType | string | The investor type declared by the investor. Possible values are: RESTRICTED HIGH_NET_WORTH INVESTMENT_PROFESSIONAL SOPHISTICATED |
Payments - Investors
Depositing funds
Once an investor has completed the KYC checks and has optionally opened an ISA, they can deposit funds. The Goji Platform creates a unique account number investor and they can distinguish between their general investment and ISA account with the reference number.
Deposits sent via Faster Payments will be credited to their account within 90 seconds of the payment reaching our banking partner.
Withdrawals
An investor can withdraw cash to their personal account. Withdrawal requests are typically processed immediately and funds should clear straight away.
The Goji Platform performs a series of checks to guard against potential money laundering . On occasion a withdrawal may be delayed until manual approval is given to process the transaction.
Testing withdrawals
The following Account Number, Sort Code combinations are valid examples and can be used for testing in the sandbox environment:
Account Number | Sort Code |
---|---|
00004588 | 203002 |
00027944 | 203002 |
58110244 | 204514 |
60282377 | 204514 |
87889196 | 166051 |
99993193 | 166051 |
GET /platformApi/investors/{clientId}/accounts/balances
GET /platformApi/investors/{clientId}/accounts/balances HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"totalBalance" : {
"amount" : 2.68,
"currency" : "currency"
},
"totalQueuedInvestedBalance" : {
"amount" : 2.68,
"currency" : "currency"
},
"accounts" : "{}",
"totalCashBalance" : {
"amount" : 2.68,
"currency" : "currency"
},
"totalInvestedBalance" : {
"amount" : 2.68,
"currency" : "currency"
}
}
Description
Returns the investor's account balances.
Response
Name | Type | Description |
---|---|---|
totalBalance | ref | The total balance. The sum of the invested, queued and cash balances. |
totalBalance.amount | number | The amount. |
totalBalance.currency | string | The ISO 4217 three character codes eg 'GBP' |
totalCashBalance | ref | The total cash balance. |
totalCashBalance.amount | number | The amount. |
totalCashBalance.currency | string | The ISO 4217 three character codes eg 'GBP' |
totalQueuedInvestedBalance | ref | The total queued for investment. |
totalQueuedInvestedBalance.amount | number | The amount. |
totalQueuedInvestedBalance.currency | string | The ISO 4217 three character codes eg 'GBP' |
totalInvestedBalance | ref | The total invested balance. |
totalInvestedBalance.amount | number | The amount. |
totalInvestedBalance.currency | string | The ISO 4217 three character codes eg 'GBP' |
accounts | object | A breakdown of the balances by account. |
GET /platformApi/investors/{clientId}/accounts/balances/{accountType}
GET /platformApi/investors/{clientId}/accounts/balances/{accountType} HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"isaRemainingSubscriptionAmount" : {
"amount" : 2.68,
"currency" : "currency"
},
"totalBalance" : {
"amount" : 2.68,
"currency" : "currency"
},
"totalQueuedInvestedBalance" : {
"amount" : 2.68,
"currency" : "currency"
},
"totalCashBalance" : {
"amount" : 2.68,
"currency" : "currency"
},
"totalInvestedBalance" : {
"amount" : 2.68,
"currency" : "currency"
}
}
Description
Returns the specified account balance.
Response
Name | Type | Description |
---|---|---|
totalBalance | ref | The total balance. The sum of the invested, queued and cash balances. |
totalBalance.amount | number | The amount. |
totalBalance.currency | string | The ISO 4217 three character codes eg 'GBP' |
totalCashBalance | ref | The total cash balance. |
totalCashBalance.amount | number | The amount. |
totalCashBalance.currency | string | The ISO 4217 three character codes eg 'GBP' |
totalQueuedInvestedBalance | ref | The total queued for investment. |
totalQueuedInvestedBalance.amount | number | The amount. |
totalQueuedInvestedBalance.currency | string | The ISO 4217 three character codes eg 'GBP' |
totalInvestedBalance | ref | The total invested balance. |
totalInvestedBalance.amount | number | The amount. |
totalInvestedBalance.currency | string | The ISO 4217 three character codes eg 'GBP' |
isaRemainingSubscriptionAmount | ref | The remaining amount of new funds that can be added to the ISA this tax year. null if not an ISA balance |
isaRemainingSubscriptionAmount.amount | number | The amount. |
isaRemainingSubscriptionAmount.currency | string | The ISO 4217 three character codes eg 'GBP' |
GET /platformApi/investors/{clientId}/transactions
GET /platformApi/investors/{clientId}/transactions HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
[ {
"dateTime" : "dateTime",
"amount" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"cashBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"investedBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"type" : "DEPOSIT",
"account" : "account",
"status" : "CLEARED"
} ]
Description
Retrieves a list of cash transactions associated with a given investor.
Response
Name | Type | Description |
---|---|---|
[].id | string | The ID of the cash transaction |
[].dateTime | string | The datetime the cash transaction occurred |
[].amount | ref | The total amount involved in the cash transaction |
[].amount.amount | number | The amount |
[].amount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
[].type | string | The transaction type Possible values are: DEPOSIT BONUS WITHDRAWAL INVESTMENT CANCELLED_INVESTMENT TRANSFER_INVESTMENT_OUT TRANSFER_INVESTMENT_IN INTEREST_REPAYMENT CAPITAL_REPAYMENT FEES WITHHOLDING_TAX ACCOUNT_TRANSFER_IN ACCOUNT_TRANSFER_OUT ISA_TRANSFER_IN ISA_TRANSFER_IN_RESIDUAL_INCOME ISA_TRANSFER_IN_REPAIR ISA_TRANSFER_IN_REPAIR_DEDUCTION_FROM_ISA ISA_TRANSFER_OUT SIPP_TRANSFER_IN BUY_PREMIUM SELL_PREMIUM |
[].cashBalance | ref | The cash balance |
[].cashBalance.amount | number | The amount |
[].cashBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
[].investedBalance | ref | The invested balance |
[].investedBalance.amount | number | The amount |
[].investedBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
[].totalBalance | ref | The total balance |
[].totalBalance.amount | number | The amount |
[].totalBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
[].account | string | The transaction account |
[].status | string | The transaction status Possible values are: ASSIGNED PENDING CLEARED |
GET /platformApi/investors/{clientId}/bankTransferDetails
GET /platformApi/investors/{clientId}/bankTransferDetails HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"bankReference" : "REF",
"accountName" : "John Smith",
"accountNumber" : "12345678",
"sortCode" : "123456"
}
Description
Retrieve the bank details for depositing funds to the general investments account.
Response
Name | Type | Description |
---|---|---|
accountName | string | The account name. (can be used for Confirmation of Payee) |
accountNumber | string | The account number. |
sortCode | string | The sort code. |
bankReference | string | The reference to use for the transfer. |
GET /platformApi/investors/{clientId}/bankTransferDetails/isa
GET /platformApi/investors/{clientId}/bankTransferDetails/isa HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"bankReference" : "REF",
"accountName" : "Goji Financial Services Client Account",
"accountNumber" : "12345678",
"sortCode" : "123456"
}
Description
Retrieve the bank details for depositing funds to the ISA account.
Response
Name | Type | Description |
---|---|---|
accountName | string | The account name. (can be used for Confirmation of Payee) |
accountNumber | string | The account number. |
sortCode | string | The sort code. |
bankReference | string | The reference to use for the transfer. |
GET /platformApi/investors/{clientId}/bankDetails
GET /platformApi/investors/{clientId}/bankDetails HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"accountName" : "accountName",
"accountNumber" : "accountNumber",
"sortCode" : "sortCode"
}
Description
Retrieve the investor's withdrawal bank details.
Response
Name | Type | Description |
---|---|---|
accountNumber | string | The account number. |
sortCode | string | The sort code. |
accountName | string | The account name. |
POST /platformApi/investors/{clientId}/bankDetails
POST /platformApi/investors/{clientId}/bankDetails HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"accountName" : "accountName",
"accountNumber" : "accountNumber",
"sortCode" : "sortCode"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"accountName" : "accountName",
"accountNumber" : "accountNumber",
"sortCode" : "sortCode"
}
Description
Sets the investor's withdrawal bank details for the first time.
The following Account Number, Sort Code combinations are valid examples and can be used for testing in the sandbox environment:
Account Number | Sort Code |
---|---|
00004588 | 203002 |
00027944 | 203002 |
58110244 | 204514 |
60282377 | 204514 |
87889196 | 166051 |
99993193 | 166051 |
Request
Name | Type | Description | Required |
---|---|---|---|
accountNumber | string | The account number. | required |
sortCode | string | The sort code. | required |
accountName | string | The account name. | required |
Response
Name | Type | Description |
---|---|---|
accountNumber | string | The account number. |
sortCode | string | The sort code. |
accountName | string | The account name. |
PUT /platformApi/investors/{clientId}/bankDetails
PUT /platformApi/investors/{clientId}/bankDetails HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"accountName" : "accountName",
"accountNumber" : "accountNumber",
"sortCode" : "sortCode"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"accountName" : "accountName",
"accountNumber" : "accountNumber",
"sortCode" : "sortCode"
}
Description
Updates the investor's withdrawal bank details.
Request
Name | Type | Description | Required |
---|---|---|---|
accountNumber | string | The account number. | required |
sortCode | string | The sort code. | required |
accountName | string | The account name. | required |
Response
Name | Type | Description |
---|---|---|
accountNumber | string | The account number. |
sortCode | string | The sort code. |
accountName | string | The account name. |
POST /platformApi/investors/{clientId}/accounts/{accountType}/withdrawal
POST /platformApi/investors/{clientId}/accounts/{accountType}/withdrawal HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"reference" : "reference",
"amount" : {
"amount" : 2.68,
"currency" : "currency"
}
}
HTTP/1.1 200 OK
Content-Type: application/json
"SUCCESS"
HTTP/1.1 400 Bad Request
Content-Type: application/json
{
"errors": [
{
"errorCode": "VALIDATION_FAILURE",
"message": "reference must match \"[a-zA-Z0-9-/?:().,+#=!%&*<>;{@ \"']{1,18}\""
}
]
}
Description
Withdraw cash from the specified account to the registered investor bank details.
Request
Name | Type | Description | Required |
---|---|---|---|
amount | ref | The amount of the residual income payment | optional |
amount.amount | number | The amount. | |
amount.currency | string | The ISO 4217 three character codes eg 'GBP' | |
reference | string | An optional payment reference to be used when withdrawing funds. If not provided a default Cash Withdrawal reference is used. |
optional |
POST /platformApi/investors/{clientId}/accounts/{accountType}/transfer
POST /platformApi/investors/{clientId}/accounts/{accountType}/transfer HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"toAccount" : "GOJI_INVESTMENT",
"amount" : {
"amount" : 2.68,
"currency" : "currency"
}
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"isaRemainingSubscriptionAmount" : {
"amount" : 2.68,
"currency" : "currency"
},
"totalBalance" : {
"amount" : 2.68,
"currency" : "currency"
},
"totalQueuedInvestedBalance" : {
"amount" : 2.68,
"currency" : "currency"
},
"totalCashBalance" : {
"amount" : 2.68,
"currency" : "currency"
},
"totalInvestedBalance" : {
"amount" : 2.68,
"currency" : "currency"
}
}
Description
Transfer cash to another account.
Request
Name | Type | Description | Required |
---|---|---|---|
toAccount | string | Possible values are: GOJI_INVESTMENT ISA |
optional |
amount | ref | optional | |
amount.amount | number | The amount. | |
amount.currency | string | The ISO 4217 three character codes eg 'GBP' |
Response
Name | Type | Description |
---|---|---|
totalBalance | ref | The total balance. The sum of the invested, queued and cash balances. |
totalBalance.amount | number | The amount. |
totalBalance.currency | string | The ISO 4217 three character codes eg 'GBP' |
totalCashBalance | ref | The total cash balance. |
totalCashBalance.amount | number | The amount. |
totalCashBalance.currency | string | The ISO 4217 three character codes eg 'GBP' |
totalQueuedInvestedBalance | ref | The total queued for investment. |
totalQueuedInvestedBalance.amount | number | The amount. |
totalQueuedInvestedBalance.currency | string | The ISO 4217 three character codes eg 'GBP' |
totalInvestedBalance | ref | The total invested balance. |
totalInvestedBalance.amount | number | The amount. |
totalInvestedBalance.currency | string | The ISO 4217 three character codes eg 'GBP' |
isaRemainingSubscriptionAmount | ref | The remaining amount of new funds that can be added to the ISA this tax year. null if not an ISA balance |
isaRemainingSubscriptionAmount.amount | number | The amount. |
isaRemainingSubscriptionAmount.currency | string | The ISO 4217 three character codes eg 'GBP' |
🧪 POST /test/account/topup
Description
Simulate depositing cash into any bank account managed on the Goji platform.
For an investor account the payment reference must start with ISA
if the funds are to be deposited to the ISA account.
POST /test/account/topup HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"amount": {
"amount": amount,
"currency": "GBP"
},
"accountNumber": "accountNumber",
"sortCode": "sortCode",
"paymentReference": "paymentReference"
}
Request
Key | Value Type | Description |
---|---|---|
amount | Ref | The amount to deposit. |
amount.amount | Number | The amount. |
amount.currency | String | The ISO 4217 three character codes e.g. 'GBP'. |
accountNumber | String | The account number. |
sortCode | String | The sort code. |
paymentReference | String | The reference for the batch payment. |
Response
HTTP/1.1 200 OK
Content-Type: application/json
"SUCCESS"
HTTP/1.1 400 Bad Request
Content-Type: application/json
{
"errors": [
{
"errorCode": "INVALID_DATA",
"message": "Payment address not found for accountNumber=12345678, sortCode=123456"
}
]
}
HTTP/1.1 400 Bad Request
Content-Type: application/json
{
"errors": [
{
"errorCode": "SYSTEM_ERROR",
"message": "An unexpected error has occurred"
}
]
}
POST /platformApi/investors/{clientId}/fee
POST /platformApi/investors/{clientId}/fee HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"accountType": "accountType",
"amount": {
"amount": 2.68,
"currency": "currency"
},
"bankAccountId": "bankAccountId",
"reference": "reference"
}
HTTP/1.1 201 OK
Content-Type: application/json
{
"accountType": "accountType",
"amount": {
"amount": 2.68,
"currency": "currency"
},
"bankAccountId": "bankAccountId",
"reference": "reference",
"status": "status"
}
Description
Extract a fee from a specified investor's account cash balance
Request
Name | Type | Description | Required |
---|---|---|---|
accountType | string | The client's account to charge. Possible values are: GOJI_INVESTMENT ISA |
required |
amount | ref | The amount to deposit. | required |
amount.amount | number | The amount. | |
amount.currency | string | The ISO 4217 three character codes eg 'GBP' | |
bankAccountId | string | The ID of the bank account details to send the fee to | required |
reference | string | The payment reference to be used for the fee transaction | required |
Response
Name | Type | Description |
---|---|---|
accountType | string | The client's account being charged. |
amount | ref | The amount to deposit. |
amount.amount | number | The amount. |
amount.currency | string | The ISO 4217 three character codes eg 'GBP' |
bankAccountId | string | The ID of the bank account details the fees are being sent to |
reference | string | The payment reference to be used for the fee transaction |
status | string | The status of the fee transfer process. Possible values are: PENDING CLEARED |
GET /reports/investor/cash/balance
GET /reports/investor/cash/balance?asOf=2020-12-25T15:00:00Z&id=INVESTOR-ID-1&id=INVESTOR-ID-2 HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"investorId": "INVESTOR-ID-1",
"gia": {
"totalBalance": { "amount": 10000.0, "currency": "GBP" },
"uninvestedCashBalance": { "amount": 5000.0, "currency": "GBP" },
"pendingIncomingTransferBalance": { "amount": 0, "currency": "GBP" },
"queuedForInvestmentBalance": { "amount": 5000.0, "currency": "GBP" },
"investedBalance": { "amount": 0, "currency": "GBP" }
},
"isa": {
"totalBalance": { "amount": 1000.0, "currency": "GBP" },
"uninvestedCashBalance": { "amount": 0.0, "currency": "GBP" },
"pendingIncomingTransferBalance": { "amount": 0, "currency": "GBP" },
"queuedForInvestmentBalance": { "amount": 1000.0, "currency": "GBP" },
"investedBalance": { "amount": 0, "currency": "GBP" }
},
"sipp": {
"totalBalance": { "amount": 300.0, "currency": "GBP" },
"uninvestedCashBalance": { "amount": 0.0, "currency": "GBP" },
"pendingIncomingTransferBalance": { "amount": 0, "currency": "GBP" },
"queuedForInvestmentBalance": { "amount": 300.0, "currency": "GBP" },
"investedBalance": { "amount": 0, "currency": "GBP" }
}
},
{
"investorId": "INVESTOR-ID-2",
"gia": {
"totalBalance": { "amount": 0, "currency": "GBP" },
"uninvestedCashBalance": { "amount": 0, "currency": "GBP" },
"pendingIncomingTransferBalance": { "amount": 0, "currency": "GBP" },
"queuedForInvestmentBalance": { "amount": 0, "currency": "GBP" },
"investedBalance": { "amount": 0, "currency": "GBP" }
},
"isa": {
"totalBalance": { "amount": 0, "currency": "GBP" },
"uninvestedCashBalance": { "amount": 0, "currency": "GBP" },
"pendingIncomingTransferBalance": { "amount": 0, "currency": "GBP" },
"queuedForInvestmentBalance": { "amount": 0, "currency": "GBP" },
"investedBalance": { "amount": 0, "currency": "GBP" }
},
"sipp": {
"totalBalance": { "amount": 0, "currency": "GBP" },
"uninvestedCashBalance": { "amount": 0, "currency": "GBP" },
"pendingIncomingTransferBalance": { "amount": 0, "currency": "GBP" },
"queuedForInvestmentBalance": { "amount": 0, "currency": "GBP" },
"investedBalance": { "amount": 0, "currency": "GBP" }
}
}
]
Description
Returns a snapshot of the balances of up to 100 investors as of a specified date. Intended for use in combination with GET /investorIds
to fetch large numbers of investor balances for purposes such as reconciliation.
The id
query parameter may repeated up to 100 times. If more than 100 ids are specified, a 400
error is returned.
If the asOf
parameter is excluded, the current state is returned.
Response
Name | Type | Description |
---|---|---|
[].investorId | string | The investor's client id (e.g. GOJI-1128 ) |
[].gia | ref | The account balance's for the investor's investment account. |
[].isa | ref | The account balance's for the investor's ISA account. |
[].sipp | ref | The account balance's for the investor's SIPP account. |
[].{}.totalBalance | ref | The total balance in the account. The sum of the invested, queued and cash balances. Currently excludes the value of investments in non-debt instruments such as equities, so this balance will appear to go down when investments are made in such instruments. |
[].{}.totalBalance.amount | number | |
[].{}.totalBalance.currency | string | The ISO 4217 three character codes eg 'GBP' |
[].{}.uninvestedCashBalance | ref | The total uninvested cash. |
[].{}.uninvestedCashBalance.amount | number | |
[].{}.uninvestedCashBalance.currency | string | The ISO 4217 three character codes eg 'GBP' |
[].{}.pendingIncomingTransferBalance | ref | The total value of pending incoming account transfers. |
[].{}.pendingIncomingTransferBalance.amount | number | |
[].{}.pendingIncomingTransferBalance.currency | string | The ISO 4217 three character codes eg 'GBP' |
[].{}.queuedForInvestmentBalance | ref | The total value of funds queued for investment in debt instruments. |
[].{}.queuedForInvestmentBalance.amount | number | |
[].{}.queuedForInvestmentBalance.currency | string | The ISO 4217 three character codes eg 'GBP' |
[].{}.investedBalance | ref | The total value of funds invested in debt instruments. |
[].{}.investedBalance.amount | number | |
[].{}.investedBalance.currency | string | The ISO 4217 three character codes eg 'GBP' |
Payments - Manager
Testing outbound payments
The following Account Number, Sort Code combinations are valid examples and can be used for testing in the sandbox environment:
Account Number | Sort Code |
---|---|
00004588 | 203002 |
00027944 | 203002 |
58110244 | 204514 |
60282377 | 204514 |
87889196 | 166051 |
99993193 | 166051 |
Managing Payment Destinations
GET /platformApi/bankAccountDetails
GET /platformApi/bankAccountDetails HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"id" : "06ee16ce-def4-4433-80f2-ab35256316e1",
"accountName" : "Destination account",
"accountNumber" : "00004588",
"sortCode" : "203002",
"status" : "ENABLED"
}
]
Description
List of bank accounts we hold in the system for sending money to.
Response
Name | Type | Description |
---|---|---|
[].id | string | The bank account details ID. |
[].accountNumber | string | The account number. |
[].sortCode | string | The sort code. |
[].accountName | string | The account name. |
[].status | string | Whether or not the account has passed AML. Possible values are: ENABLED DISABLED |
POST /platformApi/bankAccountDetails
POST /platformApi/bankAccountDetails HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"accountName" : "Destination account",
"accountNumber" : "00004588",
"sortCode" : "203002"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id" : "06ee16ce-def4-4433-80f2-ab35256316e1"
}
Description
Create a set of bank details.
The following Account Number, Sort Code combinations are valid examples and can be used for testing in the sandbox environment:
Account Number | Sort Code |
---|---|
00004588 | 203002 |
00027944 | 203002 |
58110244 | 204514 |
60282377 | 204514 |
87889196 | 166051 |
99993193 | 166051 |
Request
Name | Type | Description | Required |
---|---|---|---|
accountNumber | string | The account number. | required |
sortCode | string | The sort code. | required |
accountName | string | The account name. | required |
Response
Name | Type | Description |
---|---|---|
id | string | The bank account ID. |
PUT /platformApi/test/bankAccountDetails/{id}/enable
PUT /platformApi/test/bankAccountDetails/06ee16ce-def4-4433-80f2-ab35256316e1/enable HTTP/1.1
Host: api-sandbox.goji.investments
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"id" : "06ee16ce-def4-4433-80f2-ab35256316e1",
"accountName" : "Destination account",
"accountNumber" : "00004588",
"sortCode" : "203002",
"status" : "ENABLED"
}
Description
Simulate enabling a set of bank details.
Response
Name | Type | Description |
---|---|---|
id | string | The bank account details ID. |
accountNumber | string | The account number. |
sortCode | string | The sort code. |
accountName | string | The account name. |
status | string | Whether or not the account has passed AML. In this case it is always ENABLED |
GET /platformApi/bankAccountDetails/{id}
GET /platformApi/bankAccountDetails/06ee16ce-def4-4433-80f2-ab35256316e1 HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"accountName" : "accountName",
"id" : "06ee16ce-def4-4433-80f2-ab35256316e1",
"accountNumber" : "00004588",
"sortCode" : "203002",
"status" : "ENABLED"
}
Description
Get a specific bank account we hold in the system for sending money to.
Response
Name | Type | Description |
---|---|---|
id | string | The bank account details ID. |
accountNumber | string | The account number. |
sortCode | string | The sort code. |
accountName | string | The account name. |
status | string | Whether or not the account has passed AML. Possible values are: ENABLED DISABLED . |
PUT /platformApi/bankAccountDetails/{id}
PUT /platformApi/bankAccountDetails/06ee16ce-def4-4433-80f2-ab35256316e1 HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"accountName" : "accountName",
"accountNumber" : "00004588",
"sortCode" : "203002"
}
HTTP/1.1 200 OK
Content-Type: application/json
""
Description
Updates a specific set of stored account details. This will trigger an AML check.
Request
Name | Type | Description | Required |
---|---|---|---|
accountNumber | string | The account number. | required |
sortCode | string | The sort code. | required |
accountName | string | The account name. | required |
Registering Companies as Wallet Holders
POST /companies
POST /companies HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"ukCompany": {
"type": "LIMITED_COMPANY",
"number": "AB123456",
"name": "Fake Company LIMITED",
"associatedIndividuals": [
{
"firstName": "John",
"surname": "Smith",
"dateOfBirth": "1980-01-01",
"address": {
"lineOne": "Flat 15 Victory House",
"lineTwo": "12 Morris Road",
"lineThree": "Greenwich",
"townCity": "London",
"region": "England",
"country": "UK",
"postcode": "E17 FTW",
}
}
]
}
}
HTTP/1.1 202 Accepted
Content-Type: application/json
{
"partyId": "COM~d28360c5-07a3-4d78-ade4-bddcdd8b5502",
"status": "PENDING",
"ukCompany": {
"name": "Fake Company LIMITED",
"number": "AB123456",
"type": "LIMITED_COMPANY",
"associatedIndividuals": [
{
"firstName": "John",
"surname": "Smith",
"dateOfBirth": "1980-01-01",
"address": {
"lineOne": "Flat 15 Victory House",
"lineTwo": "12 Morris Road",
"lineThree": "Greenwich",
"townCity": "London",
"region": "England",
"country": "UK",
"postcode": "E17 FTW",
}
}
]
}
}
HTTP/1.1 400 Bad Request
Content-Type: application/json
{
"errors": [
{
"errorCode": "INVALID_DATA",
"message": "The company number must be 8 characters, contain only numbers or two letters followed by six numbers."
}
]
}
HTTP/1.1 400 Bad Request
Content-Type: application/json
{
"errors": [
{
"errorCode": "INVALID_DATA",
"message": "The company number is required if company type is not SOLE_TRADER."
}
]
}
HTTP/1.1 409 Conflict
Content-Type: application/json
{
"errors": [
{
"errorCode": "COMPANY_ALREADY_REGISTERED",
"message": "Company with number AB123456 already registered."
}
]
}
Description
Register a company with the Goji Platform.
This allows the company to own Wallets, and send/receive money through them.
The registration process is asynchronous. When this API is first called, the status
returned will be PENDING
.
A COMPANY_REGISTRATION_UPDATE
webhook, with status REGISTERED
, will be used to notify completion of the registration.
The registration process is partially manual, so the webhook will be dispatched significantly later than the API call.
Request
Name | Type | Description | Required |
---|---|---|---|
ukCompany.name | string | The name of the company. | required |
ukCompany.type | string | The type of company: SOLE_TRADER, LIMITED_COMPANY, LIMITED_PARTNERSHIP. | required when integrating after 2021-02-15 |
ukCompany.number | string | The number of the company registered with Companies House. | required when company type is not SOLE_TRADER |
ukCompany.associatedIndividuals | array | List of associated individuals. | optional |
ukCompany.associatedIndividuals[].firstName | string | The first name of the associated individual. | required |
ukCompany.associatedIndividuals[].lastName | string | The last name of the associated individual. | required |
ukCompany.associatedIndividuals[].dateOfBirth | string | The date of birth of the associated individual. Must be between 18 and 100 years old. | required |
ukCompany.associatedIndividuals[].address | object | required | |
ukCompany.associatedIndividuals[].address.lineOne | string | Line one of the address. | required |
ukCompany.associatedIndividuals[].address.lineTwo | string | Line two of the address. | required |
ukCompany.associatedIndividuals[].address.lineThree | string | Line three of the address. | required |
ukCompany.associatedIndividuals[].address.townCity | string | The town/city of the address. | required |
ukCompany.associatedIndividuals[].address.region | string | The region of the address eg county. | required |
ukCompany.associatedIndividuals[].address.postcode | string | The post code of the address. | required |
ukCompany.associatedIndividuals[].address.country | string | The country of the associated individual's address in 3 character ISO code. | required |
Response
Name | Type | Description |
---|---|---|
partyId | string | The Party ID for this company. |
ukCompany.name | string | The name of the company. |
ukCompany.type | string | The type of company: SOLE_TRADER, LIMITED_COMPANY, LIMITED_PARTNERSHIP. |
ukCompany.number | string | The number of the company registered with Companies House. |
ukCompany.associatedIndividuals | array | List of associated individuals. |
ukCompany.associatedIndividuals[].firstName | string | The first name of the associated individual. |
ukCompany.associatedIndividuals[].lastName | string | The last name of the associated individual. |
ukCompany.associatedIndividuals[].dateOfBirth | string | The date of birth of the associated individual. Must be between 18 and 100 years old. |
ukCompany.associatedIndividuals[].address | object | |
ukCompany.associatedIndividuals[].address.lineOne | string | Line one of the address. |
ukCompany.associatedIndividuals[].address.lineTwo | string | Line two of the address. |
ukCompany.associatedIndividuals[].address.lineThree | string | Line three of the address. |
ukCompany.associatedIndividuals[].address.townCity | string | The town/city of the address. |
ukCompany.associatedIndividuals[].address.region | string | The region of the address eg county. |
ukCompany.associatedIndividuals[].address.postcode | string | The post code of the address. |
ukCompany.associatedIndividuals[].address.country | string | The country of the associated individual's address in 3 character ISO code. |
🧪 PUT /test/companies/{partyId}/enable
PUT /test/companies/COM~d28360c5-07a3-4d78-ade4-bddcdd8b5502/enable HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"partyId": "COM~d28360c5-07a3-4d78-ade4-bddcdd8b5502",
"status": "REGISTERED",
"ukCompany": {
"number": "AB123456",
"name": "Fake Company LIMITED"
}
}
Description
Simulate enabling a pending company.
Response
Name | Type | Description |
---|---|---|
partyId | string | The Party ID for this company. |
status | string | Enum: REGISTERED. |
ukCompany.name | string | Company Name. |
ukCompany.type | string | The type of company: SOLE_TRADER, LIMITED_COMPANY, LIMITED_PARTNERSHIP. |
ukCompany.number | string | The Company Number registered with Companies House. |
ukCompany.associatedIndividuals | array | List of associated individuals. |
ukCompany.associatedIndividuals[].firstName | string | The first name of the associated individual. |
ukCompany.associatedIndividuals[].lastName | string | The last name of the associated individual. |
ukCompany.associatedIndividuals[].dateOfBirth | string | The date of birth of the associated individual. Must be between 18 and 100 years old. |
ukCompany.associatedIndividuals[].address | object | |
ukCompany.associatedIndividuals[].address.lineOne | string | Line one of the address. |
ukCompany.associatedIndividuals[].address.lineTwo | string | Line two of the address. |
ukCompany.associatedIndividuals[].address.lineThree | string | Line three of the address. |
ukCompany.associatedIndividuals[].address.townCity | string | The town/city of the address. |
ukCompany.associatedIndividuals[].address.region | string | The region of the address eg county. |
ukCompany.associatedIndividuals[].address.postcode | string | The post code of the address. |
ukCompany.associatedIndividuals[].address.country | string | The country of the associated individual's address in 3 character ISO code. |
GET /companies
GET /companies HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"partyId": "COM~d28360c5-07a3-4d78-ade4-bddcdd8b5502"
"ukCompany": {
"number": "AA123456",
"name": "Fake Company LIMITED"
}
}
]
Description
Retrieves all companies that have been registered.
Response
Name | Type | Description |
---|---|---|
[].partyId | string | The Party ID for this company. |
[].status | string | Enum: REGISTERED. |
[].ukCompany.name | string | Company Name. |
[].ukCompany.type | string | The type of company: SOLE_TRADER, LIMITED_COMPANY, LIMITED_PARTNERSHIP. |
[].ukCompany.number | string | The Company Number registered with Companies House. |
[].ukCompany.associatedIndividuals | array | List of associated individuals. |
[].ukCompany.associatedIndividuals[].firstName | string | The first name of the associated individual. |
[].ukCompany.associatedIndividuals[].lastName | string | The last name of the associated individual. |
[].ukCompany.associatedIndividuals[].dateOfBirth | string | The date of birth of the associated individual. Must be between 18 and 100 years old. |
[].ukCompany.associatedIndividuals[].address | object | |
[].ukCompany.associatedIndividuals[].address.lineOne | string | Line one of the address. |
[].ukCompany.associatedIndividuals[].address.lineTwo | string | Line two of the address. |
[].ukCompany.associatedIndividuals[].address.lineThree | string | Line three of the address. |
[].ukCompany.associatedIndividuals[].address.townCity | string | The town/city of the address. |
[].ukCompany.associatedIndividuals[].address.region | string | The region of the address eg county. |
[].ukCompany.associatedIndividuals[].address.postcode | string | The post code of the address. |
[].ukCompany.associatedIndividuals[].address.country | string | The country of the associated individual's address in 3 character ISO code. |
GET /companies/{id}
GET /companies/COM~d28360c5-07a3-4d78-ade4-bddcdd8b5502 HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"partyId": "COM~d28360c5-07a3-4d78-ade4-bddcdd8b5502"
"ukCompany": {
"number": "AA123456",
"name": "Fake Company LIMITED"
}
}
Description
Retrieve details of a single company.
Response
Name | Type | Description |
---|---|---|
partyId | string | The Party ID for this company. |
status | string | Enum: REGISTERED. |
ukCompany.name | string | Company Name. |
ukCompany.type | string | The type of company: SOLE_TRADER, LIMITED_COMPANY, LIMITED_PARTNERSHIP. |
ukCompany.number | string | The Company Number registered with Companies House. |
ukCompany.associatedIndividuals | array | List of associated individuals. |
ukCompany.associatedIndividuals[].firstName | string | The first name of the associated individual. |
ukCompany.associatedIndividuals[].lastName | string | The last name of the associated individual. |
ukCompany.associatedIndividuals[].dateOfBirth | string | The date of birth of the associated individual. Must be between 18 and 100 years old. |
ukCompany.associatedIndividuals[].address | object | |
ukCompany.associatedIndividuals[].address.lineOne | string | Line one of the address. |
ukCompany.associatedIndividuals[].address.lineTwo | string | Line two of the address. |
ukCompany.associatedIndividuals[].address.lineThree | string | Line three of the address. |
ukCompany.associatedIndividuals[].address.townCity | string | The town/city of the address. |
ukCompany.associatedIndividuals[].address.region | string | The region of the address eg county. |
ukCompany.associatedIndividuals[].address.postcode | string | The post code of the address. |
ukCompany.associatedIndividuals[].address.country | string | The country of the associated individual's address in 3 character ISO code. |
Managing Wallets
POST /wallets
POST /wallets HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"ownerPartyId": "COM~d28360c5-07a3-4d78-ade4-bddcdd8b5502",
"walletName" : "Housing Project"
}
HTTP/1.1 202 Accepted
Content-Type: application/json
{
"id" : "3d9ca033-eb05-459f-9f70-1139d2e2b213",
"ownerPartyId": "COM~d28360c5-07a3-4d78-ade4-bddcdd8b5502",
"walletName" : "Housing Project"
}
HTTP/1.1 409 Conflict
Content-Type: application/json
{
"errors": [
{
"errorCode": "NAME_ALREADY_EXIST",
"message": "Wallet with name: Housing Project already exist for partyId: COM~d28360c5-07a3-4d78-ade4-bddcdd8b5502"
}
]
}}
Description
Creates a Wallet. The Wallet creation will not happen immediately. The WALLET_CREATED
webhook will be used to notify
you of the Wallet creation completing, including the Bank Account Number and Sort Code.
Request
Name | Type | Description | Required |
---|---|---|---|
ownerPartyId | string | The PartyId that will own the Wallet. | required |
walletName | string | New wallet name | required |
Response
Name | Type | Description |
---|---|---|
id | string | The unique identifier for the Wallet. |
ownerPartyId | string | The PartyId that will own the Wallet. |
walletName | string | Wallet name. |
GET /wallets
GET /wallets HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"id" : "3d9ca033-eb05-459f-9f70-1139d2e2b213",
"ownerPartyId": "COM~d28360c5-07a3-4d78-ade4-bddcdd8b5502",
"walletName" : "Housing Project",
"bankAccountDetailsId" : "03946a54-6b4f-4bae-897d-6ee2baf0e848",
"bankDetails" : {
"accountName": "Company Name",
"accountNumber": "00004588",
"sortCode": "203002"
},
"balance" : {
"currency" : "GBP"
"amount" : 10.45
}
}
]
Description
Retrieve all Wallet details.
Response
Name | Type | Description |
---|---|---|
id | string | The ID of the wallet |
ownerPartyId | string | The PartyId that will own the Wallet. |
walletName | string | Wallet name. |
bankAccountDetailsId | string | The bank account details ID |
bankDetails | ref | The bank details for the wallet |
bankDetails.accountName | string | The account name for use when depositing money |
bankDetails.accountNumber | string | The account number to use when depositing money |
bankDetails.sortCode | string | The sort code to use when depositing money |
balance | ref | The total cash balance for the wallet |
balance.amount | number | The amount. |
balance.currency | string | The ISO 4217 three character codes eg 'GBP' |
GET /wallets/{id}
GET /wallets/3d9ca033-eb05-459f-9f70-1139d2e2b213 HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "3d9ca033-eb05-459f-9f70-1139d2e2b213",
"ownerPartyId": "COM~d28360c5-07a3-4d78-ade4-bddcdd8b5502",
"walletName": "Housing Project",
"bankAccountDetailsId": "03946a54-6b4f-4bae-897d-6ee2baf0e848",
"bankDetails": {
"accountName": "Company Name",
"accountNumber": "00004588",
"sortCode": "203002"
},
"balance": {
"amount": 10.45,
"currency": "GBP"
}
}
Description
Retrieve details of a single Wallet.
Response
Name | Type | Description |
---|---|---|
id | string | The ID of the wallet |
ownerPartyId | string | The PartyId that will own the Wallet. |
walletName | string | Wallet name. |
bankAccountDetailsId | string | The bank account details ID |
bankDetails | ref | The bank details for the wallet |
bankDetails.accountName | string | The account name for use when depositing money |
bankDetails.accountNumber | string | The account number to use when depositing money |
bankDetails.sortCode | string | The sort code to use when depositing money |
balance | ref | The total cash balance for the wallet |
balance.amount | number | The amount. |
balance.currency | string | The ISO 4217 three character codes eg 'GBP' |
POST /wallets/{id}/payment
POST /wallets/3d9ca033-eb05-459f-9f70-1139d2e2b213/payment HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"destinationBankAccountId" : "06ee16ce-def4-4433-80f2-ab35256316e1",
"amount" : {
"currency" : "GBP",
"amount" : 10.45
},
"reference" : "Reference",
"narrative" : "Moving to operating account"
}
HTTP/1.1 202 Accepted
Content-Type: application/json
{
"destinationBankAccountId" : "06ee16ce-def4-4433-80f2-ab35256316e1",
"amount" : {
"currency" : "GBP",
"amount" : 10.45
},
"reference" : "Reference",
"narrative" : "Moving to operating account",
"status": "PENDING
}
HTTP/1.1 400 Bad Request
Content-Type: application/json
{
"errors": [
{
"errorCode": "INVALID_DATA",
"message": "Instruction must include a reference."
}
]
}
Description
Create a payment instruction from a Wallet.
Request
Name | Type | Description | Required |
---|---|---|---|
destinationBankAccountId | string | The ID of the destination bank account | required |
amount | ref | The total cash balance. | required |
amount.amount | number | The amount. | required |
amount.currency | string | The ISO 4217 three character codes eg 'GBP' | required |
reference | string | The bank reference used for the transfer | required |
narrative | string | The reason for the wallet transfer | |
status | string | Only present on responses. The status of a wallet transfer. |
Possible Error codes
Error Code | Message |
---|---|
INVALID_DATA | Bank account with bankAccountId=6ee16ce-def4-4433-80f2-ab35256316e1 does not exist. |
INVALID_DATA | Destination bank account details are not yet enabled. |
INVALID_DATA | Instruction must include a reference. |
INVALID_DATA | Payment reference must be below 18 characters long. |
INVALID_AMOUNT | Instruction must include a positive non-zero amount. |
INSUFFICIENT_BALANCE | Insufficient balance to perform an outbound payment of amount: £10.45. Current balance: £0. |
GET /wallets/{id}/transactions/year/{year}/month/{month}
GET /wallets/3d9ca033-eb05-459f-9f70-1139d2e2b213/transactions/year/2020/month/1 HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"id": "97c79c8c-d528-4a97-84d4-4d85bd021692",
"amount": {
"amount": 123.50,
"currency": "GBP"
},
"type": "OUTBOUND",
"status": "PENDING",
"reference": "Reference",
"narrative": "Solicitor Fees",
"createdDateTime": "2019-01-01T12:33:00Z",
"clearedDateTime": "2019-01-01T12:33:30Z",
"associatedBankDetails" : {
"accountName": "Destination Account",
"accountNumber": "00004588",
"sortCode": "203002"
}
}
]
Description
Retrieve a list of transactions for a given Wallet for a given year and month.
Response
Name | Type | Description |
---|---|---|
id | string | The id of the transaction |
amount | ref | The total cash balance. |
amount.amount | number | The amount. |
amount.currency | string | The ISO 4217 three character codes eg 'GBP' |
type | string | The type of wallet instruction |
status | string | The status of the wallet transfer. PENDING, CLEARED |
reference | string | The bank reference used for the transfer |
narrative | string | The reason for the wallet transfer |
createdDateTime | date/time | The date / time the transaction was created |
clearedDateTime | date/time | The date / time the transaction was cleared |
associatedBankDetails | ref | The bank details for the wallet |
associatedBankDetails.accountName | string | The account name related to the transaction |
associatedBankDetails.accountNumber | string | The account number related to the transaction |
associatedBankDetails.sortCode | string | The sort code related to the transaction |
Bulk Payments
The Bulk Payments API allows an Investment Manager to specify a total amount of funds to distribute amongst their individual investors.
Batch Payments
The POST /transfers/batch
endpoint can be used to
transfer money to multiple investors.
Said endpoint references a totalPayout
amount, and takes a list of all the investors and the amount each is due to be paid.
The call to POST /transfers/batch
will return a 201 Created response
with a status
field in the body of AWAITING_FUNDS
.
⚠️ Please note that this response only indicates that the batch payment instruction has been received. The distribution of the batch to investors will not occur until the necessary funds are received.
The response will include a payTo section. Payment should be sent to the bank details specified, including the payTo.reference
.
Once payment has been made, the GET /transfers/batch/{batchId}
endpoint can be used to see the current status of the batch payment instruction.
The status of the money transfer is further broken down at a per investor level.
On batch state update, a webhook will be fired that will contain the batch details with a summary of all payments.
For full details of the batch payments, call GET /transfers/batch/{batchId}
.
Batch Model
Required Attributes
Key | JSON Type | Value Type | Value Description |
---|---|---|---|
batchId | String | BatchId | The platform generated UUID of the batch payment posting. |
type | String | Enum | The type of batch payment. Values: MIGRATION , BONUS , CARD_PAYMENTS |
status | String | Enum | Response Only. Values: AWAITING_FUNDS , DISTRIBUTING , COMPLETE . |
totalPayout.amount | Number | Number | The total amount to be paid out to investors. |
totalPayout.currency | String | ISO 4217 | The currency that the totalPayout.currency is in. |
payments[] | Array | Object | The list of payments to be made as part of this batch instruction. |
payments[].clientId | String | Object | The clientId of the investor associated with this individual payment. |
payments[] .accountType | String | Enum | The client's account to pay to. Values: GOJI_INVESTMENT , ISA . |
payments[] .amount.currency | String | ISO 4217 | The currency associated with a payments[].amount.amount . |
payments[] .amount.amount | Number | Number | The total amount to be paid to this investor. |
Optional Attributes
Key | JSON Type | Value Type | Value Description |
---|---|---|---|
payments[].sourceOfFunds | Object | Object | Optional but inclusion preferred. The client's active bank account details. |
sourceOfFunds.accountName | String | String | The investor's bank account name. |
sourceOfFunds.accountNumber | String | String | The client's bank account number. |
sourceOfFunds.sortCode | String | String | The client's bank account sort code. |
payments[].status | String | Enum | Response Only. Values: PENDING , DISTRIBUTED , RECEIVED , FAILED . |
payTo.accountName | String | String | Response Only. The name of the account to send payment to. |
payTo.accountNumber | String | String | Response Only. The account number to send payment to. |
payTo.sortCode | String | String | Response Only. The sort code to send payment to. |
payTo.reference | String | String | Response Only. The reference to use when sending payment. |
POST /transfers/batch
POST /transfers/batch HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"batchId": "4d8af0f8-26a1-4e06-bb1e-8225d1e36e2b",
"type": "MIGRATION",
"totalPayout": {
"amount": 5000,
"currency": "GBP"
},
"payments": [
{
"clientId": "clientId",
"accountType": "GOJI_INVESTMENT",
"amount": {
"amount": 3000,
"currency": "GBP"
},
"sourceOfFunds": {
"accountName": "Account Name",
"accountNumber": "12345678",
"sortCode": "123456"
}
},
{
"clientId": "clientId2",
"accountType": "GOJI_INVESTMENT",
"amount": {
"amount": 2000,
"currency": "GBP"
},
"sourceOfFunds": null
}
]
}
HTTP/1.1 201 Created
Content-Type: application/json
X-GOJI-REQUEST-ID: 49801f79-5347-4db5-a2b9-59e6cf3e0a22
{
"batchId": "4d8af0f8-26a1-4e06-bb1e-8225d1e36e2b",
"type": "MIGRATION",
"status": "AWAITING_FUNDS",
"totalPayout": {
"amount": 5000,
"currency": "GBP"
},
"payments": [
{
"clientId": "clientId",
"accountType": "GOJI_INVESTMENT",
"amount": {
"amount": 3000,
"currency": "GBP"
},
"status": "PENDING",
"sourceOfFunds": {
"accountName": "Account Name",
"accountNumber": "12345678",
"sortCode": "123456"
}
},
{
"clientId": "clientId2",
"accountType": "GOJI_INVESTMENT",
"amount": {
"amount": 2000,
"currency": "GBP"
},
"status": "PENDING",
"sourceOfFunds": null
}
],
"payTo": {
"accountName": "Platform 1 - Receiving",
"accountNumber": "12345678",
"sortCode": "123456",
"bankReference": "OR8144E143"
}
}
Description
Creates a new batch payment instruction to transfer money to a list of investors.
Request
Body: Batch Model
Response
Body: Batch Model
Http Status:
HTTP Status Code | Description | Body | Content-Type |
---|---|---|---|
201 Created | Batch payment posted created successfully | Batch | application/json |
400 Bad Request | The request was malformed. See response body | None | n/a |
401 Unauthorized | No auth provided, auth failed, or not authorized | None | n/a |
GET /transfers/batch/{batchId}
To see the current state of a batch payment instruction, this endpoint can be used.
It will provide two statuses:
(1) An overall status
of the batch payment instruction.
(2) A breakdown of the current status
of each individual payment.
GET /transfers/batch/4d8af0f8-26a1-4e06-bb1e-8225d1e36e2b HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
X-GOJI-REQUEST-ID: 6937bd3b-e3de-4fd6-9bd9-c87cd7305180
{
"batchId": "4d8af0f8-26a1-4e06-bb1e-8225d1e36e2b",
"type": "MIGRATION",
"status": "AWAITING_FUNDS",
"totalPayout": {
"amount": 5000,
"currency": "GBP"
},
"payments": [
{
"clientId": "clientId",
"accountType": "GOJI_INVESTMENT",
"amount": {
"amount": 3000,
"currency": "GBP"
},
"status": "PENDING",
"sourceOfFunds": {
"accountName": "Account Name",
"accountNumber": "12345678",
"sortCode": "123456"
}
},
{
"clientId": "clientId2",
"accountType": "GOJI_INVESTMENT",
"amount": {
"amount": 2000,
"currency": "GBP"
},
"status": "PENDING",
"sourceOfFunds": null
}
],
"payTo": {
"accountName": "Platform 1 - Receiving",
"accountNumber": "12345678",
"sortCode": "123456",
"bankReference": "OR8144E143"
}
}
Description
Retrieves the details of an existing batch payment.
Request
Body: None
Response
Body: Batch Payment Model
Http Status:
Code | Description | Body | Content-Type |
---|---|---|---|
200 OK | batch payment exists and is return in the body | Batch | application/json |
400 Bad Request | The request was malformed. See response body | None | n/a |
401 Unauthorized | No auth provided, auth failed, or not authorized | None | n/a |
404 Not Found | No batch payment with this UUID exists | None | n/a |
Settlement - Debt
The Settlement API allows the investment manager to record trades that have been executed.
Recording available products
The investment manager must record what investments are going to be available to investors and whether they will be made available in the ISA.
Making an investment
The investment manager will periodically record an investment in the Goji platform via the API. This will trigger a record of the investment against the investors' accounts and also move the funds from the client money account to the investment manager.
Investor repayments using wallets
The investment manager will calculate repayments and any withholding tax that are due to the investors in the bond. The investment manager will record the due repayment via the API. This will start distribution of funds from the specified wallet to each investor account. The system will publish webhooks on every individual repayment clearing as well as the acceptance and the clearing of the batch.
Investor repayments without using wallets
The investment manager will calculate repayments and any withholding tax that are due to the investors in the bond. The investment manager will record the due repayment via the API. Once the funds are received, they will be distributed to the appropriate investors and any tax or fees specified will be returned to the investment manager to the specified payment destination
Secondary market
When the investment manager wishes to transfer ownership of a loan (or part thereof), the sale is recorded via the API to the Goji platform. If appropriate funds are available in the buyer's account in the Goji platform, the appropriate transactions are recorded and funds are moved to the seller's account.
GET /platformApi/settlement/product
GET /platformApi/settlement/product HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"products" : [ {
"investmentDocument" : "investmentDocument",
"isaEligible" : true,
"id" : "id"
}, {
"investmentDocument" : "investmentDocument",
"isaEligible" : true,
"id" : "id"
} ]
}
Description
Returns list of registered products
Response
Name | Type | Description |
---|---|---|
products | array | |
products[].id | string | The unique ID of the product |
products[].investmentDocument | string | A URL to a KID, investment memorandum or similar. This is used to track investments and their ISA suitability. |
products[].isaEligible | boolean | True if the investment can be included in an IF ISA. |
POST /platformApi/settlement/product
POST /platformApi/settlement/product HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"investmentDocument" : "investmentDocument",
"isaEligible" : true,
"id" : "id"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"investmentDocument" : "investmentDocument",
"isaEligible" : true,
"id" : "id"
}
Description
Adds a registered product
Request
Name | Type | Description | Required |
---|---|---|---|
id | string | The unique ID of the product | required |
investmentDocument | string | A URL to a KID, investment memorandum or similar. This is used to track investments and their ISA suitability. | required |
isaEligible | boolean | True if the investment can be included in an IF ISA. | required |
Response
Name | Type | Description |
---|---|---|
id | string | The unique ID of the product |
investmentDocument | string | A URL to a KID, investment memorandum or similar. This is used to track investments and their ISA suitability. |
isaEligible | boolean | True if the investment can be included in an IF ISA. |
PUT /platformApi/settlement/product/{productId}
PUT /platformApi/settlement/product/{productId} HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"investmentDocument" : "investmentDocument",
"isaEligible" : true
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"investmentDocument" : "investmentDocument",
"isaEligible" : true,
"id" : "id"
}
Description
Updates a registered product
Request
Name | Type | Description | Required |
---|---|---|---|
investmentDocument | string | A URL to a KID, investment memorandum or similar. This is used to track investments and their ISA suitability. | required |
isaEligible | boolean | True if the investment can be included in an IF ISA. | required |
Response
Name | Type | Description |
---|---|---|
id | string | The unique ID of the product |
investmentDocument | string | A URL to a KID, investment memorandum or similar. This is used to track investments and their ISA suitability. |
isaEligible | boolean | True if the investment can be included in an IF ISA. |
GET /platformApi/settlement/payment-destination
GET /platformApi/settlement/payment-destination HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"id" : "id"
}
Description
Lists payment destinations.
Response
Name | Type | Description |
---|---|---|
id | string | The unique id of the payment destination |
POST /platformApi/settlement/payment-destination
POST /platformApi/settlement/payment-destination HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"reference" : "reference",
"accountName" : "accountName",
"accountNumber" : "accountNumber",
"sortCode" : "sortCode"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id" : "id"
}
Description
Adds a payment destination.
The following Account Number, Sort Code combinations are valid examples and can be used for testing in the sandbox environment:
Account Number | Sort Code |
---|---|
00004588 | 203002 |
00027944 | 203002 |
58110244 | 204514 |
60282377 | 204514 |
87889196 | 166051 |
99993193 | 166051 |
Request
Name | Type | Description | Required |
---|---|---|---|
accountName | string | The bank account name. | optional |
accountNumber | string | The bank account number. | required |
sortCode | string | The bank account sort code. | required |
reference | string | The reference to be used when transferring funds. | required |
Response
Name | Type | Description |
---|---|---|
id | string | The unique id of the payment destination |
PUT /platformApi/settlement/payment-destination/{id}
PUT /platformApi/settlement/payment-destination/{id} HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"reference" : "reference",
"accountName" : "accountName",
"accountNumber" : "accountNumber",
"sortCode" : "sortCode"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id" : "id"
}
Description
Updates a payment destination.
Request
Name | Type | Description | Required |
---|---|---|---|
accountName | string | The bank account name. | optional |
accountNumber | string | The bank account number. | required |
sortCode | string | The bank account sort code. | required |
reference | string | The reference to be used when transferring funds. | required |
Response
Name | Type | Description |
---|---|---|
id | string | The unique id of the payment destination |
POST /platformApi/settlement/tranche
POST /platformApi/settlement/tranche HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"reference" : "reference",
"paymentDestinationId (Deprecated)" : "paymentDestinationId (Deprecated)",
"productId" : "productId",
"bankAccountId" : "bankAccountId",
"id" : "id",
"investments" : [ {
"amount" : {
"amount" : 2.68,
"currency" : "currency"
},
"clientId" : "clientId",
"accountType" : "GOJI_INVESTMENT",
"id" : "id"
}, {
"amount" : {
"amount" : 2.68,
"currency" : "currency"
},
"clientId" : "clientId",
"accountType" : "GOJI_INVESTMENT",
"id" : "id"
} ]
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"reference" : "reference",
"totalAmount" : {
"amount" : 2.68,
"currency" : "currency"
},
"id" : "id",
"accountNumber" : "accountNumber",
"sortCode" : "sortCode"
}
Description
Records an investment and triggers a transfer of funds to the Investment Manager.
Request
Name | Type | Description | Required |
---|---|---|---|
id | string | The unique ID for this tranche of investment | required |
productId | string | The ID of the investment product as preciously registered in the system | required |
paymentDestinationId (Deprecated) | string | The ID of the payment destination to be used for this tranche. This has been deprecated, please use the bankAccountId field | optional |
bankAccountId | string | The ID of the bank account details to be used for this tranche. | required |
reference | string | The bank reference for the funds transfer | required |
investments | array | required | |
investments[].id | string | The unique ID for this clients investment as registered here | required |
investments[].clientId | string | The ID of the investor | required |
investments[].amount | ref | The amount being invested | required |
investments[].accountType | string | The account making the investment. Possible values are: GOJI_INVESTMENT ISA |
required |
Response
Name | Type | Description |
---|---|---|
id | string | The unique ID for this investment |
totalAmount | ref | The total amount being invested |
totalAmount.amount | number | The amount. |
totalAmount.currency | string | The ISO 4217 three character codes eg 'GBP' |
sortCode | string | The sort code the funds will be sent to |
accountNumber | string | The account number the funds will be sent to |
reference | string | The bank reference for the funds transfer |
POST /platformApi/settlement/secondary-market
POST /platformApi/settlement/secondary-market HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"buySide" : {
"clientId" : "clientId",
"accountType" : "GOJI_INVESTMENT",
"fee" : {
"amount" : 2.68,
"currency" : "currency"
},
"bankAccountId" : "bankAccountId",
"reference" : "reference",
"totalPurchaseAmount" : {
"amount" : 2.68,
"currency" : "currency"
},
"newInvestmentId" : "newInvestmentId",
"dateTime": "2019-01-01T12:33:00Z",
"feePaymentDestination (Deprecated)" : "feePaymentDestination (Deprecated)"
},
"sellSide" : {
"clientId" : "clientId",
"accountType" : "GOJI_INVESTMENT",
"fee" : {
"amount" : 2.68,
"currency" : "currency"
},
"bankAccountId" : "bankAccountId",
"reference" : "reference",
"repaymentReference" : "repaymentReference",
"investmentId" : "investmentId",
"premium" : {
"amount" : 2.68,
"currency" : "currency"
},
"capitalAmount" : {
"amount" : 2.68,
"currency" : "currency"
},
"feePaymentDestination (Deprecated)" : "feePaymentDestination (Deprecated)"
}
}
HTTP/1.1 200 OK
Content-Type: application/json
"SECONDARY-4855bf09-6765-48c4-a8f7-5dd189924589"
Description
Records the settlement of a secondary market trade.
The response is a JSON string, containing a repaymentBatchReference
, which will be included in several
webhooks that can help to track the arrival of the funds into the sellers account. These webhooks include:
- INVESTMENT_REPAYMENT_INSTRUCTION_RECEIVED
- INVESTMENT_REPAYMENT_CLEARING
- CASH_INTEREST_REPAYMENT_CLEARING
- INVESTMENT_REPAYMENT_BATCH_COMPLETE
Request
Name | Type | Description | Required |
---|---|---|---|
buySide | ref | Details of the buy side. | required |
buySide.clientId | string | The client ID of the buyer | |
buySide.accountType | string | The account purchasing the investment Possible values are: GOJI_INVESTMENT ISA SIPP |
|
buySide.fee.amount | number | The amount. | |
buySide.fee.currency | string | The ISO 4217 three character codes eg 'GBP' | |
buySide.bankAccountId | string | The ID of the bank account details to send fees to | |
buySide.reference | string | The bank reference used in the transfer of fees | |
buySide.feeReference (optional) | string | Alias of the buySide.reference field. Provided for additional clarity. |
|
buySide.totalPurchaseAmount.amount | number | The amount. | |
buySide.totalPurchaseAmount.currency | string | The ISO 4217 three character codes eg 'GBP' | |
buySide.newInvestmentId | string | The ID for the investment being held by the buy side investor | |
buySide.dateTime | date/time | The date / time for the trade settlement | |
buySide.feePaymentDestination (Deprecated) | string | The ID of the payment destination to send fees to. This has been deprecated, please use the bankAccountId field | |
sellSide | ref | Details of the sell side. | required |
sellSide.clientId | string | The client ID of the seller | |
sellSide.accountType | string | The account selling the investment Possible values are: GOJI_INVESTMENT ISA SIPP |
|
sellSide.fee.amount | number | The amount. | |
sellSide.fee.currency | string | The ISO 4217 three character codes eg 'GBP' | |
sellSide.bankAccountId | string | The ID of the bank account details to send fees to | |
sellSide.reference | string | The bank reference used in the transfer of fees. | |
sellSide.feeReference (optional) | string | Alias of the sellSide.reference field. Provided for additional clarity. |
|
sellSide.repaymentReference (optional) | string | The bank reference used for the transfer of funds to the seller. If specified it will also be present on the INVESTOR_FUNDS_RECEIVED webhook |
|
sellSide.investmentId | string | The ID of the investment being sold | |
sellSide.premium.amount | number | The amount. | |
sellSide.premium.currency | string | The ISO 4217 three character codes eg 'GBP' | |
sellSide.capitalAmount.amount | number | The amount. | |
sellSide.capitalAmount.currency | string | The ISO 4217 three character codes eg 'GBP' | |
sellSide.feePaymentDestination (Deprecated) | string | The ID of the payment destination to send fees to. This has been deprecated, please use the bankAccountId field |
GET /platformApi/settlement/repayment/reference
GET /platformApi/settlement/repayment/reference HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"reference" : "reference",
"accountNumber" : "accountNumber",
"sortCode" : "sortCode"
}
Description
Generates a repayment reference to be used when depositing repayment funds.
Response
Name | Type | Description |
---|---|---|
reference | string | The bank reference to be used when depositing the repayment. |
accountNumber | string | The account number for the repayment deposit. |
sortCode | string | The sort code for the repayment deposit. |
POST /platformApi/settlement/repayment
POST /platformApi/settlement/repayment HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"reference" : "reference",
"investorRepayments" : [ {
"amount" : {
"amount" : 2.68,
"currency" : "currency"
},
"investmentId" : "investmentId",
"tax" : {
"amount" : 2.68,
"currency" : "currency"
},
"type" : "CAPITAL"
}, {
"amount" : {
"amount" : 2.68,
"currency" : "currency"
},
"investmentId" : "investmentId",
"tax" : {
"amount" : 2.68,
"currency" : "currency"
},
"type" : "CAPITAL"
} ]
}
HTTP/1.1 200 OK
Content-Type: application/json
""
Description
Adds a repayment to an investment.
- The system will record the repayments and wait for a deposit into your receiving account matching the amount and reference you specified when making the API call.
- Once the money is deposited the system will automatically distribute the funds to investors and notify them of a repayment.
- The system will publish a BATCH_UPDATE webhook with a type of
REPAYMENTS
to update you on the progress of the distribution.
Request
Name | Type | Description | Required |
---|---|---|---|
reference | string | The payment reference used for the repayment of funds. Will also be present on INVESTOR_FUNDS_RECEIVED webhook |
required |
investorRepayments | array | The repayments per investor. | required |
investorRepayments[].investmentId | string | The ID of the of the investment | required |
investorRepayments[].type | string | The type of the repayment Possible values are: CAPITAL INTEREST |
required |
investorRepayments[].amount | ref | The amount being repaid | required |
investorRepayments[].tax | ref | The amount of tax being withheld from this repayment | optional |
POST /platformApi/settlement/investor-repayment
POST /platformApi/settlement/investor-repayment HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"reference" : "reference",
"sourceWalletId": "sourceWalletId",
"investorRepayments" : [ {
"amount" : {
"amount" : 1.23,
"currency" : "GBP"
},
"investmentId" : "investmentId",
"tax" : {
"amount" : 1.23,
"currency" : "GBP"
},
"type" : "CAPITAL"
}, {
"amount" : {
"amount" : 1.23,
"currency" : "GBP"
},
"tax" : {
"amount" : 1.23,
"currency" : "GBP"
},
"type" : "INTEREST",
"clientId": "clientId",
"accountType": "accountType"
} ]
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"repaymentBatchReference": "REPAYMENT-fef06e98-1603-4cc6-9e15-2507b818fe5e"
}
HTTP/1.1 400 Bad Request
Content-Type: application/json
{
"errors": [
{
"errorCode": "INVALID_DATA",
"message": "cannot process both cash interest and interest repayments in the same call"
}
]
}
HTTP/1.1 400 Bad Request
Content-Type: application/json
{
"errors": [
{
"errorCode": "INVALID_DATA",
"message": "Field 'sourceWalletId' cannot be present when 'investorRepayments[].type' is 'INTEREST_CASH'."
}
]
}
Description
Adds repayments to investments or uninvested cash from a specified flexible payments wallet.
- On receiving the API call, the system will reserve money in the wallet and start the distribution process provided the
sourceWalletId
has enough funds. - There is no need to manually move money from a wallet to the receiving account.
- The system will publish an INVESTMENT_REPAYMENT_INSTRUCTION_RECEIVED webhook once the repayment batch has been accepted.
- The system will then publish "n" webhooks of type INVESTMENT_REPAYMENT_CLEARING or CASH_INTEREST_REPAYMENT_CLEARING, where "n" is the size of the
investorRepayments
array, as each repayment in the batch is cleared. - Finally the system will publish an INVESTMENT_REPAYMENT_BATCH_COMPLETE webhook when the batch in considered complete. This is a batch process and therefore might be sent later than the last repayment to clear.
- These webhooks should provide coverage of all stages of the batch clearing. When using INVESTMENT_REPAYMENT_CLEARING or CASH_INTEREST_REPAYMENT_CLEARING, it might be relevant to ignore all INVESTOR_FUNDS_RECEIVED webhooks with a
sourceType
ofCAPITAL_REPAYMENT
,INTEREST_REPAYMENT
,CASH_INTEREST_RECEIVED
orSELL_PREMIUM
. - All these webhooks will reference
repaymentBatchReference
so you are required to store this value for reconciling repayments as they clear.
Request
Name | Type | Description | Required |
---|---|---|---|
reference | string | The payment reference used for the repayment of funds. This will be present on the wallet statement. | required |
sourceWalletId | string | The wallet this distribution should be made from. This field cannot be used if the repayment type is INTEREST_CASH . |
required |
investorRepayments | array | The repayments per investor. | required |
investorRepayments[].investmentId | string | The ID of the of the investment that was specified in the original investment creation call. This should not be part of the request when type INTEREST_CASH is used |
optional |
investorRepayments[].type | string | The type of the repayment Possible values are: CAPITAL INTEREST INTEREST_CASH PREMIUM |
required |
investorRepayments[].amount | ref | The amount being repaid | required |
investorRepayments[].tax | ref | The amount of tax being withheld from this repayment | optional |
investorRepayments[].clientId | string | The client-specified investor ID that the repayment was for. This is required when type INTEREST_CASH is used |
optional |
investorRepayments[].accountType | string | The account type of the investor. This is required when type INTEREST_CASH is used. Possible values are: ISA GOJI_INVESTMENT |
optional |
Response
Name | Type | Description |
---|---|---|
repaymentBatchReference | string | The unique ID for this repayment request |
Possible HTTP Statuses
HTTP Status Code | Description | Body | Content-Type |
---|---|---|---|
200 Ok | Batch accepted to be instructed. Note that this does not indicate completion or success. Subsequent processing is asynchronous, so the caller should listen to the webhooks detailed above to determine progress. | See above | application/json |
400 Bad Request | The request was malformed. See body for more information | Error | application/json |
50x Unknown errors and timeouts | Unknown errors and timeouts. The caller should not assume that the request has failed. Listen for any subsequent webhooks indicating processing may have started, and ensure any automated retries use the X-CLIENT-REQUEST-ID header and repeat within a maximum of 24 hours to prevent double-processing | Error | application/json |
GET /investor-repayment
GET /investor-repayment HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
X-GOJI-CLIENT-ID: 79f33f3c-86e0-4613-ba49-9fac3c6f0eac
HTTP/1.1 200 OK
Content-Type: application/json
X-GOJI-CLIENT-ID: 79f33f3c-86e0-4613-ba49-9fac3c6f0eac
{
"REPAYMENT-c931d903-bd8a-4907-9dfa-68aeab4b86a8": {
"totalRepayments": 50,
"totalAmount": {
"amount": 1.000000000000,
"currency": "GBP"
},
"overallStatus": "PENDING",
"postedAt": "2021-11-11T16:14:57.165Z",
"clearedAt": null
},
"REPAYMENT-421ec28f-3484-4278-bdd9-6fa781574af2": {
"totalRepayments": 50,
"totalAmount": {
"amount": 1.000000000000,
"currency": "GBP"
},
"overallStatus": "PENDING",
"postedAt": "2021-11-11T16:47:57.073Z",
"clearedAt": null
}
}
Description
Returns a map of repayment overviews for the last 20 repayment requests made.
Response
Name | Type | Value Type | Value Description |
---|---|---|---|
repaymentBatchReference | string | RepaymentBatchReferenceId | A unique identifier for a repayment request |
.totalRepayments | Number | Number | The total number of repayments in the repayment request with id repaymentBatchReference . |
.totalAmount.amount | Number | Number | The total amount to be paid out associated with the repaymentBatchReference . |
.totalAmount.currency | String | ISO 4217 | The currency that the totalAmount.amount is in. |
.overallStatus | String | Enum | The overall status of the repayment request. Possible values are: PENDING CLEARED . |
.postedAt | String | ISO 8601 | The time at which the repayment request was recorded in the system. |
.clearedAt | String | ISO 8601 | The time at which the repayment request was marked as cleared in the system. Null where the overallStatus is not CLEARED . |
GET /investor-repayment/{repaymentBatchReference}
GET /investor-repayment/{repaymentBatchReference} HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
X-GOJI-CLIENT-ID: 79f33f3c-86e0-4613-ba49-9fac3c6f0eac
HTTP/1.1 200 OK
Content-Type: application/json
X-GOJI-CLIENT-ID: 79f33f3c-86e0-4613-ba49-9fac3c6f0eac
{
"repaymentBatchReference": "REPAYMENT-2b86a1bb-fe9d-4476-9e6b-0e29477e251d",
"investorRepayments": [
{
"repaymentId": "01180666-234b-4bf4-a879-60196e4f781b",
"amount": {
"amount": 0.020000000000,
"currency": "GBP"
},
"tax": {
"amount": 0.010000000000,
"currency": "GBP"
},
"type": "INTEREST",
"status": "PENDING",
"investmentId": "5ab5df55-8e5e-4380-a94c-6fcac3a9a6ac",
"clientId": "SPECS-63880",
"accountType": "ISA"
},
{
"repaymentId": "18529cda-b32a-4053-bd0e-4140c0a9da42",
"amount": {
"amount": 0.020000000000,
"currency": "GBP"
},
"tax": {
"amount": 0.010000000000,
"currency": "GBP"
},
"type": "INTEREST",
"status": "CLEARED",
"investmentId": "fcc23a87-7a90-4bfc-85e5-b214bb1db68f",
"clientId": "SPECS-63880",
"accountType": "GOJI_INVESTMENT"
}
]
}
Description
Returns the repayment request associated with the unique repaymentBatchReference
supplied.
Response
Name | Type | Value Type | Value Description |
---|---|---|---|
repaymentBatchReference | String | RepaymentBatchReferenceId | The unique identifier for a repayment request. |
investorRepayments | Array | Array | The array of investor repayments included in the repayment request. |
investorRepayments[].investmentId | String | InvestmentId | The client-specified investment ID that the repayment was for. |
investorRepayments[].type | String | Enum | The repayment type. Possible values are: INTEREST CAPITAL INTEREST_CASH PREMIUM |
investorRepayments[].status | String | Enum | The repayment status. Possible values are: PENDING CLEARED |
investorRepayments[].amount | Object | Object | Describes the amount repaid/ to be repaid. |
investorRepayments[].amount.amount | Number | Number | The amount to be repaid in amount.currency . |
investorRepayments[].amount.currency | String | ISO 4217 | The currency that amount.amount is expressed in. |
investorRepayments[].tax | Object | Object | The amount of tax withheld from this repayment. May be null. |
investorRepayments[].tax.amount | Number | Number | The amount to be taxed in tax.currency . |
investorRepayments[].tax.currency | String | ISO 4217 | The currency that tax.amount is expressed in. |
investorRepayments[].clientId | String | ClientId | The client-specified investor ID that the repayment was for. |
investorRepayments[].accountType | String | Enum | The account type of the investor. Possible values are: ISA GOJI_INVESTMENT |
GET /investment/{clientInvestmentId}
GET /investment/{clientInvestmentId} HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
X-GOJI-CLIENT-ID: 79f33f3c-86e0-4613-ba49-9fac3c6f0eac
HTTP/1.1 200 OK
Content-Type: application/json
X-GOJI-CLIENT-ID: 79f33f3c-86e0-4613-ba49-9fac3c6f0eac
{
"investmentId": "5ab5df55-8e5e-4380-a94c-6fcac3a9a6ac",
"amount": {
"amount": 0.020000000000,
"currency": "GBP"
},
"postedAt": "2021-11-26T15:07:02Z",
"investorRepayments": [
{
"repaymentId": "01180666-234b-4bf4-a879-60196e4f781b",
"amount": {
"amount": 0.020000000000,
"currency": "GBP"
},
"tax": {
"amount": 0.010000000000,
"currency": "GBP"
},
"type": "INTEREST",
"status": "PENDING",
"investmentId": "5ab5df55-8e5e-4380-a94c-6fcac3a9a6ac"
}
]
}
Description
Returns all repayments associated with the specified investment.
Response
Name | Type | Value Type | Value Description |
---|---|---|---|
investmentId | String | InvestmentId | The unique, client-specified investment ID |
amount.amount | Number | Number | The total amount invested |
amount.currency | String | ISO 4217 | The currency that the amount.amount is in. |
postedAt | String | ISO 8601 | The time at which the investment was originally recorded. |
investorRepayments | Array | Array | The array of investor repayments associated with the investment |
investorRepayments[].investmentId | String | InvestmentId | The client-specified investment ID that the repayment was for. |
investorRepayments[].type | String | Enum | The repayment type. Possible values are: INTEREST CAPITAL |
investorRepayments[].status | String | Enum | The repayment status. Possible values are: PENDING CLEARED |
investorRepayments[].amount | Object | Object | Describes the amount repaid/ to be repaid. |
investorRepayments[].amount.amount | Number | Number | The amount to be repaid in amount.currency . |
investorRepayments[].amount.currency | String | ISO 4217 | The currency that amount.amount is expressed in. |
investorRepayments[].tax | Object | Object | The amount of tax withheld from this repayment. May be null. |
investorRepayments[].tax.amount | Number | Number | The amount to be taxed in tax.currency . |
investorRepayments[].tax.currency | String | ISO 4217 | The currency that tax.amount is expressed in. |
GET /platformApi/settlement/investors/{clientId}/accounts/{accountType}/investments
GET /platformApi/settlement/investors/{clientId}/accounts/{accountType}/investments HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
X-GOJI-CLIENT-ID: 79f33f3c-86e0-4613-ba49-9fac3c6f0eac
HTTP/1.1 200 OK
Content-Type: application/json
X-GOJI-CLIENT-ID: 79f33f3c-86e0-4613-ba49-9fac3c6f0eac
{
"investments" : [ {
"amount" : {
"amount" : 2.68,
"currency" : "currency"
},
"clientId" : "clientId",
"productId" : "productId",
"investmentId" : "investmentId",
"accountType" : "GOJI_INVESTMENT",
"trancheId" : "trancheId"
}, {
"amount" : {
"amount" : 2.68,
"currency" : "currency"
},
"clientId" : "clientId",
"productId" : "productId",
"investmentId" : "investmentId",
"accountType" : "GOJI_INVESTMENT",
"trancheId" : "trancheId"
} ]
}
Description
Lists recorded investments for an investor.
Response
Name | Type | Description |
---|---|---|
investments | array | |
investments[].investmentId | string | The ID of the investment. This is the ID of the overall investment and so will be shared by multiple investors. |
investments[].clientId | string | The ID of the investor |
investments[].productId | string | The ID of the investment product as preciously registered in the system |
investments[].trancheId | string | The ID of the investment tranche of a particular product |
investments[].amount | ref | The amount being invested |
investments[].accountType | string | The account making the investment. Possible values are: GOJI_INVESTMENT ISA |
Settlement - Equity
Instruments
The Instruments API allows an Investment Manager to:
(1) create new instruments and (2) issue/ allocate shares of that instrument.
A registered instrument can then be used for:
Instrument Creation
Instrument creation allows registering a new Instrument.
This instrument would then be referenced in requests to endpoints e.g. Trade Settlement by instrument symbol
.
Currently only equity instruments are supported.
Instrument Model
The Instrument model used for endpoints:
⚠️ Please note that before registering instruments, BankAccountIds have to be registered at the endpoint:
POST /platformApi/bankAccountDetails
before they can be used for the following instrument attributes:
(1) paymentInstructions.primaryMarketBankAccountId
(2) feeTypes[].bankAccountId
⚠️ Please note that before registering instruments, ownerPartyIds have to be registered at the endpoint:
before they can be used for the following instrument attributes
the company is required to be in a
REGISTERED
state:
(1) ownerPartyId
Required Attributes
Key | JSON Type | Value Type | Value Description |
---|---|---|---|
symbol | String | InstrumentSymbol | Unique symbol used to identify this instrument. Max 100 characters. |
name | String | String | Human readable name of the instrument. |
assetClass | String | AssetClass | Values: EQUITY |
ownerPartyId | String | String | The partyId of the legal entity that owns the instrument as previously registered. |
paymentInstructions | Object | Object | Contains the attributes listed below. |
paymentInstructions. primaryMarketBankAccountId | String | BankAccountId | The BankAccountId to send primary market sale funds to. |
Optional Attributes
Key | JSON Type | Value Type | Value Description |
---|---|---|---|
paymentInstructions. feeTypes[] | Array | List | A list of all additional fees associated with this instrument. Can be empty. |
feeTypes[].symbol | String | FeeSymbol | A symbolic representation of the type of fee, i.e. STAMP_DUTY. Required if a feeType is specified. |
feeTypes[].bankAccountId | String | BankAccountId | The BankAccountId associated with the FeeSymbol. Required if a feeType is specified. |
POST /instruments
POST /instruments HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
X-GOJI-CLIENT-ID: 79f33f3c-86e0-4613-ba49-9fac3c6f0eab
{
"symbol": "SPV1",
"name": "Happy Parade - SPV1",
"assetClass": "EQUITY",
"ownerPartyId": "COM~d28360c5-07a3-4d78-ade4-bddcdd8b5502"
"paymentInstructions": {
"primaryMarketBankAccountId": "01700ae3-1b61-41c8-87d9-c59e82f33a41",
"feeTypes": [
{
"symbol": "COMMISSION",
"bankAccountId": "01700ae3-1b61-41c8-87d9-c59e82f33a41"
}
]
}
}
HTTP/1.1 201 Created
Content-Type: application/json
X-GOJI-REQUEST-ID: 79f33f3c-86e0-4613-ba49-9fac3c6f0eab
{
"symbol": "SPV1",
"name": "Happy Parade - SPV1",
"assetClass": "EQUITY",
"ownerPartyId": "COM~d28360c5-07a3-4d78-ade4-bddcdd8b5502",
"paymentInstructions": {
"primaryMarketBankAccountId": "01700ae3-1b61-41c8-87d9-c59e82f33a41",
"feeTypes": [
{
"symbol": "COMMISSION",
"bankAccountId": "01700ae3-1b61-41c8-87d9-c59e82f33a41"
}
]
}
}
Description
Registers a new instrument which can then be referenced by its symbol in other APIs which require an InstrumentSymbol
.
A registered instrument can be referenced by the InstrumentSymbol
in the following APIs:
In addition to defining the instrument, a list of fees that will apply to any trade settlement for this instrument
must be specified. The FeeSymbol
s that have been registered will later be specified in the
Trade Settlement API to charge fees to the investors at settlement time.
Request
Body: Instrument Model
Response
Body: Instrument Model
Http Status:
Code | Description | Body | Content-Type |
---|---|---|---|
201 Created | Instrument created successfully | Instrument | application/json |
400 Bad Request | The request was malformed. See response body | None | n/a |
401 Unauthorized | No auth provided, auth failed, or not authorized | None | n/a |
GET /instruments/{symbol}
Description
GET /instruments/SPV99 HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
X-GOJI-CLIENT-ID: 79f33f3c-86e0-4613-ba49-9fac3c6f0eab
HTTP/1.1 200 OK
Content-Type: application/json
X-GOJI-REQUEST-ID: 79f33f3c-86e0-4613-ba49-9fac3c6f0eab
{
"symbol": "SPV99",
"name": "Happy Parade - SPV99",
"assetClass": "EQUITY",
"ownerPartyId": "COM~d28360c5-07a3-4d78-ade4-bddcdd8b5502",
"paymentInstructions": {
"primaryMarketBankAccountId": "01700ae3-1b61-41c8-87d9-c59e82f33a41",
"feeTypes": [
{
"symbol": "COMMISSION",
"bankAccountId": "01700ae3-1b61-41c8-87d9-c59e82f33a41"
}
]
}
}
Retrieves the details held on an instrument given its symbol
is supplied.
Request
Body: None
Response
Body: Instrument Model
Http Status:
Code | Description | Body | Content-Type |
---|---|---|---|
200 OK | Instrument exists and is returned in the body | Instrument | application/json |
400 Bad Request | The request was malformed. See response body | None | n/a |
401 Unauthorized | No auth provided, auth failed, or not authorized | None | n/a |
404 Not Found | No instrument with this symbol is registered | None | n/a |
Issuing / Allocating Shares
After an instrument has been created, a number of shares must be issued to the nominee company. This can be achieved
using POST /allocations
.
Alternatively, if this instrument is created during migration of asset custody to Goji Nominee Ltd, and shares have
already been sold to investors, the POST /allocations
can be used to allocate
each investor's shares.
Allocation Model
Required Attributes
All of the following attributes of the Allocation Model are considered 'required' attributes.
⚠️ In the case of the investor
and nominee
attributes specified below however, it may be more apt to call them 'conditional' attributes.
If an allocation request is specified as being to an investor
, it cannot simultaneously be to the nominee
company.
Please specify either one or the other when sending an allocation instruction.
⚠️ When allocating initial shares to the nominee
the allocation will be placed in a PENDING
state until the necessary paperwork has been
completed by our operations team to fulfil the CASS 6 regulations. Once approved the allocation will be moved into
an ALLOCATED
status and a webhook and email will be triggered notifying the share allocation is now eligible for trading.
For integration purposes, endpoints have been made available in the test environments to manually move the nominee allocation
into one of the
terminal statuses.
These endpoints are:
(1) PUT /allocations/test/{id}/approve
(2) PUT /allocations/test/{id}/reject
The webhook in question is further described here
.
Key | JSON Type | Value Type | Value Description |
---|---|---|---|
id | String | AllocationId | The platform generated unique ID of the allocation. Up to 100 characters. |
quantity | Number | Number | The (whole) number of shares to allocate. |
instrumentSymbol | String | InstrumentSymbol | Platform generated unique ID of the instrument. |
investor | Object | Object | Set to null for non-investor allocations, else populated with the fields below. |
investor.clientId | String | ClientId | Either the client ID for the investor. Required if investor specified on the allocation. |
investor.accountType | String | Enum | The investor's account to allocate to. Values: GIA , ISA . Required if investor specified on the allocation. |
nominee | Object | Object | Set to null when not allocating to a nominee, else fields below. |
nominee.accountType | String | Enum | The nominee involved in the alloc. Value: ORIGINATOR . Required if nominee specified on the allocation. |
status | String | Enum | PENDING , CANCELLED , ALLOCATED |
POST /allocations
POST /allocations HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
X-GOJI-CLIENT-ID: 59425d3d-cf73-44ff-aecb-590cd198a4bc
{
"id": "5dd40510-810e-4a55-a395-04819fd915b9",
"quantity": 1000000,
"instrumentSymbol": "446ca5fc-4d38-4706-a50b-5b3a64d3f703",
"investor": null,
"nominee": {
"accountType": "ORIGINATOR"
}
}
HTTP/1.1 201 Created
Content-Type: application/json
{
"id": "5dd40510-810e-4a55-a395-04819fd915b9",
"quantity": 1000000,
"instrumentSymbol": "446ca5fc-4d38-4706-a50b-5b3a64d3f703",
"investor": null,
"nominee": {
"accountType": "ORIGINATOR"
},
"status": "PENDING"
}
Description
Creates a new allocation of shares.
When initially issuing shares, the nominee
must be specified.
When migrating shares, the investor
must be specified.
⚠️ When allocating initial shares to the nominee
the allocation will be placed in a PENDING
state until the necessary paperwork has been
completed by our operations team to fulfil the CASS 6 regulations. Once approved the allocation will be moved into
an ALLOCATED
status and a webhook and email will be triggered notifying the share allocation is now eligible for trading.
For integration purposes, endpoints have been made available in the test environments to manually move the nominee allocation
into one of the
terminal statuses. These endpoints are PUT /allocations/test/{id}/approve
and PUT /allocations/test/{id}/reject
.
The webhook in question is further described here
.
Request
Body: Allocation Model
Response
Body: Allocation Model
Http Status:
HTTP Status Code | Description | Body | Content-Type |
---|---|---|---|
201 Created | Allocation created successfully | Allocation | application/json |
400 Bad Request | The request was malformed. See response body | None | n/a |
401 Unauthorized | No auth provided, auth failed, or not authorized | None | n/a |
GET /allocations/{id}
GET /allocations/5dd40510-810e-4a55-a395-04819fd915b9 HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
X-GOJI-CLIENT-ID: 59425d3d-cf73-44ff-aecb-590cd198a4bc
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "5dd40510-810e-4a55-a395-04819fd915b9",
"quantity": 1000000,
"instrumentSymbol": "446ca5fc-4d38-4706-a50b-5b3a64d3f703",
"investor": null,
"nominee": {
"accountType": "ORIGINATOR"
},
"status": "ALLOCATED"
}
Description
Retrieves the details of an existing allocation given an allocation id
is supplied.
Request
Body: Allocation Model
Response
Body: Allocation Model
Http Status:
Code | Description | Body | Content-Type |
---|---|---|---|
200 OK | Allocation exists and is return in the body | Allocation | application/json |
400 Bad Request | The request was malformed. See response body | None | n/a |
401 Unauthorized | No auth provided, auth failed, or not authorized | None | n/a |
404 Not Found | No allocation with this UUID exists | None | n/a |
🧪 PUT /allocations/test/{id}/approve
PUT /allocations/test/5dd40510-810e-4a55-a395-04819fd915b9/approve HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
X-GOJI-CLIENT-ID: 59425d3d-cf73-44ff-aecb-590cd198a4bc
HTTP/1.1 202 ACCEPTED
Content-Type: application/json
Description
⚠️ This endpoint is only available in the test and sandbox environments for integration purposes.
It will approve and action an existing allocation towards a nominee.
Off the back of a call to this endpoint, the NOMINEE_ALLOCATION_STATUS_UPDATE
webhook is triggered.
Post receipt of that webhook, the allocation instruction will have been executed and shares will have been allocated to the nominee.
Request
No body. The id
specified as a path parameter refers to the one described here: Allocation Model
Response
No body.
Http Status:
Code | Description | Body | Content-Type |
---|---|---|---|
202 Accepted | Allocation exists and has been updated. | None | n/a |
400 Bad Request | The request was malformed. See response body | None | n/a |
401 Unauthorized | No auth provided, auth failed, or not authorized | None | n/a |
404 Not Found | No allocation with this UUID exists | None | n/a |
🧪 PUT /allocations/test/{id}/reject
PUT /allocations/test/5dd40510-810e-4a55-a395-04819fd915b9/reject HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
X-GOJI-CLIENT-ID: 59425d3d-cf73-44ff-aecb-590cd198a4bc
HTTP/1.1 202 ACCEPTED
Content-Type: application/json
Description
⚠️ This endpoint is only available in the test and sandbox environments for integration purposes.
It will cancel a pending allocation instruction towards a nominee.
Off the back of a call to this endpoint, the NOMINEE_ALLOCATION_STATUS_UPDATE
webhook is triggered.
Request
No body. The id
specified as a path parameter refers to the one described here: Allocation Model
Response
No body.
Http Status:
Code | Description | Body | Content-Type |
---|---|---|---|
202 Accepted | Allocation exists and has been updated. | None | n/a |
400 Bad Request | The request was malformed. See response body | None | n/a |
401 Unauthorized | No auth provided, auth failed, or not authorized | None | n/a |
404 Not Found | No allocation with this UUID exists | None | n/a |
Trade Settlement
The Trade Settlement API allows an Investment Manager to report trades which require settlement.
Trades
Once an instrument has been created, it can then be traded. A trade can be submitted using POST /trades
.
To retrieve an existing trade, the GET /trades/{id}
endpoint can be used.
Trade Model
Required Attributes
Key | JSON Type | Value Type | Value Description |
---|---|---|---|
id | String | TradeId | The platform generated unique ID of the trade. Up to 100 characters. |
instrumentSymbol | String | ID/Symbol | The platform generated unique ID/symbol of the instrument. |
quantity | Number | Number | The number of shares being bought/sold. |
price | Object | Object | The price the instrument is being traded at. |
price.amount | Number | Number | The cost per share unit in price.currency . |
price.currency | String | ISO 4217 | The currency that price.amount is expressed in. |
transactTime | String | ISO 8601 | The timestamp at which the trade was originally executed on the platform. |
buy | Object | Object | Represents the buy-side details of a trade |
buy.investor | Object | Object | Set to null for non-investor, or details investor details. |
buy.investor. clientId | String | String | The registered clientId of the investor, i.e. PROP-12345. |
buy.investor. accountType | String | Enum | Values: GIA , ISA . |
buy.nominee | Object | Object | Set to null when the buyer is not a nominee, else field below. |
buy.nominee. accountType | String | Enum | The nominee involved in the buy. Value: ORIGINATOR . |
buy.fees[] | Array | List | Required when fees exist on the instrument being traded that the buyer needs to pay. Otherwise leave empty. |
sell | Object | Object | Represents the sell-side details of a trade |
sell.investor | Object | Object | Set to null for non-investor, or details investor details. |
sell.investor. clientId | String | String | The registered clientId of the investor, i.e. PROP-12345. |
sell.investor. accountType | String | Enum | Values: GIA , ISA . |
sell.nominee | Object | Object | Set to null when the seller is not a nominee, else fields below. |
sell.nominee. accountType | String | Enum | The nominee involved in the sell. Values: ORIGINATOR . |
sell.fees[] | Array | List | Required when fees exist on the instrument being traded that the seller needs to pay. Otherwise leave empty. |
Optional Attributes
Key | JSON Type | Value Type | Value Description |
---|---|---|---|
buy.fees[] | Array | List | Optional. Fields below detail a FeeSymbol registered at POST /instrument . |
buy.fees[] .symbol | String | FeeSymbol | Fee type symbol registered at POST /instrument . |
buy.fees[] .cost.amount | Number | Number | The amount to be charged associated with a specific FeeSymbol |
buy.fees[] .cost.currency | Number | Number | The currency that cost.amount is expressed in. |
sell.fees[] | Array | List | Optional. Fields below detail a FeeSymbol registered at POST /instrument . |
sell.fees[] .symbol | String | FeeSymbol | Fee type symbol registered at POST /instrument . |
sell.fees[] .cost.amount | Number | Number | The amount to be charged associated with a specific FeeSymbol |
sell.fees[] .cost.currency | Number | Number | The currency that cost.amount is expressed in. |
settlementStatus | String | Enum | Response only. Details the current settlement status of a trade. |
POST /trades
POST /trades HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
X-GOJI-CLIENT-ID: 79f33f3c-86e0-4613-ba49-9fac3c6f0eab
{
"id": "cdfb86c8-1085-43ed-9839-f4c8e7267818",
"instrumentSymbol": "446ca5fc-4d38-4706-a50b-5b3a64d3f703",
"quantity": 1000,
"price": {
"amount": 4.99,
"currency": "GBP"
},
"transactTime": "2019-12-09T10:21:19.453Z",
"buy": {
"investor": {
"clientId": "PROP-12345",
"accountType": "GIA"
},
"nominee": null,
"fees": [
{
"symbol": "STAMP_DUTY",
"cost": {
"currency": "GBP",
"amount": 7.27
}
}
]
},
"sell": {
"investor": null,
"nominee": {
"accountType": "ORIGINATOR"
},
"fees": [
]
}
}
Description
Persists a new trade which will then undergo the settlement process.
An instrument must first be registered using the following API:
...before it can be traded.
Trades can be between the nominee company and an investor or two investors.
Request
Body: Trade Model
Response
Body: Trade Model
Http Status:
HTTP Status Code | Description | Body | Content-Type |
---|---|---|---|
201 Created | Trade created successfully | Trade | application/json |
400 Bad Request | The request was malformed. See response body | None | n/a |
401 Unauthorized | No auth provided, auth failed, or not authorized | None | n/a |
GET /trades/{id}
GET /trades/cdfb86c8-1085-43ed-9839-f4c8e7267818 HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
X-GOJI-CLIENT-ID: 79f33f3c-86e0-4613-ba49-9fac3c6f0eab
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "cdfb86c8-1085-43ed-9839-f4c8e7267818",
"instrumentSymbol": "446ca5fc-4d38-4706-a50b-5b3a64d3f703",
"quantity": 1000,
"price": {
"amount": 4.99,
"currency": "GBP"
},
"transactTime": "2019-12-09T10:21:19.453Z",
"settlementStatus": "SETTLING",
"buy": {
"investor": {
"clientId": "PROP-12345",
"accountType": "GIA"
},
"nominee": null,
"fees": [
{
"narrative": "Stamp Duty",
"cost": {
"currency": "GBP",
"amount": 5
}
}
]
},
"sell": {
"investor": null,
"nominee": {
"accountType": "ORIGINATOR"
},
"fees": [
]
}
}
Description
Retrieves the details of an existing trade given trade id
.
Request
Body: None
Response
Body: Trade Model
Http Status:
Code | Description | Body | Content-Type |
---|---|---|---|
200 OK | Trade exists and is return in the body | Trade | application/json |
400 Bad Request | The request was malformed. See response body | None | n/a |
401 Unauthorized | No auth provided, auth failed, or not authorized | None | n/a |
404 Not Found | No trade with this UUID exists | None | n/a |
Corporate Actions
The Corporate Actions API allows an Investment Manager to perform Corporate Actions that relate to Instruments.
The API is currently under construction.
Dividends
The POST /corporate-actions/dividends
endpoint can be used to pay dividends
to investors that hold shares in an instrument.
Said endpoint references a registered instrument, and takes a list of all the investors that are shareholders to be paid.
The call to POST /corporate-actions/dividends
will return a 201 Created response
with a status
field in the Dividend body of AWAITING FUNDS
.
⚠️ Please note that this response only indicates that the dividend instruction has been received. The distribution of the dividend to investors will not occur until the necessary funds have been sent.
Funds should be sent to the bank details specified in the PayTo
section of the response, including the payTo.reference
.
Once payment has been made, the GET /corporate-actions/dividends/{id}
endpoint can be used to see the current status of the dividend instruction.
The status of the money transfer is further broken down at a per investor level.
Dividends Model
Required Attributes
Key | JSON Type | Value Type | Value Description |
---|---|---|---|
id | String | DividendId | The platform generated UUID of the dividend posting. |
instrumentSymbol | String | InstrumentSymbol | The unique ID/symbol of the instrument registered by the platform. |
totalPayout. currency | String | ISO 4217 | The currency that the total dividend payment is in. |
totalPayout. amount | Number | Number | The overall amount to be paid out. |
payments[] | Array | List | The list of all individual payments due to be paid out. |
payments[]. clientId | String | String | The investor's clientId for a dividend payment. |
payments[]. accountType | String | Enum | The account type to pay the dividend to for some clientId . Values: GIA , ISA . |
payments[]. payment.amount | Number | Number | The total amount to be paid to a clientId in the given payment.currency . |
payments[]. payment.currency | String | ISO 4217 | The currency corresponding to the payment.amount to be paid. |
Additional Response Attributes
The following list of attributes are response-only and are expected to always be present on a response.
Key | JSON Type | Value Type | Value Description |
---|---|---|---|
status | String | Enum | Response Only. The status of the overall dividend instruction. Values: AWAITING_FUNDS , DISTRIBUTING , COMPLETE . |
payments[].status | String | Enum | Response Only. The status of an individual payment under payments . Values: PENDING , COMPLETE . |
payTo.accountName | String | String | Response Only. The account name associated with the accountNumber and sortCode below. |
payTo.accountNumber | String | String | Response Only. The account number to send payment to. |
payTo.sortCode | String | String | Response Only. The sort code to send payment to. |
payTo.reference | String | String | Response Only. The reference to use when sending payment. |
POST /corporate-actions/dividends
POST /corporate-actions/dividends HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"id": "627e27b2-75be-4673-ba5a-7f765a8ace89",
"instrumentSymbol": "instrument1",
"totalPayout": {
"currency": "GBP",
"amount": 180
},
"payments": [
{
"clientId": "clientId",
"accountType": "GIA",
"payment": {
"currency": "GBP",
"amount": 120
}
},
{
"clientId": "clientId2",
"accountType": "GIA",
"payment": {
"currency": "GBP",
"amount": 60
}
}
]
}
HTTP/1.1 201 Created
Content-Type: application/json
X-GOJI-REQUEST-ID: 49801f79-5347-4db5-a2b9-59e6cf3e0a22
{
"id": "627e27b2-75be-4673-ba5a-7f765a8ace89",
"instrumentSymbol": "instrument1",
"status": "AWAITING_FUNDS",
"totalPayout": {
"currency": "GBP",
"amount": 180
},
"payments": [
{
"clientId": "clientId",
"accountType": "GIA",
"payment": {
"currency": "GBP",
"amount": 120
},
"status": "PENDING"
},
{
"clientId": "clientId2",
"accountType": "GIA",
"payment": {
"currency": "GBP",
"amount": 60
},
"status": "PENDING"
}
],
"payTo": {
"accountName": "Platform1 - Receiving",
"accountNumber": "12345678",
"sortCode": "123456",
"reference": "OR0CE628FF"
}
}
Description
Creates a new dividend instruction for an existing instrument to a list of investors.
⚠️ Please ensure that the relevant instrument is already registered at the following endpoint before using the dividend endpoints:
Request
Body: Dividend Model
Response
Body: Dividend Model
Http Status:
HTTP Status Code | Description | Body | Content-Type |
---|---|---|---|
201 Created | Dividend posting created successfully | Dividend | application/json |
400 Bad Request | The request was malformed. See response body | None | n/a |
401 Unauthorized | No auth provided, auth failed, or not authorized | None | n/a |
GET /corporate-actions/dividends/{id}
To see the current state of a dividend instruction, this endpoint can be used.
It will provide two statuses:
(1) An overall status
of the dividend instruction.
(2) A breakdown of the current status
of each payment.
GET /corporate-actions/dividends/627e27b2-75be-4673-ba5a-7f765a8ace89 HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
X-GOJI-REQUEST-ID: 6937bd3b-e3de-4fd6-9bd9-c87cd7305180
{
"id": "627e27b2-75be-4673-ba5a-7f765a8ace89",
"instrumentSymbol": "instrument1",
"status": "AWAITING_FUNDS",
"totalPayout": {
"currency": "GBP",
"amount": 180
},
"payments": [
{
"clientId": "clientId",
"accountType": "GIA",
"payment": {
"currency": "GBP",
"amount": 120
},
"status": "PENDING"
},
{
"clientId": "clientId2",
"accountType": "GIA",
"payment": {
"currency": "GBP",
"amount": 60
},
"status": "PENDING"
}
],
"payTo": {
"accountName": "Platform1 - Receiving",
"accountNumber": "12345678",
"sortCode": "123456",
"reference": "OR0CE628FF"
}
}
Description
Retrieves the details of an existing dividend given a dividend id
is supplied.
Request
Body: None
Response
Body: Dividend Model
Http Status:
Code | Description | Body | Content-Type |
---|---|---|---|
200 OK | Dividend exists and is return in the body | Dividend | application/json |
400 Bad Request | The request was malformed. See response body | None | n/a |
401 Unauthorized | No auth provided, auth failed, or not authorized | None | n/a |
404 Not Found | No dividend with this UUID exists | None | n/a |
Asset Reconciliation
The Asset Reconciliation API allows an Investment Manager to communicate the expected distribution of equity, held by their investors, on a per-instrument basis.
This information will then be used by Goji for reconciliation purposes.
Asset Reconciliation Reporting
The POST /instruments/reporting
endpoint allows platforms to report their system's view on equity allocation for reconcillation purposes.
Equity allocation can be communicated to Goji as a snapshot via multiple calls to POST /instruments/reporting
describing investor holdings on a per-instrument basis.
⚠️ All instruments that are part of the same snapshot should share the same reportId
.
Asset Reconciliation Reporting Model
Required Attributes
All of the following attributes of the Asset Reconciliation Reporting Model are considered 'required' attributes.
⚠️ In the case of an instrument that has not yet been issued or traded to investors - the holdings section can be left empty. The expectation is that this will still be reported to Goji.
Key | JSON Type | Value Type | Value Description |
---|---|---|---|
reportId | String | UUID | A platform-generated UUID for this snapshot, shared between all instruments included in this snapshot. |
instrumentSymbol | String | InstrumentSymbol | The unique ID/symbol of the instrument registered by the platform. |
timestamp | String | ISO 8601 | The time at which the snapshot of all instruments' holdings was originally taken. The very first snapshot is expected to have been taken at midnight. |
holdings[] | Array | Object | The list of investor holdings in an instrumentSymbol . |
holdings[].clientId | String | Object | The clientId of the investor associated with this individual holding. |
holdings[].quantity | Number | Number | The number of shares owned by the clientId . |
POST /instruments/reporting
POST /instruments/reporting HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
X-GOJI-CLIENT-ID: 59425d3d-cf73-44ff-aecb-590cd198a4bc
{
"reportId": "68f54225-6760-449d-8f38-a003d1dc535a",
"instrumentSymbol": "SPV1",
"timestamp": "2020-01-09T08:53:20.963Z",
"holdings": [
{
"clientId": "GOJI-13251",
"quantity": 100
},
{
"clientId": "GOJI-13252",
"quantity": 200
},
{
"clientId": "GOJI-13254",
"quantity": 300
}
]
}
HTTP/1.1 201 Created
Content-Type: application/json
{
"reportId": "68f54225-6760-449d-8f38-a003d1dc535a",
"instrumentSymbol": "SPV1",
"timestamp": "2020-01-09T23:59:59.999Z",
"holdings": [
{
"clientId": "GOJI-13251",
"quantity": 100
},
{
"clientId": "GOJI-13252",
"quantity": 200
},
{
"clientId": "GOJI-13254",
"quantity": 300
}
]
}
Description
Creates a new asset report on a specified instrumentSymbol
to be used in further reconciliation processes.
This will form part of a wider snapshot being communicated to Goji which describes the distribution/ allocation of equity.
All asset reports that fall under the same wider snapshot should share the same reportId
.
Request
Body: Asset Reconciliation Reporting Model
Response
Body: Asset Reconciliation Reporting Model
Http Status:
HTTP Status Code | Description | Body | Content-Type |
---|---|---|---|
201 Created | Report created successfully | Asset Reconciliation Reporting Model | application/json |
400 Bad Request | The request was malformed. See response body | None | n/a |
401 Unauthorized | No auth provided, auth failed, or not authorized | None | n/a |
GET /instruments/reporting/{reportId}/{instrumentSymbol}
GET /instruments/reporting/68f54225-6760-449d-8f38-a003d1dc535a/SPV1 HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
X-GOJI-CLIENT-ID: 59425d3d-cf73-44ff-aecb-590cd198a4bc
HTTP/1.1 200 OK
Content-Type: application/json
{
"reportId": "68f54225-6760-449d-8f38-a003d1dc535a",
"instrumentSymbol": "SPV1",
"timestamp": "2020-01-09T23:59:59.999Z",
"holdings": [
{
"clientId": "GOJI-13251",
"quantity": 100
},
{
"clientId": "GOJI-13252",
"quantity": 200
},
{
"clientId": "GOJI-13254",
"quantity": 300
}
]
}
Description
Retrieves the details of an existing instrument's holdings at a point in time, given a snapshot reportId
and instrumentSymbol
is supplied.
Request
Body: Asset Reconciliation Reporting Model
Response
Body: Asset Reconciliation Reporting Model
Http Status:
Code | Description | Body | Content-Type |
---|---|---|---|
200 OK | Report exists and is returned in the body | Asset Reconciliation Reporting Model | application/json |
400 Bad Request | The request was malformed. See response body | None | n/a |
401 Unauthorized | No auth provided, auth failed, or not authorized | None | n/a |
404 Not Found | No instrument with this UUID exists | None | n/a |
Viewing an Investor's Assets
This can be used in conjunction with the Equities API to view the status of an investor's holdings.
Asset Balance Model
Response-Only Attributes
Key | JSON Type | Value Type | Value Description |
---|---|---|---|
id | String | PotId | The Goji-generated UUID that references where the asset is logically stored. |
type | String | PotType | Describes a category that a set of holdings can fall under. |
balances | Object | Object | Describes an investor's holdings. Contains mappings of instrumentSymbol(s) to Quantity held by an investor. |
at | String | Object | The timestamp at which the balances were calculated to. |
GET /investors/{clientId}/assets
GET /investors/CLIENT-ID/assets HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
X-GOJI-CLIENT-ID: 79f33f3c-86e0-4613-ba49-9fac3c6f0eab
HTTP/1.1 200 OK
Content-Type: application/json
[
{
"id": "7a58a894-564c-4e19-a170-74cd2ed36aa1",
"type": "EQUITY",
"balances": {
"Instrument Sample 2": 100,
"Instrument Sample 1": 12
},
"at": "2020-05-28T09:29:33.247276Z"
},
{
"id": "bbb6159d-0405-4fa1-95d5-853ef82bddb2",
"type": "RESERVED",
"balances": {},
"at": "2020-05-28T09:29:33.247276Z"
}
]
Description
Retrieves the breakdown of assets for a given investor when a clientId
is supplied.
Currently, an investor's holdings can fall under two categories: EQUITY
or RESERVED
.
For a given investor, should a particular set of shares in some instrument fall under EQUITY
, this means that the shares have been settled.
Conversely, should shares be visible under the RESERVED
category, this means that the shares are still in the process of settling.
Request
Body: None
Response
Body: Asset Balance Model
Http Status:
HTTP Status Code | Description | Body | Content-Type |
---|---|---|---|
200 OK | The status of the investor's various holdings are returned in the body | Asset Balance | application/json |
400 Bad Request | The request was malformed. See response body | None | n/a |
401 Unauthorized | No auth provided, auth failed, or not authorized | None | n/a |
404 Not Found | No investor with the specified clientId exists | None | n/a |
Bond management
The Goji Platform supports issuing bonds both via the API and whitelabel web platform.
Goji accumulates invested funds and send them to you in accordance with the frequency of the product. For example, if the bonds are issued monthly, the funds will be sent on a monthly basis.
The process flow is as follows:
- Investors deposit funds
- Investors make investments throughout month
- On frequency configured against the bond product, invested funds are scooped up and sent to you. Bond certificates are issued to investors.
- Goji calculates accrued interest on bonds.
- On repayment events, Goji emails you to indicate the amount of interest/capital that must be repaid and the account this should be sent to.
- You repay funds to a Goji account
- Goji distributes funds to investor's Goji accounts.
The current funds that are due to be sent can be retrieved by calling GET /bondManagement/current
.
When a repayment event (either capital or interest or both), an email will be sent to a preconfigured address. When these funds are sent to the specified Goji account, they will be automatically distributed to the investor's Goji account and an email sent to them.
Making an investment
Once an investor has a positive account balance, they can invest in one of the available products. The Goji Platform returns a list of available products.
Once an order is executed this is stored against the investor's account.
Orders are settled per the configuration of the product at which point the invested funds are sent to the Investment Manager for deployment and a bond certificate is issued to the investor.
Bond repayments
Depending on the configuration of the product, repayments may be made during the lifetime of the bond eg quarterly interest repayments.
The Goji Platform calculates the funds that will be required for each repayment and will email the Investment Manager to request payment to a specified account and reference. These details are also available via the API.
Once this payment is received, the funds are allocated to the investors' accounts and they are emailed to inform them that their account has been credited.
Bond maturity
The Goji Platform calculates the funds that will be required at maturity of the bond and will email the Investment Manager to request payment to a specified account and reference. These details are also available via the API.
Once this payment is received, the funds are allocated to the investors' accounts and they are emailed to inform them that their account has been credited.
POST /platformApi/bondManagement/product
POST /platformApi/bondManagement/product HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"terms" : [ {
"interestRate" : 1.12,
"investmentDocuments" : [ {
"investmentDocumentType" : "INVESTMENT_BROCHURE",
"fileName" : "fileName",
"fileUrl" : "fileUrl"
}, {
"investmentDocumentType" : "INVESTMENT_BROCHURE",
"fileName" : "fileName",
"fileUrl" : "fileUrl"
} ],
"fixedLiveDate" : "2000-01-23",
"maximumFundingLimit" : {
"amount" : 2.15,
"currency" : "currency"
},
"interestType" : "FIXED",
"term" : 7,
"fixedMaturityDate" : "2000-01-23",
"minimumInvestment" : {
"amount" : 2.15,
"currency" : "currency"
},
"repaymentProfiles" : [ "STANDARD_ANNUALLY_REINVESTMENT", "STANDARD_ANNUALLY_REINVESTMENT" ]
}, {
"interestRate" : 1.12,
"investmentDocuments" : [ {
"investmentDocumentType" : "INVESTMENT_BROCHURE",
"fileName" : "fileName",
"fileUrl" : "fileUrl"
}, {
"investmentDocumentType" : "INVESTMENT_BROCHURE",
"fileName" : "fileName",
"fileUrl" : "fileUrl"
} ],
"fixedLiveDate" : "2000-01-23",
"maximumFundingLimit" : {
"amount" : 2.15,
"currency" : "currency"
},
"interestType" : "FIXED",
"term" : 7,
"fixedMaturityDate" : "2000-01-23",
"minimumInvestment" : {
"amount" : 2.15,
"currency" : "currency"
},
"repaymentProfiles" : [ "STANDARD_ANNUALLY_REINVESTMENT", "STANDARD_ANNUALLY_REINVESTMENT" ]
} ],
"name" : "name"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id" : "id"
}
Description
Creates an investment product.
Request
Name | Type | Description | Required |
---|---|---|---|
name | string | The name of the product. | required |
terms | array | The product terms. | required |
terms[].term | integer | The term length of the product in months. Note: term or fixedMaturityDate must be specified | optional |
terms[].fixedMaturityDate | string | A fixed date at which point the product matures. Note: fixedMaturityDate or term must be specified | optional |
terms[].fixedLiveDate | string | A fixed date in the future when the product goes live. If this is not set, and the maximum funding limit is not specified, the bond will run according to the schedule you agree with Goji. | optional |
terms[].maximumFundingLimit | ref | The maximum amount allowed for the product before it goes live. Note: The bond will NOT run until this limit is reached. ie. this is both a maximum limit and also the amount that must be filled for the bond to run.</> | optional |
terms[].interestType | string | The type of interest to be returned. Possible values are: FIXED |
required |
terms[].interestRate | number | The interest rate of the product. | required |
terms[].minimumInvestment | ref | The minimum individual investment allowed for the product. | required |
terms[].investmentDocuments | array | The investment documents relating to the product. | required |
terms[].repaymentProfiles | array | The investment documents relating to the product. | required |
Response
Name | Type | Description |
---|---|---|
id | string | The unique id of the product |
GET /platformApi/investments/products
GET /platformApi/investments/products HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"availableProducts" : [ {
"name" : "name",
"id" : "id",
"availableTerms" : [ {
"interestRate" : 8.34,
"investmentDocuments" : [ {
"investmentDocumentType" : "INVESTMENT_BROCHURE",
"fileName" : "fileName",
"fileUrl" : "fileUrl"
}, {
"investmentDocumentType" : "INVESTMENT_BROCHURE",
"fileName" : "fileName",
"fileUrl" : "fileUrl"
} ],
"fixedLiveDate" : "2000-01-23",
"maximumFundingLimit" : {
"amount" : 2.15,
"currency" : "currency"
},
"maturityDateType" : "FIXED",
"interestType" : "FIXED",
"term" : 8,
"id" : "id",
"fixedMaturityDate" : "2000-01-23",
"minimumInvestment" : {
"amount" : 2.15,
"currency" : "currency"
},
"repaymentProfiles" : [ {
"interestPayoutDescription" : "interestPayoutDescription",
"interestPayoutLabel" : "interestPayoutLabel",
"id" : "id"
}, {
"interestPayoutDescription" : "interestPayoutDescription",
"interestPayoutLabel" : "interestPayoutLabel",
"id" : "id"
} ]
}, {
"interestRate" : 8.34,
"investmentDocuments" : [ {
"investmentDocumentType" : "INVESTMENT_BROCHURE",
"fileName" : "fileName",
"fileUrl" : "fileUrl"
}, {
"investmentDocumentType" : "INVESTMENT_BROCHURE",
"fileName" : "fileName",
"fileUrl" : "fileUrl"
} ],
"fixedLiveDate" : "2000-01-23",
"maximumFundingLimit" : {
"amount" : 2.15,
"currency" : "currency"
},
"maturityDateType" : "FIXED",
"interestType" : "FIXED",
"term" : 8,
"id" : "id",
"fixedMaturityDate" : "2000-01-23",
"minimumInvestment" : {
"amount" : 2.15,
"currency" : "currency"
},
"repaymentProfiles" : [ {
"interestPayoutDescription" : "interestPayoutDescription",
"interestPayoutLabel" : "interestPayoutLabel",
"id" : "id"
}, {
"interestPayoutDescription" : "interestPayoutDescription",
"interestPayoutLabel" : "interestPayoutLabel",
"id" : "id"
} ]
} ]
}, {
"name" : "name",
"id" : "id",
"availableTerms" : [ {
"interestRate" : 8.34,
"investmentDocuments" : [ {
"investmentDocumentType" : "INVESTMENT_BROCHURE",
"fileName" : "fileName",
"fileUrl" : "fileUrl"
}, {
"investmentDocumentType" : "INVESTMENT_BROCHURE",
"fileName" : "fileName",
"fileUrl" : "fileUrl"
} ],
"fixedLiveDate" : "2000-01-23",
"maximumFundingLimit" : {
"amount" : 2.15,
"currency" : "currency"
},
"maturityDateType" : "FIXED",
"interestType" : "FIXED",
"term" : 8,
"id" : "id",
"fixedMaturityDate" : "2000-01-23",
"minimumInvestment" : {
"amount" : 2.15,
"currency" : "currency"
},
"repaymentProfiles" : [ {
"interestPayoutDescription" : "interestPayoutDescription",
"interestPayoutLabel" : "interestPayoutLabel",
"id" : "id"
}, {
"interestPayoutDescription" : "interestPayoutDescription",
"interestPayoutLabel" : "interestPayoutLabel",
"id" : "id"
} ]
}, {
"interestRate" : 8.34,
"investmentDocuments" : [ {
"investmentDocumentType" : "INVESTMENT_BROCHURE",
"fileName" : "fileName",
"fileUrl" : "fileUrl"
}, {
"investmentDocumentType" : "INVESTMENT_BROCHURE",
"fileName" : "fileName",
"fileUrl" : "fileUrl"
} ],
"fixedLiveDate" : "2000-01-23",
"maximumFundingLimit" : {
"amount" : 2.15,
"currency" : "currency"
},
"maturityDateType" : "FIXED",
"interestType" : "FIXED",
"term" : 8,
"id" : "id",
"fixedMaturityDate" : "2000-01-23",
"minimumInvestment" : {
"amount" : 2.15,
"currency" : "currency"
},
"repaymentProfiles" : [ {
"interestPayoutDescription" : "interestPayoutDescription",
"interestPayoutLabel" : "interestPayoutLabel",
"id" : "id"
}, {
"interestPayoutDescription" : "interestPayoutDescription",
"interestPayoutLabel" : "interestPayoutLabel",
"id" : "id"
} ]
} ]
} ]
}
Description
Lists the investment products that are available.
Response
Name | Type | Description |
---|---|---|
availableProducts | array | |
availableProducts[].id | string | The product code. |
availableProducts[].name | string | The name of the product. |
availableProducts[].availableTerms | array | The available terms, in months. |
POST /platformApi/investors/{clientId}/accounts/{accountType}/investments
POST /platformApi/investors/{clientId}/accounts/{accountType}/investments HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"amount" : {
"amount" : 2.15,
"currency" : "currency"
},
"repaymentProfileId" : 0,
"productTermId" : "productTermId"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "id"
}
Description
Adds an investment to the account.
Request
Name | Type | Description | Required |
---|---|---|---|
productTermId | string | The product code for the investment. | required |
repaymentProfileId | integer | The repayment profile ID. | required |
amount | ref | The amount invested. | required |
amount.amount | number | The amount. | required |
amount.currency | string | The ISO 4217 three character codes eg 'GBP' | required |
Response
Name | Type | Description |
---|---|---|
id | string | The ID of the created investment |
GET /platformApi/investors/{clientId}/accounts/{accountType}/investments
GET /platformApi/investors/{clientId}/accounts/{accountType}/investments HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"investments" : [ {
"bondId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91",
"endDate" : "2000-01-23",
"productTermId" : "productTermId",
"amountInvested" : {
"amount" : 2.15,
"currency" : "currency"
},
"id" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91",
"creationDate" : "2000-01-23",
"gainToDateAsPercentage" : 7.24,
"startDate" : "2000-01-23",
"status" : "PENDING",
"gainToDate" : {
"amount" : 2.15,
"currency" : "currency"
}
}, {
"bondId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91",
"endDate" : "2000-01-23",
"productTermId" : "productTermId",
"amountInvested" : {
"amount" : 2.15,
"currency" : "currency"
},
"id" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91",
"creationDate" : "2000-01-23",
"gainToDateAsPercentage" : 7.24,
"startDate" : "2000-01-23",
"status" : "PENDING",
"gainToDate" : {
"amount" : 2.15,
"currency" : "currency"
}
} ]
}
Description
Lists the investments for the account.
Response
Name | Type | Description |
---|---|---|
investments | array | The investments. |
investments[].id | string | A unique ID for the investment. |
investments[].bondId | string | The id of the bond this investment is in. Not present if status is PENDING. |
investments[].productTermId | string | The product code for the investment. |
investments[].status | string | The status of the investment. Possible values are: PENDING PROCESSING COMPLETED MATURED REDEEMED CANCELLED |
investments[].gainToDateAsPercentage | number | The gain to date as a percentage. |
investments[].creationDate | string | The creation date of the investment. |
investments[].startDate | string | The start date of the investment. |
investments[].endDate | string | The end date of the investment. |
investments[].amountInvested | ref | The amount invested. |
investments[].gainToDate | ref | The gain to date. Can be negative if the investment has decreased in value. |
🧪 POST /platformApi/test/bondManagement/investmentCycle
POST /platformApi/test/bondManagement/investmentCycle HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"minimumRequiredForNewBond" : {
"amount" : 2.15,
"currency" : "currency"
}
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"bonds" : [ {
"totalAmount" : {
"amount" : 2.15,
"currency" : "currency"
},
"totalInterestAmount" : {
"amount" : 2.15,
"currency" : "currency"
},
"maturity" : {
"date" : "2000-01-23",
"months" : 2,
"maturityType" : "FIXED"
},
"productTermId" : "productTermId",
"nextRepaymentDate" : "2000-01-23",
"initialInvestmentAmount" : {
"amount" : 2.15,
"currency" : "currency"
},
"id" : "id",
"startDate" : "2000-01-23",
"status" : "QUEUED"
}, {
"totalAmount" : {
"amount" : 2.15,
"currency" : "currency"
},
"totalInterestAmount" : {
"amount" : 2.15,
"currency" : "currency"
},
"maturity" : {
"date" : "2000-01-23",
"months" : 2,
"maturityType" : "FIXED"
},
"productTermId" : "productTermId",
"nextRepaymentDate" : "2000-01-23",
"initialInvestmentAmount" : {
"amount" : 2.15,
"currency" : "currency"
},
"id" : "id",
"startDate" : "2000-01-23",
"status" : "QUEUED"
} ]
}
Description
Runs a simulated investment cycle. This simulates funds being invested and being sent to the investment manager.
Request
Name | Type | Description | Required |
---|---|---|---|
minimumRequiredForNewBond | ref | The minimum amount required for the new bond. | optional |
minimumRequiredForNewBond.amount | number | The amount. | |
minimumRequiredForNewBond.currency | string | The ISO 4217 three character codes eg 'GBP' |
Response
Name | Type | Description |
---|---|---|
bonds | array | |
bonds[].id | string | The ID of the Bond. |
bonds[].productTermId | string | The product term id of the bond. |
bonds[].status | string | The status of the bond. Possible values are: QUEUED LIVE MATURED |
bonds[].startDate | string | The start date of the bond. |
bonds[].maturity | ref | The maturity of the bond. |
bonds[].totalAmount | ref | The total current invested amount. This can increase up to the start date of the bond. |
bonds[].initialInvestmentAmount | ref | The initial investment amount. |
bonds[].totalInterestAmount | ref | The total amount of interest accrued. This also includes any interest that has been accrued but not yet repaid. |
bonds[].nextRepaymentDate | string | The date of the next repayment event. |
GET /platformApi/bondManagement/current
GET /platformApi/bondManagement/current HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"bonds" : [ {
"totalAmount" : {
"amount" : 2.15,
"currency" : "currency"
},
"totalInterestAmount" : {
"amount" : 2.15,
"currency" : "currency"
},
"maturity" : {
"date" : "2000-01-23",
"months" : 2,
"maturityType" : "FIXED"
},
"productTermId" : "productTermId",
"nextRepaymentDate" : "2000-01-23",
"initialInvestmentAmount" : {
"amount" : 2.15,
"currency" : "currency"
},
"id" : "id",
"startDate" : "2000-01-23",
"status" : "QUEUED"
}, {
"totalAmount" : {
"amount" : 2.15,
"currency" : "currency"
},
"totalInterestAmount" : {
"amount" : 2.15,
"currency" : "currency"
},
"maturity" : {
"date" : "2000-01-23",
"months" : 2,
"maturityType" : "FIXED"
},
"productTermId" : "productTermId",
"nextRepaymentDate" : "2000-01-23",
"initialInvestmentAmount" : {
"amount" : 2.15,
"currency" : "currency"
},
"id" : "id",
"startDate" : "2000-01-23",
"status" : "QUEUED"
} ]
}
Description
Returns details of the current bonds
Response
Name | Type | Description |
---|---|---|
bonds | array | |
bonds[].id | string | The ID of the Bond. |
bonds[].productTermId | string | The product term id of the bond. |
bonds[].status | string | The status of the bond. Possible values are: QUEUED LIVE MATURED |
bonds[].startDate | string | The start date of the bond. |
bonds[].maturity | ref | The maturity of the bond. |
bonds[].totalAmount | ref | The total current invested amount. This can increase up to the start date of the bond. |
bonds[].initialInvestmentAmount | ref | The initial investment amount. |
bonds[].totalInterestAmount | ref | The total amount of interest accrued. This also includes any interest that has been accrued but not yet repaid. |
bonds[].nextRepaymentDate | string | The date of the next repayment event. |
🧪 POST /platformApi/test/bondManagement/investmentCycle/repaymentsAccrual
POST /platformApi/test/bondManagement/investmentCycle/repaymentsAccrual HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"accrualDate" : "2000-01-23"
}
HTTP/1.1 200 OK
Content-Type: application/json
""
Description
Simulates interest repayment accruals.
Request
Name | Type | Description | Required |
---|---|---|---|
accrualDate | string | The date up to which accruals will be generated | optional |
Webhooks
Receiving webhook updates for events that take place in the Goji Platform.
Authentication
To allow you to verify that the webhook message originated from Goji, HMAC authentication headers will be included with the request.
x-nonce
A unique string for every request. This will also be included in the signature string (see below) and is used to prevent replay attacks.
x-timestamp
Milliseconds since epoch. This will also be included in the signature string (see below) and is used to prevent replay attacks.
Authorization
In the format <signature-string>
See below for how to build the signature-string
.
Building the signature string
The following details are concatenated together (without spaces):
nonce + \n + timestamp
Where \n
represents a single linefeed character, hex code 0x10
.
The string is then encrypted using HMAC-SHA256
using a secret. This secret will either be shared with you as part of the onboarding process, or is obtained from our API when registering your webhook URL.
The result is then Base64 encoded to produce a string.
The encrypted string is then UTF-8 URL encoded.
Verifying the signature
POST /webhooks
POST /platformApi/webhooks HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"url" : "url"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"url" : "url",
"secret" : "secret"
}
Description
Register a webhook url.
Request
Name | Type | Description | Required |
---|---|---|---|
url | string | The url to dispatch the webhook to. | optional |
Response
Name | Type | Description |
---|---|---|
url | string | The url as specified in the request. |
secret | string | The webhook secret that should be used to check the validity of webhooks received (see Webhooks authentication for full details). |
Webhook Types
When certain events are triggered in the Goji system, a call can be made to your system to inform you of this event.
The URL to be called is configured as part of the onboarding process.
Format
{
"id": "uuid",
"dateTime": "yyyy-MM-ddTHH:mm:ss",
"type": "TYPE",
"content": {...}
}
The webhook POST
body will be in the following format.
The following event type
s will be supported, along with the content as JSON
.
INVESTOR_PERSONAL_DETAILS_REGISTERED
{
"title": "string",
"firstName": "string",
"lastName": "string",
"contactDetails": {
"emailAddress": "string",
"telephoneNumber": "string"
}
}
This is fired whenever personal details are registered.
INVESTOR_CREATED
{
"clientId": "string",
"title": "string",
"firstName": "string",
"middleName": "string",
"lastName": "string",
"dateOfBirth": "2017-12-12",
"contactDetails": {
"emailAddress": "string",
"telephoneNumber": "string"
},
"address": {
"lineOne": "string",
"lineTwo": "string",
"lineThree": "string",
"townCity": "string",
"region": "string",
"country": "string",
"postcode": "string"
}
}
This is fired whenever a new investor is registered.
INVESTOR_KYC_STATUS_CHANGE
{
"clientId": "string",
"newKycStatus": "string"
}
This is fired whenever an investor's KYC status changes eg from REFERRED
to VERIFIED
.
INVESTOR_FUNDS_RECEIVED
{
"clientId": "string",
"reference": "string",
"amount": {
"amount": 0.00,
"currency": "GBP"
},
"sourceAccount": {
"accountName": "string",
"accountNumber": "string",
"sortCode": "string"
},
"accountType": "string",
"redirected": boolean
"intendedAccountType": "string",
"accountType": "string",
"sourceType": "string"
}
This is fired whenever investor funds are cleared into their account eg for a bank transfer.
Valid Source Types
DEPOSIT
BONUS
CAPITAL_REPAYMENT
INTEREST_REPAYMENT
CASH_INTEREST_RECEIVED
SELL_PREMIUM
OUTBOUND_RETURNED
ISA_AUTO_REPAIRED
{
"clientId": "string",
"repairedAmount": {
"amount": 0.00,
"currency": "GBP"
}
}
This is fired whenever an oversubscribed ISA has been auto repaired. Oversubscription happens when an investor deposits more than their allowed subscription limit. The overflowing amount will be automatically moved to the investment account.
INVESTOR_FUNDS_WITHDRAWN
{
"clientId": "string",
"reference": "string",
"account": "string",
"amount": {
"amount": 0.00,
"currency": "GBP"
}
}
This is fired whenever an investor withdraws funds.
INVESTMENT_QUEUED
{
"clientId": "string",
"investmentId": "string",
"amount": {
"amount": 0.00,
"currency": "GBP"
},
"productTermId": "string"
}
This is fired whenever an investment is queued. Bond Management API only.
INVESTMENT_FULFILLED
{
"clientId": "string",
"investmentId": "string"
}
This is fired whenever an investment is fulfilled. Bond Management API only.
TRANSFER_IN_CREATED
{
"clientId": "string",
"transferInId": "string"
}
This is fired whenever a transfer in is created.
TRANSFER_OUT_CREATED
{
"transferOut": {
"id": "string",
"isaId": "string",
"originatorId": "string",
"originatorName": "string",
"clientId": "string",
"workflowId": "string",
"isaManager": {
"name": "string",
"address": {
"lineOne": "string",
"lineTwo": "string",
"lineThree": "string",
"townCity": "string",
"region": "string",
"country": "string",
"postcode": "string"
},
"accountNumber": "string",
"sortCode": "string",
"bankReference": "string"
},
"transferDetails": {
"dateTAFReceived": "2017-12-12",
"transferDateFromNewIsaManager": "2017-12-12",
"transferAll": "boolean",
"transferCurrentYearSubscriptions": "boolean",
"transferPriorYearSubscriptions": "boolean",
"transferAllPriorYearSubscriptions": "boolean",
"priorYearAmountToTransfer": {
"amount": 0.00,
"currency": "GBP"
},
"transferOutFee": {
"amount": 0.00,
"currency": "GBP"
}
},
"transferOutFee": {
"id": "string",
"transferOutId": "string",
"transferOutFee": {
"amount": 0.00,
"currency": "GBP"
},
"dateTime": "2017-12-12T14:34:23"
},
"dateTimeStarted": "2017-12-12T14:34:23",
"amountToTransfer": {
"amount": 0.00,
"currency": "GBP"
},
"amountSubscribedInCurrentYear": {
"amount": 0.00,
"currency": "GBP"
},
"dateOfFirstSubscriptionInCurrentYear": "2017-12-12"
}
}
This is fired whenever a transfer out is requested.
TRANSFER_OUT_COMPLETED
{
"transferOut": {
"id": "string",
"isaId": "string",
"originatorId": "string",
"originatorName": "string",
"clientId": "string",
"workflowId": "string",
"isaManager": {
"name": "string",
"address": {
"lineOne": "string",
"lineTwo": "string",
"lineThree": "string",
"townCity": "string",
"region": "string",
"country": "string",
"postcode": "string"
},
"accountNumber": "string",
"sortCode": "string",
"bankReference": "string"
},
"transferDetails": {
"dateTAFReceived": "2017-12-12",
"transferDateFromNewIsaManager": "2017-12-12",
"transferAll": "boolean",
"transferCurrentYearSubscriptions": "boolean",
"transferPriorYearSubscriptions": "boolean",
"transferAllPriorYearSubscriptions": "boolean",
"priorYearAmountToTransfer": {
"amount": 0.00,
"currency": "GBP"
},
"transferOutFee": {
"amount": 0.00,
"currency": "GBP"
}
},
"transferOutFee": {
"id": "string",
"transferOutId": "string",
"transferOutFee": {
"amount": 0.00,
"currency": "GBP"
},
"dateTime": "2017-12-12T14:34:23"
},
"dateTimeStarted": "2017-12-12T14:34:23",
"amountToTransfer": {
"amount": 0.00,
"currency": "GBP"
},
"amountSubscribedInCurrentYear": {
"amount": 0.00,
"currency": "GBP"
},
"dateOfFirstSubscriptionInCurrentYear": "2017-12-12"
}
}
This is fired whenever a transfer out is completed.
TRANSFER_IN_FUNDS_RECEIVED
{
"clientId": "string",
"transferInId": "string",
"amount": {
"amount": 0.00,
"currency": "GBP"
}
}
This is fired whenever the funds for a transfer in are received.
TRANSFER_IN_RESIDUAL_INCOME_FUNDS_RECEIVED
{
"clientId": "string",
"transferInId": "string",
"amount": {
"amount": 0.00,
"currency": "GBP"
}
}
This webhook is fired when funds for a transfer in are received after the transfer in has been processed. This is not expected to happen on every transfer in.
ISA_PROVISIONALLY_OPENED
{
"clientId": "string"
}
This is fired whenever an ISA is opened.
INVESTMENT_PAYOUT_EVENT
{
"investmentPayouts" : [ {
"investorId (DEPRECATED)" : "string (DEPRECATED)",
"clientId" : "string",
"investmentId" : "string",
"account" : "string",
"amount" : {
"amount" : 0.00,
"currency" : "GBP"
},
"type" : "string"
}],
"dueDate" : "2017-12-12",
"type" : "string",
"total" : {
"amount" : 0.00,
"currency" : "GBP"
}
}
This is fired whenever a repayment is distributed to an investor's account. Bond Management API only.
FUNDS_REQUESTED
{
"transactions" : [ {
"bondId" : "string",
"type" : "string",
"amount" : {
"amount" : 0.0,
"currency" : "GBP"
}
} ],
"amount" : {
"amount" : 0.0,
"currency" : "GBP"
},
"dueDate" : "string",
"accountName" : "string",
"accountNumber" : "string",
"sortCode" : "string",
"bankReference" : "string"
}
This is fired whenever repayment funds are requested from the investment manager. Bond Management API only.
FUNDS_RECEIVED
{
"reference" : "string",
"amount" : {
"amount" : 0.0,
"currency" : "GBP"
}
}
This is fired whenever repayment funds are received from the investment manager.
BANK_ACCOUNT_DETAILS_STATUS_CHANGED
{
"id" : "string",
"accountName" : "string",
"accountNumber" : "string",
"sortCode" : "string",
"status" : "string"
}
When registering bank account details using /platformApi/bankAccountDetails Goji will perform verification of these account details and once validated the details will be ENABLED or DISABLED. This is fired whenever the status of the bank account details changes.
COMPANY_REGISTRATION_UPDATE
{
"partyId": "COM~d28360c5-07a3-4d78-ade4-bddcdd8b5502",
"status": "REGISTERED",
"ukCompany": {
"number": "00000000",
"name": "Fake Company LIMITED"
}
}
This is fired when the status of the company registration state changes.
WALLET_CREATED
{
"walletId" : "3d9ca033-eb05-459f-9f70-1139d2e2b213",
"ownerPartyId": "COM~d28360c5-07a3-4d78-ade4-bddcdd8b5502",
"bankDetails" : {
"id" : "03946a54-6b4f-4bae-897d-6ee2baf0e848",
"accountName" : "Housing Project 22",
"accountNumber" : "00000000",
"sortCode" : "000000"
}
}
This is fired whenever a wallet is created.
WALLET_FUNDS_RECEIVED (deprecated)
{
"walletId" : "3d9ca033-eb05-459f-9f70-1139d2e2b213",
"ownerPartyId": "COM~d28360c5-07a3-4d78-ade4-bddcdd8b5502",
"reference": "Payment reference",
"amount": {
"amount": 0.00,
"currency": "GBP"
},
"sourceAccount": {
"accountName" : "Housing Project 22",
"accountNumber" : "00000000",
"sortCode" : "000000"
}
}
Note: This webhook is now deprecated and has been replaced by the WALLET_TRANSFER_UPDATE
webhook below.
Existing users of this webhook can continue to use it, however, it is recommended to move to the WALLET_TRANSFER_UPDATE
webhook.
This is fired when funds are received into a wallet.
WALLET_TRANSFER_UPDATE
{
"ownerPartyId": "COM~d28360c5-07a3-4d78-ade4-bddcdd8b5502",
"walletId" : "3d9ca033-eb05-459f-9f70-1139d2e2b213",
"id" : "fbb5d667-03c4-4658-9b30-fcf06adfa5b8",
"direction": "INBOUND",
"status": "CLEARED",
"amountReceived": {
"amount": 10.23,
"currency": "GBP"
},
"reference": "Payment Reference",
"sourceAccount": {
"accountName": "John Doe",
"accountNumber": "00000000",
"sortCode": "00000000"
},
"destinationAccount": {
"accountName": "Jane Doe",
"accountNumber": "00000000",
"sortCode": "00000000"
}
}
This webhook replaces the now deprecated WALLET_FUNDS_RECEIVED
endpoint.
Users of the WALLET_FUNDS_RECEIVED
endpoint can continue to use it, however, it is recommended to move to this webhook.
For new users, please integrate against this webhook instead.
This is fired when funds are transfered into or out of a wallet.
There are three statuses that can be returned in a 'WALLET_TRANSFER_UPDATE' webhook. These are:
(1) REQUESTED - this status is set when a request to move funds out of a wallet has been acknowledged.
(2) CLEARED - this status is set when:
(a) funds are confirmed to have successfully left a wallet.
(b) funds are confirmed to have successfully arrived into a wallet.
(3) FAILED - this status is set when a request to move funds has failed.
TRADE_SETTLEMENT
{
"id": "99a41761-6629-47a2-8087-23961b1b059b",
"dateTime": "2019-12-16T09:48:59",
"type": "TRADE_SETTLEMENT",
"content": {
"trade": {
"id": "14f8c00c-d667-46d6-a08f-cd978f84bb85",
"buy": {
"investor": {
"clientId": "clientId",
"accountType": "GIA"
},
"nominee": null,
"fees": [
{
"symbol": "STAMP_DUTY",
"cost": {
"currency": "GBP",
"amount": 500
}
}
]
},
"sell": {
"investor": null,
"nominee": {
"accountType": "ORIGINATOR"
},
"fees": [
]
},
"price": {
"currency": "GBP",
"amount": 300
},
"quantity": 1000,
"instrumentSymbol": "046deba4-0141-428b-9729-1668026c8caf",
"settlementStatus": "SETTLED"
}
}
}
This event is fired when a trade request (available as part of the Equities API) has reached a terminal state. E.g. settles successfully
DIVIDEND_UPDATE
{
"id": "5cd2e950-bfc2-4fe9-a744-ae3483320ab7",
"dateTime": "2019-12-16T09:56:51",
"type": "DIVIDEND_UPDATE",
"content": {
"dividend": {
"id": "68ee8001-cf85-465b-955e-24a22f89fd04",
"instrumentSymbol": "instrument1",
"status": "COMPLETE",
"totalPayout": {
"currency": "GBP",
"amount": 100
},
"paymentsSummary": {
"totalPayments": 10,
"totalFailed": 1,
"totalDistributed" : 2,
"totalPending": 3,
"totalReceived": 4
},
"payTo": {
"accountName": "name",
"accountNumber": "12345678",
"sortCode": "001122",
"reference": "12345678"
}
}
}
}
This event is fired two times in the lifecycle of a dividend post request:
- once funds have been received to distribute to investors 'DISTRIBUTING'
- once distribution of the dividend is 'COMPLETE' and funds received by investors
Batch Payments Summary
Key | JSON Type | Value Type | Value Description |
---|---|---|---|
totalPayments | Number | Number | The total payments of the batch. |
totalPending | Number | Number | The total individual batch payments waiting to be instructed. |
totalDistributed | Number | Number | The total payments have been distributed. |
totalFailed | Number | Number | Total failed batch payments |
totalReceived | Number | Number | Total batch payments has been received by the investors. |
BATCH_UPDATE
{
"id": "6d9fc50e-de1b-4855-8c03-ae8a6093d91b",
"dateTime": "2019-12-16T09:54:23",
"type": "BATCH_UPDATE",
"content": {
"batch": {
"originatorId": null,
"batchId": "6a17ef7e-8696-4977-8989-4b948780c5db",
"type": "MIGRATION",
"status": "COMPLETE",
"totalPayout": {
"amount": 1000,
"currency": "GBP"
},
"paymentsSummary": {
"totalPayments": 10,
"totalFailed": 1,
"totalDistributed" : 2,
"totalPending": 3,
"totalReceived": 4
},
"payTo": {
"accountName": "name",
"accountNumber": "12345678",
"sortCode": "001122",
"bankReference": "12345678"
}
}
}
}
This event is fired when an update related to a bulk payment request occurs. E.g. the bulk payment is distributed and funds received by investors.
Batch Payments Summary
Key | JSON Type | Value Type | Value Description |
---|---|---|---|
totalPayments | Number | Number | The total payments of the batch. |
totalPending | Number | Number | The total individual batch payments waiting to be instructed. |
totalDistributed | Number | Number | The total payments have been distributed. |
totalFailed | Number | Number | Total failed batch payments |
totalReceived | Number | Number | Total batch payments has been received by the investors. |
ACCOUNT_FEE_PROCESSED
{
"clientId": "string",
"dateTime": "2017-12-12T14:34:23",
"account": "string",
"amount" : {
"amount": 0.00,
"currency": "GBP"
},
"type": "FEES",
"reference": "string",
"clearedDateTime": "2017-12-12T14:34:23"
}
This is fired when account fees have been processed
NOMINEE_ALLOCATION_STATUS_UPDATE
{
"id": "b2b8be2d-5575-4c9c-8f89-57398ddc5ff3",
"quantity": 500,
"instrumentSymbol": "INSTRUMENT_SYMBOL",
"status": "ALLOCATED",
"createdAt": "2020-09-17T12:43:18.519524Z",
"updatedAt": "2020-09-18T13:43:18.523776Z"
}
This webhook is fired whenever there is a change in the status
of an allocation instructed to be received by a nominee.
The id
references the unique allocation id originally assigned when calling the POST /allocations
endpoint.
There are three statuses that can be returned in a NOMINEE_ALLOCATION_STATUS_UPDATE
webhook.
These are:
(1) PENDING - this status is set when an allocation instruction towards a nominee is created.
(2) ALLOCATED - a terminal status. This status is set when an allocation instruction towards a nominee been approved and actioned.
(3) CANCELLED - a terminal status. This status is set when an allocation instruction towards a nominee has been rejected and actioned.
INVESTMENT_REPAYMENT_INSTRUCTION_RECEIVED
{
"id": "cc84c538-0c7f-41f7-8362-c6115c1df6f7",
"type": "INVESTMENT_REPAYMENT_INSTRUCTION_RECEIVED",
"dateTime": "2021-11-26T15:07:05.786408723Z",
"content": {
"repaymentBatchReference": "REPAYMENT-2b86a1bb-fe9d-4476-9e6b-0e29477e251d",
"totalRepayments": 10,
"totalAmount": {
"amount": 0.3,
"currency": "GBP"
},
"overallStatus": "PENDING",
"postedAt": "2021-11-26T15:07:05.765271497Z",
"clearedAt": null
}
}
This webhook is fired when the system has successfully recorded a repayment request.
INVESTMENT_REPAYMENT_CLEARING
{
"id": "d6adb525-adac-4cc0-a86f-a9c0e68a7bb8",
"type": "INVESTMENT_REPAYMENT_CLEARING",
"dateTime": "2021-11-26T21:51:32.574621Z",
"content": {
"repaymentBatchReference": "REPAYMENT-2b86a1bb-fe9d-4476-9e6b-0e29477e251d",
"repaymentId": "REPAYMENT_ID",
"investmentId": "INVESTMENT_CLIENT_ID",
"amount": {
"amount": 10,
"currency": "GBP"
},
"type": "INTEREST",
"status": "CLEARED",
"postedAt": "2021-11-26T21:51:32.542533Z",
"clearedAt": "2021-11-26T21:51:32.543340Z"
}
}
This webhook is fired whenever the system marks a single repayment as cleared. I.e. the money movement for the singular investor repayment has occurred.
CASH_INTEREST_REPAYMENT_CLEARING
{
"id": "d6adb525-adac-4cc0-a86f-a9c0e68a7bb8",
"type": "CASH_INTEREST_REPAYMENT_CLEARING",
"dateTime": "2021-11-26T21:51:32.574621Z",
"content": {
"repaymentBatchReference": "REPAYMENT-2b86a1bb-fe9d-4476-9e6b-0e29477e251d",
"repaymentId": "REPAYMENT_ID",
"amount": {
"amount": 10,
"currency": "GBP"
},
"type": "CASH_INTEREST",
"status": "CLEARED",
"postedAt": "2021-11-26T21:51:32.542533Z",
"clearedAt": "2021-11-26T21:51:32.543340Z",
"clientId": "SPECS-63880",
"accountType": "ISA"
}
}
This webhook is fired whenever the system marks a single INTEREST_CASH repayment as cleared. I.e. the money movement for the singular INTEREST_CASH repayment has occurred.
INVESTMENT_REPAYMENT_BATCH_COMPLETE
{
"id": "cc84c538-0c7f-41f7-8362-c6115c1df6f7",
"type": "INVESTMENT_REPAYMENT_BATCH_COMPLETE",
"dateTime": "2021-11-26T15:07:05.786408723Z",
"content": {
"repaymentBatchReference": "REPAYMENT-2b86a1bb-fe9d-4476-9e6b-0e29477e251d",
"totalRepayments": 10,
"totalAmount": {
"amount": 0.3,
"currency": "GBP"
},
"overallStatus": "CLEARED",
"postedAt": "2021-11-26T15:07:05.765271497Z",
"clearedAt": "2021-11-26T15:15:10.765271497Z"
}
}
This webhook is fired when the system marks the full repayment request as complete. I.e. all associated money movements have occurred.
ISA administration
Introduction
Please note this is a standalone API and is not used in conjunction with any of the other APIs.
The Goji Innovative Finance ISA Platform (Goji Platform) provides the administration, regulatory and compliance functionality to enable the Goji team to efficiently handle all back-office aspects of the Innovative Finance ISA on behalf of a P2P Platform and provide best-in-class 2nd level customer support.
The Goji Platform provides a number of key features to enable efficient IF ISA administration:
- Regulatory reporting to HMRC
- Workflow management for ISA admin tasks eg transferring an ISA in/out, void & repair, death of investor etc.
- Business rule validation on data input (e.g. check ISA limits, NI number checking)
- Customer support instant messaging, ticketing and originator FAQs
- Management information and insights into types of customers enabling improved customer marketing
This document details how an Originator integrates with the Goji Platform. The intended audience of this document are the developers and analysts responsible for building the integration between the Originator's systems and the Goji Platform.
The Goji Platform requires data from the Originator at a number of points in the Investor lifecycle to facilitate HMRC reporting, process workflow management and data validation (see API Integration below)
Additionally, the Goji platform provides an admin interface to allow Originators and Goji staff to manage ISA specific workflows eg transfers in/out, repairing/voiding ISAs, death of investor etc.
Please note that the Originator must have a full understanding of the responsibilities of an ISA Manager as defined in the HMRC guidance: https://www.gov.uk/government/collections/isa-managers-guidance. The ISA Manager is ultimately responsible for compliance with the appropriate regulations. Goji provides technical and administrative functionality to support the efficent managemement of an ISA scheme and does not provide legal advice.
Opening an ISA
When a customer on the Originator's platform elects to open an ISA, the Investor first needs to be shown an ISA declaration and the current set of terms and conditions.
Terms and conditions
Goji expects to host the terms. The Originator would provide the terms and conditions in basic HTML, these can be uploaded by the Originator at any point and are automatically versioned.
POST /terms
On requesting the terms, the latest content is returned along with the version.
GET /terms
On the Investor checking a checkbox to confirm agreement (in the most likely scenario), the Originator would then make a request to obtain a token that serves as the record that the Investor has seen and agreed to that version of the terms.
POST /terms/agreement
The returned token will be required when making the request to create the Investor (and their ISA).
ISA declaration
The process for recording of the ISA declaration is very similar to that of the terms and conditions, bar the creation of the content; Goji provide a standard declaration here.
On requesting the ISA declaration, the latest content is returned along with the version.
GET /declaration
The token to capture confirmation can then be requested.
POST /declaration/agreement
The ISA declaration token can then be included in the request to create the Investor (and their ISA).
ISA and Investor creation
Once these documents have been agreed to, the Investor can be created on the Goji Platform by calling:
POST /investors
Validation will be performed to ensure that the data provided is a) valid and b) includes the data needed to comply with HMRC reporting.
We also validate that the Investor has not already opened an IF ISA on the Goji Platform with another Originator in the current tax year.
It is assumed that the Originator has already performed KYC and AML checks by this point.
Cooling off period
Once the declaration and terms have been signed and the Investor details have been recorded, the ISA is considered 'provisionally opened'. It is not fully opened until a deposit is made. Some platforms may wish to apply a cooling-off period for an investor before they can invest. This is configurable on the Goji platform for an Originator. Please inform Goji if you wish to apply a cooling off period.
The current state of the ISA, including when the cooling off period ends, can be checked:
GET /investors/{investorId}/isa
Summary data for the ISA can be retrieved using:
GET /investors/{investorId}/isa/summary
Funding an ISA
The Investor's ISA can be funded by depositing cash, transferring funds from an existing account with the Originator or by transferring in an ISA held with another ISA manager.
Validation
When money is added to the ISA account, validation is applied to ensure the annual subscription amount is not exceeded. The transfer will be rejected in whole if it exceeds the limit. The remaining maximum deposit amount is returned on the ISA details endpoint:
GET /investors/{investorId}/isa
Cash deposit
If an Investor deposits money to their IF ISA account, this needs to be recorded on the Goji Platform:
POST /investors/{investorId}/cash
setting the type
to CUSTOMER_DEPOSIT
. The date provided must be the date the transaction was carried out (eg card payment made), not the date you finally receive the funds.
Transferring funds from an existing account
If an Investor transfers money from an existing investment account on the Originator's platform to their IF ISA, this similarly needs to be recorded as a cash transaction:
POST /investors/{investorId}/cash
setting the type
to CUSTOMER_DEPOSIT
.
Transfers in
If an Investor holds an existing cash/stocks and shares ISA with another ISA manager, the Investor can elect to transfer that balance to a different ISA Manager. Please see the section below which details how the Transfers In/Out process works.
Investing
Once an Investor has funded their account (and, if configured, the cooling off period has expired), they can invest up to the amount of the cash balance on their IF ISA account.
Creating an investment
If an Investor can invest their money without going via an auction or queue, the investment should be created directly.
POST /investors/{investorId}/investment
This will reduce the cash balance available on the ISA.
Repayments
When the borrower makes a repayment against a loan, this repayment needs to be recorded on the Goji Platform. A repayment increases the cash balance on an ISA by the interest component of the repayment. If the repayment is automatically re-invested, please see the Reinvestments section below.
POST /investors/{investorId}/investment/{investmentId}/repayment
N.B. It is worth ensuring that the accuracy of monetary amounts is consistent to ensure that fractions of a penny aren't left invested.
Reinvestments
When a borrower makes a repayment against a loan, this repayment needs to be recorded on the Goji Platform. A reinvestment differs from a repayment in that a reinvestment automatically invests the repaid capital and interest. The balance of the ISA is increased by the interest portion of the reinvestment. The cash balance remains unchanged.
POST /investors/{investorId}/investment/{investmentId}/reinvestment
Alternatively, this can be achieved with two separate calls to record the repayment and the subsequent investment.
Sale of investment
When an investor sells an investment this is recorded on the Goji Platform by making a repayment equal to the remaining capital balance on the investment.
POST /investors/{investorId}/investment/{investmentId}/repayment
Setting the capitalAmount
to the amount of the sale assuming there is no interest or premium element to the sale.
If a loan has been sold for more or less than the capital outstanding amount (eg in an auction), then there is a specific endpoint that can be called:
POST /investors/{investorId}/investment/{investmentId}/sale
Defaults and write offs
If a loan has defaulted and either all or a portion of the loan should be written off, the write off endpoint can be called. This will reduce the ISA balance by the write off amount.
POST /investors/{investorId}/investment/{investmentId}/writeOff
If repayments need to be made after the full balance has been written off (eg recoveries), these should be processed as interest repayments.
Withdrawing funds
An Investor can withdraw funds up to the cash balance available on the ISA. The amount that can be withdrawn is available from the ISA details:
GET /investors/{investorId}/isa
When a user withdraws cash, this needs to be recorded on the Goji Platform as a cash transaction:
POST /investors/{investorId}/cash
setting the type
to CUSTOMER_WITHDRAWAL
. The amount sent is still a positive amount. The type will indicate to Goji to decrement the cash balance.
Editing investor details
If an Investor's details need to be updated eg they change address, this needs to be reflected on the Goji platform:
PUT /investors/{investorId}
Transfers In
A 'transfer in' is the process where an Investor moves the cash balance of an existing Cash and/or stocks and shares ISA from another ISA Manager to the Originator's platform.
An Investor-facing web application will guide the Investor through the steps necessary to facilitate this process. A link to this web application can be added to the Originator's platform. Please see the section below for details on how to integrate the web application.
Once the process is complete, a workflow will be created and Goji will inform the 3rd party ISA plan manager of the Originator's bank details and the money will be transferred directly.
Once the 3rd party ISA manager have sent Goji the details of the ISA being transferred, Goji will email the Originator to inform them to expect a transfer in.
Once the transfer in funds have been received, the Originator would make call to
POST /investors/{investorId}/transferIn/{transferInId}/cash
specifying the transferAmount
and either the repairedAmount
or subscribedAmount
. These amounts can be determined based on the values Goji will provide upon receiving the transfer history form from the prior ISA manager. These values can be retrieved from the Goji Admin Console. The transferAmount
is the total amount received from the previous ISA manager. The repairedAmount
is any amount from this total that had to be transferred to a standard investment account to prevent the current year subscription amount from being exceeded. The subscribedAmount
is the amount that is credited to the ISA account. If no funds have to be repaired, the subscribedAmount
would equal the transferAmount
.
The repairedAmount
refers to any part of the transferred amount that cannot be applied to the current year ISA as it would breach the subscription allowance. This portion should be credited to the Investor's standard investment account. The amount that was repaired needs to be recorded in the API call to Goji to ensure a complete record of where the money has been applied is created.
Goji will email the Originator once the Transfer History Form has been received from the previous ISA Manager. This form includes the details of how the transferred amount should be split between current and prior year subscriptions. The Originator must not process the deposit of the transferred funds until these details have been received.
The majority of transfers in are received by cheque and will be deposited by Goji into your bank account as a batch per day cheques are received. Details of the transfers in that have been banked on a given day by cheque can be retrieved by calling:
GET /transferIn/deposits/{date}
Summary details regarding an individual transfer in can be retrieved by calling:
GET /investors/{investorId}/transferIn/{transferInId}/summary
Residual Income for Transfers In
On occasion a ceding ISA manager may send additional income from an ISA that has been transferred in the form of a residual income payment. This can occur, for example, if some interest is paid after the funds have been sent to the new ISA manager.
You can elect whether you are happy to receive these additional payments. The ISA manager will send details of incoming residual income to Goji who will inform you of the amount. If you do not wish to receive these payments, they will be returned to the ceding ISA manager and they will sit in the investor's account.
You can record receipt of a residual income payment by calling:
POST /investors/{investorId}/transferIn/{transferInId}/residualIncome
Multiple residual income payments can be recorded against a single transfer in.
Integrating the Transfer In pages
The Goji Transfer In application exposes an ISA transfer in form intended for an investor to complete.
It supports ISA transfers of the following types:
- Cash
- Stocks and Shares
- Innovative Finance
Workflow
The investor creates a transfer in request by using the widget that we provide. You should embed this in your site according to the instructions below.
Once the form has been completed the investor will download and print the form (or optionally receive it in the mail) and return it to Goji via a PO Box.
Goji will liaise with the existing ISA manager to arrange the transfer.
Once the funds have been received they will be credited to the investor's ISA balance. An email is sent to the investor.
In the case where the received funds would exceed the current year's allowance, then the surplus will be credited to their standard account.
Embedding the Transfer In Widget
The Goji Transfer In application is a JavaScript component which can be integrated in a number of ways. For each possible way of integrating with the application, you will need to first obtain a one time security token.
Obtaining the uiData and the security token
To obtain the application's asset URLs one time security token, make an authenticated request to the following URL:
/investors/{clientId}/accounts/ISA/transferIn/UI
The response will be structured like so:
(Please note that you should never hard-code the URLs returned since they are subject to change)
{
"apiUrl": "https://api.gojip2p.net",
"styleSrc": "https://goji-assets-domain/transfer-in/assets/goji-transfer-in-123456.css",
"scriptSrc": "https://goji-assets-domain/transfer-in/assets/goji-transfer-in-123456.js",
"investorId": "
With this data you are then able to bootstrap the application using any of the methods outlined below.
If your front-end application uses Ember, using as an Ember Addon makes sense. Alternatively, the suggested approach would be to embed as a standalone JavaScript component on your existing pages - this enables full control over the application's styling.
Application Arguments
Four arguments are required for the application to function fully, these are described below:
apiUrl
: [Specified in the uiData response] The API URL the front-end application should use when interacting with the Goji serviceinvestorId
: [Specified in the uiData response] The ID of the active investortoken
: [Specified in the uiData response] The security token used to authenticate the active investor's requestsaccountUrl
: The URL used when an investor chooses to return to their account page having successfully completed a transfer in request
Using as a Standalone JavaScript Component
To include the application in your existing page as a JavaScript component, you will need to do the following:
1). In the body of your HTML include the following:
<div id="goji-application">
<div data-component="goji-transfer-in"
data-attrs='{ "apiUrl": "<uiData.apiUrl>", "accountUrl": "<platform-manage-account-url>",
"investorId": "<uiData.investorId>", "token": "<uiData.token>" }'>
</div>
</div>
2). Extract the JavaScript asset's URL from the request above and include it in your page.
Please note that the inclusion of the script import must be made after inclusion of the HTML in the previous step.
e.g <script src="{{uiData.scriptSrc}}"></script>
Optionally do the same for the CSS file if you wish to have a basic layout.
e.g <link rel="stylesheet" href="{{uiData.styleSrc}}">
3). The component will then render when the document's body has fully loaded.
Transfers Out
A 'transfer-out' is the process where an Investor elects to move their IF ISA from the Originator to an alternative ISA Manager.
The new ISA Manager will contact Goji who will perform the checks necessary to validate that the transfer request is genuine.
It is up to the terms and conditions of the agreement between the Originator and the Investor as to whether loan parts can be liquidated to meet the requirements of a transfer out.
If this is allowed and the Investor has elected to liquidate their loans, Goji will inform the Originator what portion of loans need to be sold on the secondary market.
Once there is enough cash in the IF ISA to enable the transfer out to complete, the cash needs to be transferred either directly to the new ISA manager. The bank co-ordinates for the new ISA manager will be available in the Goji admin console.
Marking the cash as transferred
Once the cash has been transferred, a call needs to be made to:
POST /transferOut/:transferOutId/cash
The Originator platform will need to expose a mechanism to allow an IF ISA cash balance to be transferred to a designated bank account different to the bank account held by the investor.
Fees
If the Originator is charging a fee for the Transfer Out, this will have been configured by Goji when the Transfer Out details are entered into the Goji system.
The fee amount can be retrieved by getting all of the Investor's Transfers Out and checking the relevant Transfer Out's transferDetails.transferOutFee
value:
GET /investors/{investorId}/transferOut
When the fee has been extracted from the account, the following endpoint should be called. No other endpoints (e.g. withdrawal) should be used:
POST /transferOut/:transferOutId/fee
Residual Income for Transfers Out
If an investor has transferred their whole ISA to another ISA manager and they subsequently gain income/interest on their account, you can send this to the new ISA manager.
In this event, Goji will communicate with the new ISA manager and inform them that the Originator will be sending a further payment.
Once the payment is made, a cash transaction should be recorded with type RESIDUAL_INCOME
and the amount as a negative value.
Death of Investor
In the event of a death of an Investor, specific tasks need to be carried out. The flow will follow one of the following paths:
1) The investor's cash and/or investments are being transferred to a surviving spouse on the same platform using an Additional Permitted Subscription ('APS').
2) The investor's cash and/or investments are being transferred to a different ISA Manager for a surviving spouse using an Additional Permitted Subscription ('APS').
3) The investor's cash and/or investments are being transferred to a beneficiary's ISA on the same platform (not through an APS).
4) The investor's cash and/or investments are being transferred to a beneficiary's non-ISA account on the same platform (not through an APS).
5) The investor's cash and/or investments are being transferred to a beneficiary off-platform (not through an APS).
1) The investor's cash and/or investments are being transferred to a surviving spouse on the same platform using an Additional Permitted Subscription ('APS')
If you want to transfer investments to a surviving spouse, you must make sure you have the appropriate legal paperwork and technical capability in place to transfer investments on your platform. Alternatively, you can wait for investments to mature and only transfer cash when it becomes available.
The process flow is:
- Notify the Goji operations team of the death by emailing platformsupport@goji.investments.
- Goji will create a 'Death of investor' workflow and lock the account.
- The Goji operations team will liaise with you and the surviving spouse to complete the relevant APS paperwork and to gather the required paperwork (e.g. death certificate and grant of probate).
- The surviving spouse must have an active ISA account. If this isn't already in place, the surviving spouse must sign-up and create an account. You must notify us of the account creation in the usual way through the
POST /investors
API call. - Once required paperwork has been provided, Goji will confirm, unlock and the account and ask you to transfer the cash and investments to the beneficiary's account.
- To notify us of cash moving between accounts using an APS:
- On the deceased account:
POST /investors/{investorId}/cash
, setting thetype
toCUSTOMER_WITHDRAWAL
withamount.amount
set to a positive amount equal to the total cash balance. - On the spouse's account:
POST /cash
setting thetype
toADDITIONAL_PERMITTED_SUBSCRIPTION
withamount.amount
set to a positive amount equal to the total cash being transferred.
- On the deceased account:
- To notify us of investments moving between accounts using an APS:
- On the deceased account:
POST /investors/{investorId}/investment/{investmentId}/writeOff
, with thewriteOffAmount.amount
equal to the investment balance. - On the spouse’s account:
POST /cash
setting the type toADDITIONAL_PERMITTED_SUBSCRIPTION
withamount.amount
set to a positive amount equal to the investment balance being transferred. - On the spouse’s account:
POST /investors/{investorId}/investment
, with theclientinvestmentId
and other investment details the same as the deceased investor’s loan.
- On the deceased account:
- After the calls are completed, the cash and investment balances of the deceased account should be 0.
- Let Goji know when you have completed the calls by emailing our Ops team at platformsupport@goji.investments. Goji can then record the date the transfers were completed (for HMRC reporting purposes) and close the workflow and ISA account.
2) The investor's cash and/or investments are being transferred to a different ISA Manager for a surviving spouse using an Additional Permitted Subscription ('APS')
Only cash can be transferred to an alternative ISA Manager as an APS, loans or bonds cannot be transferred in specie. If a surviving spouse wants to transfer cash and investments to another ISA Manager via an APS, they will need to wait until investments have matured and repaid.
The process flow is:
- Notify the Goji operations team of the death by emailing platformsupport@goji.investments.
- Goji will create a 'Death of investor' workflow and lock the account.
- The Goji operations team will liaise with you, the surviving spouse and the new ISA Manager to complete the relevant APS paperwork and to gather the required paperwork (e.g. death certificate and grant of probate).
- Once required paperwork has been provided, Goji will confirm, unlock and the account and ask you to transfer the cash to the new ISA manager. You must notify us once the transfer has completed with
POST /investors/{investorId}/cash
, setting thetype
toCUSTOMER_WITHDRAWAL
withamount.amount
set to a positive amount equal to the total cash balance. - After the call is completed, the cash and investment balances of the deceased account should be 0.
- Let Goji know when you have completed the calls by emailing our Ops team at platformsupport@goji.investments. Goji can then record the date the transfers were completed (for HMRC reporting purposes) and close the workflow and ISA account.
3) The investor's cash and/or investments are being transferred to a beneficiary's ISA on the same platform (not through an APS)
If you want to transfer investments to a beneficiary, you must make sure you have the appropriate legal paperwork and technical capability in place to transfer investments on your platform. Alternatively, you can wait for investments to mature and only transfer cash when it becomes available.
To transfer cash or investments into the beneficiary's ISA, they must have sufficient ISA allowance remaining in the current tax year to cover the amount being transferred. You can split the transfer between the beneficiary's general and ISA account if needed (e.g. Investor A has died with a cash balance of £10k and an investment balance of £15k. Investor B is inheriting all investments and cash and has a remaining ISA allowance of £10k. Investor B can only transfer £10k of cash or investments into their ISA. The remaining balances must be transferred to their general account using option 4 below).
The process flow is:
- Notify the Goji operations team of the death by emailing platformsupport@goji.investments.
- Goji will create a 'Death of investor' workflow and lock the account.
- The Goji operations team will liaise with you and the beneficiary to gather the required paperwork (e.g. death certificate and grant of probate).
- The beneficiary must have an active ISA account. If this isn't already in place, they must sign-up and create an account. You must notify us of the account creation in the usual way through the
POST /investors
API call. - Once required paperwork has been provided, Goji will confirm, unlock and the account and ask you to transfer the cash and investments to the beneficiary's account.
- To notify us of cash moving between ISA accounts:
- On the deceased account:
POST /investors/{investorId}/cash
, setting thetype
toCUSTOMER_WITHDRAWAL
withamount.amount
set to a positive amount equal to the total cash balance. - On the beneficiary's account:
POST /investors/{investorId}/cash
setting thetype
toCUSTOMER_DEPOSIT
withamount.amount
set to a positive amount equal to the total cash being transferred.
- On the deceased account:
- To notify us of investments moving between ISA accounts:
- On the deceased account:
POST /investors/{investorId}/investment/{investmentId}/writeOff
, with thewriteOffAmount.amount
equal to the investment balance. - On the receiving account:
POST /cash
setting the type toCUSTOMER_DEPOSIT
withamount.amount
set to a positive amount equal to the investment balance being transferred. - On the receiving account:
POST /investors/{investorId}/investment
, with theclientinvestmentId
and other investment details the same as the deceased investor’s loan.
- On the deceased account:
- After the calls are completed, the cash and investment balances of the deceased account should be 0.
- Let Goji know when you have completed the calls by emailing our Ops team at platformsupport@goji.investments. Goji can then record the date the transfers were completed (for HMRC reporting purposes) and close the workflow and ISA account.
4) The investor's cash and/or investments are being transferred to a beneficiary's non-ISA account on the same platform (not through an APS)
If you want to transfer investments to a beneficiary, you must make sure you have the appropriate legal paperwork and technical capability in place to transfer investments on your platform. Alternatively, you can wait for investments to mature and only transfer cash when it becomes available.
The process flow is:
- Notify the Goji operations team of the death by emailing platformsupport@goji.investments.
- Goji will create a 'Death of investor' workflow and lock the account.
- The Goji operations team will liaise with you and the beneficiary to gather the required paperwork (e.g. death certificate and grant of probate).
- Once required paperwork has been provided, Goji will confirm, unlock and the account and ask you to transfer the cash and investments to the beneficiary's account.
- To notify us of cash moving from an ISA account to a non-ISA account:
- On the deceased account:
POST /investors/{investorId}/cash
, setting thetype
toCUSTOMER_WITHDRAWAL
withamount.amount
set to a positive amount equal to the total cash balance.
- On the deceased account:
- To notify us of investments moving from an ISA account to a non-ISA account:
- On the deceased account:
POST /investors/{investorId}/investment/{investmentId}/writeOff
, with thewriteOffAmount.amount
equal to the investment balance.
- On the deceased account:
- After the calls are completed, the cash and investment balances of the deceased account should be 0.
- Let Goji know when you have completed the calls by emailing our Ops team at platformsupport@goji.investments. Goji can then record the date the transfers were completed (for HMRC reporting purposes) and close the workflow and ISA account.
5) The investor's cash and/or investments are being transferred to a beneficiary off-platform (not through an APS)
Only cash can be withdrawn off the platform by a beneficiary. If a surviving beneficiary wants to withdraw all cash and investments, they will need to wait until investments have matured and repaid.
The process flow is:
- Notify the Goji operations team of the death by emailing platformsupport@goji.investments.
- Goji will create a 'Death of investor' workflow and lock the account.
- The Goji operations team will liaise with you and the beneficiary to gather the required paperwork (e.g. death certificate and grant of probate).
- Once required paperwork has been provided, Goji will confirm, unlock and the account and ask you to facilitate the beneficiary withdrawing the cash.
- To notify us of cash being withdrawn:
- On the deceased account:
POST /investors/{investorId}/cash
, setting thetype
toCUSTOMER_WITHDRAWAL
withamount.amount
set to a positive amount equal to the total cash balance.
- On the deceased account:
- After the calls are completed, the cash and investment balances of the deceased account should be 0.
- Let Goji know when you have completed the calls by emailing our Ops team at platformsupport@goji.investments. Goji can then record the date the transfers were completed (for HMRC reporting purposes) and close the workflow and ISA account.
Tax Year Breaks
A tax year break occurs when an investor has not subscribed for a whole tax year and is therefore required to re-open an ISA before they can make further subscriptions.
For example, Investor A opens an ISA on 1st April 2016 (ie in the 2015/16 tax year) and subscribes £10,000.
The investor does not subscribe between 6th April 2016 and 5th April 2017.
This is considered a tax year break and so the investor will have to re-open their ISA to subscribe in the 2017/18 tax year.
To re-open the ISA, the investor has to agree to the ISA declaration. This can be achieved by calling:
POST /investors/{investorId}/declaration/agreement
- Please note that Goji can contact the affected investors on your behalf to encourage them to re-open their ISAs. *
Repairing / voiding ISAs
If HMRC deem that an Investor has breached any ISA regulations eg opened two IF ISAs in one tax year, then an ISA may need to be voided or repaired.
Voiding an ISA involves closing the ISA completely. A repair requires a certain amount of funds and associated income to be removed from the wrapper.
Voiding an ISA
If an investor has opened multiple IF ISAs within a tax year, HMRC may instruct their ISA manager(s) to void the ISA.
Goji will handle all the associated admin wth voiding the ISA, however the Originator will need to be able to support moving funds and/or investments out of the wrapper.
The steps to repair the ISA will be as follows:
- HMRC write to the ISA manager to instruct them to void the ISA
- Goji/Originator will contact the investor to determine how the funds should be removed from the wrapper eg withdrawing cash, selling investments, moving in specie
- Any cash on account is withdrawn using
/cash
with type set toCUSTOMER_WITHDRAWAL
- If investments are to be removed from the tax wrapper, call
DELETE /investors/{investorId}/investment/{investmentId}/investment
. This reduces the ISA balance by the outstanding capital amount. - Once this process is complete, Goji will email the investor with details of the taxable income that needs to be declared in their tax return.
Repairing an ISA
If an investor has oversubscribed to their ISA(s) within a tax year, HMRC may instruct their ISA manager(s) to repair the ISA. HMRC will contact the ISA manager with the amount that needs to be removed from the ISA.
Goji will handle all the associated admin wth repairing the ISA, however the Originator will need to be able to support moving funds and/or investments out of the wrapper.
The steps to repair the ISA will be as follows:
- HMRC write to the ISA manager to instruct them to repair the ISA
- Goji/Originator will contact the investor to determine how the funds should be removed from the wrapper eg withdrawing cash, selling investments, moving in specie
- Any cash on account is withdrawn using
/cash
with type set toCUSTOMER_WITHDRAWAL
- If investments are to be removed from the tax wrapper, call
DELETE /investors/{investorId}/investment/{investmentId}/investment
. This reduces the ISA balance by the outstanding capital amount. - Once this process is complete, Goji will email the investor with details of the taxable income that needs to be declared in their tax return.
GET /terms
GET /terms HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"version" : "version",
"termsAndConditions" : "termsAndConditions"
}
Description
Returns the Terms and Conditions to show to the investor.
Investor Lifecycle
This endpoint should be called to return the Terms and Conditions that the investor must agree to before they can open an IF ISA.
Response
Name | Type | Description |
---|---|---|
termsAndConditions | string | The terms and conditions |
version | string | The version of the terms and conditions eg 1.0.0 |
POST /terms
POST /terms HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"termsAndConditions" : "termsAndConditions"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"version" : "version",
"termsAndConditions" : "termsAndConditions"
}
Description
Creates or updates the Terms and Conditions to show to the investor.
Investor Lifecycle
This endpoint should be called to create or update the Terms and Conditions that the investor must agree to before they can open an IF ISA.
Request
Name | Type | Description | Required |
---|---|---|---|
termsAndConditions | string | The new Terms and Conditions HTML content. | required |
Response
Name | Type | Description |
---|---|---|
termsAndConditions | string | The terms and conditions |
version | string | The version of the terms and conditions eg 1.0.0 |
POST /terms/agreement
POST /terms/agreement HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"termsAndConditionsVersion" : "termsAndConditionsVersion",
"dateTimeSigned" : "2000-01-23T04:56:07.000+00:00"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"token" : "token"
}
Description
Issues a token that indicates that the investor has read and agreed to the specified version of the terms and conditions. The returned token can then be used as part of the create investor request or when the investor is signing a new version of the terms and conditions.
Investor Lifecycle
This endpoint should be called before creating the investor and when the investor signs a new version of the terms and conditions.
Possible Error Codes:
Please see sign terms errors
Request
Name | Type | Description | Required |
---|---|---|---|
termsAndConditionsVersion | string | The version of the Terms and Conditions the user has signed, as returned in GET response. | required |
dateTimeSigned | string | The date and time the conditions were signed | required |
Response
Name | Type | Description |
---|---|---|
token | string | A token identifying the signing of the Ts & Cs. To be used on the POST /investors call. |
GET /investors/{clientId}/terms/status
GET /investors/{clientId}/terms/status HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"status" : "UNSIGNED"
}
Description
Loads the investor's terms and conditions status which can be used to determine if they have signed the latest terms and conditions.
Response
Name | Type | Description |
---|---|---|
status | string | The status. Possible values are: UNSIGNED PREVIOUS_VERSION_SIGNED CURRENT_VERSION_SIGNED |
PUT /investors/{clientId}/terms/agreement/token
PUT /investors/{clientId}/terms/agreement/token HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"token" : "token"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"firstName" : "firstName",
"lastName" : "lastName",
"clientId" : "clientId",
"address" : {
"country" : "country",
"lineTwo" : "lineTwo",
"townCity" : "townCity",
"postcode" : "postcode",
"lineOne" : "lineOne",
"lineThree" : "lineThree",
"region" : "region"
},
"nationalInsuranceNumber" : "nationalInsuranceNumber",
"middleName" : "middleName",
"dateOfBirth" : "2000-01-23",
"contactDetails" : {
"emailAddress" : "emailAddress",
"telephoneNumber" : "telephoneNumber"
}
}
Description
Applicable when the terms and conditions are updated and the investor must accept the latest version. The token is obtained from the 'terms/agreement' request. Note that this should not be called on investor registration, this is only applicable if an existing investor is signing a new version of the terms and conditions.
Request
Name | Type | Description | Required |
---|---|---|---|
token | string | A token identifying the signing of the Ts & Cs. To be used on the POST /investors call. | optional |
Response
Name | Type | Description |
---|---|---|
clientId | string | The ID assigned to this investor by the client P2P platform. |
firstName | string | The investor's first name as it appears on their passport. |
middleName | string | The investor's middle name as it appears on their passport. |
lastName | string | The investor's last name as it appears on their passport. |
dateOfBirth | string | The investor's date of birth. |
contactDetails | ref | |
contactDetails.emailAddress | string | The investor's email address. |
contactDetails.telephoneNumber | string | The investor's telephone number. |
nationalInsuranceNumber | string | The investor's National Insurance number. |
address | ref | |
address.lineOne | string | The first line of the investor's address. |
address.lineTwo | string | The second line of the investor's address. NOT the town or region. |
address.lineThree | string | The third line of the investor's address. NOT the town or region. |
address.townCity | string | The town of the investor's address. |
address.region | string | The region of the investor's address. |
address.country | string | The country of the investor's address in 3 character ISO code. Must be GBR to be valid for ISA subscriptions. If a different country code is supplied, current year subscriptions will be blocked. |
address.postcode | string | The Post Code of the investor's address. |
GET /declaration
GET /declaration HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"declaration" : "declaration",
"version" : "version"
}
Description
Returns the ISA Declaration to show to the investor.
Investor Lifecycle
This endpoint should be called to return the ISA Declaration that the investor must agree to before they can open an IF ISA.
Response
Name | Type | Description |
---|---|---|
declaration | string | The declaration |
version | string | A unique identifier of the version of this declaration eg. 0.11 |
POST /declaration/agreement
POST /declaration/agreement HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"declarationVersion" : 2.68,
"dateTimeSigned" : "2000-01-23T04:56:07.000+00:00"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"token" : "token"
}
Description
Records an investor agreeing to the ISA Declaration.
Investor Lifecycle
This endpoint should be called before creating the investor.
Possible Error Codes:
Please see sign declaration errors
Request
Name | Type | Description | Required |
---|---|---|---|
declarationVersion | number | The version of the Declaration the user has signed, as returned in GET response. | required |
dateTimeSigned | string | The date and time the conditions were signed | required |
Response
Name | Type | Description |
---|---|---|
token | string | A token identifying the signing of the Declaration. To be used on the POST /investors call. |
POST /investors
POST /investors HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"firstName" : "firstName",
"lastName" : "lastName",
"clientId" : "clientId",
"address" : {
"country" : "country",
"lineTwo" : "lineTwo",
"townCity" : "townCity",
"postcode" : "postcode",
"lineOne" : "lineOne",
"lineThree" : "lineThree",
"region" : "region"
},
"declarationToken" : "declarationToken",
"nationalInsuranceNumber" : "nationalInsuranceNumber",
"middleName" : "middleName",
"dateOfBirth" : "2000-01-23",
"termsAndConditionsToken" : "termsAndConditionsToken",
"contactDetails" : {
"emailAddress" : "emailAddress",
"telephoneNumber" : "telephoneNumber"
}
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"firstName" : "firstName",
"lastName" : "lastName",
"clientId" : "clientId",
"address" : {
"country" : "country",
"lineTwo" : "lineTwo",
"townCity" : "townCity",
"postcode" : "postcode",
"lineOne" : "lineOne",
"lineThree" : "lineThree",
"region" : "region"
},
"nationalInsuranceNumber" : "nationalInsuranceNumber",
"middleName" : "middleName",
"dateOfBirth" : "2000-01-23",
"contactDetails" : {
"emailAddress" : "emailAddress",
"telephoneNumber" : "telephoneNumber"
}
}
Description
Creates a new investor and an accompanying ISA. This creates an investor on the Goji platform and allocates it to the P2P platform that sent the request.
Investor Lifecycle
This endpoint should be called whenever an investor wishes to create an IF ISA.
Validation
In addition to checking the format of the supplied data, the following validation is applied:
- ensure the investor has not already created an IF ISA via the Goji platform.
- ensure the National Insurance number is valid.
- ensure the user complies with the ISA UK residency checks
Possible Error Codes
Please see create investor errors
Request
Name | Type | Description | Required |
---|---|---|---|
clientId | string | The ID assigned to this investor by the client P2P platform. | required |
firstName | string | The investor's first name as it appears on their passport. | required |
middleName | string | The investor's middle name as it appears on their passport. | optional |
lastName | string | The investor's last name as it appears on their passport. | required |
dateOfBirth | string | The investor's date of birth. | required |
contactDetails | ref | required | |
contactDetails.emailAddress | string | The investor's email address. | |
contactDetails.telephoneNumber | string | The investor's telephone number. | |
nationalInsuranceNumber | string | The investor's National Insurance number. | required |
address | ref | required | |
address.lineOne | string | The first line of the investor's address. | |
address.lineTwo | string | The second line of the investor's address. NOT the town or region. | |
address.lineThree | string | The third line of the investor's address. NOT the town or region. | |
address.townCity | string | The town of the investor's address. | |
address.region | string | The region of the investor's address. | |
address.country | string | The country of the investor's address in 3 character ISO code. Must be GBR to be valid for ISA subscriptions. If a different country code is supplied, current year subscriptions will be blocked. | |
address.postcode | string | The Post Code of the investor's address. | |
termsAndConditionsToken | string | A token returned by POST /terms to identify that the user has signed the Ts & Cs. | required |
declarationToken | string | A token returned by POST /declaration to identify that the user has signed the Declaration. | required |
Response
Name | Type | Description |
---|---|---|
clientId | string | The ID assigned to this investor by the client P2P platform. |
firstName | string | The investor's first name as it appears on their passport. |
middleName | string | The investor's middle name as it appears on their passport. |
lastName | string | The investor's last name as it appears on their passport. |
dateOfBirth | string | The investor's date of birth. |
contactDetails | ref | |
contactDetails.emailAddress | string | The investor's email address. |
contactDetails.telephoneNumber | string | The investor's telephone number. |
nationalInsuranceNumber | string | The investor's National Insurance number. |
address | ref | |
address.lineOne | string | The first line of the investor's address. |
address.lineTwo | string | The second line of the investor's address. NOT the town or region. |
address.lineThree | string | The third line of the investor's address. NOT the town or region. |
address.townCity | string | The town of the investor's address. |
address.region | string | The region of the investor's address. |
address.country | string | The country of the investor's address in 3 character ISO code. Must be GBR to be valid for ISA subscriptions. If a different country code is supplied, current year subscriptions will be blocked. |
address.postcode | string | The Post Code of the investor's address. |
POST /investors/validIsaApplication
POST /investors/validIsaApplication HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"address" : {
"country" : "country",
"lineTwo" : "lineTwo",
"townCity" : "townCity",
"postcode" : "postcode",
"lineOne" : "lineOne",
"lineThree" : "lineThree",
"region" : "region"
},
"nationalInsuranceNumber" : "nationalInsuranceNumber",
"dateOfBirth" : "2000-01-23"
}
HTTP/1.1 200 OK
Content-Type: application/json
""
Description
Validates the details of an investor to allow a P2PP to verify whether an investor is ellgibile for an ISA.
Checks performed:
- UK residency check against the address
- Age of investor
Possible Error Codes
Please see validate investor errors
Request
Name | Type | Description | Required |
---|---|---|---|
dateOfBirth | string | The date of birth of the investor in yyyy-MM-dd format | required |
address | ref | required | |
address.lineOne | string | The first line of the investor's address. | |
address.lineTwo | string | The second line of the investor's address. NOT the town or region. | |
address.lineThree | string | The third line of the investor's address. NOT the town or region. | |
address.townCity | string | The town of the investor's address. | |
address.region | string | The region of the investor's address. | |
address.country | string | The country of the investor's address in 3 character ISO code. Must be GBR to be valid for ISA subscriptions. If a different country code is supplied, current year subscriptions will be blocked. | |
address.postcode | string | The Post Code of the investor's address. | |
nationalInsuranceNumber | string | Optionally check to see if the National Insurance number has already been registered | required |
GET /investors/{investorId}
GET /investors/{investorId} HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"firstName" : "firstName",
"lastName" : "lastName",
"clientId" : "clientId",
"address" : {
"country" : "country",
"lineTwo" : "lineTwo",
"townCity" : "townCity",
"postcode" : "postcode",
"lineOne" : "lineOne",
"lineThree" : "lineThree",
"region" : "region"
},
"nationalInsuranceNumber" : "nationalInsuranceNumber",
"middleName" : "middleName",
"dateOfBirth" : "2000-01-23",
"contactDetails" : {
"emailAddress" : "emailAddress",
"telephoneNumber" : "telephoneNumber"
}
}
Description
Retrieves the details of an investor.
Investor Lifecycle
This endpoint should be called when the non-financial details of an investor need to be accessed.
Response
Name | Type | Description |
---|---|---|
clientId | string | The ID assigned to this investor by the client P2P platform. |
firstName | string | The investor's first name as it appears on their passport. |
middleName | string | The investor's middle name as it appears on their passport. |
lastName | string | The investor's last name as it appears on their passport. |
dateOfBirth | string | The investor's date of birth. |
contactDetails | ref | |
contactDetails.emailAddress | string | The investor's email address. |
contactDetails.telephoneNumber | string | The investor's telephone number. |
nationalInsuranceNumber | string | The investor's National Insurance number. |
address | ref | |
address.lineOne | string | The first line of the investor's address. |
address.lineTwo | string | The second line of the investor's address. NOT the town or region. |
address.lineThree | string | The third line of the investor's address. NOT the town or region. |
address.townCity | string | The town of the investor's address. |
address.region | string | The region of the investor's address. |
address.country | string | The country of the investor's address in 3 character ISO code. Must be GBR to be valid for ISA subscriptions. If a different country code is supplied, current year subscriptions will be blocked. |
address.postcode | string | The Post Code of the investor's address. |
PUT /investors/{investorId}
PUT /investors/{investorId} HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"firstName" : "firstName",
"lastName" : "lastName",
"address" : {
"country" : "country",
"lineTwo" : "lineTwo",
"townCity" : "townCity",
"postcode" : "postcode",
"lineOne" : "lineOne",
"lineThree" : "lineThree",
"region" : "region"
},
"nationalInsuranceNumber" : "nationalInsuranceNumber",
"middleName" : "middleName",
"dateOfBirth" : "2000-01-23",
"contactDetails" : {
"emailAddress" : "emailAddress",
"telephoneNumber" : "telephoneNumber"
}
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"firstName" : "firstName",
"lastName" : "lastName",
"clientId" : "clientId",
"address" : {
"country" : "country",
"lineTwo" : "lineTwo",
"townCity" : "townCity",
"postcode" : "postcode",
"lineOne" : "lineOne",
"lineThree" : "lineThree",
"region" : "region"
},
"nationalInsuranceNumber" : "nationalInsuranceNumber",
"middleName" : "middleName",
"dateOfBirth" : "2000-01-23",
"contactDetails" : {
"emailAddress" : "emailAddress",
"telephoneNumber" : "telephoneNumber"
}
}
Description
Updates the details of an investor.
Investor Lifecycle
This endpoint should be called whenever the details of an investor change.
Request
Name | Type | Description | Required |
---|---|---|---|
firstName | string | The investor's first name as it appears on their passport. | required |
middleName | string | The investor's middle name as it appears on their passport. | optional |
lastName | string | The investor's last name as it appears on their passport. | required |
dateOfBirth | string | The investor's date of birth. | required |
contactDetails | ref | required | |
contactDetails.emailAddress | string | The investor's email address. | |
contactDetails.telephoneNumber | string | The investor's telephone number. | |
nationalInsuranceNumber | string | The investor's National Insurance number. | required |
address | ref | optional | |
address.lineOne | string | The first line of the investor's address. | |
address.lineTwo | string | The second line of the investor's address. NOT the town or region. | |
address.lineThree | string | The third line of the investor's address. NOT the town or region. | |
address.townCity | string | The town of the investor's address. | |
address.region | string | The region of the investor's address. | |
address.country | string | The country of the investor's address in 3 character ISO code. Must be GBR to be valid for ISA subscriptions. If a different country code is supplied, current year subscriptions will be blocked. | |
address.postcode | string | The Post Code of the investor's address. |
Response
Name | Type | Description |
---|---|---|
clientId | string | The ID assigned to this investor by the client P2P platform. |
firstName | string | The investor's first name as it appears on their passport. |
middleName | string | The investor's middle name as it appears on their passport. |
lastName | string | The investor's last name as it appears on their passport. |
dateOfBirth | string | The investor's date of birth. |
contactDetails | ref | |
contactDetails.emailAddress | string | The investor's email address. |
contactDetails.telephoneNumber | string | The investor's telephone number. |
nationalInsuranceNumber | string | The investor's National Insurance number. |
address | ref | |
address.lineOne | string | The first line of the investor's address. |
address.lineTwo | string | The second line of the investor's address. NOT the town or region. |
address.lineThree | string | The third line of the investor's address. NOT the town or region. |
address.townCity | string | The town of the investor's address. |
address.region | string | The region of the investor's address. |
address.country | string | The country of the investor's address in 3 character ISO code. Must be GBR to be valid for ISA subscriptions. If a different country code is supplied, current year subscriptions will be blocked. |
address.postcode | string | The Post Code of the investor's address. |
GET /investors/{investorId}/isa
GET /investors/{investorId}/isa HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"totalInterestReceived" : {
"amount" : 123.45,
"currency" : "currency"
},
"remainingSubscriptionAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateCreated" : "2000-01-23",
"remainingAdditionalPermittedSubscriptions" : {
"amount" : 123.45,
"currency" : "currency"
},
"cashTransactions" : [ {
"amount" : {
"amount" : 123.45,
"currency" : "currency"
},
"clientTransactionId" : "clientTransactionId",
"type" : { },
"dateTimeOfTransaction" : "2000-01-23T04:56:07.000+00:00"
}, {
"amount" : {
"amount" : 123.45,
"currency" : "currency"
},
"clientTransactionId" : "clientTransactionId",
"type" : { },
"dateTimeOfTransaction" : "2000-01-23T04:56:07.000+00:00"
} ],
"subscriptionStatus" : "VALID",
"totalIsaBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalInterestReceivedThisTaxYear" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalCashBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"investments" : [ {
"clientInvestmentId" : "clientInvestmentId",
"expectedInterest" : {
"amount" : 123.45,
"currency" : "currency"
},
"termOfInvestment" : 2.15,
"originalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"reinvestments" : [ {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
}, {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
} ],
"id" : "id",
"investmentType" : "LOAN",
"dateTimeOfInvestment" : "2000-01-23T04:56:07.000+00:00",
"repayments" : [ {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
}, {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
} ]
}, {
"clientInvestmentId" : "clientInvestmentId",
"expectedInterest" : {
"amount" : 123.45,
"currency" : "currency"
},
"termOfInvestment" : 2.15,
"originalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"reinvestments" : [ {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
}, {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
} ],
"id" : "id",
"investmentType" : "LOAN",
"dateTimeOfInvestment" : "2000-01-23T04:56:07.000+00:00",
"repayments" : [ {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
}, {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
} ]
} ],
"coolingOffPeriodEnds" : "2000-01-23",
"totalInvestedBalance" : {
"amount" : 123.45,
"currency" : "currency"
}
}
Description
Returns details of the investor's ISA.
Investor Lifecycle
This endpoint should be called whenever up to date details of the investor's ISA are required eg remaining subscription amount etc.
Response
Name | Type | Description |
---|---|---|
totalIsaBalance | ref | The total current balance in the ISA, inclusive of all years. |
totalIsaBalance.amount | number | The amount |
totalIsaBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
remainingSubscriptionAmount | ref | The amount remaining that can be invested in the ISA in the current tax year. |
remainingSubscriptionAmount.amount | number | The amount |
remainingSubscriptionAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalCashBalance | ref | The total amount of cash in the ISA that is not currently invested. |
totalCashBalance.amount | number | The amount |
totalCashBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
dateCreated | string | Date the ISA was created |
coolingOffPeriodEnds | string | Date the cooling off period ends |
investments | array | The list of investments that make up the ISA |
investments[].id | string | The ID of the loan defined by Goji |
investments[].clientInvestmentId | string | The ID of the loan defined by the P2P platform |
investments[].investmentType | string | The type of the investment. Currently only loans are supported. Possible values are: LOAN |
investments[].originalAmount | ref | The original capital amount of the investment. |
investments[].expectedInterest | ref | The expected interest to receive over the life of the investment. |
investments[].dateTimeOfInvestment | string | The date and time the investment started |
investments[].termOfInvestment | number | The term of the investment in months |
investments[].repayments | array | Repayments that have been made against the investment by the borrower that were not reinvested automatically. |
investments[].reinvestments | array | Repayments that have been made against the instruments by the borrower that were reinvested automatically. |
cashTransactions | array | Cash transactions on the ISA |
cashTransactions[].clientTransactionId | string | The ID of the transaction assigned by the P2P platform |
cashTransactions[].amount | ref | The amount of the cash transaction |
cashTransactions[].dateTimeOfTransaction | string | The date and time of the transaction |
cashTransactions[].type | ref | Indicates the type of the cash transaction. |
totalInterestReceived | ref | |
totalInterestReceived.amount | number | The amount |
totalInterestReceived.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalInterestReceivedThisTaxYear | ref | |
totalInterestReceivedThisTaxYear.amount | number | The amount |
totalInterestReceivedThisTaxYear.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalInvestedBalance | ref | |
totalInvestedBalance.amount | number | The amount |
totalInvestedBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
subscriptionStatus | string | Indicates if anything is preventing further subscriptions to this ISA. Possible values are: VALID INVALID_CROWN_DEPENDENCY INVALID_NON_UK INVALID_LOCKED_DEATH INVALID_LOCKED_BANKRUPTCY UNLOCKED INVALID_CANCELLED |
remainingAdditionalPermittedSubscriptions | ref | The remaining amount that can be subscribed as an Additional Permitted Subscription. |
remainingAdditionalPermittedSubscriptions.amount | number | The amount |
remainingAdditionalPermittedSubscriptions.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
GET /investors/{investorId}/isa/summary
GET /investors/{investorId}/isa/summary HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"remainingSubscriptionAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalIsaBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalCashBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalAmountInvested" : {
"amount" : 123.45,
"currency" : "currency"
}
}
Description
Returns summary details of the investor's ISA.
Investor Lifecycle
This endpoint should be called whenever summary details of the investor's ISA are required eg remaining subscription amount etc.
Response
Name | Type | Description |
---|---|---|
totalCashBalance | ref | The total amount of cash in the ISA that is not currently invested. |
totalCashBalance.amount | number | The amount |
totalCashBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalAmountInvested | ref | The total amount of the ISA that is currently invested. |
totalAmountInvested.amount | number | The amount |
totalAmountInvested.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalIsaBalance | ref | The total current balance in the ISA, inclusive of all years. |
totalIsaBalance.amount | number | The amount |
totalIsaBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
remainingSubscriptionAmount | ref | The amount remaining that can be invested in the ISA in the current tax year. |
remainingSubscriptionAmount.amount | number | The amount |
remainingSubscriptionAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
GET /transferIn/investors/{clientId}/open
GET /transferIn/investors/{clientId}/open HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
[ {
"isaManagerName" : "isaManagerName",
"transferSummary" : {
"previousYearsSubscriptionAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalIsaTransferAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"repairAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"currentYearSubscriptionAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
},
"cashArrived" : true,
"previousYearsAmountType" : "previousYearsAmountType",
"id" : "id",
"isaType" : "isaType",
"transferDate" : "2000-01-23",
"includeCurrentYear" : true
} ]
Description
Returns an overview of all open transfers in for a particular investor.
The transferDate
is only non-null if the transfer history form has been received.
Response
Name | Type | Description |
---|---|---|
[].id | string | The id |
[].isaType | string | The type of ISA the investor holds |
[].isaManagerName | string | The name of the ISA manager involved with the Transfer In |
[].transferSummary | ref | Details of the amounts being transferred |
[].currentYearSubscriptionAmount.amount | number | The amount |
[].currentYearSubscriptionAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
[].previousYearsSubscriptionAmount.amount | number | The amount |
[].previousYearsSubscriptionAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
[].repairAmount.amount | number | The amount |
[].repairAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
[].totalIsaTransferAmount.amount | number | The amount |
[].totalIsaTransferAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
[].includeCurrentYear | boolean | True if current year subscriptions should be transferred |
[].previousYearsAmountType | string | Determines how much prior year subscription should be included in the transfer |
[].transferDate | string | The date on which the transfer should occur |
[].cashArrived | boolean | True if the cash for the Transfer In has arrived |
GET /transferIn/investors/{clientId}/closed
GET /transferIn/investors/{clientId}/closed HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
[ {
"isaManagerName" : "isaManagerName",
"transferSummary" : {
"previousYearsSubscriptionAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalIsaTransferAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"repairAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"currentYearSubscriptionAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
},
"cashArrived" : true,
"previousYearsAmountType" : "previousYearsAmountType",
"id" : "id",
"isaType" : "isaType",
"transferDate" : "2000-01-23",
"includeCurrentYear" : true
} ]
Description
Returns an overview of all closed transfers in for a particular investor.
Response
Name | Type | Description |
---|---|---|
[].id | string | The id |
[].isaType | string | The type of ISA the investor holds |
[].isaManagerName | string | The name of the ISA manager involved with the Transfer In |
[].transferSummary | ref | Details of the amounts being transferred |
[].currentYearSubscriptionAmount.amount | number | The amount |
[].currentYearSubscriptionAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
[].previousYearsSubscriptionAmount.amount | number | The amount |
[].previousYearsSubscriptionAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
[].repairAmount.amount | number | The amount |
[].repairAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
[].totalIsaTransferAmount.amount | number | The amount |
[].totalIsaTransferAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
[].includeCurrentYear | boolean | True if current year subscriptions should be transferred |
[].previousYearsAmountType | string | Determines how much prior year subscription should be included in the transfer |
[].transferDate | string | The date on which the transfer should occur |
[].cashArrived | boolean | True if the cash for the Transfer In has arrived |
GET /investors/{clientId}/isa/subscriptionStatus
GET /investors/{clientId}/isa/subscriptionStatus HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"subscriptionStatus" : "VALID"
}
Description
Used to retrieve the subscription status of an investor's ISA. Can be used for tax year breaks.
Response
Name | Type | Description |
---|---|---|
subscriptionStatus | string | Indicates if anything is preventing further subscriptions to this ISA. Possible values are: VALID INVALID_CROWN_DEPENDENCY INVALID_NON_UK INVALID_LOCKED_DEATH INVALID_LOCKED_BANKRUPTCY UNLOCKED INVALID_CANCELLED |
PUT /investors/{investorId}/isa/status
PUT /investors/{investorId}/isa/status HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"dateTime" : "2000-01-23T04:56:07.000+00:00",
"isaSubscriptionStatus" : "VALID"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"remainingSubscriptionAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalIsaBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalCashBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalAmountInvested" : {
"amount" : 123.45,
"currency" : "currency"
}
}
Description
Updates the status of an investor's ISA. This can aid testing by placing an ISA into an invalid status.
Request
Name | Type | Description | Required |
---|---|---|---|
dateTime | string | The date time the residual income payment was received. | required |
isaSubscriptionStatus | string | The status to change this ISA to. Possible values are: VALID INVALID_CROWN_DEPENDENCY INVALID_NON_UK INVALID_LOCKED_DEATH INVALID_LOCKED_BANKRUPTCY UNLOCKED INVALID_CANCELLED |
required |
Response
Name | Type | Description |
---|---|---|
totalCashBalance | ref | The total amount of cash in the ISA that is not currently invested. |
totalCashBalance.amount | number | The amount |
totalCashBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalAmountInvested | ref | The total amount of the ISA that is currently invested. |
totalAmountInvested.amount | number | The amount |
totalAmountInvested.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalIsaBalance | ref | The total current balance in the ISA, inclusive of all years. |
totalIsaBalance.amount | number | The amount |
totalIsaBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
remainingSubscriptionAmount | ref | The amount remaining that can be invested in the ISA in the current tax year. |
remainingSubscriptionAmount.amount | number | The amount |
remainingSubscriptionAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
PUT /investors/{clientId}/transferIn/{transferInId}/transferHistory
PUT /investors/{clientId}/transferIn/{transferInId}/transferHistory HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"transferInDate" : "2000-01-23",
"firstSubscriptionDateInCurrentYear" : "2000-01-23",
"transferAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"currentYearSubscriptionAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"transferInDate" : "2000-01-23",
"firstSubscriptionDateInCurrentYear" : "2000-01-23",
"adjustedAmounts" : {
"previousYearsSubscriptionAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalIsaTransferAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"repairAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"currentYearSubscriptionAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
},
"transferAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"currentYearSubscriptionAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
}
Description
Updates the transfer history for an investor's Transfer In
Request
Name | Type | Description | Required |
---|---|---|---|
transferAmount | ref | The total transfer amount | required |
transferAmount.amount | number | The amount | |
transferAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' | |
currentYearSubscriptionAmount | ref | The total amount subscribed within the current tax year | required |
currentYearSubscriptionAmount.amount | number | The amount | |
currentYearSubscriptionAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' | |
transferInDate | string | The date specified by the ISA manager for the transfer to be completed | required |
firstSubscriptionDateInCurrentYear | string | The date of the first ISA subscription within the current tax year | required |
Response
Name | Type | Description |
---|---|---|
transferAmount | ref | The total transfer amount |
transferAmount.amount | number | The amount |
transferAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
currentYearSubscriptionAmount | ref | The total amount subscribed within the current tax year |
currentYearSubscriptionAmount.amount | number | The amount |
currentYearSubscriptionAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
transferInDate | string | The date specified by the ISA manager for the transfer to be completed |
firstSubscriptionDateInCurrentYear | string | The date of the first ISA subscription within the current tax year |
adjustedAmounts | ref | The calculated amounts to be used to determine how to allocate the cash received |
currentYearSubscriptionAmount.amount | number | The amount |
currentYearSubscriptionAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
previousYearsSubscriptionAmount.amount | number | The amount |
previousYearsSubscriptionAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
repairAmount.amount | number | The amount |
repairAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalIsaTransferAmount.amount | number | The amount |
totalIsaTransferAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
POST /investors/{clientId}/transferIn/{transferInId}/transferHistory
POST /investors/{clientId}/transferIn/{transferInId}/transferHistory HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"transferInDate" : "2000-01-23",
"firstSubscriptionDateInCurrentYear" : "2000-01-23",
"transferAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"currentYearSubscriptionAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"transferInDate" : "2000-01-23",
"firstSubscriptionDateInCurrentYear" : "2000-01-23",
"adjustedAmounts" : {
"previousYearsSubscriptionAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalIsaTransferAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"repairAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"currentYearSubscriptionAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
},
"transferAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"currentYearSubscriptionAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
}
Description
Creates the transfer history for an investor's Transfer In
Request
Name | Type | Description | Required |
---|---|---|---|
transferAmount | ref | The total transfer amount | required |
transferAmount.amount | number | The amount | |
transferAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' | |
currentYearSubscriptionAmount | ref | The total amount subscribed within the current tax year | required |
currentYearSubscriptionAmount.amount | number | The amount | |
currentYearSubscriptionAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' | |
transferInDate | string | The date specified by the ISA manager for the transfer to be completed | required |
firstSubscriptionDateInCurrentYear | string | The date of the first ISA subscription within the current tax year | required |
Response
Name | Type | Description |
---|---|---|
transferAmount | ref | The total transfer amount |
transferAmount.amount | number | The amount |
transferAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
currentYearSubscriptionAmount | ref | The total amount subscribed within the current tax year |
currentYearSubscriptionAmount.amount | number | The amount |
currentYearSubscriptionAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
transferInDate | string | The date specified by the ISA manager for the transfer to be completed |
firstSubscriptionDateInCurrentYear | string | The date of the first ISA subscription within the current tax year |
adjustedAmounts | ref | The calculated amounts to be used to determine how to allocate the cash received |
currentYearSubscriptionAmount.amount | number | The amount |
currentYearSubscriptionAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
previousYearsSubscriptionAmount.amount | number | The amount |
previousYearsSubscriptionAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
repairAmount.amount | number | The amount |
repairAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalIsaTransferAmount.amount | number | The amount |
totalIsaTransferAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
POST /investors/{investorId}/declaration/agreement
POST /investors/{investorId}/declaration/agreement HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
""
HTTP/1.1 200 OK
Content-Type: application/json
{
"totalInterestReceived" : {
"amount" : 123.45,
"currency" : "currency"
},
"remainingSubscriptionAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateCreated" : "2000-01-23",
"remainingAdditionalPermittedSubscriptions" : {
"amount" : 123.45,
"currency" : "currency"
},
"cashTransactions" : [ {
"amount" : {
"amount" : 123.45,
"currency" : "currency"
},
"clientTransactionId" : "clientTransactionId",
"type" : { },
"dateTimeOfTransaction" : "2000-01-23T04:56:07.000+00:00"
}, {
"amount" : {
"amount" : 123.45,
"currency" : "currency"
},
"clientTransactionId" : "clientTransactionId",
"type" : { },
"dateTimeOfTransaction" : "2000-01-23T04:56:07.000+00:00"
} ],
"subscriptionStatus" : "VALID",
"totalIsaBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalInterestReceivedThisTaxYear" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalCashBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"investments" : [ {
"clientInvestmentId" : "clientInvestmentId",
"expectedInterest" : {
"amount" : 123.45,
"currency" : "currency"
},
"termOfInvestment" : 2.15,
"originalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"reinvestments" : [ {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
}, {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
} ],
"id" : "id",
"investmentType" : "LOAN",
"dateTimeOfInvestment" : "2000-01-23T04:56:07.000+00:00",
"repayments" : [ {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
}, {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
} ]
}, {
"clientInvestmentId" : "clientInvestmentId",
"expectedInterest" : {
"amount" : 123.45,
"currency" : "currency"
},
"termOfInvestment" : 2.15,
"originalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"reinvestments" : [ {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
}, {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
} ],
"id" : "id",
"investmentType" : "LOAN",
"dateTimeOfInvestment" : "2000-01-23T04:56:07.000+00:00",
"repayments" : [ {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
}, {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
} ]
} ],
"coolingOffPeriodEnds" : "2000-01-23",
"totalInvestedBalance" : {
"amount" : 123.45,
"currency" : "currency"
}
}
Description
Used to record an investor agreeing to the ISA declaration after the ISA has been opened. Can be used for tax year breaks.
Response
Name | Type | Description |
---|---|---|
totalIsaBalance | ref | The total current balance in the ISA, inclusive of all years. |
totalIsaBalance.amount | number | The amount |
totalIsaBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
remainingSubscriptionAmount | ref | The amount remaining that can be invested in the ISA in the current tax year. |
remainingSubscriptionAmount.amount | number | The amount |
remainingSubscriptionAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalCashBalance | ref | The total amount of cash in the ISA that is not currently invested. |
totalCashBalance.amount | number | The amount |
totalCashBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
dateCreated | string | Date the ISA was created |
coolingOffPeriodEnds | string | Date the cooling off period ends |
investments | array | The list of investments that make up the ISA |
investments[].id | string | The ID of the loan defined by Goji |
investments[].clientInvestmentId | string | The ID of the loan defined by the P2P platform |
investments[].investmentType | string | The type of the investment. Currently only loans are supported. Possible values are: LOAN |
investments[].originalAmount | ref | The original capital amount of the investment. |
investments[].expectedInterest | ref | The expected interest to receive over the life of the investment. |
investments[].dateTimeOfInvestment | string | The date and time the investment started |
investments[].termOfInvestment | number | The term of the investment in months |
investments[].repayments | array | Repayments that have been made against the investment by the borrower that were not reinvested automatically. |
investments[].reinvestments | array | Repayments that have been made against the instruments by the borrower that were reinvested automatically. |
cashTransactions | array | Cash transactions on the ISA |
cashTransactions[].clientTransactionId | string | The ID of the transaction assigned by the P2P platform |
cashTransactions[].amount | ref | The amount of the cash transaction |
cashTransactions[].dateTimeOfTransaction | string | The date and time of the transaction |
cashTransactions[].type | ref | Indicates the type of the cash transaction. |
totalInterestReceived | ref | |
totalInterestReceived.amount | number | The amount |
totalInterestReceived.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalInterestReceivedThisTaxYear | ref | |
totalInterestReceivedThisTaxYear.amount | number | The amount |
totalInterestReceivedThisTaxYear.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalInvestedBalance | ref | |
totalInvestedBalance.amount | number | The amount |
totalInvestedBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
subscriptionStatus | string | Indicates if anything is preventing further subscriptions to this ISA. Possible values are: VALID INVALID_CROWN_DEPENDENCY INVALID_NON_UK INVALID_LOCKED_DEATH INVALID_LOCKED_BANKRUPTCY UNLOCKED INVALID_CANCELLED |
remainingAdditionalPermittedSubscriptions | ref | The remaining amount that can be subscribed as an Additional Permitted Subscription. |
remainingAdditionalPermittedSubscriptions.amount | number | The amount |
remainingAdditionalPermittedSubscriptions.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
GET /audit/investors/{investorId}
GET /audit/investors/{investorId} HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
[ {
"dateTime" : "2000-01-23T04:56:07.000+00:00",
"responseBody" : "responseBody",
"queryParameters" : "queryParameters",
"requestBody" : "requestBody",
"requestId" : "requestId",
"httpMethod" : "GET",
"url" : "url",
"responseCode" : "responseCode"
} ]
Description
Returns an audit record of HTTP requests relating to the investor.
Response
Name | Type | Description |
---|---|---|
[].requestId | string | The Goji request ID assigned to the HTTP request. |
[].dateTime | string | The time the request was received. |
[].httpMethod | string | The HTTP method of the request. Possible values are: GET POST PUT DELETE |
[].url | string | The URL of the request. |
[].queryParameters | string | Any optional query parameters supplied with the request. |
[].responseCode | string | The HTTP status code of the response. |
[].requestBody | string | The JSON payload supplied with the request if applicable. |
[].responseBody | string | The JSON payload returned. |
POST /investors/{investorId}/investment
POST /investors/{investorId}/investment HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"clientInvestmentId" : "clientInvestmentId",
"expectedInterest" : {
"amount" : 123.45,
"currency" : "currency"
},
"termOfInvestment" : 7.54,
"originalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateOfInvestment" : "2000-01-23T04:56:07.000+00:00",
"investmentType" : "LOAN"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"totalInterestReceived" : {
"amount" : 123.45,
"currency" : "currency"
},
"remainingSubscriptionAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateCreated" : "2000-01-23",
"remainingAdditionalPermittedSubscriptions" : {
"amount" : 123.45,
"currency" : "currency"
},
"cashTransactions" : [ {
"amount" : {
"amount" : 123.45,
"currency" : "currency"
},
"clientTransactionId" : "clientTransactionId",
"type" : { },
"dateTimeOfTransaction" : "2000-01-23T04:56:07.000+00:00"
}, {
"amount" : {
"amount" : 123.45,
"currency" : "currency"
},
"clientTransactionId" : "clientTransactionId",
"type" : { },
"dateTimeOfTransaction" : "2000-01-23T04:56:07.000+00:00"
} ],
"subscriptionStatus" : "VALID",
"totalIsaBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalInterestReceivedThisTaxYear" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalCashBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"investments" : [ {
"clientInvestmentId" : "clientInvestmentId",
"expectedInterest" : {
"amount" : 123.45,
"currency" : "currency"
},
"termOfInvestment" : 2.15,
"originalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"reinvestments" : [ {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
}, {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
} ],
"id" : "id",
"investmentType" : "LOAN",
"dateTimeOfInvestment" : "2000-01-23T04:56:07.000+00:00",
"repayments" : [ {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
}, {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
} ]
}, {
"clientInvestmentId" : "clientInvestmentId",
"expectedInterest" : {
"amount" : 123.45,
"currency" : "currency"
},
"termOfInvestment" : 2.15,
"originalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"reinvestments" : [ {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
}, {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
} ],
"id" : "id",
"investmentType" : "LOAN",
"dateTimeOfInvestment" : "2000-01-23T04:56:07.000+00:00",
"repayments" : [ {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
}, {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
} ]
} ],
"coolingOffPeriodEnds" : "2000-01-23",
"totalInvestedBalance" : {
"amount" : 123.45,
"currency" : "currency"
}
}
Description
Adds an investment to the investor's ISA.
Investor Lifecycle
This endpoint should be called whenever monies are drawn down from the investor's account to fund an investment. This creates the investment on the Goji platform and decreases the cash balance of the ISA.
Validation
The ISA must have a cash balance equal or greater to the amount of the investment.
Possible Error Codes
Please see create investment errors
Request
Name | Type | Description | Required |
---|---|---|---|
clientInvestmentId | string | The ID of the loan defined by the P2P platform | required |
investmentType | string | The type of the investment. Currently only loans are supported. Possible values are: LOAN |
required |
originalAmount | ref | The original capital amount of the investment. | required |
originalAmount.amount | number | The amount | |
originalAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' | |
dateOfInvestment | string | The date the investment started | required |
termOfInvestment | number | The term of the investment in months | required |
expectedInterest | ref | The expected interest to receive over the life of the investment. | optional |
expectedInterest.amount | number | The amount | |
expectedInterest.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
Response
Name | Type | Description |
---|---|---|
totalIsaBalance | ref | The total current balance in the ISA, inclusive of all years. |
totalIsaBalance.amount | number | The amount |
totalIsaBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
remainingSubscriptionAmount | ref | The amount remaining that can be invested in the ISA in the current tax year. |
remainingSubscriptionAmount.amount | number | The amount |
remainingSubscriptionAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalCashBalance | ref | The total amount of cash in the ISA that is not currently invested. |
totalCashBalance.amount | number | The amount |
totalCashBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
dateCreated | string | Date the ISA was created |
coolingOffPeriodEnds | string | Date the cooling off period ends |
investments | array | The list of investments that make up the ISA |
investments[].id | string | The ID of the loan defined by Goji |
investments[].clientInvestmentId | string | The ID of the loan defined by the P2P platform |
investments[].investmentType | string | The type of the investment. Currently only loans are supported. Possible values are: LOAN |
investments[].originalAmount | ref | The original capital amount of the investment. |
investments[].expectedInterest | ref | The expected interest to receive over the life of the investment. |
investments[].dateTimeOfInvestment | string | The date and time the investment started |
investments[].termOfInvestment | number | The term of the investment in months |
investments[].repayments | array | Repayments that have been made against the investment by the borrower that were not reinvested automatically. |
investments[].reinvestments | array | Repayments that have been made against the instruments by the borrower that were reinvested automatically. |
cashTransactions | array | Cash transactions on the ISA |
cashTransactions[].clientTransactionId | string | The ID of the transaction assigned by the P2P platform |
cashTransactions[].amount | ref | The amount of the cash transaction |
cashTransactions[].dateTimeOfTransaction | string | The date and time of the transaction |
cashTransactions[].type | ref | Indicates the type of the cash transaction. |
totalInterestReceived | ref | |
totalInterestReceived.amount | number | The amount |
totalInterestReceived.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalInterestReceivedThisTaxYear | ref | |
totalInterestReceivedThisTaxYear.amount | number | The amount |
totalInterestReceivedThisTaxYear.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalInvestedBalance | ref | |
totalInvestedBalance.amount | number | The amount |
totalInvestedBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
subscriptionStatus | string | Indicates if anything is preventing further subscriptions to this ISA. Possible values are: VALID INVALID_CROWN_DEPENDENCY INVALID_NON_UK INVALID_LOCKED_DEATH INVALID_LOCKED_BANKRUPTCY UNLOCKED INVALID_CANCELLED |
remainingAdditionalPermittedSubscriptions | ref | The remaining amount that can be subscribed as an Additional Permitted Subscription. |
remainingAdditionalPermittedSubscriptions.amount | number | The amount |
remainingAdditionalPermittedSubscriptions.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
DELETE /investors/{investorId}/investment
DELETE /investors/{investorId}/investment HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"fromDateTime" : "2000-01-23T04:56:07.000+00:00",
"toDateTime" : "2000-01-23T04:56:07.000+00:00"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"totalInterestReceived" : {
"amount" : 123.45,
"currency" : "currency"
},
"remainingSubscriptionAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateCreated" : "2000-01-23",
"remainingAdditionalPermittedSubscriptions" : {
"amount" : 123.45,
"currency" : "currency"
},
"cashTransactions" : [ {
"amount" : {
"amount" : 123.45,
"currency" : "currency"
},
"clientTransactionId" : "clientTransactionId",
"type" : { },
"dateTimeOfTransaction" : "2000-01-23T04:56:07.000+00:00"
}, {
"amount" : {
"amount" : 123.45,
"currency" : "currency"
},
"clientTransactionId" : "clientTransactionId",
"type" : { },
"dateTimeOfTransaction" : "2000-01-23T04:56:07.000+00:00"
} ],
"subscriptionStatus" : "VALID",
"totalIsaBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalInterestReceivedThisTaxYear" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalCashBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"investments" : [ {
"clientInvestmentId" : "clientInvestmentId",
"expectedInterest" : {
"amount" : 123.45,
"currency" : "currency"
},
"termOfInvestment" : 2.15,
"originalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"reinvestments" : [ {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
}, {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
} ],
"id" : "id",
"investmentType" : "LOAN",
"dateTimeOfInvestment" : "2000-01-23T04:56:07.000+00:00",
"repayments" : [ {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
}, {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
} ]
}, {
"clientInvestmentId" : "clientInvestmentId",
"expectedInterest" : {
"amount" : 123.45,
"currency" : "currency"
},
"termOfInvestment" : 2.15,
"originalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"reinvestments" : [ {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
}, {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
} ],
"id" : "id",
"investmentType" : "LOAN",
"dateTimeOfInvestment" : "2000-01-23T04:56:07.000+00:00",
"repayments" : [ {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
}, {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
} ]
} ],
"coolingOffPeriodEnds" : "2000-01-23",
"totalInvestedBalance" : {
"amount" : 123.45,
"currency" : "currency"
}
}
Description
Deletes all, or a matched set of, investments belonging to the ISA.
Currently if the investment has been previously modified this won't work and this test endpoint shouldn't be used.
Request
Name | Type | Description | Required |
---|---|---|---|
fromDateTime | string | Investments created on or after this date are considered for deletion. If no date is supplied, no earliest date filtering is applied. | optional |
toDateTime | string | Investments created on or before this date are considered for deletion. If no date is supplied, no latest date filtering is applied. | optional |
Response
Name | Type | Description |
---|---|---|
totalIsaBalance | ref | The total current balance in the ISA, inclusive of all years. |
totalIsaBalance.amount | number | The amount |
totalIsaBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
remainingSubscriptionAmount | ref | The amount remaining that can be invested in the ISA in the current tax year. |
remainingSubscriptionAmount.amount | number | The amount |
remainingSubscriptionAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalCashBalance | ref | The total amount of cash in the ISA that is not currently invested. |
totalCashBalance.amount | number | The amount |
totalCashBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
dateCreated | string | Date the ISA was created |
coolingOffPeriodEnds | string | Date the cooling off period ends |
investments | array | The list of investments that make up the ISA |
investments[].id | string | The ID of the loan defined by Goji |
investments[].clientInvestmentId | string | The ID of the loan defined by the P2P platform |
investments[].investmentType | string | The type of the investment. Currently only loans are supported. Possible values are: LOAN |
investments[].originalAmount | ref | The original capital amount of the investment. |
investments[].expectedInterest | ref | The expected interest to receive over the life of the investment. |
investments[].dateTimeOfInvestment | string | The date and time the investment started |
investments[].termOfInvestment | number | The term of the investment in months |
investments[].repayments | array | Repayments that have been made against the investment by the borrower that were not reinvested automatically. |
investments[].reinvestments | array | Repayments that have been made against the instruments by the borrower that were reinvested automatically. |
cashTransactions | array | Cash transactions on the ISA |
cashTransactions[].clientTransactionId | string | The ID of the transaction assigned by the P2P platform |
cashTransactions[].amount | ref | The amount of the cash transaction |
cashTransactions[].dateTimeOfTransaction | string | The date and time of the transaction |
cashTransactions[].type | ref | Indicates the type of the cash transaction. |
totalInterestReceived | ref | |
totalInterestReceived.amount | number | The amount |
totalInterestReceived.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalInterestReceivedThisTaxYear | ref | |
totalInterestReceivedThisTaxYear.amount | number | The amount |
totalInterestReceivedThisTaxYear.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalInvestedBalance | ref | |
totalInvestedBalance.amount | number | The amount |
totalInvestedBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
subscriptionStatus | string | Indicates if anything is preventing further subscriptions to this ISA. Possible values are: VALID INVALID_CROWN_DEPENDENCY INVALID_NON_UK INVALID_LOCKED_DEATH INVALID_LOCKED_BANKRUPTCY UNLOCKED INVALID_CANCELLED |
remainingAdditionalPermittedSubscriptions | ref | The remaining amount that can be subscribed as an Additional Permitted Subscription. |
remainingAdditionalPermittedSubscriptions.amount | number | The amount |
remainingAdditionalPermittedSubscriptions.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
PUT /investors/{investorId}/investment/{investmentId}
PUT /investors/{investorId}/investment/{investmentId} HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"amount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateOfInvestment" : "2000-01-23T04:56:07.000+00:00",
"term" : 1.12
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"totalInterestReceived" : {
"amount" : 123.45,
"currency" : "currency"
},
"remainingSubscriptionAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateCreated" : "2000-01-23",
"remainingAdditionalPermittedSubscriptions" : {
"amount" : 123.45,
"currency" : "currency"
},
"cashTransactions" : [ {
"amount" : {
"amount" : 123.45,
"currency" : "currency"
},
"clientTransactionId" : "clientTransactionId",
"type" : { },
"dateTimeOfTransaction" : "2000-01-23T04:56:07.000+00:00"
}, {
"amount" : {
"amount" : 123.45,
"currency" : "currency"
},
"clientTransactionId" : "clientTransactionId",
"type" : { },
"dateTimeOfTransaction" : "2000-01-23T04:56:07.000+00:00"
} ],
"subscriptionStatus" : "VALID",
"totalIsaBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalInterestReceivedThisTaxYear" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalCashBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"investments" : [ {
"clientInvestmentId" : "clientInvestmentId",
"expectedInterest" : {
"amount" : 123.45,
"currency" : "currency"
},
"termOfInvestment" : 2.15,
"originalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"reinvestments" : [ {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
}, {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
} ],
"id" : "id",
"investmentType" : "LOAN",
"dateTimeOfInvestment" : "2000-01-23T04:56:07.000+00:00",
"repayments" : [ {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
}, {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
} ]
}, {
"clientInvestmentId" : "clientInvestmentId",
"expectedInterest" : {
"amount" : 123.45,
"currency" : "currency"
},
"termOfInvestment" : 2.15,
"originalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"reinvestments" : [ {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
}, {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
} ],
"id" : "id",
"investmentType" : "LOAN",
"dateTimeOfInvestment" : "2000-01-23T04:56:07.000+00:00",
"repayments" : [ {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
}, {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
} ]
} ],
"coolingOffPeriodEnds" : "2000-01-23",
"totalInvestedBalance" : {
"amount" : 123.45,
"currency" : "currency"
}
}
Description
Updates an investment in the investor's ISA. This call is normally not required. Please discuss with Goji before using it.
Investor Lifecycle
This endpoint should be called whenever the captial amount of an investment needs to be updated. It acts in an upsert manner.
Validation
The ISA must have a cash balance equal or greater to the amount of the investment.
Possible Error Codes
Please see create investment errors
Request
Name | Type | Description | Required |
---|---|---|---|
amount | ref | The amount to increase the capital amount of the investment. | required |
amount.amount | number | The amount | |
amount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' | |
dateOfInvestment | string | The date the investment started | required |
term | number | The term of the investment in months | required |
Response
Name | Type | Description |
---|---|---|
totalIsaBalance | ref | The total current balance in the ISA, inclusive of all years. |
totalIsaBalance.amount | number | The amount |
totalIsaBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
remainingSubscriptionAmount | ref | The amount remaining that can be invested in the ISA in the current tax year. |
remainingSubscriptionAmount.amount | number | The amount |
remainingSubscriptionAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalCashBalance | ref | The total amount of cash in the ISA that is not currently invested. |
totalCashBalance.amount | number | The amount |
totalCashBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
dateCreated | string | Date the ISA was created |
coolingOffPeriodEnds | string | Date the cooling off period ends |
investments | array | The list of investments that make up the ISA |
investments[].id | string | The ID of the loan defined by Goji |
investments[].clientInvestmentId | string | The ID of the loan defined by the P2P platform |
investments[].investmentType | string | The type of the investment. Currently only loans are supported. Possible values are: LOAN |
investments[].originalAmount | ref | The original capital amount of the investment. |
investments[].expectedInterest | ref | The expected interest to receive over the life of the investment. |
investments[].dateTimeOfInvestment | string | The date and time the investment started |
investments[].termOfInvestment | number | The term of the investment in months |
investments[].repayments | array | Repayments that have been made against the investment by the borrower that were not reinvested automatically. |
investments[].reinvestments | array | Repayments that have been made against the instruments by the borrower that were reinvested automatically. |
cashTransactions | array | Cash transactions on the ISA |
cashTransactions[].clientTransactionId | string | The ID of the transaction assigned by the P2P platform |
cashTransactions[].amount | ref | The amount of the cash transaction |
cashTransactions[].dateTimeOfTransaction | string | The date and time of the transaction |
cashTransactions[].type | ref | Indicates the type of the cash transaction. |
totalInterestReceived | ref | |
totalInterestReceived.amount | number | The amount |
totalInterestReceived.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalInterestReceivedThisTaxYear | ref | |
totalInterestReceivedThisTaxYear.amount | number | The amount |
totalInterestReceivedThisTaxYear.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalInvestedBalance | ref | |
totalInvestedBalance.amount | number | The amount |
totalInvestedBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
subscriptionStatus | string | Indicates if anything is preventing further subscriptions to this ISA. Possible values are: VALID INVALID_CROWN_DEPENDENCY INVALID_NON_UK INVALID_LOCKED_DEATH INVALID_LOCKED_BANKRUPTCY UNLOCKED INVALID_CANCELLED |
remainingAdditionalPermittedSubscriptions | ref | The remaining amount that can be subscribed as an Additional Permitted Subscription. |
remainingAdditionalPermittedSubscriptions.amount | number | The amount |
remainingAdditionalPermittedSubscriptions.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
POST /investors/{investorId}/investment/{investmentId}/repayment
POST /investors/{investorId}/investment/{investmentId}/repayment HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"premiumAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
}
HTTP/1.1 200 OK
Content-Type: application/json
""
Description
Records a repayment against a specific investment.
Investor Lifecycle
This endpoint should be called whenever a repayment is received from the borrower against an investor's investment. This repayment increases the cash balance of the ISA as it is not automatically reinvested by the P2P Platform.
Possible Error Codes
Please see create repayment errors
Request
Name | Type | Description | Required |
---|---|---|---|
clientRepaymentId | string | The P2P platform assigned ID for the repayment transaction. | required |
capitalAmount | ref | The capital amount being repaid | optional |
capitalAmount.amount | number | The amount | |
capitalAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' | |
interestAmount | ref | The interest amount being repaid | optional |
interestAmount.amount | number | The amount | |
interestAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' | |
premiumAmount | ref | The premium amount being repaid | optional |
premiumAmount.amount | number | The amount | |
premiumAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' | |
dateTimeOfRepayment | string | The date and time of the repayment | required |
POST /investors/{investorId}/investment/{investmentId}/reinvestment
POST /investors/{investorId}/investment/{investmentId}/reinvestment HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"investments" : [ {
"clientInvestmentId" : "clientInvestmentId",
"expectedInterest" : {
"amount" : 123.45,
"currency" : "currency"
},
"termOfInvestment" : 7.54,
"originalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateOfInvestment" : "2000-01-23T04:56:07.000+00:00",
"investmentType" : "LOAN"
}, {
"clientInvestmentId" : "clientInvestmentId",
"expectedInterest" : {
"amount" : 123.45,
"currency" : "currency"
},
"termOfInvestment" : 7.54,
"originalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateOfInvestment" : "2000-01-23T04:56:07.000+00:00",
"investmentType" : "LOAN"
} ],
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"totalInterestReceived" : {
"amount" : 123.45,
"currency" : "currency"
},
"remainingSubscriptionAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateCreated" : "2000-01-23",
"remainingAdditionalPermittedSubscriptions" : {
"amount" : 123.45,
"currency" : "currency"
},
"cashTransactions" : [ {
"amount" : {
"amount" : 123.45,
"currency" : "currency"
},
"clientTransactionId" : "clientTransactionId",
"type" : { },
"dateTimeOfTransaction" : "2000-01-23T04:56:07.000+00:00"
}, {
"amount" : {
"amount" : 123.45,
"currency" : "currency"
},
"clientTransactionId" : "clientTransactionId",
"type" : { },
"dateTimeOfTransaction" : "2000-01-23T04:56:07.000+00:00"
} ],
"subscriptionStatus" : "VALID",
"totalIsaBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalInterestReceivedThisTaxYear" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalCashBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"investments" : [ {
"clientInvestmentId" : "clientInvestmentId",
"expectedInterest" : {
"amount" : 123.45,
"currency" : "currency"
},
"termOfInvestment" : 2.15,
"originalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"reinvestments" : [ {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
}, {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
} ],
"id" : "id",
"investmentType" : "LOAN",
"dateTimeOfInvestment" : "2000-01-23T04:56:07.000+00:00",
"repayments" : [ {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
}, {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
} ]
}, {
"clientInvestmentId" : "clientInvestmentId",
"expectedInterest" : {
"amount" : 123.45,
"currency" : "currency"
},
"termOfInvestment" : 2.15,
"originalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"reinvestments" : [ {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
}, {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
} ],
"id" : "id",
"investmentType" : "LOAN",
"dateTimeOfInvestment" : "2000-01-23T04:56:07.000+00:00",
"repayments" : [ {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
}, {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
} ]
} ],
"coolingOffPeriodEnds" : "2000-01-23",
"totalInvestedBalance" : {
"amount" : 123.45,
"currency" : "currency"
}
}
Description
Records a reinvestment against a specific investment.
Investor Lifecycle
This endpoint should be called whenever a repayment is received from the borrower against an investor's investment. This amount is automatically reinvested by the P2P Platform and so does not increase the cash balance of the ISA, however the ISA balance is increased by the interest component of the reinvestment. This endpoint creates the new investment associated with the reinvestment.
Possible Error Codes
Please see create reinvestment errors
Request
Name | Type | Description | Required |
---|---|---|---|
clientReinvestmentId | string | The P2P platform assigned ID for the reinvestment transaction. | required |
capitalAmount | ref | The capital amount being repaid that is being reinvested | required |
capitalAmount.amount | number | The amount | |
capitalAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' | |
interestAmount | ref | The interest amount being repaid that is being reinvested | required |
interestAmount.amount | number | The amount | |
interestAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' | |
dateTimeOfReinvestment | string | The date and time of the reinvestment | required |
investments | array | The new investments to create from this reinvestment | required |
investments[].clientInvestmentId | string | The ID of the loan defined by the P2P platform | required |
investments[].investmentType | string | The type of the investment. Currently only loans are supported. Possible values are: LOAN |
required |
investments[].originalAmount | ref | The original capital amount of the investment. | required |
investments[].dateOfInvestment | string | The date the investment started | required |
investments[].termOfInvestment | number | The term of the investment in months | required |
investments[].expectedInterest | ref | The expected interest to receive over the life of the investment. | optional |
Response
Name | Type | Description |
---|---|---|
totalIsaBalance | ref | The total current balance in the ISA, inclusive of all years. |
totalIsaBalance.amount | number | The amount |
totalIsaBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
remainingSubscriptionAmount | ref | The amount remaining that can be invested in the ISA in the current tax year. |
remainingSubscriptionAmount.amount | number | The amount |
remainingSubscriptionAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalCashBalance | ref | The total amount of cash in the ISA that is not currently invested. |
totalCashBalance.amount | number | The amount |
totalCashBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
dateCreated | string | Date the ISA was created |
coolingOffPeriodEnds | string | Date the cooling off period ends |
investments | array | The list of investments that make up the ISA |
investments[].id | string | The ID of the loan defined by Goji |
investments[].clientInvestmentId | string | The ID of the loan defined by the P2P platform |
investments[].investmentType | string | The type of the investment. Currently only loans are supported. Possible values are: LOAN |
investments[].originalAmount | ref | The original capital amount of the investment. |
investments[].expectedInterest | ref | The expected interest to receive over the life of the investment. |
investments[].dateTimeOfInvestment | string | The date and time the investment started |
investments[].termOfInvestment | number | The term of the investment in months |
investments[].repayments | array | Repayments that have been made against the investment by the borrower that were not reinvested automatically. |
investments[].reinvestments | array | Repayments that have been made against the instruments by the borrower that were reinvested automatically. |
cashTransactions | array | Cash transactions on the ISA |
cashTransactions[].clientTransactionId | string | The ID of the transaction assigned by the P2P platform |
cashTransactions[].amount | ref | The amount of the cash transaction |
cashTransactions[].dateTimeOfTransaction | string | The date and time of the transaction |
cashTransactions[].type | ref | Indicates the type of the cash transaction. |
totalInterestReceived | ref | |
totalInterestReceived.amount | number | The amount |
totalInterestReceived.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalInterestReceivedThisTaxYear | ref | |
totalInterestReceivedThisTaxYear.amount | number | The amount |
totalInterestReceivedThisTaxYear.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalInvestedBalance | ref | |
totalInvestedBalance.amount | number | The amount |
totalInvestedBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
subscriptionStatus | string | Indicates if anything is preventing further subscriptions to this ISA. Possible values are: VALID INVALID_CROWN_DEPENDENCY INVALID_NON_UK INVALID_LOCKED_DEATH INVALID_LOCKED_BANKRUPTCY UNLOCKED INVALID_CANCELLED |
remainingAdditionalPermittedSubscriptions | ref | The remaining amount that can be subscribed as an Additional Permitted Subscription. |
remainingAdditionalPermittedSubscriptions.amount | number | The amount |
remainingAdditionalPermittedSubscriptions.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
POST /investors/{investorId}/investment/{investmentId}/sale
POST /investors/{investorId}/investment/{investmentId}/sale HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"saleAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"repaymentId" : "repaymentId",
"dateTimeOfSale" : "2000-01-23T04:56:07.000+00:00"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"totalInterestReceived" : {
"amount" : 123.45,
"currency" : "currency"
},
"remainingSubscriptionAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateCreated" : "2000-01-23",
"remainingAdditionalPermittedSubscriptions" : {
"amount" : 123.45,
"currency" : "currency"
},
"cashTransactions" : [ {
"amount" : {
"amount" : 123.45,
"currency" : "currency"
},
"clientTransactionId" : "clientTransactionId",
"type" : { },
"dateTimeOfTransaction" : "2000-01-23T04:56:07.000+00:00"
}, {
"amount" : {
"amount" : 123.45,
"currency" : "currency"
},
"clientTransactionId" : "clientTransactionId",
"type" : { },
"dateTimeOfTransaction" : "2000-01-23T04:56:07.000+00:00"
} ],
"subscriptionStatus" : "VALID",
"totalIsaBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalInterestReceivedThisTaxYear" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalCashBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"investments" : [ {
"clientInvestmentId" : "clientInvestmentId",
"expectedInterest" : {
"amount" : 123.45,
"currency" : "currency"
},
"termOfInvestment" : 2.15,
"originalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"reinvestments" : [ {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
}, {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
} ],
"id" : "id",
"investmentType" : "LOAN",
"dateTimeOfInvestment" : "2000-01-23T04:56:07.000+00:00",
"repayments" : [ {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
}, {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
} ]
}, {
"clientInvestmentId" : "clientInvestmentId",
"expectedInterest" : {
"amount" : 123.45,
"currency" : "currency"
},
"termOfInvestment" : 2.15,
"originalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"reinvestments" : [ {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
}, {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
} ],
"id" : "id",
"investmentType" : "LOAN",
"dateTimeOfInvestment" : "2000-01-23T04:56:07.000+00:00",
"repayments" : [ {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
}, {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
} ]
} ],
"coolingOffPeriodEnds" : "2000-01-23",
"totalInvestedBalance" : {
"amount" : 123.45,
"currency" : "currency"
}
}
Description
Records the sale of a specific investment.
Investor Lifecycle
This endpoint should be called if an investment should be marked as sold. The amount of the sale may be more or less than the remaining capital amount on the investment.
Request
Name | Type | Description | Required |
---|---|---|---|
repaymentId | string | A unique reference for the transaction | required |
saleAmount | ref | The total amount the investment is being sold for. | required |
saleAmount.amount | number | The amount | |
saleAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' | |
dateTimeOfSale | string | required |
Response
Name | Type | Description |
---|---|---|
totalIsaBalance | ref | The total current balance in the ISA, inclusive of all years. |
totalIsaBalance.amount | number | The amount |
totalIsaBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
remainingSubscriptionAmount | ref | The amount remaining that can be invested in the ISA in the current tax year. |
remainingSubscriptionAmount.amount | number | The amount |
remainingSubscriptionAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalCashBalance | ref | The total amount of cash in the ISA that is not currently invested. |
totalCashBalance.amount | number | The amount |
totalCashBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
dateCreated | string | Date the ISA was created |
coolingOffPeriodEnds | string | Date the cooling off period ends |
investments | array | The list of investments that make up the ISA |
investments[].id | string | The ID of the loan defined by Goji |
investments[].clientInvestmentId | string | The ID of the loan defined by the P2P platform |
investments[].investmentType | string | The type of the investment. Currently only loans are supported. Possible values are: LOAN |
investments[].originalAmount | ref | The original capital amount of the investment. |
investments[].expectedInterest | ref | The expected interest to receive over the life of the investment. |
investments[].dateTimeOfInvestment | string | The date and time the investment started |
investments[].termOfInvestment | number | The term of the investment in months |
investments[].repayments | array | Repayments that have been made against the investment by the borrower that were not reinvested automatically. |
investments[].reinvestments | array | Repayments that have been made against the instruments by the borrower that were reinvested automatically. |
cashTransactions | array | Cash transactions on the ISA |
cashTransactions[].clientTransactionId | string | The ID of the transaction assigned by the P2P platform |
cashTransactions[].amount | ref | The amount of the cash transaction |
cashTransactions[].dateTimeOfTransaction | string | The date and time of the transaction |
cashTransactions[].type | ref | Indicates the type of the cash transaction. |
totalInterestReceived | ref | |
totalInterestReceived.amount | number | The amount |
totalInterestReceived.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalInterestReceivedThisTaxYear | ref | |
totalInterestReceivedThisTaxYear.amount | number | The amount |
totalInterestReceivedThisTaxYear.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalInvestedBalance | ref | |
totalInvestedBalance.amount | number | The amount |
totalInvestedBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
subscriptionStatus | string | Indicates if anything is preventing further subscriptions to this ISA. Possible values are: VALID INVALID_CROWN_DEPENDENCY INVALID_NON_UK INVALID_LOCKED_DEATH INVALID_LOCKED_BANKRUPTCY UNLOCKED INVALID_CANCELLED |
remainingAdditionalPermittedSubscriptions | ref | The remaining amount that can be subscribed as an Additional Permitted Subscription. |
remainingAdditionalPermittedSubscriptions.amount | number | The amount |
remainingAdditionalPermittedSubscriptions.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
POST /investors/{investorId}/investment/{investmentId}/writeOff
POST /investors/{investorId}/investment/{investmentId}/writeOff HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"writeOffAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfWriteOff" : "2000-01-23T04:56:07.000+00:00"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"totalInterestReceived" : {
"amount" : 123.45,
"currency" : "currency"
},
"remainingSubscriptionAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateCreated" : "2000-01-23",
"remainingAdditionalPermittedSubscriptions" : {
"amount" : 123.45,
"currency" : "currency"
},
"cashTransactions" : [ {
"amount" : {
"amount" : 123.45,
"currency" : "currency"
},
"clientTransactionId" : "clientTransactionId",
"type" : { },
"dateTimeOfTransaction" : "2000-01-23T04:56:07.000+00:00"
}, {
"amount" : {
"amount" : 123.45,
"currency" : "currency"
},
"clientTransactionId" : "clientTransactionId",
"type" : { },
"dateTimeOfTransaction" : "2000-01-23T04:56:07.000+00:00"
} ],
"subscriptionStatus" : "VALID",
"totalIsaBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalInterestReceivedThisTaxYear" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalCashBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"investments" : [ {
"clientInvestmentId" : "clientInvestmentId",
"expectedInterest" : {
"amount" : 123.45,
"currency" : "currency"
},
"termOfInvestment" : 2.15,
"originalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"reinvestments" : [ {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
}, {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
} ],
"id" : "id",
"investmentType" : "LOAN",
"dateTimeOfInvestment" : "2000-01-23T04:56:07.000+00:00",
"repayments" : [ {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
}, {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
} ]
}, {
"clientInvestmentId" : "clientInvestmentId",
"expectedInterest" : {
"amount" : 123.45,
"currency" : "currency"
},
"termOfInvestment" : 2.15,
"originalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"reinvestments" : [ {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
}, {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
} ],
"id" : "id",
"investmentType" : "LOAN",
"dateTimeOfInvestment" : "2000-01-23T04:56:07.000+00:00",
"repayments" : [ {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
}, {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
} ]
} ],
"coolingOffPeriodEnds" : "2000-01-23",
"totalInvestedBalance" : {
"amount" : 123.45,
"currency" : "currency"
}
}
Description
Records a write-off amount against a specific investment.
Investor Lifecycle
This endpoint should be called if an investment is in default and some or all of the remaining capital amount should be written off.
Request
Name | Type | Description | Required |
---|---|---|---|
writeOffAmount | ref | required | |
writeOffAmount.amount | number | The amount | |
writeOffAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' | |
dateTimeOfWriteOff | string | required |
Response
Name | Type | Description |
---|---|---|
totalIsaBalance | ref | The total current balance in the ISA, inclusive of all years. |
totalIsaBalance.amount | number | The amount |
totalIsaBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
remainingSubscriptionAmount | ref | The amount remaining that can be invested in the ISA in the current tax year. |
remainingSubscriptionAmount.amount | number | The amount |
remainingSubscriptionAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalCashBalance | ref | The total amount of cash in the ISA that is not currently invested. |
totalCashBalance.amount | number | The amount |
totalCashBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
dateCreated | string | Date the ISA was created |
coolingOffPeriodEnds | string | Date the cooling off period ends |
investments | array | The list of investments that make up the ISA |
investments[].id | string | The ID of the loan defined by Goji |
investments[].clientInvestmentId | string | The ID of the loan defined by the P2P platform |
investments[].investmentType | string | The type of the investment. Currently only loans are supported. Possible values are: LOAN |
investments[].originalAmount | ref | The original capital amount of the investment. |
investments[].expectedInterest | ref | The expected interest to receive over the life of the investment. |
investments[].dateTimeOfInvestment | string | The date and time the investment started |
investments[].termOfInvestment | number | The term of the investment in months |
investments[].repayments | array | Repayments that have been made against the investment by the borrower that were not reinvested automatically. |
investments[].reinvestments | array | Repayments that have been made against the instruments by the borrower that were reinvested automatically. |
cashTransactions | array | Cash transactions on the ISA |
cashTransactions[].clientTransactionId | string | The ID of the transaction assigned by the P2P platform |
cashTransactions[].amount | ref | The amount of the cash transaction |
cashTransactions[].dateTimeOfTransaction | string | The date and time of the transaction |
cashTransactions[].type | ref | Indicates the type of the cash transaction. |
totalInterestReceived | ref | |
totalInterestReceived.amount | number | The amount |
totalInterestReceived.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalInterestReceivedThisTaxYear | ref | |
totalInterestReceivedThisTaxYear.amount | number | The amount |
totalInterestReceivedThisTaxYear.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalInvestedBalance | ref | |
totalInvestedBalance.amount | number | The amount |
totalInvestedBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
subscriptionStatus | string | Indicates if anything is preventing further subscriptions to this ISA. Possible values are: VALID INVALID_CROWN_DEPENDENCY INVALID_NON_UK INVALID_LOCKED_DEATH INVALID_LOCKED_BANKRUPTCY UNLOCKED INVALID_CANCELLED |
remainingAdditionalPermittedSubscriptions | ref | The remaining amount that can be subscribed as an Additional Permitted Subscription. |
remainingAdditionalPermittedSubscriptions.amount | number | The amount |
remainingAdditionalPermittedSubscriptions.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
POST /investors/{investorId}/cash
POST /investors/{investorId}/cash HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"amount" : {
"amount" : 123.45,
"currency" : "currency"
},
"clientTransactionId" : "clientTransactionId",
"type" : "CUSTOMER_DEPOSIT",
"dateTimeOfTransaction" : "2000-01-23T04:56:07.000+00:00"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"totalInterestReceived" : {
"amount" : 123.45,
"currency" : "currency"
},
"remainingSubscriptionAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateCreated" : "2000-01-23",
"remainingAdditionalPermittedSubscriptions" : {
"amount" : 123.45,
"currency" : "currency"
},
"cashTransactions" : [ {
"amount" : {
"amount" : 123.45,
"currency" : "currency"
},
"clientTransactionId" : "clientTransactionId",
"type" : { },
"dateTimeOfTransaction" : "2000-01-23T04:56:07.000+00:00"
}, {
"amount" : {
"amount" : 123.45,
"currency" : "currency"
},
"clientTransactionId" : "clientTransactionId",
"type" : { },
"dateTimeOfTransaction" : "2000-01-23T04:56:07.000+00:00"
} ],
"subscriptionStatus" : "VALID",
"totalIsaBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalInterestReceivedThisTaxYear" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalCashBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"investments" : [ {
"clientInvestmentId" : "clientInvestmentId",
"expectedInterest" : {
"amount" : 123.45,
"currency" : "currency"
},
"termOfInvestment" : 2.15,
"originalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"reinvestments" : [ {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
}, {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
} ],
"id" : "id",
"investmentType" : "LOAN",
"dateTimeOfInvestment" : "2000-01-23T04:56:07.000+00:00",
"repayments" : [ {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
}, {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
} ]
}, {
"clientInvestmentId" : "clientInvestmentId",
"expectedInterest" : {
"amount" : 123.45,
"currency" : "currency"
},
"termOfInvestment" : 2.15,
"originalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"reinvestments" : [ {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
}, {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
} ],
"id" : "id",
"investmentType" : "LOAN",
"dateTimeOfInvestment" : "2000-01-23T04:56:07.000+00:00",
"repayments" : [ {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
}, {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
} ]
} ],
"coolingOffPeriodEnds" : "2000-01-23",
"totalInvestedBalance" : {
"amount" : 123.45,
"currency" : "currency"
}
}
Description
Records a cash transaction into the ISA.
Investor Lifecycle
This endpoint should be called whenever the user deposits or withdraws cash from the ISA.
Validation
- There must be a cash balance greater than or equal to any amount being withdrawn (debited)
- The amount deposited must not exceed the annual subscription amount
Possible Error Codes
Please see cash transaction errors
Request
Name | Type | Description | Required |
---|---|---|---|
clientTransactionId | string | The ID of the transaction assigned by the P2P platform | required |
amount | ref | The amount of the cash transaction | required |
amount.amount | number | The amount | |
amount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' | |
dateTimeOfTransaction | string | The date and time of the transaction | required |
type | string | Indicates the type of the cash transaction. Possible values are: CUSTOMER_DEPOSIT CUSTOMER_WITHDRAWAL ADDITIONAL_PERMITTED_SUBSCRIPTION DEFAULTED_INVESTMENT_SUBSCRIPTION RESIDUAL_INCOME FEE PREMIUM |
required |
Response
Name | Type | Description |
---|---|---|
totalIsaBalance | ref | The total current balance in the ISA, inclusive of all years. |
totalIsaBalance.amount | number | The amount |
totalIsaBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
remainingSubscriptionAmount | ref | The amount remaining that can be invested in the ISA in the current tax year. |
remainingSubscriptionAmount.amount | number | The amount |
remainingSubscriptionAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalCashBalance | ref | The total amount of cash in the ISA that is not currently invested. |
totalCashBalance.amount | number | The amount |
totalCashBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
dateCreated | string | Date the ISA was created |
coolingOffPeriodEnds | string | Date the cooling off period ends |
investments | array | The list of investments that make up the ISA |
investments[].id | string | The ID of the loan defined by Goji |
investments[].clientInvestmentId | string | The ID of the loan defined by the P2P platform |
investments[].investmentType | string | The type of the investment. Currently only loans are supported. Possible values are: LOAN |
investments[].originalAmount | ref | The original capital amount of the investment. |
investments[].expectedInterest | ref | The expected interest to receive over the life of the investment. |
investments[].dateTimeOfInvestment | string | The date and time the investment started |
investments[].termOfInvestment | number | The term of the investment in months |
investments[].repayments | array | Repayments that have been made against the investment by the borrower that were not reinvested automatically. |
investments[].reinvestments | array | Repayments that have been made against the instruments by the borrower that were reinvested automatically. |
cashTransactions | array | Cash transactions on the ISA |
cashTransactions[].clientTransactionId | string | The ID of the transaction assigned by the P2P platform |
cashTransactions[].amount | ref | The amount of the cash transaction |
cashTransactions[].dateTimeOfTransaction | string | The date and time of the transaction |
cashTransactions[].type | ref | Indicates the type of the cash transaction. |
totalInterestReceived | ref | |
totalInterestReceived.amount | number | The amount |
totalInterestReceived.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalInterestReceivedThisTaxYear | ref | |
totalInterestReceivedThisTaxYear.amount | number | The amount |
totalInterestReceivedThisTaxYear.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalInvestedBalance | ref | |
totalInvestedBalance.amount | number | The amount |
totalInvestedBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
subscriptionStatus | string | Indicates if anything is preventing further subscriptions to this ISA. Possible values are: VALID INVALID_CROWN_DEPENDENCY INVALID_NON_UK INVALID_LOCKED_DEATH INVALID_LOCKED_BANKRUPTCY UNLOCKED INVALID_CANCELLED |
remainingAdditionalPermittedSubscriptions | ref | The remaining amount that can be subscribed as an Additional Permitted Subscription. |
remainingAdditionalPermittedSubscriptions.amount | number | The amount |
remainingAdditionalPermittedSubscriptions.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
DELETE /investors/{investorId}/cash
DELETE /investors/{investorId}/cash HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"typesToInclude" : [ { }, { } ],
"fromDateTime" : "2000-01-23T04:56:07.000+00:00",
"typesToExclude" : [ null, null ],
"toDateTime" : "2000-01-23T04:56:07.000+00:00"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"totalInterestReceived" : {
"amount" : 123.45,
"currency" : "currency"
},
"remainingSubscriptionAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateCreated" : "2000-01-23",
"remainingAdditionalPermittedSubscriptions" : {
"amount" : 123.45,
"currency" : "currency"
},
"cashTransactions" : [ {
"amount" : {
"amount" : 123.45,
"currency" : "currency"
},
"clientTransactionId" : "clientTransactionId",
"type" : { },
"dateTimeOfTransaction" : "2000-01-23T04:56:07.000+00:00"
}, {
"amount" : {
"amount" : 123.45,
"currency" : "currency"
},
"clientTransactionId" : "clientTransactionId",
"type" : { },
"dateTimeOfTransaction" : "2000-01-23T04:56:07.000+00:00"
} ],
"subscriptionStatus" : "VALID",
"totalIsaBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalInterestReceivedThisTaxYear" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalCashBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"investments" : [ {
"clientInvestmentId" : "clientInvestmentId",
"expectedInterest" : {
"amount" : 123.45,
"currency" : "currency"
},
"termOfInvestment" : 2.15,
"originalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"reinvestments" : [ {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
}, {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
} ],
"id" : "id",
"investmentType" : "LOAN",
"dateTimeOfInvestment" : "2000-01-23T04:56:07.000+00:00",
"repayments" : [ {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
}, {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
} ]
}, {
"clientInvestmentId" : "clientInvestmentId",
"expectedInterest" : {
"amount" : 123.45,
"currency" : "currency"
},
"termOfInvestment" : 2.15,
"originalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"reinvestments" : [ {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
}, {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
} ],
"id" : "id",
"investmentType" : "LOAN",
"dateTimeOfInvestment" : "2000-01-23T04:56:07.000+00:00",
"repayments" : [ {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
}, {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
} ]
} ],
"coolingOffPeriodEnds" : "2000-01-23",
"totalInvestedBalance" : {
"amount" : 123.45,
"currency" : "currency"
}
}
Description
Deletes all, or a matched set of, cash transactions belonging to the ISA.
Request
Name | Type | Description | Required |
---|---|---|---|
fromDateTime | string | Transactions created on or after this date are considered for deletion. If no date is supplied, no earliest date filtering is applied. | optional |
toDateTime | string | Transactions created on or before this date are considered for deletion. If no date is supplied, no latest date filtering is applied. | optional |
typesToInclude | array | Types for transactions that should be considered for deletion. Defaults to all types if no 'typesToInclude' attribute or null is supplied. | optional |
typesToExclude | array | Types for transactions that should be excluded from the deletion. Defaults to none if no 'typesToExclude' attribute or null is supplied. | optional |
Response
Name | Type | Description |
---|---|---|
totalIsaBalance | ref | The total current balance in the ISA, inclusive of all years. |
totalIsaBalance.amount | number | The amount |
totalIsaBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
remainingSubscriptionAmount | ref | The amount remaining that can be invested in the ISA in the current tax year. |
remainingSubscriptionAmount.amount | number | The amount |
remainingSubscriptionAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalCashBalance | ref | The total amount of cash in the ISA that is not currently invested. |
totalCashBalance.amount | number | The amount |
totalCashBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
dateCreated | string | Date the ISA was created |
coolingOffPeriodEnds | string | Date the cooling off period ends |
investments | array | The list of investments that make up the ISA |
investments[].id | string | The ID of the loan defined by Goji |
investments[].clientInvestmentId | string | The ID of the loan defined by the P2P platform |
investments[].investmentType | string | The type of the investment. Currently only loans are supported. Possible values are: LOAN |
investments[].originalAmount | ref | The original capital amount of the investment. |
investments[].expectedInterest | ref | The expected interest to receive over the life of the investment. |
investments[].dateTimeOfInvestment | string | The date and time the investment started |
investments[].termOfInvestment | number | The term of the investment in months |
investments[].repayments | array | Repayments that have been made against the investment by the borrower that were not reinvested automatically. |
investments[].reinvestments | array | Repayments that have been made against the instruments by the borrower that were reinvested automatically. |
cashTransactions | array | Cash transactions on the ISA |
cashTransactions[].clientTransactionId | string | The ID of the transaction assigned by the P2P platform |
cashTransactions[].amount | ref | The amount of the cash transaction |
cashTransactions[].dateTimeOfTransaction | string | The date and time of the transaction |
cashTransactions[].type | ref | Indicates the type of the cash transaction. |
totalInterestReceived | ref | |
totalInterestReceived.amount | number | The amount |
totalInterestReceived.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalInterestReceivedThisTaxYear | ref | |
totalInterestReceivedThisTaxYear.amount | number | The amount |
totalInterestReceivedThisTaxYear.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalInvestedBalance | ref | |
totalInvestedBalance.amount | number | The amount |
totalInvestedBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
subscriptionStatus | string | Indicates if anything is preventing further subscriptions to this ISA. Possible values are: VALID INVALID_CROWN_DEPENDENCY INVALID_NON_UK INVALID_LOCKED_DEATH INVALID_LOCKED_BANKRUPTCY UNLOCKED INVALID_CANCELLED |
remainingAdditionalPermittedSubscriptions | ref | The remaining amount that can be subscribed as an Additional Permitted Subscription. |
remainingAdditionalPermittedSubscriptions.amount | number | The amount |
remainingAdditionalPermittedSubscriptions.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
POST /investors/{investorId}/cashCorrection
POST /investors/{investorId}/cashCorrection HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"amount" : {
"amount" : 123.45,
"currency" : "currency"
},
"clientTransactionId" : "clientTransactionId",
"type" : "INTEREST_REPAYMENT_CORRECTION",
"dateTimeOfTransaction" : "2000-01-23T04:56:07.000+00:00"
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"totalInterestReceived" : {
"amount" : 123.45,
"currency" : "currency"
},
"remainingSubscriptionAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateCreated" : "2000-01-23",
"remainingAdditionalPermittedSubscriptions" : {
"amount" : 123.45,
"currency" : "currency"
},
"cashTransactions" : [ {
"amount" : {
"amount" : 123.45,
"currency" : "currency"
},
"clientTransactionId" : "clientTransactionId",
"type" : { },
"dateTimeOfTransaction" : "2000-01-23T04:56:07.000+00:00"
}, {
"amount" : {
"amount" : 123.45,
"currency" : "currency"
},
"clientTransactionId" : "clientTransactionId",
"type" : { },
"dateTimeOfTransaction" : "2000-01-23T04:56:07.000+00:00"
} ],
"subscriptionStatus" : "VALID",
"totalIsaBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalInterestReceivedThisTaxYear" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalCashBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"investments" : [ {
"clientInvestmentId" : "clientInvestmentId",
"expectedInterest" : {
"amount" : 123.45,
"currency" : "currency"
},
"termOfInvestment" : 2.15,
"originalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"reinvestments" : [ {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
}, {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
} ],
"id" : "id",
"investmentType" : "LOAN",
"dateTimeOfInvestment" : "2000-01-23T04:56:07.000+00:00",
"repayments" : [ {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
}, {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
} ]
}, {
"clientInvestmentId" : "clientInvestmentId",
"expectedInterest" : {
"amount" : 123.45,
"currency" : "currency"
},
"termOfInvestment" : 2.15,
"originalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"reinvestments" : [ {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
}, {
"clientReinvestmentId" : "clientReinvestmentId",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTimeOfReinvestment" : "2000-01-23T04:56:07.000+00:00"
} ],
"id" : "id",
"investmentType" : "LOAN",
"dateTimeOfInvestment" : "2000-01-23T04:56:07.000+00:00",
"repayments" : [ {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
}, {
"dateTimeOfRepayment" : "2000-01-23T04:56:07.000+00:00",
"interestAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"id" : "id",
"clientRepaymentId" : "clientRepaymentId",
"capitalAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
} ]
} ],
"coolingOffPeriodEnds" : "2000-01-23",
"totalInvestedBalance" : {
"amount" : 123.45,
"currency" : "currency"
}
}
Description
Records a cash correction transaction into the ISA.
Investor Lifecycle
This endpoint should be called whenever the Platform needs to manually correct a cash transaction amount. Currently only interest repayment corrections are supported. This call will not be needed if the Originator will not need to alter interest amounts.
Request
Name | Type | Description | Required |
---|---|---|---|
clientTransactionId | string | The ID of the transaction assigned by the P2P platform | required |
amount | ref | The amount of the corrective cash transaction | required |
amount.amount | number | The amount | |
amount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' | |
dateTimeOfTransaction | string | The date and time of the transaction | required |
type | string | Indicates the type of the corrective cash transaction. Possible values are: INTEREST_REPAYMENT_CORRECTION |
required |
Response
Name | Type | Description |
---|---|---|
totalIsaBalance | ref | The total current balance in the ISA, inclusive of all years. |
totalIsaBalance.amount | number | The amount |
totalIsaBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
remainingSubscriptionAmount | ref | The amount remaining that can be invested in the ISA in the current tax year. |
remainingSubscriptionAmount.amount | number | The amount |
remainingSubscriptionAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalCashBalance | ref | The total amount of cash in the ISA that is not currently invested. |
totalCashBalance.amount | number | The amount |
totalCashBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
dateCreated | string | Date the ISA was created |
coolingOffPeriodEnds | string | Date the cooling off period ends |
investments | array | The list of investments that make up the ISA |
investments[].id | string | The ID of the loan defined by Goji |
investments[].clientInvestmentId | string | The ID of the loan defined by the P2P platform |
investments[].investmentType | string | The type of the investment. Currently only loans are supported. Possible values are: LOAN |
investments[].originalAmount | ref | The original capital amount of the investment. |
investments[].expectedInterest | ref | The expected interest to receive over the life of the investment. |
investments[].dateTimeOfInvestment | string | The date and time the investment started |
investments[].termOfInvestment | number | The term of the investment in months |
investments[].repayments | array | Repayments that have been made against the investment by the borrower that were not reinvested automatically. |
investments[].reinvestments | array | Repayments that have been made against the instruments by the borrower that were reinvested automatically. |
cashTransactions | array | Cash transactions on the ISA |
cashTransactions[].clientTransactionId | string | The ID of the transaction assigned by the P2P platform |
cashTransactions[].amount | ref | The amount of the cash transaction |
cashTransactions[].dateTimeOfTransaction | string | The date and time of the transaction |
cashTransactions[].type | ref | Indicates the type of the cash transaction. |
totalInterestReceived | ref | |
totalInterestReceived.amount | number | The amount |
totalInterestReceived.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalInterestReceivedThisTaxYear | ref | |
totalInterestReceivedThisTaxYear.amount | number | The amount |
totalInterestReceivedThisTaxYear.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
totalInvestedBalance | ref | |
totalInvestedBalance.amount | number | The amount |
totalInvestedBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
subscriptionStatus | string | Indicates if anything is preventing further subscriptions to this ISA. Possible values are: VALID INVALID_CROWN_DEPENDENCY INVALID_NON_UK INVALID_LOCKED_DEATH INVALID_LOCKED_BANKRUPTCY UNLOCKED INVALID_CANCELLED |
remainingAdditionalPermittedSubscriptions | ref | The remaining amount that can be subscribed as an Additional Permitted Subscription. |
remainingAdditionalPermittedSubscriptions.amount | number | The amount |
remainingAdditionalPermittedSubscriptions.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
POST /investors/{investorId}/transferIn/{transferInId}/cash
POST /investors/{investorId}/transferIn/{transferInId}/cash HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"subscribedAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"repairAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"transferAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"clientTransactionId" : "clientTransactionId"
}
HTTP/1.1 200 OK
Content-Type: application/json
""
Description
This endpoint should be called by the P2PP when they have received the deposit for a transfer in and have confirmed the split between current/prior year subscriptions. The transfer amount is the value of the total amount received from the previous ISA manager. Either the repair amount or the subscribed amount needs to be specified. The subscribed amount is the portion allocated to the ISA. The repair amount is the amount that had to be credited to the non-ISA account. Please see the integration guide for more details.
Possible Error Codes
Please see transfer cash errors
Request
Name | Type | Description | Required |
---|---|---|---|
clientTransactionId | string | The transaction ID for the transfer cash | required |
transferAmount | ref | The total transfer amount | optional |
transferAmount.amount | number | The amount | |
transferAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' | |
repairAmount | ref | The amount that was transferred that had to be immediately repaired and transferred to their standard investment account. Specify either the repair amount or the subscribed amount. | optional |
repairAmount.amount | number | The amount | |
repairAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' | |
subscribedAmount | ref | The amount that was transferred and was credited to the ISA account. Specify either the repair amount or the subscribed amount. | optional |
subscribedAmount.amount | number | The amount | |
subscribedAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
POST /investors/{investorId}/transferIn/{transferInId}/residualIncome
POST /investors/{investorId}/transferIn/{transferInId}/residualIncome HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"dateTime" : "2000-01-23T04:56:07.000+00:00",
"amount" : {
"amount" : 123.45,
"currency" : "currency"
},
"clientTransactionId" : "clientTransactionId"
}
HTTP/1.1 200 OK
Content-Type: application/json
""
Description
This endpoint should be called by the P2PP when they have received a residual income payment for a transfer in. Please see the integration guide for more details.
Possible Error Codes
Please see transfer cash errors
Request
Name | Type | Description | Required |
---|---|---|---|
clientTransactionId | string | A unique ID for the transaction | optional |
amount | ref | The amount of the residual income payment | optional |
amount.amount | number | The amount | |
amount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' | |
dateTime | string | The date time the residual income payment was received. | optional |
POST /investors/{investorId}/transferIn/{transferInId}/cash/validation
POST /investors/{investorId}/transferIn/{transferInId}/cash/validation HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"subscribedAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"repairAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"transferAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"clientTransactionId" : "clientTransactionId"
}
HTTP/1.1 200 OK
Content-Type: application/json
""
Description
This endpoint should be called by the P2PP when they want to validate the transfer in cash transaction before processing it.
Possible Error Codes
Please see transfer cash errors
Request
Name | Type | Description | Required |
---|---|---|---|
clientTransactionId | string | The transaction ID for the transfer cash | required |
transferAmount | ref | The total transfer amount | optional |
transferAmount.amount | number | The amount | |
transferAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' | |
repairAmount | ref | The amount that was transferred that had to be immediately repaired and transferred to their standard investment account. Specify either the repair amount or the subscribed amount. | optional |
repairAmount.amount | number | The amount | |
repairAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' | |
subscribedAmount | ref | The amount that was transferred and was credited to the ISA account. Specify either the repair amount or the subscribed amount. | optional |
subscribedAmount.amount | number | The amount | |
subscribedAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
GET /investors/{clientId}/transferInSummary
GET /investors/{clientId}/transferInSummary HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
[ {
"totalTransferAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"transferInDate" : "2000-01-23",
"clientId" : "clientId",
"repairAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"bankReference" : "bankReference",
"fundsTransferType" : "fundsTransferType",
"id" : "id"
} ]
Description
Returns the in progress transfers in for the specified investor
Response
Name | Type | Description |
---|---|---|
[].id | string | The ID of the transfer in |
[].clientId | string | The ID of client |
[].totalTransferAmount | ref | The total amount being transferred |
[].totalTransferAmount.amount | number | The amount |
[].totalTransferAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
[].repairAmount | ref | The repair amount |
[].repairAmount.amount | number | The amount |
[].repairAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
[].fundsTransferType | string | The funds transfer type |
[].bankReference | string | The bank reference |
[].transferInDate | string | The date stated on the transfer history form |
GET /investors/{clientId}/transferIn/{transferInId}/summary
GET /investors/{clientId}/transferIn/{transferInId}/summary HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"totalTransferAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"transferInDate" : "2000-01-23",
"clientId" : "clientId",
"repairAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"bankReference" : "bankReference",
"fundsTransferType" : "fundsTransferType",
"id" : "id"
}
Description
Returns the in progress transfers in for the specified investor
Response
Name | Type | Description |
---|---|---|
id | string | The ID of the transfer in |
clientId | string | The ID of client |
totalTransferAmount | ref | The total amount being transferred |
totalTransferAmount.amount | number | The amount |
totalTransferAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
repairAmount | ref | The repair amount |
repairAmount.amount | number | The amount |
repairAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
fundsTransferType | string | The funds transfer type |
bankReference | string | The bank reference |
transferInDate | string | The date stated on the transfer history form |
GET /transferIn/deposits/{date}
GET /transferIn/deposits/{date} HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"totalValue" : {
"amount" : 123.45,
"currency" : "currency"
},
"numberCheques" : 7,
"transfersIn" : [ {
"clientId" : "clientId",
"id" : "id"
}, {
"clientId" : "clientId",
"id" : "id"
} ]
}
Description
Returns the transfer in cheque deposits for a given date.
Response
Name | Type | Description |
---|---|---|
numberCheques | integer | The number of cheques included in the batch |
totalValue | ref | The total value of the cheques deposited |
totalValue.amount | number | The amount |
totalValue.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
transfersIn | array | |
transfersIn[].id | string | The ID of the transfer in |
transfersIn[].clientId | string | The ID assigned by the platform of the investor for this transfer in. |
GET /transferIn/open/summary
GET /transferIn/open/summary HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
[ {
"totalTransferAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"transferInDate" : "2000-01-23",
"clientId" : "clientId",
"repairAmount" : {
"amount" : 123.45,
"currency" : "currency"
},
"bankReference" : "bankReference",
"fundsTransferType" : "fundsTransferType",
"id" : "id"
} ]
Description
Returns аll opened transfers in.
Response
Name | Type | Description |
---|---|---|
[].id | string | The ID of the transfer in |
[].clientId | string | The ID of client |
[].totalTransferAmount | ref | The total amount being transferred |
[].totalTransferAmount.amount | number | The amount |
[].totalTransferAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
[].repairAmount | ref | The repair amount |
[].repairAmount.amount | number | The amount |
[].repairAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
[].fundsTransferType | string | The funds transfer type |
[].bankReference | string | The bank reference |
[].transferInDate | string | The date stated on the transfer history form |
GET /isaReconciliation
GET /isaReconciliation HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
[ {
"clientId" : "clientId",
"totalIsaBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalCashBalance" : {
"amount" : 123.45,
"currency" : "currency"
},
"totalAmountInvested" : {
"amount" : 123.45,
"currency" : "currency"
}
} ]
Description
Returns a reconciliation summary for all investors
Response
Name | Type | Description |
---|---|---|
[].clientId | string | The P2PP ID for the investor |
[].totalCashBalance | ref | The total loose cash in the ISA |
[].totalCashBalance.amount | number | The amount |
[].totalCashBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
[].totalAmountInvested | ref | The total amount from the ISA that is invested in loans |
[].totalAmountInvested.amount | number | The amount |
[].totalAmountInvested.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
[].totalIsaBalance | ref | The total balance of the ISA |
[].totalIsaBalance.amount | number | The amount |
[].totalIsaBalance.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
GET /investorReconciliation
GET /investorReconciliation HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
[ {
"firstName" : "firstName",
"lastName" : "lastName",
"clientId" : "clientId",
"address" : {
"country" : "country",
"lineTwo" : "lineTwo",
"townCity" : "townCity",
"postcode" : "postcode",
"lineOne" : "lineOne",
"lineThree" : "lineThree",
"region" : "region"
},
"nationalInsuranceNumber" : "nationalInsuranceNumber",
"middleName" : "middleName",
"dateOfBirth" : "2000-01-23",
"contactDetails" : {
"emailAddress" : "emailAddress",
"telephoneNumber" : "telephoneNumber"
}
} ]
Description
Returns a reconciliation summary of investor name and address data
Response
Name | Type | Description |
---|---|---|
[].clientId | string | The P2PP provided ID of the investor |
[].firstName | string | |
[].middleName | string | |
[].lastName | string | |
[].dateOfBirth | string | |
[].nationalInsuranceNumber | string | |
[].address | ref | |
[].address.lineOne | string | The first line of the investor's address. |
[].address.lineTwo | string | The second line of the investor's address. NOT the town or region. |
[].address.lineThree | string | The third line of the investor's address. NOT the town or region. |
[].address.townCity | string | The town of the investor's address. |
[].address.region | string | The region of the investor's address. |
[].address.country | string | The country of the investor's address in 3 character ISO code. Must be GBR to be valid for ISA subscriptions. If a different country code is supplied, current year subscriptions will be blocked. |
[].address.postcode | string | The Post Code of the investor's address. |
[].contactDetails | ref | |
[].contactDetails.emailAddress | string | The investor's email address. |
[].contactDetails.telephoneNumber | string | The investor's telephone number. |
GET /investors/{investorId}/transferIn/uiData
GET /investors/{investorId}/transferIn/uiData HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
{
"apiUrl": "https://api.goji.investments",
"styleSrc": "https://goji-assets-domain/transfer-in/assets/goji-transfer-in-123456.css",
"scriptSrc": "https://goji-assets-domain/transfer-in/assets/goji-transfer-in-123456.js",
"hostedUrl" : "https://api.goji.investments/transferIn/application/?token={oneTimeToken}&investorId={investorId}",
"investorId": "investorId",
"token": "oneTimeToken"
}
Description
Initialisation data for the ISA Transfer In widget.
More information can be found here.
Response
Name | Type | Description |
---|---|---|
apiUrl | string | |
hostedUrl | string | |
styleSrc | string | |
scriptSrc | string | |
investorId | string | |
token | string |
GET /investors/{investorId}/transferOut
GET /investors/{investorId}/transferOut HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
[ {
"dateFundsTransferred" : "2000-01-23",
"amountToTransfer" : {
"amount" : 123.45,
"currency" : "currency"
},
"isaManager" : {
"address" : {
"country" : "country",
"lineTwo" : "lineTwo",
"townCity" : "townCity",
"postcode" : "postcode",
"lineOne" : "lineOne",
"lineThree" : "lineThree",
"region" : "region"
},
"bankReference" : "bankReference",
"name" : "name",
"accountNumber" : "accountNumber",
"sortCode" : "sortCode"
},
"transferDetails" : {
"transferCurrentYearSubscriptions" : true,
"transferAllPriorYearSubscriptions" : true,
"transferAll" : true,
"transferDateFromNewIsaManager" : "2000-01-23",
"transferPriorYearSubscriptions" : true,
"priorYearAmountToTransfer" : {
"amount" : 123.45,
"currency" : "currency"
},
"dateTAFReceived" : "2000-01-23"
},
"id" : "id",
"amountToTransferAlert" : true
} ]
Description
Lists transfers out for the investor.
Response
Name | Type | Description |
---|---|---|
[].id | string | The ID Goji assigns to the Transfer Out request. |
[].isaManager | ref | |
[].isaManager.name | string | The name of the ISA manager. |
[].address.lineOne | string | The first line of the investor's address. |
[].address.lineTwo | string | The second line of the investor's address. NOT the town or region. |
[].address.lineThree | string | The third line of the investor's address. NOT the town or region. |
[].address.townCity | string | The town of the investor's address. |
[].address.region | string | The region of the investor's address. |
[].address.country | string | The country of the investor's address in 3 character ISO code. Must be GBR to be valid for ISA subscriptions. If a different country code is supplied, current year subscriptions will be blocked. |
[].address.postcode | string | The Post Code of the investor's address. |
[].isaManager.accountNumber | string | The account number to transfer the funds to. |
[].isaManager.sortCode | string | The sort code to transfer the funds to. |
[].isaManager.bankReference | string | The reference to use for the bank transfer. |
[].transferDetails | ref | |
[].transferDetails.dateTAFReceived | string | The date the transfer authority form was received from the ISA manager. |
[].transferDetails.transferDateFromNewIsaManager | string | The date the ISA manager has said they will accept subscriptions from. |
[].transferDetails.transferCurrentYearSubscriptions | boolean | True if current year subscriptions should be transferred. |
[].transferDetails.transferPriorYearSubscriptions | boolean | True if prior year subscriptions should be transferred. |
[].transferDetails.transferAllPriorYearSubscriptions | boolean | True if all prior year subscriptions should be transferred. |
[].transferDetails.transferAll | boolean | True if all ISA subscriptions should be transferred. |
[].priorYearAmountToTransfer.amount | number | The amount |
[].priorYearAmountToTransfer.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
[].amountToTransfer | ref | |
[].amountToTransfer.amount | number | The amount |
[].amountToTransfer.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
[].amountToTransferAlert | boolean | True if the amount requested to be transferred cannot be satisfied. If this is true, the transfer cannot be processed until it is resolved. |
[].dateFundsTransferred | string | The date the funds were transferred to the new ISA manager. |
GET /transfersOut
GET /transfersOut HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
HTTP/1.1 200 OK
Content-Type: application/json
[ {
"id": "id",
"originatorId": "originatorId",
"clientId": "clientId",
"workflowId": "workflowId",
"isaManager": {
"name": "name",
"address": {
"lineOne": "lineOne",
"lineTwo": "lineTwo",
"lineThree": "lineThree",
"townCity": "townCity",
"region": "region",
"postCode": "postCode"
},
"accountNumber": "accountNumber",
"sortCode": "sortCode",
"bankReference": "bankReference"
},
"transferDetails": {
"dateTAFReceived": "2000-01-23",
"transferDateFromNewIsaManager": "2000-01-25",
"transferAll": false,
"transferCurrentYearSubscriptions": true,
"transferPriorYearSubscriptions": true,
"transferAllPriorYearSubscriptions": true,
"priorYearAmountToTransfer": {
"amount": 123.45,
"currency": "GBP"
},
"transferOutFee": {
"amount": 12.34,
"currency": "GBP"
}
},
"transferOutFee": null,
"dateEmailSentToInvestor": null,
"dateEmailSentToPlatform": null,
"dateFundsTransferred": null,
"thfUrl": null,
"amountToTransfer": null,
"amountToTransferAlert": true
} ]
Description
Lists all transfers out for all investors.
Request
No body. The activeOnly
parameter takes a true
or false
value (if not provided behaviour will be false
).
When set to true
only Transfers Out where dateFundsTransferred
is null
will be returned.
Response
Name | Type | Description |
---|---|---|
[].id | string | The ID Goji assigns to the Transfer Out request |
[].originatorId | string | The ID Goji assigns to your Company |
[].workflowId | string | The ID Goji assigns to the workflow associated with this Transfer Out |
[].isaManager | ref | |
[].isaManager.name | string | The name of the ISA manager. |
[].address.lineOne | string | The first line of the investor's address. |
[].address.lineTwo | string | The second line of the investor's address. NOT the town or region. |
[].address.lineThree | string | The third line of the investor's address. NOT the town or region. |
[].address.townCity | string | The town of the investor's address. |
[].address.region | string | The region of the investor's address. |
[].address.country | string | The country of the investor's address in 3 character ISO code. Must be GBR to be valid for ISA subscriptions. If a different country code is supplied, current year subscriptions will be blocked. |
[].address.postcode | string | The Post Code of the investor's address. |
[].isaManager.accountNumber | string | The account number to transfer the funds to. |
[].isaManager.sortCode | string | The sort code to transfer the funds to. |
[].isaManager.bankReference | string | The reference to use for the bank transfer. |
[].transferDetails | ref | |
[].transferDetails.dateTAFReceived | string | The date the transfer authority form was received from the ISA manager. |
[].transferDetails.transferDateFromNewIsaManager | string | The date the ISA manager has said they will accept subscriptions from. |
[].transferDetails.transferAll | boolean | True if all ISA subscriptions should be transferred. |
[].transferDetails.transferCurrentYearSubscriptions | boolean | True if current year subscriptions should be transferred. |
[].transferDetails.transferPriorYearSubscriptions | boolean | True if prior year subscriptions should be transferred. |
[].transferDetails.transferAllPriorYearSubscriptions | boolean | True if all prior year subscriptions should be transferred. |
[].transferOutFee.amount | number | The amount for any fee/s associated with this Transfer Out |
[].transferOutFee.currency | string | The currency of any fee/s in ISO 4217 three character codes eg 'GBP' |
[].dateEmailSentToInvestor | string | The date the investor was emailed to confirm the Transfer Out details |
[].dateEmailSentToPlatform | string | The date the platform was emailed to confirm the Transfer Out details |
[].dateFundsTransferred | string | The date the funds were transferred to the new ISA manager. |
[].thfUrl | string | The URL of the Transfer History Form associated with this Transfer Out |
[].amountToTransfer | ref | |
[].amountToTransfer.amount | number | The amount |
[].amountToTransfer.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
[].amountToTransferAlert | boolean | True if the amount requested to be transferred cannot be satisfied. If this is true, the transfer cannot be processed until it is resolved. |
POST /investors/{investorId}/transferOut/{transferOutId}/cash
POST /investors/{investorId}/transferOut/{transferOutId}/cash HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"dateOfTransfer" : "2000-01-23",
"transferAmount" : {
"amount" : 123.45,
"currency" : "currency"
}
}
HTTP/1.1 200 OK
Content-Type: application/json
""
Description
Records the funds transfer for a Transfer Out.
Request
Name | Type | Description | Required |
---|---|---|---|
dateOfTransfer | string | The date the funds were transferred. | required |
transferAmount | ref | The amount transferred. | required |
transferAmount.amount | number | The amount | |
transferAmount.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
POST /investors/{investorId}/transferOut/{transferOutId}/fee
POST /investors/{investorId}/transferOut/{transferOutId}/fee HTTP/1.1
Host: api-sandbox.goji.investments
Content-Type: application/json
Authorization: Basic ...
{
"dateTime" : "2000-01-23T04:56:07.000+00:00",
"transferOutFee" : {
"amount" : 123.45,
"currency" : "currency"
}
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"dateTime" : "2000-01-23T04:56:07.000+00:00",
"transferOutFee" : {
"amount" : 123.45,
"currency" : "currency"
},
"transferOutId" : "transferOutId"
}
Description
Records that a fee related to a transfer out has been collected from an Investor's account.
Request
Name | Type | Description | Required |
---|---|---|---|
transferOutFee | ref | The amount of the fee. | optional |
transferOutFee.amount | number | The amount | |
transferOutFee.currency | string | The currency in ISO 4217 three character codes eg 'GBP' | |
dateTime | string | The date time the fee was collected. | optional |
Response
Name | Type | Description |
---|---|---|
transferOutId | string | The ID of the transfer out. |
transferOutFee | ref | The amount of the fee. |
transferOutFee.amount | number | The amount |
transferOutFee.currency | string | The currency in ISO 4217 three character codes eg 'GBP' |
dateTime | string | The date time the fee was collected. Null if not collected yet. |
Errors
The following error types can be returned by the Goji Platform:
Bad Request
This is returned as HTTP response code 400
{
"errors": [
{
"errorCode": "string",
"message": "string"
}
]
}
Unauthorised
This is returned as HTTP response code 401
{
"errors": [
{
"errorCode": "string",
"message": "string"
}
]
}
Internal Server Error
This is returned as HTTP response code 500
{
"errors": [
{
"errorCode": "string",
"message": "string"
}
]
}
Create/Update Investor Error Codes
Error Code | Message |
---|---|
INVALID_DATA | address.country cannot be null or empty |
INVALID_DATA | address.lineOne cannot be null or empty |
INVALID_DATA | address.postcode cannot be null or empty |
INVALID_DATA | address.postcode must be in valid UK format. e.g. (A9 9ZZ | A99 9ZZ | AB9 9ZZ | AB99 9ZZ | A9C 9ZZ | AD9E 9ZZ) |
INVALID_DATA | address.townCity cannot be null or empty |
INVALID_DATA | dateOfBirth cannot be null or empty and must be in valid ISO format (YYYY-MM-DD) |
INVALID_DATA | emailAddress cannot be null or empty |
INVALID_DATA | emailAddress must be in valid format |
INVALID_DATA | firstName cannot be null or empty |
INVALID_DATA | lastName cannot be null or empty |
INVALID_NAME | First and last names must be longer than one character |
INVALID_ADDRESS | Address cannot be a PO Box |
INVALID_COUNTRY | Country is invalid |
UNDER_18 | Cannot create account for person under the age of 18 |
OVER_100 | Cannot create account for person over the age of 100 |
Add ISA Error Codes
Error Code | Message |
---|---|
INVESTOR_ISA_EXISTS | Investor with this N.I number already has an IF-ISA account with this originator |
TAX_YEAR_ISA_EXISTS | Investor with this N.I number has previously created an IF-ISA within this tax year |
UNDER_18 | Cannot create account for person under the age of 18 |
INVALID_DATA | nationalInsuranceNumber is in invalid format. Must be in NI number format e.g. (AB123456C) |
INVALID_DATA | nationalInsuranceNumber cannot be null or empty |
Add KYC Documents For An Investor Error Codes
Error Code | Message |
---|---|
INVALID_DATA | Documents are required |
Add Bank Details Error Codes
Error Code | Message |
---|---|
DETAILS_ALREADY_EXIST | Only one set of bank details allowed |
INVALID_DATA | Bank number, name and sort code are all required |
INVALID_DATA | Sort code should be 6 digits |
INVALID_DATA | Account number should be 8 digits |
Replace Bank Details Error Codes
Error Code | Message |
---|---|
DETAILS_DONT_EXIST | A set of bank details must exist for an update |
INVALID_DATA | Bank number, name and sort code are all required |
INVALID_DATA | Sort code should be 6 digits |
INVALID_DATA | Account number should be 8 digits |
Add Investment Error Codes
Error Code | Message |
---|---|
INVALID_DATA | Cannot find product term with id={} |
ACCOUNT_REQUIRED | Invested account must be specified |
PRODUCT_TERM_ID_REQUIRED | The investment product term must be provided |
PRODUCT_TERM_INVALID | The investment product term is not available |
INVALID_AMOUNT | The specified amount is too big for the selected product |
INSUFFICIENT_BALANCE | Insufficient funds available to invest |
Withdraw Cash Error Codes
Error Code | Message |
---|---|
INVALID_DATA | The account must be specified |
INVALID_DATA | The withdrawal amount must be greater than zero |
INVALID_DATA | Insufficient balance to perform |
Transfer Cash To Another Account Error Codes
Error Code | Message |
---|---|
INVALID_DATA | Insufficient balance to perform |