> This page is for Enterprise.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://citi-demo.ferndocs.com/enterprise/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://citi-demo.ferndocs.com/enterprise/_mcp/server.

# Inquire About the current statuses for direct debit transactions.

GET https://tts.sit.apib2b.citi.com/citiconnect/sit5/receivablesservices/v1/directdebits

This endpoint allows you to inquire the current status for the direct debit transaction.

Reference: https://citi-demo.ferndocs.com/enterprise/enterprises/api-reference/payment-acceptance/direct-debit/instant-direct-debit/get-status

## Authentication

- `Authorization` header (bearer token, required) — All CitiConnect APIs use the oAuth2 authentication scheme, which requires a bearer token to authenticate your API call. The Token URL includes the version of authentication used by this API. See the Citi Authentication API reference for information on requesting a token.

## Servers

- `https://tts.sit.apib2b.citi.com/citiconnect/sit5/receivablesservices` (dev gateway url, default)
- `https://tts.sit.apib2b.citi.com/citiconnect/uat1/receivablesservices` (uat gateway url)
- `https://tts.apib2b.citi.com/citiconnect/prod/receivablesservices` (production gateway url)
- `https://tts.sandbox.apib2b.citi.com/citiconnect/sb/receivablesservices` (sandbox gateway url)

## Request

### Query parameters

- `client_id` (string, required) — Unique reference which was shared during CitiConnect API on-boarding (`ClientId` which used during oauth token generation).
- `country` (string, required) — This parameter specifies the country for which the direct debit transaction is initiated
- `uetr` (string, required) — This parameter is to inquire the current status of initiated direct debit transaction, which client receive as part of direct debit initiation response. Either uetr or end_to_end_id should be passed.
- `end_to_end_id` (string, required) — This parameter is to inquire the current status of the initiated direct debit transaction,which client send as part of direct debit initiation request. Either end_to_end_id or uetr should be passed.

## Response

### 200

OK

- `debtor` (Debtor, optional)
- `creditor` (Creditor, optional)
- `initiating_party` (Initiating-Party, optional)
- `method` (Method, optional)
- `transaction` (Transaction, optional)
- `mandate_details` (Mandate-Details, optional)
- `ultimate` (Ultimate, optional)
- `transaction_status` (Transaction-Status, optional)

## Errors

### 400 Bad Request Error

Bad Request

- `ref_id` (string, optional) — Unique ID for the Transaction
- `error_details` (list of Error-Detail, optional)
- `errors` (list of Error-Detail, optional)
- `httpCode` (string, optional)
- `httpMessage` (string, optional)
- `moreInformation` (string, optional)
- `status` (string, optional)
- `message` (string, optional)

### 401 Unauthorized Error

Unauthorized

- `ref_id` (string, optional) — Unique ID for the Transaction
- `error_details` (list of Error-Detail, optional)
- `errors` (list of Error-Detail, optional)
- `httpCode` (string, optional)
- `httpMessage` (string, optional)
- `moreInformation` (string, optional)
- `status` (string, optional)
- `message` (string, optional)

### 403 Forbidden Error

Forbidden

- `ref_id` (string, optional) — Unique ID for the Transaction
- `error_details` (list of Error-Detail, optional)
- `errors` (list of Error-Detail, optional)
- `httpCode` (string, optional)
- `httpMessage` (string, optional)
- `moreInformation` (string, optional)
- `status` (string, optional)
- `message` (string, optional)

### 404 Not Found Error

Not Found

- `httpCode` (string, optional) — http staus code of this API
- `httpMessage` (string, optional) — short message about the issue
- `moreInformation` (string, optional) — more information about the issue
- `ref_id` (string, optional)
- `error_details` (list of Error-Detail, optional)

### 405 Method Not Allowed Error

Method Not Allowed

- `ref_id` (string, optional) — Unique ID for the Transaction
- `error_details` (list of Error-Detail, optional)
- `errors` (list of Error-Detail, optional)
- `httpCode` (string, optional)
- `httpMessage` (string, optional)
- `moreInformation` (string, optional)
- `status` (string, optional)
- `message` (string, optional)

