openapi: 3.2.0
info:
title: PayerID Management Services Payer ID Reservation API
description: CitiConnectAPI service enable straight-through processing (STP) for Payer ID management functionality where client ERP system can invoke API request for Payer ID management functionalities.
version: 1.0.3
contact:
name: CitiConnect API Team
servers:
- url: https://tts.apib2b.citi.com/citiconnect/prod
description: production gateway url
- url: https://tts.sandbox.apib2b.citi.com/citiconnect/sb
description: sandbox url
security:
- oAuth2:
- /authenticationservices/v1
tags:
- name: PayerIdReservation
description: PayerID Reservations API has an ability to reserve PayerID.
paths:
/receivablesservices/v1/payerids/reservations:
post:
summary: Reserve Payer IDs
description: PayerID Reservations API has an ability to reserve PayerID with Reservations services supported in JSON format.
operationId: payerIdReservation
tags:
- PayerIdReservation
servers:
- url: https://tts.apib2b.citi.com/citiconnect/prod
description: production gateway url
parameters:
- $ref: '#/components/parameters/ClientId'
- $ref: '#/components/parameters/IdempotencyId'
requestBody:
description: This endpoint describes the process of reserving Payer_ID numbers. Uniqueness of currencies should be maintained for different `client_accounts`. Since multiple currencies are supported for a single unique client account number, client account should be unique. In the given example, client_account 10823201 and 10823200, can have `instruction_currencies` as GBP, or any other currency respectively. However, `client_account` 10823201 and 10823200 cannot be assigned to same `instruction_currencies` as GBP.
content:
application/json:
schema:
$ref: '#/components/schemas/Payer-ID-Reservation-Request'
examples:
PayerIdReservationExample:
$ref: '#/components/examples/Payer-ID-Reservation-Request-Example'
required: true
responses:
'202':
$ref: '#/components/responses/OKResponseForReservation'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'405':
$ref: '#/components/responses/MethodNotAllowed'
'409':
$ref: '#/components/responses/IdempotencyDuplication'
'415':
$ref: '#/components/responses/UnsupportedMediaTypeOrRequestedResourceNotFound'
'500':
$ref: '#/components/responses/InternalServerError'
security:
- oAuth2:
- /authenticationservices/v1
callbacks:
asynchronous-reservation-push-notification:
$ref: '#/components/callbacks/PayerIdReservationPushNotification'
components:
examples:
Method-Not-Allowed-Example:
value:
ref_id: ec689822-9864-4c4d-9d68-222467627902
error_details:
- issue: Method not supported
action: Please use valid HTTP verb.
code: CC00001
Requested-Resource-Not-Found:
value:
ref_id: ec689822-9864-4c4d-9d68-222467627902
error_details:
- issue: Resource that you are searching was not found.
action: Please use valid resource details.
code: CC00006
Idempotency-Duplication:
value:
ref_id: ec689822-9864-4c4d-9d68-222467627902
error_details:
- issue: Idempotency-Id provided is currently being used in another request.
action: please do not repeat the same request again.
code: VC00016
OK-Response-Reservation-Success-Example:
value:
status_code: PIPND
status_description: Payer IDs reservation request is in progress.
request_id: 9801bac6a4c74662ae78136bd4eba422
Unsupported-Media-Type-Example:
value:
ref_id: ec689822-9864-4c4d-9d68-222467627902
error_details:
- issue: Media type not supported
action: Please use valid content-type in the header.
code: CC00002
Payer-ID-Reservation-Request-Example:
value:
country_code: GB
number_of_payerids_required: 2
accounts:
- client_account: '10823201'
branch_code: '600'
instruction_currencies:
- GBP
- client_account: '10823200'
branch_code: '600'
instruction_currencies:
- ANY
Internal-Server-Error-Example:
value:
ref_id: ec689822-9864-4c4d-9d68-222467627902
error_details:
- issue: Unable to serve your request at this moment
action: Please refer the prescribed action in error for a resolution of this error.
code: CC00004
Bad-Request-Example:
value:
ref_id: ec689822-9864-4c4d-9d68-222467627902
error_details:
- issue: country_code is mandatory and it cannot be empty
action: please provide valid value for property country_code.
code: VC00002
Payer-ID-Reservation-Push-Notification-Example:
value:
country_code: GB
accounts:
- client_account: '10823201'
branch_code: '600'
instruction_currencies:
- GBP
- client_account: '10823200'
branch_code: '600'
instruction_currencies:
- ANY
request_id: eec8de9d-f6c5-4af2-89c2-f9b3erX7
status_code: PIAC
status_description: Payer ID Reservation Successful
payerid_number:
- GB87CITI18500870909334
- GB60CITI18500870909335
Payer-ID-Reservation-Error-Push-Notification-Example:
value:
country_code: GB
request_id: eec8de9d-f6c5-4af2-89c2-f9b3erX7
accounts:
- client_account: '123456'
branch_code: '600'
instruction_currencies:
- UPN
- LHO
- XLL
status_code: PIRJ
status_description: Payer ID Reservation Rejected
errors:
- error_code: PI1004
error_description: Client account 123456 is not onboarded.
Unauthorized-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:
Payer-ID-Error-Detail:
type: object
title: Payer-ID-Error-Detail
properties:
issue:
type: string
title: issue
description: More information about the issue.
maxLength: 150
action:
type: string
title: action
description: The corrective action to be taken to resolve the issue.
maxLength: 150
code:
type: string
title: code
description: Error category that provides more details on error types.
maxLength: 10
Payer-ID-Reservation-Push-Notification:
required:
- country_code
type: object
title: Payer-ID-Reservation-Push-Notification
properties:
country_code:
type: string
title: country_code
maxLength: 2
description: The country code used for the payer ID.
accounts:
type: array
title: accounts
maximum: 30
description: The account parameter under which the client account, branch code, or instruction currency will be displayed. Instruction currency cannot be same for different client account numbers in a single request.
items:
$ref: '#/components/schemas/Payer-ID-Account'
request_id:
type: string
title: request_id
maxLength: 32
description: Auto-generated unique identification assigned for the incoming request.
status_code:
type: string
title: status_code
maxLength: 10
description: Status code sent in asynchronous push notification responses. Status code will have values such as `PIRJ`, `PIAC`, `PIPND`
status_description:
type: string
title: status_description
maxLength: 500
description: 'Detailed status description sent in asynchronous push notification responses. Status description will have the following values:
`PIRJ` - Payer Id Creation Rejected
`PIAC` - Payer ID Creation Successful
`PIPND - Payer Id Activation In Progress`'
payerid_number:
type: array
title: payerid_number
maxItems: 1000000
description: List of reserved payer IDs.
items:
$ref: '#/components/schemas/Payer-Id'
errors:
type: array
title: errors
items:
$ref: '#/components/schemas/Errors'
Instruction-Currency:
type: string
title: Instruction-Currency
pattern: ^[A-Z]{3}$
description: The 3-character ISO currency code. It is a payment currency, for example, 'EUR' or 'GBP'.
Payer-ID-Errors:
type: object
title: Payer-ID-Errors
properties:
ref_id:
type: string
title: ref_id
description: Unique identifier which can be used to track your request.
error_details:
type: array
title: error_details
uniqueItems: true
items:
$ref: '#/components/schemas/Payer-ID-Error-Detail'
Payer-Id:
type: string
title: Payer-Id
minLength: 1
maxLength: 35
Payer-ID-Reservation-Response:
required:
- status_code
- status_description
- request_id
type: object
title: Payer-ID-Reservation-Response
properties:
request_id:
type: string
title: request_id
maxLength: 32
description: Auto-generated unique identification assigned for the incoming request.
status_code:
type: string
title: status_code
maxLength: 10
description: 'Status code sent in asynchronous push notification responses. Status codes are:
`PIRJ`
`PIAC`
`PIPND`'
status_description:
type: string
title: status_description
maxLength: 500
description: 'Detailed status description sent in asynchronous push notification responses. Status description will have the following values:
`PIRJ`- Payer ID creation rejected
`PIAC`- Payer ID creation successful
`PIPND`- Payer ID activation in progress'
Errors:
required:
- error_code
- error_description
type: object
title: Errors
properties:
error_code:
title: error_code
minLength: 1
maxLength: 35
type: string
description: 'Specifies the error code for the rejected activation request sent in an asynchronous response. Error codes will have the following values: `V005`
`V002`
`PI1001`
`RR10`
`PI1003`
`PI1004`
`PI1005`
`PI1006`
`PI1007`
`AC04`
`AC06`
`MD07`
`BLKD`
`REST`'
error_description:
title: error_description
minLength: 1
maxLength: 500
type: string
description: Specifies the error description of the rejected activation request sent in an asynchronous response. Error description for each each error codes will have following descriptions as
`V005 - Invalid combination of input parameters {Country code}{Branch code}`
`V002 - Please provide valid value for {payerid_number} or Please provide valid value for Action`
`PI1001 - PYID is already active`
`RR10 - Invalid Character Set`
`PI1002 - PYID Activation request is already in progress`
`PI1003 - Payer ID XXXXXXXXX is being processed`
`PI1004 - Client account has not been onboarded`
`PI1005 - Payer ID XXXXXXXXX could not be activated. Please contact your Client Executive`
`PI1006 - Payer ID XXXXXXXXX is under compliance review and has been temporarily deactivated. Please contact your Client Executive for further assistance`
`PI1007 - Payer ID XXXXXXXXX could not be activated. Please contact your Client Executive`
`AC04 - ClosedAccountNumber`
`AC06 - BlockedAccount`
`MD07 - EndCustomerDeceased`
`BLKD - Blocked`
`REST - Restricted`
Payer-ID-Account:
required:
- client_account
- branch_code
- instruction_currencies
type: object
title: Payer-ID-Account
properties:
client_account:
type: string
title: client_account
minLength: 1
maxLength: 35
description: The client's account.
branch_code:
type: string
title: branch_code
minLength: 3
maxLength: 4
description: Citi's Internal branch code.
instruction_currencies:
type: array
title: instruction_currencies
uniqueItems: true
minItems: 1
maxItems: 30
description: The 3-character ISO currency code. It is a payment currency, for example, 'EUR' or 'GBP'.
items:
$ref: '#/components/schemas/Instruction-Currency'
Payer-ID-Reservation-Request:
required:
- country_code
- number_of_payerids_required
- accounts
type: object
title: Payer-ID-Reservation-Request
properties:
country_code:
type: string
title: country_code
pattern: ^[A-Z]{2}$
description: 'The ISO country code specifying which country the account is held with. For example, if we receive a request for Germany, then the county code is ''DE'', for France, the country code is ''FR''. The list of allowed country codes are:
''DE'' - Germany
''FR'' - France
''GB'' - Great Britain
''IE'' - Ireland
''NL'' - Netherlands
''US'' - United States
''CA'' - Canada
''HK'' - Hong Kong
''SG'' - Singapore
''AU'' - Australia
''NZ'' - New Zealand
''LU'' - Luxembourg'
number_of_payerids_required:
type: integer
title: number_of_payerids_required
minimum: 1
maximum: 50000
description: Specifies number of payer IDs to be reserved in a single reservation request.
accounts:
type: array
title: accounts
minItems: 1
maxItems: 30
description: Identification of account parameter under which client account, branch code, or instruction currency is to be displayed. The instruction currency cannot be same for different client account numbers in a single request.
items:
$ref: '#/components/schemas/Payer-ID-Account'
responses:
Unauthorized:
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Payer-ID-Errors'
examples:
UnauthorizedExample:
$ref: '#/components/examples/Unauthorized-Example'
BadRequest:
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/Payer-ID-Errors'
examples:
BadRequestExample:
$ref: '#/components/examples/Bad-Request-Example'
UnsupportedMediaTypeOrRequestedResourceNotFound:
description: Unsupported Media Type
content:
application/json:
schema:
$ref: '#/components/schemas/Payer-ID-Errors'
examples:
UnsupportedMediaTypeExample:
$ref: '#/components/examples/Unsupported-Media-Type-Example'
RequestedResourceNotFound:
$ref: '#/components/examples/Requested-Resource-Not-Found'
MethodNotAllowed:
description: Method Not Allowed
content:
application/json:
schema:
$ref: '#/components/schemas/Payer-ID-Errors'
examples:
MethodNotAllowedExample:
$ref: '#/components/examples/Method-Not-Allowed-Example'
OKResponseForReservation:
description: Accepted
content:
application/json:
schema:
$ref: '#/components/schemas/Payer-ID-Reservation-Response'
examples:
OKResponseExampleForReservation:
$ref: '#/components/examples/OK-Response-Reservation-Success-Example'
InternalServerError:
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/Payer-ID-Errors'
examples:
InternalServerErrorExample:
$ref: '#/components/examples/Internal-Server-Error-Example'
IdempotencyDuplication:
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/Payer-ID-Errors'
examples:
IdempotencyDuplicationExample:
$ref: '#/components/examples/Idempotency-Duplication'
callbacks:
PayerIdReservationPushNotification:
/asynchronous-reservation-push-notification:
post:
summary: Asynchronous Reservation Push Notification
description: This callback describes the asynchronous push notifications schema definition and examples for Payer ID Reservation.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Payer-ID-Reservation-Push-Notification'
examples:
OKReservationNotificationExample:
$ref: '#/components/examples/Payer-ID-Reservation-Push-Notification-Example'
NotOKReservationNotificationExample:
$ref: '#/components/examples/Payer-ID-Reservation-Error-Push-Notification-Example'
responses:
'202':
description: Accepted
content:
application/json:
schema:
type: object
parameters:
IdempotencyId:
name: Idempotency-Id
in: header
required: true
schema:
type: string
maxLength: 128
example: a44cbb60-6de4-4edb-9a7a-123414bba3bb
description: Your unique identification for a POST request for CitiConnect to perform an idempotency check. The same `client_id` is to be maintained by the requestor. You can retry the request within 48 hours.
ClientId:
name: client_id
in: query
description: This is your unique identifier shared during your CitiConnect API onboarding. This is the same `client_id` used for OAuth token generation.
required: true
schema:
type: string
example: 898918181818181aczta
securitySchemes:
oAuth2:
type: oauth2
flows:
clientCredentials:
tokenUrl: authenticationservices/v3/oauth/token
scopes:
/authenticationservices/v1: Grant read-only access to receivable services