openapi: 3.2.0
info:
title: Gateway Services Link Account API
description: Self onboarding services for merchants to register on the platform, create wallets, and perform withdrawals or payouts to their designated settlement and external beneficiary accounts.
contact:
name: Standards & Developer Hub
url: https://tts.sandbox.developer.citi.com/citiconnect/
email: developer-support@citi.com
version: 1.0.0
servers:
- url: https://b2b.api.icg.citi.com/citiconnect/prod/gatewayservices
description: production gateway url
- url: https://sandbox.b2b.api.icg.citi.com/citiconnect/sb/gatewayservices
description: sbox url
security:
- oAuth2:
- /authenticationservices/v1
tags:
- name: LinkAccount
description: Account linkage operations for external payments
paths:
/merchants/v1/link-accounts:
post:
summary: Link external account for payments
description: Use this endpoint to verify an external creditor account and receive a creditor_id for successfully validated beneficiaries, so the account can be used in subsequent payout transactions.
operationId: linkAccount
servers:
- url: https://b2b.api.icg.citi.com/citiconnect/prod/gatewayservices
tags:
- LinkAccount
parameters:
- $ref: '#/components/parameters/Client-Id'
- $ref: '#/components/parameters/Merchant-Id'
- $ref: '#/components/parameters/Idempotency-Id'
- $ref: '#/components/parameters/Country-Code'
requestBody:
required: true
description: This section holds the request parameters used to verify the Creditor.
content:
application/json:
schema:
$ref: '#/components/schemas/Link-Account-Request'
examples:
account-linkage-request:
$ref: '#/components/examples/Account-Linkage-Request-Example'
Account-Linkage-Request-Example-HK:
$ref: '#/components/examples/Account-Linkage-Request-Example-HK'
Account-Linkage-Request-Example-CN:
$ref: '#/components/examples/Account-Linkage-Request-Example-CN'
responses:
'200':
description: This section holds the successful response for creditor verification.
headers:
apim-guid:
$ref: '#/components/headers/Apim-Guid'
content:
application/json:
schema:
$ref: '#/components/schemas/Sync-Response'
examples:
account-linkage-response:
$ref: '#/components/examples/Account-Linkage-Response-Example'
'400':
$ref: '#/components/responses/Bad-Request'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/Not-Found'
'405':
$ref: '#/components/responses/Method-Not-Allowed'
'409':
$ref: '#/components/responses/Conflict'
'415':
$ref: '#/components/responses/Unsupported-Media-Type'
'429':
$ref: '#/components/responses/Too-Many-Requests'
'500':
$ref: '#/components/responses/Internal-Server-Error'
'503':
$ref: '#/components/responses/Service-Unavailable'
'504':
$ref: '#/components/responses/Gateway-Timeout'
security:
- oAuth2:
- /authenticationservices/v1
callbacks:
accountLinkageWebhook:
'{$notificationURL}':
description: This endpoint used to push the status notification for creditor verification.
post:
summary: Account linkage webhook notification
description: Webhook notification sent when an account linkage status changes. This callback is triggered for status updates on linked accounts.
operationId: accountLinkageWebhookNotification
tags:
- Account-Linkage
parameters:
- $ref: '#/components/parameters/Event-Type'
- $ref: '#/components/parameters/Event-Name'
- $ref: '#/components/parameters/Apim-Guid'
requestBody:
description: This section holds the request parameters for creditor verification notification.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Webhook-Link-Account'
examples:
Account-Linkage-Available-Webhook-Example:
$ref: '#/components/examples/Account-Linkage-Available-Webhook-Example'
Account-Linkage-Declined-Webhook-Example:
$ref: '#/components/examples/Account-Linkage-Declined-Webhook-Example'
responses:
'200':
description: Webhook received successfully.
get:
summary: Get linked account details
description: You can use this to check the status of the creditor. Creditor must be verified and have an 'AVAILABLE' status before sending external payments.
operationId: getLinkedAccount
servers:
- url: https://b2b.api.icg.citi.com/citiconnect/prod/gatewayservices
tags:
- LinkAccount
parameters:
- $ref: '#/components/parameters/Client-Id'
- $ref: '#/components/parameters/Merchant-Id'
- $ref: '#/components/parameters/Country-Code'
- $ref: '#/components/parameters/Creditor-Id'
- $ref: '#/components/parameters/Creditor-Partner-User-Id'
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/Page-No'
responses:
'200':
description: This section holds the successful response for creditor verification inquiry.
headers:
apim-guid:
$ref: '#/components/headers/Apim-Guid'
Pagination-Metadata:
description: This header contains a JSON object with details about the response. The full schema is available in the 'Pagination-Metadata' schema section below
schema:
$ref: '#/components/schemas/Pagination-Metadata'
content:
application/json:
schema:
$ref: '#/components/schemas/Get-Link-Account-Response'
examples:
get-account-linkage-response:
$ref: '#/components/examples/Get-Account-Linkage-Response-Example'
'400':
$ref: '#/components/responses/Bad-Request'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/Not-Found'
'405':
$ref: '#/components/responses/Method-Not-Allowed'
'429':
$ref: '#/components/responses/Too-Many-Requests'
'500':
$ref: '#/components/responses/Internal-Server-Error'
'503':
$ref: '#/components/responses/Service-Unavailable'
'504':
$ref: '#/components/responses/Gateway-Timeout'
security:
- oAuth2:
- /authenticationservices/v1
components:
examples:
Get-Account-Linkage-Response-Example:
value:
- creditor_id: R202501080950209789
creditor_status: AVAILABLE
message: Request is in-progress
created_time: '2026-01-06T10:56:25Z'
creditor_account:
holder_type: PERSONAL
holder_contact_number: 007 3700 7457
number: '703912345678'
name: SHASHANK VIJAYSHANKAR TIWARI
currency_code: INR
iban: HU58711204120061837086422231
document_type: CHINESE_RESIDENCE_PERMIT
document_number: CS8899966
type: CHECKING
creditor_bank:
name: BANK OF BARODA
code: '6'
branch_name: THANE BRANCH
branch_number: '391'
swift_code: CITIINHFXXX
routing_number: '6391'
ifsc_code: HDFC0000001
sort_code: '87'
type: RECIPIENT BANK
address:
city: THANE
state: MAHARASHTRA
country_code: IN
address_line: SUMAN HEIGHTS LODHA HERITAGR NAVNEET NAGAR MAHARASHTRA THANE INDIA
creditor:
type: '00'
name: SHASHANK VIJAYSHANKAR TIWARI
contact_number: '9876543210'
contact_prefix: '91'
email: abc@pp.com
address:
city: THANE
state: MAHARASHTRA
country_code: IN
address_line: SUMAN HEIGHTS LODHA HERITAGR NAVNEET NAGAR MAHARASHTRA THANE INDIA
street_name: ROYAL STREET
postal_code: '5110'
file_id: 8f7d6e5c-4b3a-2f1d-9e8c-7b6a5d4c3f2e
Method-Not-Allowed-Service-Error-Example:
value:
ref_id: ec689822-9864-4c4d-9d68-222467627901
error_details:
- issue: Method not supported
action: Method not supported for this endpoint, please use valid http verb
code: CC00001
Un-Supported-Media-Type-Service-Error-Example:
value:
ref_id: ec689822-9864-4c4d-9d68-222467627902
error_details:
- issue: Media type not supported
action: please use valid content-type in header
code: CC00002
Unauthorized-Gateway-Error-Example:
value:
httpCode: '401'
httpMessage: Unauthorized
moreInformation: The server could not verify that you are authorized to access the URL
Account-Linkage-Declined-Webhook-Example:
value:
merchant_id: 91eb2008-bee1-4bb9-84ea-e9f372a76e95
status: DECLINED
creditor_id: ca83c6b2-d357-4dc1-805a-0050e4e10e68
message: 客户要求拒绝
Un-Supported-Media-Type-Gateway-Error-Example:
value:
httpCode: '415'
httpMessage: Unsupported Media Type
moreInformation: Unsupported Content-Type application/octet-stream
Too-Many-Requests-Gateway-Example:
value:
httpCode: '429'
httpMessage: Too Many Requests
moreInformation: Rate Limit exceeded
Not-Found-Gateway-Error-Example:
value:
httpCode: '404'
httpMessage: Not Found
moreInformation: No resources match requested URI
Account-Linkage-Response-Example:
value:
status_details:
status: PENDING
message: Request received successfully and the further processing is in-progress
Bad-Request-Gateway-Error-Example:
value:
httpCode: '400'
httpMessage: Bad Request
moreInformation: please provide valid value for request
Forbidden-Service-Example:
value:
ref_id: ec689822-9864-4c4d-9d68-222467627902
error_details:
- code: CC00008
issue: User does not have privilege to access this functionality.
action: Please reach out to support team to enable this feature.
Account-Linkage-Request-Example:
value:
creditor_account:
holder_type: PERSONAL
holder_contact_number: 007 3700 7457
number: '703912345678'
name: SHASHANK VIJAYSHANKAR TIWARI
currency_code: INR
iban: HU58711204120061837086422231
document_type: CHINESE_RESIDENCE_PERMIT
document_number: CS8899966
creditor:
type: '00'
name: SHASHANK VIJAYSHANKAR TIWARI
contact_number: '9876543210'
contact_prefix: '91'
email: abc@pp.com
partner_user_id: P298UI839KADY381
address:
city: THANE
state: MAHARASHTRA
country_code: IN
address_line: SUMAN HEIGHTS LODHA HERITAGR NAVNEET NAGAR MAHARASHTRA THANE INDIA
street_name: ROYAL STREET
postal_code: '5110'
creditor_bank:
name: BANK OF BARODA
code: '6'
branch_name: THANE BRANCH
branch_number: '391'
swift_code: CITIINHFXXX
routing_number: '6391'
ifsc_code: HDFC0000001
sort_code: '87'
address:
city: THANE
state: MAHARASHTRA
country_code: IN
address_line: SUMAN HEIGHTS LODHA HERITAGR NAVNEET NAGAR MAHARASHTRA THANE INDIA
file_id: 8f7d6e5c-4b3a-2f1d-9e8c-7b6a5d4c3f2e
Service-Unavailable-Gateway-Example:
value:
httpCode: '503'
httpMessage: Service is temporarily unavailable
moreInformation: Retry the request after some time
Method-Not-Allowed-Gateway-Error-Example:
value:
httpCode: '405'
httpMessage: Method Not Allowed
moreInformation: The method is not allowed for the requested URL
Account-Linkage-Request-Example-HK:
value:
creditor_account:
holder_type: PERSONAL
holder_contact_number: 007 3700 7457
number: '4569897132589457'
name: 北京科技有限责任公司
currency_code: HKD
iban: HU58711204120061837086422231
document_type: CHINESE_NATIONAL_ID_CARD
document_number: CS8899966
creditor:
type: '00'
name: 北京科技有限责任公司
contact_number: '9876542154723210'
contact_prefix: '91'
email: pingpong@pp.com
partner_user_id: ece724af-99de-47a5-867c-c707402ac67e
address:
city: Wan Chai
state: Wan Chai District
country_code: HK
address_line: 150 Kennedy Road, Wan Chai, Wan Chai District, Hong Kong (HKG).
street_name: 150 Kennedy Road
postal_code: HKG
creditor_bank:
name: 北京科技有限责任公司
code: HSBCHKHH
branch_name: The Hongkong and Shanghai Banking Corporation Limited
branch_number: '053'
swift_code: HSBCHKHH053
address:
city: Central
state: Hong Kong
country_code: HK
address_line: Central, Hong Kong, HK.
file_id: NjSvXYrw3OAyMDI2MDIxMjE1MzExMTkwMjgucG5n.png
Internal-Server-Gateway-Error-Example:
value:
httpCode: '500'
httpMessage: Internal Server Error
moreInformation: Internal Server Error
Bad-Request-Service-Error-Example:
value:
ref_id: ec689822-9864-4c4d-9d68-222467627901
error_details:
- issue: record that you are searching is not found
action: resend the request with valid values
code: VC00003
Account-Linkage-Request-Example-CN:
value:
creditor_account:
holder_type: COMPANY
holder_contact_number: 007 3700 7457
number: '7894561523255'
name: 北京创新科技有限公司
currency_code: CNY
iban: HU58711204120061837086422231
document_type: CHINESE_RESIDENCE_PERMIT
document_number: CS8899966
creditor:
type: '00'
name: SHASHANK VIJAYSHANKAR TIWARI
contact_number: '101457856'
contact_prefix: '86'
email: pingpong@pp.com
creditor_partner_user_id: ece724af-99de-47a5-867c-c707402ac67e
address:
city: Changpingqu Beijing
state: Beijing
country_code: CN
address_line: 10 West, Shahedonmendajie, Changpingqu Beijing, 102206 Beijing, CHN.
street_name: 10 West, Shahedonmendajie
postal_code: '102206'
creditor_bank:
name: BNP PARIBAS (CHINA) LTD
code: BNPACNBJ
branch_name: BEIJING BRANCH
branch_number: XXX
swift_code: BNPACNBJXXX
address:
city: CHAOYANG DISTRICT, BEIJING
state: CHAOYANG DISTRICT, BEIJING
country_code: CN
address_line: BNP PARIBAS (CHINA) LTD (BEIJING BRANCH), UNIT 01-04, 22-26, FLOOR 16, BUILDING 1 JIANGUOMENWAI AVENUE, CHAOYANG DISTRICT, BEIJING, China
file_id: NjSvXYrw3OAyMDI2MDIxMjE1MzExMTkwMjgucG5n.png
Account-Linkage-Available-Webhook-Example:
value:
merchant_id: ClientCustomerID1234
creditor_id: R202501080950209789
status: AVAILABLE
message: Creditor is successfully created
Internal-Server-Service-Error-Example:
value:
ref_id: ec689822-9864-4c4d-9d68-222467627902
error_details:
- issue: unable to serve your request at this moment
action: Please refer to documentation provided or contact support team
code: CC00004
Unauthorized-Service-Error-Example:
value:
ref_id: ec689822-9864-4c4d-9d68-222467627902
error_details:
- issue: User not authorized for this functionality
action: please use valid credentials to access this functionality
code: CC00007
schemas:
Merchant-Id:
type: string
description: Unique identifier generated by Citi for each seller. Seller to use this id for the further functional calls.
title: merchant_id
minLength: 1
maxLength: 36
example: ec689822-9864-4c4d-9d68-222467627901
Name:
type: string
title: name
minLength: 1
maxLength: 128
example: SHASHANK VIJAYSHANKAR TIWARI
Link-Account-Request:
title: LinkAccountRequest
type: object
description: Request body for linking an external account for payments.
required:
- creditor_account
- creditor_bank
- creditor
properties:
creditor_account:
$ref: '#/components/schemas/Creditor-Account'
creditor_bank:
$ref: '#/components/schemas/Creditor-Bank'
creditor:
$ref: '#/components/schemas/Creditor'
file_id:
$ref: '#/components/schemas/File-Id'
Address-Details:
title: AddressDetails
type: object
description: Address information for the bank.
properties:
city:
type: string
title: city
description: City.
minLength: 1
maxLength: 128
example: THANE
state:
type: string
title: state
description: State.
minLength: 1
maxLength: 128
example: MAHARASHTRA
country_code:
allOf:
- $ref: '#/components/schemas/Country-Code'
title: country_code
description: Country code.
address_line:
type: string
title: address_line
description: Detailed address of the bank.
minLength: 1
maxLength: 256
example: SUMAN HEIGHTS LODHA HERITAGR NAVNEET NAGAR MAHARASHTRA THANE INDIA
Get-Creditor:
title: GetCreditor
description: This section contains the details information of creditor.
allOf:
- $ref: '#/components/schemas/Common-Creditor'
- type: object
title: Get-Creditor
properties:
address:
$ref: '#/components/schemas/Creditor-Address-Details'
Get-Link-Account-Response:
title: GetLinkAccountResponse
description: Response body containing linked account details.
type: array
items:
$ref: '#/components/schemas/Creditor-Detail'
Creditor-Address-Details:
title: CreditorAddressDetails
description: Address information for the creditor.
allOf:
- $ref: '#/components/schemas/Address-Details'
- $ref: '#/components/schemas/Partial-Address'
- type: object
title: Creditor-Address-Details
Creditor-Address:
title: CreditorAddress
description: Address information for the creditor.
allOf:
- $ref: '#/components/schemas/Address-Details'
- $ref: '#/components/schemas/Partial-Address'
- type: object
title: Creditor-Address
required:
- country_code
- city
- state
Sync-Response:
title: SyncResponse
type: object
description: Acknowledgement.
properties:
status_details:
$ref: '#/components/schemas/Status-Details'
Get-Creditor-Account:
title: GetCreditorAccount
description: This section contains the details information of bank.
allOf:
- $ref: '#/components/schemas/Creditor-Account-Details'
- type: object
title: Get-Creditor-Account
properties:
type:
type: string
title: type
description: Type of the bank.
minLength: 1
maxLength: 64
example: CHECKING
Creditor-Bank:
title: CreditorBank
description: Creditor Bank.
allOf:
- $ref: '#/components/schemas/Creditor-Bank-Details'
- type: object
title: Creditor-Bank
required:
- name
- address
properties:
address:
$ref: '#/components/schemas/Address'
Webhook-Link-Account:
title: WebhookLinkAccount
description: Notification for Link account for the status update.
allOf:
- $ref: '#/components/schemas/Common-Error-Response'
- type: object
title: Webhook-Link-Account
properties:
creditor_id:
$ref: '#/components/schemas/Creditor-Id'
Creditor-Account-Details:
title: CreditorAccountDetails
type: object
description: This section contains the details information of account.
properties:
holder_type:
type: string
title: holder_type
description: The type of account holder.
enum:
- PERSONAL
- COMPANY
example: PERSONAL
holder_contact_number:
type: string
title: holder_contact_number
description: The full contact number, including the country code if mobile.
minLength: 1
maxLength: 32
example: 007 3700 7457
number:
type: string
title: number
description: Unique account number.
minLength: 1
maxLength: 64
example: '703912345678'
name:
allOf:
- $ref: '#/components/schemas/Name'
- description: Name of the account.
example: SHASHANK VIJAYSHANKAR TIWARI
currency_code:
allOf:
- $ref: '#/components/schemas/Currency-Code'
title: currency_code
description: Currency of the account (3-character ISO code).
example: INR
iban:
type: string
title: iban
description: International Bank Account Number (IBAN). IBAN is not applicable for CN and HK.
minLength: 1
maxLength: 32
example: HU58711204120061837086422231
document_type:
type: string
title: document_type
description: Type of identity document (ID). One of the following 00 Chinese national ID card 01 Chinese residence permit 02 Passport 03 ID card of Hong Kong, Macao or Taiwan 04 Residence permit of Hong Kong, Macao and Taiwan 05 Hong Kong and Macao travel permit 06 Other national ID card 07 Other residence permit
enum:
- CHINESE_NATIONAL_ID_CARD
- CHINESE_RESIDENCE_PERMIT
- PASSPORT
- ID_CARD_OF_HONGKONG_MACAO_OR_TAIWAN
- RESIDENCE_PERMIT_OF_HONGKONG_MACAO_AND_TAIWAN
- HONGKONG_AND_MACAO_TRAVEL_PERMIT
- OTHER_NATIONAL_ID_CARD
- OTHER_RESIDENCE_PERMIT
example: CHINESE_RESIDENCE_PERMIT
document_number:
type: string
title: document_number
description: Account holder's ID number.
minLength: 1
maxLength: 64
example: CS8899966
File-Id:
type: string
description: Unique identifier for the document uploaded.
title: file_id
minLength: 1
maxLength: 128
example: '112213'
Creditor-Detail:
title: CreditorDetail
type: object
description: Response body containing creditor's details.
properties:
creditor_id:
$ref: '#/components/schemas/Creditor-Id'
status:
allOf:
- $ref: '#/components/schemas/Status'
title: status
description: The status of creditor validation. PENDING; AVAILABLE; DECLINED
message:
$ref: '#/components/schemas/Message'
created_time:
$ref: '#/components/schemas/Created-Time'
creditor_account:
$ref: '#/components/schemas/Get-Creditor-Account'
creditor_bank:
$ref: '#/components/schemas/Get-Creditor-Bank'
creditor:
$ref: '#/components/schemas/Get-Creditor'
file_id:
$ref: '#/components/schemas/File-Id'
Currency-Code:
type: string
title: currency_code
description: The currency code in the transaction.
pattern: ^[A-Z]{3}$
example: USD
Pagination-Metadata:
description: '
current_page: Current page number
total_pages: Total number of pages available for this request
page_size: The number of records to display per page
has_more: Any more messages or records expected'
type: object
title: Pagination Metadata
properties:
current_page:
description: Current page number
type: integer
minimum: 1
maximum: 1000
example: 1
title: current_page
total_pages:
description: Total number of pages available for this request
type: integer
minimum: 1
maximum: 1000
example: 1
title: total_pages
page_size:
description: Number of records to display per page
type: integer
minimum: 1
maximum: 10000
example: 1
title: page_size
has_more:
description: Any more messages or records expected
type: boolean
example: true
title: has_more
example:
current_page: 1
total_pages: 10
page_size: 100
has_more: true
Creditor-Bank-Details:
title: CreditorBankDetails
type: object
description: This section contains the details information of bank.
properties:
name:
allOf:
- $ref: '#/components/schemas/Name'
- description: Name of the bank.
minLength: 1
maxLength: 256
example: BANK OF BARODA
code:
type: string
title: code
description: Bank code.
minLength: 1
maxLength: 32
example: '6'
branch_name:
type: string
title: branch_name
description: Branch name where the account is held.
minLength: 1
maxLength: 128
example: THANE BRANCH
branch_number:
type: string
title: branch_number
description: Branch code where the account is held.
minLength: 1
maxLength: 32
example: '391'
swift_code:
type: string
title: swift_code
description: SWIFT BIC (Bank Identifier Code).
minLength: 1
maxLength: 64
example: CITIINHFXXX
routing_number:
type: string
title: routing_number
description: Routing code.
minLength: 1
maxLength: 64
example: '6391'
ifsc_code:
type: string
title: ifsc_code
description: Indian Financial System Code (IFSC).
minLength: 1
maxLength: 64
example: HDFC0000001
sort_code:
type: string
title: sort_code
description: Sort code.
minLength: 1
maxLength: 32
example: '87'
Gateway-Error-Response:
type: object
title: GatewayErrorResponse
required:
- httpCode
- httpMessage
- moreInformation
properties:
httpCode:
type: string
maxLength: 3
description: Numeric HTTP Staus code
title: httpCode
httpMessage:
type: string
maxLength: 128
description: HTTP error message
title: httpMessage
example: Bad Request
moreInformation:
type: string
maxLength: 128
description: HTTP error message
title: moreInformation
example: please provide valid value for request
Service-Error-Response:
title: ServiceErrorResponse
type: object
required:
- ref_id
- error_details
properties:
ref_id:
type: string
maxLength: 120
description: Unique ID for the Transaction
title: ref_id
example: 444d0f3f-4x55-7g99-8b2c-0cf2a921a5ab
error_details:
type: array
description: List of error details
title: error_details
items:
$ref: '#/components/schemas/Error-Detail'
Creditor-Id:
type: string
title: creditor_id
description: The unique creditor identifier assigned by payment service provider.
minLength: 1
maxLength: 36
example: R202501080950209789
Message:
type: string
description: Description of the status.
title: message
minLength: 1
maxLength: 500
example: Request is in-progress
Status-Details:
title: StatusDetails
description: Status Details.
type: object
properties:
status:
$ref: '#/components/schemas/Status'
message:
$ref: '#/components/schemas/Message'
Common-Creditor:
title: CommonCreditor
type: object
description: This section contains the details information of creditor.
properties:
type:
type: string
title: type
description: Type of creditor.
enum:
- '00'
example: '00'
name:
allOf:
- $ref: '#/components/schemas/Name'
- description: Name of the account.
example: SHASHANK VIJAYSHANKAR TIWARI
contact_number:
type: string
title: contact_number
description: Full contact number.
minLength: 1
maxLength: 32
example: '9876543210'
contact_prefix:
type: string
title: contact_prefix
description: International telephone area code.
minLength: 1
maxLength: 32
example: '91'
email:
type: string
title: email
description: Email address of the merchant.
minLength: 1
maxLength: 32
example: abc@pp.com
Partner-User-Id:
type: string
description: Partner user identifier for seller from your system.
title: partner_user_id
minLength: 1
maxLength: 50
example: '1323436'
Common-Error-Response:
title: CommonErrorResponse
description: Details of error in the request.
type: object
properties:
merchant_id:
$ref: '#/components/schemas/Merchant-Id'
status:
allOf:
- $ref: '#/components/schemas/Status'
description: Status description.
Certification Webhook - Allowed values are APPROVED, DECLINED, RFI_PENDING.
Wallet Activation Webhook - Allowed values are AVAILABLE - account is available to be used; DECLINED - account application rejected; SUSPENDED - account is frozen; CLOSED - account is no longer available.
Link Account Webhook - Allowed values are AVAILABLE and DECLINED
Payment Webhook - Allowed values are SUCCESS, REJECTED.
Inbound Webhook - Allowed values is SUCCESS.
Transaction Reporting - PENDING, SUCCESS, REJECTED.
message:
$ref: '#/components/schemas/Message'
Partial-Address:
title: PartialAddress
description: Address information for the creditor.
type: object
properties:
street_name:
type: string
title: street_name
description: Street name.
minLength: 1
maxLength: 128
example: ROYAL STREET
postal_code:
type: string
title: postal_code
description: Postal code.
minLength: 1
maxLength: 16
example: '5110'
Address:
title: Address
description: Address/
allOf:
- $ref: '#/components/schemas/Address-Details'
- type: object
title: Address-Details
required:
- country_code
- city
- state
Created-Time:
type: string
format: date-time
description: Date and time of the file created. Pattern YYYY-MM-DDTHH:mm:ssZ
title: created_time
example: '2026-01-06T10:56:25Z'
Error-Detail:
type: object
title: ErrorDetail
properties:
issue:
type: string
minLength: 1
maxLength: 200
description: more details about the issue
title: issue
example: property emailAddress is mandatory and it cannot be empty
action:
type: string
maxLength: 350
description: corrective action to be taken to resolve above issue
title: action
example: please provide valid value for property emailAddress
code:
type: string
minLength: 1
maxLength: 64
description: unique code representing the issue
title: code
example: VC00010
Creditor:
title: Creditor
description: This section contains the details information of creditor.
allOf:
- $ref: '#/components/schemas/Common-Creditor'
- type: object
title: Common-Creditor
required:
- type
- name
- address
properties:
creditor_partner_user_id:
$ref: '#/components/schemas/Partner-User-Id'
address:
$ref: '#/components/schemas/Creditor-Address'
Get-Creditor-Bank:
title: GetCreditorBank
description: This section contains the details information of bank.
allOf:
- $ref: '#/components/schemas/Creditor-Bank-Details'
- type: object
title: Get-Creditor-Bank
properties:
type:
type: string
title: type
description: Type of the bank.
minLength: 1
maxLength: 64
example: RECIPIENT BANK
address:
$ref: '#/components/schemas/Address-Details'
Country-Code:
type: string
title: country_code
pattern: ^[A-Z]{2,2}$
description: Country code.
example: CN
Status:
type: string
description: Status of the request.
title: status
minLength: 1
maxLength: 64
Creditor-Account:
title: CreditorAccount
description: Creditor Account.
allOf:
- $ref: '#/components/schemas/Creditor-Account-Details'
- type: object
title: Creditor-Account'
required:
- holder_type
- number
- name
- currency_code
responses:
Gateway-Timeout:
description: Gateway Timeout
content:
application/json:
schema:
$ref: '#/components/schemas/Gateway-Error-Response'
Unsupported-Media-Type:
description: Unsupported Media Type
content:
application/json:
schema:
title: Unsupported-Media-Type-Response
oneOf:
- $ref: '#/components/schemas/Gateway-Error-Response'
- $ref: '#/components/schemas/Service-Error-Response'
examples:
Un-Supported-Media-Type-Gateway-Error-Example:
$ref: '#/components/examples/Un-Supported-Media-Type-Gateway-Error-Example'
Un-Supported-Media-Type-Service-Error-Example:
$ref: '#/components/examples/Un-Supported-Media-Type-Service-Error-Example'
Not-Found:
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/Gateway-Error-Response'
examples:
Not-Found-Gateway-Error-Example:
$ref: '#/components/examples/Not-Found-Gateway-Error-Example'
Conflict:
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/Service-Error-Response'
Service-Unavailable:
description: Service Unavailable - The server is temporarily unable to handle the request.
content:
application/json:
schema:
$ref: '#/components/schemas/Gateway-Error-Response'
examples:
Service-Unavailable-Gateway-Example:
$ref: '#/components/examples/Service-Unavailable-Gateway-Example'
Forbidden:
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Service-Error-Response'
examples:
Forbidden-Service-Example:
$ref: '#/components/examples/Forbidden-Service-Example'
Internal-Server-Error:
description: Internal Server Error
content:
application/json:
schema:
title: Internal-Server-Error-Response
oneOf:
- $ref: '#/components/schemas/Gateway-Error-Response'
- $ref: '#/components/schemas/Service-Error-Response'
examples:
Internal-Server-Service-Error-Example:
$ref: '#/components/examples/Internal-Server-Service-Error-Example'
Internal-Server-Gateway-Error-Example:
$ref: '#/components/examples/Internal-Server-Gateway-Error-Example'
Method-Not-Allowed:
description: Method Not Allowed
content:
application/json:
schema:
title: Method-Not-Allowed-Response
oneOf:
- $ref: '#/components/schemas/Gateway-Error-Response'
- $ref: '#/components/schemas/Service-Error-Response'
examples:
Method-Not-Allowed-Gateway-Error-Example:
$ref: '#/components/examples/Method-Not-Allowed-Gateway-Error-Example'
Method-Not-Allowed-Service-Error-Example:
$ref: '#/components/examples/Method-Not-Allowed-Service-Error-Example'
Bad-Request:
description: Bad Request
content:
application/json:
schema:
title: Bad-Request-Response
oneOf:
- $ref: '#/components/schemas/Gateway-Error-Response'
- $ref: '#/components/schemas/Service-Error-Response'
examples:
Bad-Request-Service-Error-Example:
$ref: '#/components/examples/Bad-Request-Service-Error-Example'
Bad-Request-Gateway-Error-Example:
$ref: '#/components/examples/Bad-Request-Gateway-Error-Example'
Unauthorized:
description: Unauthorized
content:
application/json:
schema:
title: Unauthorized-Response
oneOf:
- $ref: '#/components/schemas/Service-Error-Response'
- $ref: '#/components/schemas/Gateway-Error-Response'
examples:
Unauthorized-Service-Error-Example:
$ref: '#/components/examples/Unauthorized-Service-Error-Example'
Unauthorized-Gateway-Error-Example:
$ref: '#/components/examples/Unauthorized-Gateway-Error-Example'
Too-Many-Requests:
description: Too Many Requests - Rate limit exceeded. Retry after the specified time.
content:
application/json:
schema:
$ref: '#/components/schemas/Gateway-Error-Response'
examples:
Too-Many-Requests-Gateway-Example:
$ref: '#/components/examples/Too-Many-Requests-Gateway-Example'
parameters:
Page-No:
name: page_no
in: query
required: false
description: Page number (default- 1).
schema:
type: integer
title: page_no
minimum: 1
maximum: 5000
default: 1
Creditor-Id:
name: creditor_id
in: query
description: The unique creditor identifier returned when you call link account.
schema:
type: string
title: creditor_id
minLength: 1
maxLength: 36
example: R202501080950209789
Idempotency-Id:
in: header
name: Idempotency-Id
description: "Your unique identification for a POST request \n - Maximum length is 128. \n-CitiConnect API responds with an error (HTTP status 4XX) if your POST request idempotency identification value is a duplicate across a recent history of idempotency identifications in Citi's database. \n- If you don't receive any response (HTTP status 2XX, 4XX or 5XX) from Citi to your POST request and you wish to retry, reinitiate your request with the same idempotency identification to prevent accidental duplicate payment."
schema:
type: string
title: Idempotency-Id
minLength: 1
maxLength: 128
example: a44cbb606de4edb9a7a123414bba3bb
required: true
Event-Type:
name: Event-Type
in: header
required: true
description: Type of event (e.g., CERTIFICATION, WALLET_ACTIVATION, LINK_ACCOUNT, PAYMENT, INBOUND, RFI).
schema:
type: string
title: event-type
minLength: 1
maxLength: 64
example: Webhook
Creditor-Partner-User-Id:
name: creditor_partner_user_id
in: query
description: The unique creditor identifier of your system.
schema:
type: string
title: creditor_partner_user_id
minLength: 1
maxLength: 50
example: P298UI839KADY381
Country-Code:
in: header
name: Country-Code
description: Marketplace's country code.
schema:
pattern: ^[A-Z]{2,2}$
type: string
title: Country-Code
example: US
required: true
Apim-Guid:
in: header
name: Apim-Guid
description: Unique system generated reference number generated by Citi. Refer to this number in case of any discrepancy reporting to a Citi representative.
schema:
type: string
maxLength: 128
minLength: 1
title: Apim-Guid
required: true
example: na-apimgwgtds04~4a98cbc5-d813-4e65-bc81-d70f0f87f6ec
Merchant-Id:
in: header
name: Merchant-Id
description: CITI generated Merchant ID during merchant creation.
schema:
type: string
title: Merchant-Id
minLength: 1
maxLength: 36
example: ec689822-9864-4c4d-9d68-22246762901
required: true
Event-Name:
name: Event-Name
in: header
description: Name of event (e.g., PAYOUT, PAYIN).
schema:
type: string
title: event-name
minLength: 1
maxLength: 64
example: Payout
Limit:
name: limit
in: query
required: false
description: Number of results per page (default- 50).
schema:
type: integer
title: limit
minimum: 1
maximum: 100
default: 50
Client-Id:
in: query
name: client_id
description: Your unique identification, same as the identification you use for OAuth token generation, Citi shared with you during your CitiConnect API onboarding.
schema:
type: string
title: Client-Id
example: 6d3cf821-db6d-496d-bec0-064a362e9c31
minimum: 1
maximum: 128
required: true
headers:
Apim-Guid:
description: Unique system generated reference number generated by Citi. Refer to this number in case of any discrepancy reporting to a Citi representative.
schema:
type: string
maxLength: 128
minLength: 1
title: Apim-Guid
required: true
example: na-apimgwgtds04~4a98cbc5-d813-4e65-bc81-d70f0f87f6ec
securitySchemes:
oAuth2:
type: oauth2
flows:
clientCredentials:
tokenUrl: https://b2b.api.icg.citi.com/authenticationservices/v3/oauth/token
scopes:
/authenticationservices/v1: Access to marketplace management APIs