### 429 Too Many Requests Error

Too Many Request

- `status` (string, optional) — Http status code of this API response
- `message` (string, optional) — Short message about the issue

### 500 Internal Server Error

Internal Server Error

- `ref_id` (string, optional) — Unique ID for the Transaction
- `error_details` (list of Error-Detail, optional)
- `errors` (list of Error-Detail, optional)
- `httpCode` (string, optional)
- `httpMessage` (string, optional)
- `moreInformation` (string, optional)
- `status` (string, optional)
- `message` (string, optional)

## Types

### Debtor

- `name` (string, required) — Specify the name by which a party is known and which is usually used to identify that party.
- `account_type` (enum, required) — Specify the name of the identification scheme, in a coded form as published in an external list. Possible values are: AIIN -IssuerIdentificationNumberBBAN - BBANIdentifierCUID - CHIPSUniversalIdentifierUPIC - UPICIdentifierALIA - Alias (proxy) For Australia only below values are possible \[BBAN, ALIA]
  - Allowed values: `AIIN`, `BBAN`, `CUID`, `UPIC`, `ALIA`
- `account` (string, optional) — Specify the identification of the account of the debtor to which a debit entry will be posted as a result of the payment transaction. For Australia its a conditional parameter if account_type value = BBAN.
- `proxy_type` (enum, optional) — Specify the name of the identification scheme, in a coded form as published in an external list. If account type is ALIA this parameter is mandatory. Possible values are:TELE - TelephoneNumberEMAL - EmailAddressDNAM - DomainNameCINC - CertificateOfIncorporationNumberCOTX - CorporateTaxIdentificationCOID - CountryAuthorityIdentificationCUST - CustomerIdentificationNumberDRLC-DriverLicenseNumberEIDN - ElectronicIdentificationEWAL - EWalletIdentificationPVTX - IndividualTaxIdentificationLEIC - LegalEntityIdentifierCodeMBNO - MobilePhoneNumberNIDN - NationalIdentificationNumberCCPT - PassportNumberSHID - SchemeIdentificationNumberSOSE - SocialSecurityNumberTOKN - TokenIdentificationUBIL - UtilitiesSubscriptionIdentificationVIPN - VehicleIdentificationPlateNumberBIID - BillerSubscriberIdentification AUBN - Australian business number ORGN - origination number For Australia only below values are possible \[AUBN, ORGN, TELE, EMAL]
  - Allowed values: `TELE`, `EMAL`, `DNAM`, `CINC`, `COTX`, `COID`, `CUST`, `DRLC`, `EIDN`, `EWAL`, `PVTX`, `LEIC`, `MBNO`, `NIDN`, `CCPT`, `SHID`, `SOSE`, `TOKN`, `UBIL`, `VIPN`, `BIID`, `AUBN`, `ORGN`
- `proxy_id` (string, optional) — Specify the Identification used to indicate the account identification under another specified name. If account type is ALIA this parameter is mandatory.
- `bank_branch_code` (string, optional) — Specify the 6-digit BSB or 9-digit account identification assigned by the entity. Required only when country = AU and account\_type = BBAN.
- `bank_routing_code` (string, optional) — Specify the Code allocated to a financial institution by the ISO 9362 Registration Authority as described in ISO 9362 Banking - Banking telecommunication messages - Business identifier code (BIC) \<BR> Mandatory for Australia.

### Creditor

- `account_type` (enum, required) — Specify the name of the identification scheme. Possible values are: below AIIN -IssuerIdentificationNumberBBAN- BBANIdentifierCUID -CHIPSUniversalIdentifierUPIC- UPICIdentifierALIA-Alias (proxy) For Australia only below values are possible \[BBAN]
  - Allowed values: `AIIN`, `BBAN`, `CUID`, `UPIC`, `ALIA`
