NAV Navbar
http java csharp javascript

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:

Payments - Investors API

For Investors who have passed KYC checks, the Payments API can:

Payments - Manager API

For Managers (platforms) to control money that doesn't yet, or no longer, belongs to the investor:

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:

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:

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:

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:

The following changes are not considered breaking changes:

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:

  1. Specify the email address emails should be sent from e.g. isa@platform.com
  2. Create a forwarding rule, so that emails sent to the address specified above are forwarded to platformsupport@gojip2p.com
  3. 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:

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:

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:

GET https://api-sandbox.goji.investments/platformApi/settlement/investors/{clientId}/accounts/{accountType}/investments

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

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

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:

POST https://api-sandbox.goji.investments/platformApi/investors/{clientId}/accounts/{accountType}/withdrawal

Quickstart Settlement - Equities

This guide gives a brief overview to how to do the following, using the settlement API:

For more details on each of these areas

Quickstart Wallets

This guide gives a brief overview of how to do the following, using the wallet API:

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.

Onboarding investors success

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 refer

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:

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:

KYC details

An investor can be one of the following statuses:

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.

Add isa

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.

Isa transfers

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:

Workflow

  1. 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.

  2. 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.

  3. Goji will liaise with the existing ISA manager to arrange the transfer.

  4. 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.

  5. 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:

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:

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 check
HISTORICAL_RELIANCE_WITH_MONITORING: Goji will place reliance on previous checks (only when agreed beforehand) and perform ongoing monitoring
EVENT_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.

Deposit funds

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.

Withdrawal

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.

Client money investment

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.

Repayments flow high level

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

Client money repayment

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.

Client money secondary market

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:

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.

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.

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:

(1) POST /instruments

(2) GET /instruments/{symbol}

⚠️ 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:

POST /companies

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 FeeSymbols 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:

  1. Investors deposit funds
  2. Investors make investments throughout month
  3. On frequency configured against the bond product, invested funds are scooped up and sent to you. Bond certificates are issued to investors.
  4. Goji calculates accrued interest on bonds.
  5. 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.
  6. You repay funds to a Goji account
  7. 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.

Make investment

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 repayment

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.

Bond maturity

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 types 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:

  1. once funds have been received to distribute to investors 'DISTRIBUTING'
  2. 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:

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:

Workflow

  1. 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.

  2. 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.

  3. Goji will liaise with the existing ISA manager to arrange the transfer.

  4. Once the funds have been received they will be credited to the investor's ISA balance. An email is sent to the investor.

  5. 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": "", "token": "" }

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:

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:

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:

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:

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:

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:

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

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:

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:

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:

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:

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

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
Examples language
http java csharp javascript