Disburse GBP
2. JSON schema
The example JSON above details all the necessary data required to submit a payment. The breakdown of each element is as such:Title | Datatype | Validation | Max. Data Length | Example Data | Notes |
ClientID | Integer |
|
- | 123456 | Client ID will be provided by Income Group |
BatchID | Integer |
|
- | 1234 | This your unique ID for the payment request. It must be unique for the client. If not, it will fail the payment due to duplicate BatchID |
PaymentCount | Integer |
|
- | 100 | Number of payments in this batch of payments. For a single payment, set this to 1 |
DisburseRefID | Integer |
|
- | 1001 | This your unique ID for the payment. It must be unique for the client. If not, it will fail the payment due to duplicate Reference ID |
PayeeID | Integer |
|
- | 0 | This is a unique payee ID in your system. We will store this into the payee record on our side. In future, the payment instructions can just be the Payee ID If Payee ID is not provided, the payee name, account number and sort code is mandatory |
PayeeName | String |
|
250 | Joe Bloggs | This is the name of the payee, which will appear in the IGsend data and bank statement |
PayeeSortCode | String |
|
6 | 123456 | The sort code of the payee account |
PayeeAccountNumber | String |
|
8 | 12345678 | The account number of the payee account |
PayeeIBAN | String |
|
30 | GB33BUKB20201555555555 | Optional (not yet implemented) |
CurrencyID | String |
|
3 | GBP | Default value GBP (domestic transactions can only be disbursed in GBP) |
Amount | Decimal |
|
18,2 | 763.97 | Amount to be paid, to two decimal places |
DisburseDate | Date |
|
- | 2024-12-25 2024-12-25 12:00 |
Date in YYYY-MM-DD format. Optional 24 hour time can be added for granular processing at a specific hour and minute. Must be compliant to 24 hour clock. Date Options:
|
PaymentRef | String |
|
50 | Payment for December 2024 | The reference for this payment. Can be unique to each payee or to the whole payment batch |
3. JSON Response Data
The table below details the response code, message ID and message returned from an API call.status | MessageID | Message | Description |
1 | 10010 | Request processed successfully | Payment(s) have been successfully uploaded into the IGsend system |
2 | 10009 | Data validation failed. Info: Payment count is not equal to total no. of payments and Disburse RefID: { DisbursementRefId } |
The PaymentCount value must match the total number of payments submitted in the API call |
2 | 10009 | Data validation failed. Info: Amount cannot be below or equal to 0 GBP and Disburse RefID: { DisbursementRefId } |
The Amount value must be greater than zero (please note this references GBP as this is the current stated in the API call) |
2 | 10009 | Data validation failed. Info: DisburseDate cannot be past date. and Disburse RefID: { DisbursementRefId } |
The DisburseDate date must at least today's date |
2 | 10009 | Data validation failed. Info: Security Unauthorised Access and Disburse RefID: { DisbursementRefId } |
The ClientID must be the parent, child or grandchild of the top-level Client ID |
2 | 10009 | Data validation failed. Info: Client ID must be same for all transactions or ClientID cannot be empty or null | The ClientID must be the same for all transactions. ClientID is a required field and cannot be left blank |
2 | 10009 | Data validation failed. Info: Security Unauthorised Access |
Indicates that this is an unauthorised attempt to access the API, using credentials that are not recognised. Please check the public and private API
Keys and they match the ClientID supplied by Income Group
|
2 | 10009 | Data validation failed. Info: Sort Code must be 6 digit long | The SortCode value must be 6 numeric digits |
2 | 10009 | Data validation failed. Info: Sort code must be numeric value | The SortCode value must be a numeric value and contain no alpha (A-Z) or special characters |
2 | 10009 | Data validation failed. Info: Account Number must be 8 digit long | The AccountNumber value must be 8 numeric digits |
2 | 10009 | Data validation failed. Info: Account Number must be numeric value | The Account value must be a numeric value and contain no alpha (A-Z) or special characters |
2 | 10009 | Data validation failed. Info: Payee Name cannot be empty or null | The PayeeName value must contain at least 1 character, or not be "NULL" |
2 | 10009 | Data validation failed. Info: BatchID cannot be empty or null | The BatchID value must be an integer, or not be NULL |
2 | 10009 | Data validation failed. Info: CurrencyID cannot be empty or null | The CurrencyID value must be an ALPHA-3 country code, or not be "NULL" |
2 | 10009 | Data validation failed. Info: DisburseRefID cannot be null or empty | The DisburseRefID value must be an integer, or not be NULL |
4. Code Example
C#
Object definition
If you develop in another code, which may be useful to other customers, we would love to include further examples here. You can submit your example code to the API team.
public class ReqObject
{
public int ClientID { get; set; }
public int BatchID { get; set; }
public int PaymentCount { get; set; }
public int DisburseRefID { get; set; }
public int PayeeID { get; set; }
public string PayeeName { get; set; }
public string PayeeSortCode { get; set; }
public string PayeeAccountNumber { get; set; }
public string PayeeIBAN { get; set; }
public double Amount { get; set; }
public string CurrencyID { get; set; }
public string PaymentRef { get; set; }
public string DisburseDate { get; set; }
}
Payload data
ReqObject reqPayload = new ReqObject();
reqPayload.ClientID = 10050;
reqPayload.BatchID = 1000;
reqPayload.PaymentCount = 2;
reqPayload.DisburseRefID = 1002;
reqPayload.PayeeID = 12;
reqPayload.PayeeName = "Joe Bloggs";
reqPayload.PayeeSortCode = "123456";
reqPayload.PayeeAccountNumber = "12345678";
reqPayload.PayeeIBAN = "";
reqPayload.Amount = 0.08;
reqPayload.CurrencyID = "GBP";
reqPayload.PaymentRef = "Salary for Dec 2024";
reqPayload.DisburseDate = "2024-12-25";
string PayloadJson = JsonConvert.SerializeObject(reqPayload);
StringContent EncodedJson = new StringContent(json, System.Text.Encoding.UTF8, "application/json");
using (HttpClient client = new HttpClient())
{
string PublicKey = "{Your public key}";
string PrivateKey = "{Your private key}";
string ApiEndpoint = "https://sandbox.api.igsend.co.uk/services/disburse";
client.BaseAddress = new Uri(ApiEndpoint);
var auth = string.Format("{0}:{1}", PublicKey, PrivateKey);
var encoded = Convert.ToBase64String(Encoding.ASCII.GetBytes(auth));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", encoded);
HttpResponseMessage response = await client.PostAsync(ApiEndpoint, EncodedJson);
}