- `name` (string, optional) — Specify the name by which a party is known and which is usually used to identify that party.
- `account` (string, optional) — Specify the identification of the account of the creditor to which a debit entry will be posted as a result of the payment transaction. For Australia its an conditional parameter if account_type value = BBAN.
- `proxy_type` (enum, optional) — Specify the name of the identification scheme. If account type is ALIA this parameter is mandatory. Possible values are belowTELE - TelephoneNumberEMAL - EmailAddressDNAM - DomainNameCINC - CertificateOfIncorporationNumberCOTX - CorporateTaxIdentificationCOID - CountryAuthorityIdentificationCUST - CustomerIdentificationNumberDRLC - DriverLicenseNumberEIDN - ElectronicIdentificationEWAL - EWalletIdentificationPVTX - IndividualTaxIdentificationLEIC - LegalEntityIdentifierCodeMBNO - MobilePhoneNumberNIDN - NationalIdentificationNumberCCPT - PassportNumberSHID - SchemeIdentificationNumberSOSE - SocialSecurityNumberTOKN - TokenIdentificationUBIL - UtilitiesSubscriptionIdentificationVIPN - VehicleIdentificationPlateNumberBIID - BillerSubscriberIdentification
  - Allowed values: `TELE`, `EMAL`, `DNAM`, `CINC`, `COTX`, `COID`, `CUST`, `DRLC`, `EIDN`, `EWAL`, `PVTX`, `LEIC`, `MBNO`, `NIDN`, `CCPT`, `SHID`, `SOSE`, `TOKN`, `UBIL`, `VIPN`, `BIID`
- `proxy_id` (string, optional) — Specify the identification used to indicate the account identification under another specified name. If account type is ALIA this parameter is mandatory.
- `bank_branch_code` (string, optional) — Specify the 6-digit BSB/9 digit account identification assigned by the Entity. Conditinal Mandatory for Australia while account\_type = BBAN.
- `bank_routing_code` (string, optional) — Specify the code allocated to a financial institution by the ISO 9362 Registration Authority as described in ISO 9362 Banking - Banking telecommunication messages - Business identifier code (BIC) \<BR> Mandatory for Australia.

### Initiating-Party

- `name` (string, optional) — Specify the name by which a party is known and which is usually used to identify that party. This parameter is mandatory for Australia.
- `account` (string, optional) — Specify the unique identification of an account, as assigned by the account servicer, using an identification scheme. This parameter is mandatory for Australia.
- `bank_routing_code` (string, optional) — Specify the Code allocated to a financial institution by the ISO 9362 Registration Authority as described in ISO 9362 Banking - Banking telecommunication messages - Business identifier code (BIC). This parameter is mandatory for Australia and accepted value = CITIAU2XMPS.
- `other_identification_type` (string, optional) — Specify the unique and unambiguous way to identify an organization/private identification. This parameter is mandatory for Australia and accepted values = \[AUBN, AUCN, CUST].
- `other_identification` (string, optional) — Specify the value of an organization/private identification. This parameter is mandatory for Australia.

### Method

- `country` (string, required) — Specify the country code where the collection request has been originated.
- `instructed_currency` (string, required) — Specify the collection account currency. for Australia accepted value = AUD.
- `payment_method` (enum, required) — Specifies the means of payment that will be used to move the amount of money.\<BR> IP - Instant Payment
  - Allowed values: `IP`
- `payment_type` (enum, required) — Set of elements used to further specify the type of transaction. \<BR> DD - Direct Debit
  - Allowed values: `DD`

### Transaction

