Disburse GBP

1. Method: Disburse GBP


Important notes

Public and Private Keys are unique for Sandbox and Live.
Sandbox Endpoint URL: https://sandbox.api.igsend.co.uk/services/disburse 
Live Endpoint URL: https://api.igsend.co.uk/services/disburse 

 Double click the URL above to insert into the Endpoint field below
Endpoint URL
Public Key
Private Key

Request Payload


Response Payload


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
  • Must be a numeric value
  • Must not be null, empty or 0
- 123456 Client ID will be provided by Income Group
BatchID Integer
  • Must be a numeric value
  • Must not be null or empty
- 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
  • Must be a numeric value
  • Must not be null, empty or 0
- 100 Number of payments in this batch of payments. For a single payment, set this to 1
DisburseRefID Integer
  • Must be a numeric value
  • Must not be null, empty or 0
- 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
  • Must be a numeric value
  • Can be 0 or empty
- 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
  • Must be an alphanumeric value
  • Must not be null or empty
250 Joe Bloggs This is the name of the payee, which will appear in the IGsend data and bank statement
PayeeSortCode String
  • Must be a numeric value
  • Must not be null or empty
6 123456 The sort code of the payee account
PayeeAccountNumber String
  • Must be a numeric value
  • Must not be null or empty
8 12345678 The account number of the payee account
PayeeIBAN String
  • Optional (unless no sort code and account number passed)
30 GB33BUKB20201555555555 Optional
(not yet implemented)
CurrencyID String
  • Must be a 3 letter ALPHA-3 country code
  • Cannot be null or empty
3 GBP Default value GBP (domestic transactions can only be disbursed in GBP)
Amount Decimal
  • Must be greater than zero
  • Cannot be null or empty
18,2 763.97 Amount to be paid, to two decimal places
DisburseDate Date
  • Cannot be null or empty
  • (Optional) Can include 24 hour time
- 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:
  • 2024-12-25 - this infers payment to be processed at midnight (00:00) on the date specified. If the date specified is the current date, payment will be processed immediately
  • 2024-12-25 13:30 - adding the time in 24 hour format will process the payment at the date and time specified
  • [No date] - if no date is passed, this will schedule the payment for midnight (00:00) the following day
Note: If the date and/or time has passed, the API will return an error and halt processing
PaymentRef String
  • Optional
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
							
	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);
	}
					
				
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.