- `end_to_end_id` (string, required) — Unique identification assigned by the initiating party to unambiguously identify the transaction. This identification is passed on, unchanged, throughout the entire end-to-end chain. Usage - The end-to-end identification can be used for reconciliation or to link tasks relating to the transaction. It can be included in several messages related to the transaction.
- `value_date` (string, required) — Specify the date and time on which the collection request processed (YYYY-MM-DDTHH:MM:SS.SSSZ).
- `instructed_amount` (string, required) — Specify the Fixed amount to be collected from the debtor's account. For Australia only two decimal number is allowed.
- `uetr` (string, optional) — Universal unique identifier to provide an end-to-end reference of a payment transaction. Its Mandatory for Australia.
- `purpose` (string, optional) — Specify the high level purpose of the collection based on a set of predefined categories.\<BR>This parameter is mandatory for Australia. The possible values are: MORT - Mortgage PaymentsUTIL - Utility PaymentsLOAN - Loan PaymentsDEPD - Dependent Support PaymentsGAMP - Gambling PaymentsRETL - Retail PaymentsSALA - Salary PaymentsPERS - Personal PaymentGOVT - Government PaymentsPENS - Pension PaymentsSUPP - Supplier PaymentTAXS - Tax PaymentsOTHR - Other Service Payments
- `bo_service_code` (string, optional) — Specifies a pre-agreed service or level of service between the parties.\<BR>This parameter is mandatory for Australia. The possible values are:sct.01x2p1.01x2p1.02x2p1.03ifti.01
- `additional_info` (string, optional) — Specify the unique identification as assigned by the debtor to the referred document shared with the creditor for its own reference. for Australia if Purpose = SUPP then mention the e-invoice paymentID.
- `instruction_priority` (enum, optional) — Specifies the priority level of an event.\<BR>This parameter is mandatory for Australia. Below are the possible values,UNATNORM
  - Allowed values: `UNAT`, `NORM`
- `unique_superannuation_code` (string, optional) — Specifies a character string with a maximum length of 35 ASCII printable characters.\<BR>for Australia. If Purporse = PENS, then `unique_superannuation_code` and `unique_superannuation_identification` should be mandatory, else both parameters or optional even the Purpose = PENS.
- `unique_superannuation_identification` (string, optional) — Specifies a character string with a maximum length of 35 ASCII printable characters.\<BR>for Australia. If Purporse = PENS, then `unique_superannuation_code` and `unique_superannuation_identification` should be mandatory, else both parameters or optional even the Purpose = PENS.

### Mandate-Details

- `mandate_id` (string, optional) — Specify unique identification, as assigned by the clearing scheme, to unambiguously identify the mandate.\<BR> This parameter is mandatory for Australia.

### Ultimate

- `ultimate_creditor_name` (string, optional) — Specify the name by which the ultimate creditor is known and which is usually used to identify that party.\<BR> This parameter is mandatory for Australia, If Purporse = PENS and `unique_superannuation_code` and `unique_superannuation_identification` parameters are present.
- `ultimate_debtor_name` (string, optional) — Specify the name by which the ultimate debtor is known and which is usually used to identify that party.

### Transaction-Status

- `status` (string, optional) — This parameter will have the current status of the iniated direct debit transaction. Possible vaule ACCC, ACSC, ACSP, PDNG and RJCT
- `status_date_time` (string, optional) — This parameter will have the date and time of the last updated status (YYYY-MM-DDTHH:MM:SS.SSSZ).
- `reason` (list of Reason, optional)

### Error-Detail

- `code` (string, optional) — Unique ID for the error code
- `issue` (string, optional) — more details about the issue
- `action` (string, optional) — corrective action to be taken to resolve above issue

### Reason

- `code` (string, optional) — This parameter will have the reason code for the RJCT transaction status.
- `issue` (string, optional) — This parameter will have description for the reason code.

## Examples

**Response**

```json
{
  "debtor": {
    "name": "Shan",
    "account_type": "AIIN",
    "account": "3459284",
    "proxy_type": "DNAM",
    "proxy_id": "215264475588455744",
    "bank_branch_code": "3245245",
    "bank_routing_code": "CHN0IN0D00A"
  },
  "creditor": {
    "account_type": "AIIN",
    "name": "John",
    "account": "473628234",
    "proxy_type": "DNAM",
    "proxy_id": "215264475588455744",
    "bank_branch_code": "3245245",
    "bank_routing_code": "MUM0IN0C00G"
  },
  "initiating_party": {
    "name": "Sean",
    "account": "3213423",
    "bank_routing_code": "VAS0IN0S00H",
    "other_identification_type": "AUBN",
    "other_identification": "AU1SACITIAU2XXXX"
  },
  "method": {
    "country": "AU",
    "instructed_currency": "AUD",
    "payment_method": "IP",
    "payment_type": "DD"
  },
  "transaction": {
    "end_to_end_id": "AUDIDD343D",
    "value_date": "2022-07-21T17:32:16.258Z",
    "instructed_amount": "3423.542",
    "uetr": "e82540a1-bab9-41f3-b17a-f9b3ee27983f",
    "purpose": "MORT",
    "bo_service_code": "x2p1.01",
    "additional_info": "AU IDD request",
    "instruction_priority": "UNAT",
    "unique_superannuation_code": "12345",
    "unique_superannuation_identification": "test one"
  },
  "mandate_details": {
    "mandate_id": "3461fa9f03fe4268b5da93bf8203ad70"
  },
  "ultimate": {
    "ultimate_creditor_name": "creditor Australia",
    "ultimate_debtor_name": "debtor Australia"
  },
  "transaction_status": {
    "status": "RJCT",
    "status_date_time": "2022-07-21T18:10:22.258Z",
    "reason": [
      {
        "code": "NARR",
        "issue": "Invalid key parameter"
      },
      {
        "code": "AM03",
        "issue": "Specified message amount is an non processable currency outside of existing agreement"
      },
      {
        "code": "CH20",
        "issue": "Number of decimal points not compatible with the currency"
      }
    ]
  }
}
```

**SDK Code**

```python getStatus_example
import requests

url = "https://tts.sit.apib2b.citi.com/citiconnect/sit5/receivablesservices/v1/directdebits"

querystring = {"client_id":"4683fd9f-03fe-4268-b5da-93bf8203fd91","country":"AU","end_to_end_id":"AUD001X8","uetr":"e82540a1-bab9-41f3-b17a-f9b3ee27983f"}

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers, params=querystring)

print(response.json())
```

```javascript getStatus_example
const url = 'https://tts.sit.apib2b.citi.com/citiconnect/sit5/receivablesservices/v1/directdebits?client_id=4683fd9f-03fe-4268-b5da-93bf8203fd91&country=AU&end_to_end_id=AUD001X8&uetr=e82540a1-bab9-41f3-b17a-f9b3ee27983f';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go getStatus_example
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://tts.sit.apib2b.citi.com/citiconnect/sit5/receivablesservices/v1/directdebits?client_id=4683fd9f-03fe-4268-b5da-93bf8203fd91&country=AU&end_to_end_id=AUD001X8&uetr=e82540a1-bab9-41f3-b17a-f9b3ee27983f"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby getStatus_example
require 'uri'
require 'net/http'

url = URI("https://tts.sit.apib2b.citi.com/citiconnect/sit5/receivablesservices/v1/directdebits?client_id=4683fd9f-03fe-4268-b5da-93bf8203fd91&country=AU&end_to_end_id=AUD001X8&uetr=e82540a1-bab9-41f3-b17a-f9b3ee27983f")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java getStatus_example
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://tts.sit.apib2b.citi.com/citiconnect/sit5/receivablesservices/v1/directdebits?client_id=4683fd9f-03fe-4268-b5da-93bf8203fd91&country=AU&end_to_end_id=AUD001X8&uetr=e82540a1-bab9-41f3-b17a-f9b3ee27983f")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php getStatus_example
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://tts.sit.apib2b.citi.com/citiconnect/sit5/receivablesservices/v1/directdebits?client_id=4683fd9f-03fe-4268-b5da-93bf8203fd91&country=AU&end_to_end_id=AUD001X8&uetr=e82540a1-bab9-41f3-b17a-f9b3ee27983f', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp getStatus_example
using RestSharp;

var client = new RestClient("https://tts.sit.apib2b.citi.com/citiconnect/sit5/receivablesservices/v1/directdebits?client_id=4683fd9f-03fe-4268-b5da-93bf8203fd91&country=AU&end_to_end_id=AUD001X8&uetr=e82540a1-bab9-41f3-b17a-f9b3ee27983f");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift getStatus_example
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://tts.sit.apib2b.citi.com/citiconnect/sit5/receivablesservices/v1/directdebits?client_id=4683fd9f-03fe-4268-b5da-93bf8203fd91&country=AU&end_to_end_id=AUD001X8&uetr=e82540a1-bab9-41f3-b17a-f9b3ee27983f")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```