swagger: '2.0'
info:
description: >-
Use the Mobile Virtual Card Onboarding API for card enrollment, card
maintenance based on Citi client's user demographic data and country of
issuance, and consumption of client event notifications originating from
purging users.
version: 1.0.0
x-ibm-name: mvca-distributed-partner-lifecycle
title: mVCA Distributed Partner Lifecycle APIs
contact:
name: Citi Commercial Cards Support
email: >-
dl.icg.global.commercial.cards.digital.production.support@imcap.ap.ssmb.com
servers:
- url: https://tts.apib2b.citi.com/tts/cards
description: production gateway URL
- url: https://tts.sandbox.apib2b.citi.com/tts/cards
description: sandbox URL
security:
- clientCredentials: []
schemes:
- https
produces:
- application/json
paths:
/mvca/v1/card/enroll:
post:
summary: Enrollment Data
description: >-
Post the client's user data to enable Card Enrollment based on the
user's demographic data & country of issuance.
operationId: POST
parameters:
- name: country
in: header
description: >-
Country code in ISO 3166 alpha-2 format..
`Example`: USA(United
States of America), SGP(Singapore), PHL(Philippines),
THA(Thailand)
type: string
required: true
- name: region
in: header
description: 'region of the client.
`Example`: APAC, EMEA, NAM'
type: string
required: true
- name: authorization
in: header
description: >-
the OAuth Authorization header
**OAuth:**
Request contains
a header field in the form of Authorization: Bearer (access_token),
where access_token is generated using the OAuth url
`Example` :
Bearer
AAIkMjU2OTI4OGQtODY5Ny00ZjgzLTg0NzEtY2QyZWYwZjM5ZjJk_m3yqnGAbxR_ovVx5bs9OUfF0dd52qHadLtw2ARkwCw2BJcwg1zHsTOuvjPtsW5ioxxd2xXXjlDDCKLuvg15Ce1gzGxTu17xEvLOzSECLIdU_02JbpS3h9ee9GzB-u_MPfKseOiACXYAh_7AVWQhtRMLDKd8RgCUsNzTGXXBeE4
type: string
required: true
- name: req-sys-id
in: header
description: >-
Client Unique id to identify the particular request.
`Format`:
UUID
`Example`: 7d13245e-243a-5e8f-bc10-8626ec728291
type: string
required: true
- name: Content-Type
in: header
description: >-
The MIME type of the body of the request (used with POST and PUT
requests). Always pass application/json.
type: string
required: false
- name: Accept-Language
in: header
description: List of acceptable human languages for response.
type: string
required: false
- name: CardEnrollmentRequest
in: body
description: CardEnrollmentRequest
required: true
schema:
$ref: '#/definitions/CardEnrollmentRequest'
responses:
'200':
description: Success response sent to client with necessary response fields.
schema:
$ref: '#/definitions/CardEnrollmentSuccessResponse'
'202':
description: >-
Immediate ACK response sent to client to indicate background
processing.
schema:
$ref: '#/definitions/CardEnrollmentAckResponse'
'206':
description: >-
Partial success response sent to client with necessary response
fields.
schema:
$ref: '#/definitions/CardEnrollmentPartialSuccessResponse'
'400':
description: >-
Invalid error response sent to client indicating bad request from
client.
schema:
$ref: '#/definitions/CardEnrollmentValidationFailureResponse'
'401':
description: >-
Unauthorized error response sent to client indicating authentication
failure from client.
schema:
$ref: '#/definitions/CardEnrollmentUnAuthorizedResponse'
'405':
description: >-
Error response sent to client indicating invalid HTTP method
received from client.
schema:
$ref: '#/definitions/CardEnrollmentMethodNotAllowedResponse'
'500':
description: Error response to indicate the CITI server errors.
schema:
$ref: '#/definitions/CardEnrollmentInternalServerErrorResponse'
/mvca/v1/card/maintenance:
put:
summary: Updated User Data
description: >-
Enables maintenance of user card accounts based on the user's
demographic data, country of issuance, and request type combination
operationId: PUT
parameters:
- name: country
in: header
description: >-
Country code in ISO 3166 alpha-2 format..
`Example`: USA(United
States of America), SGP(Singapore), PHL(Philippines),
THA(Thailand)
type: string
required: true
- name: region
in: header
description: 'region of the client.
`Example`: APAC, EMEA, NAM'
type: string
required: true
- name: authorization
in: header
description: >-
Request should contain OAuth Authorization header
**OAuth:**
Request contains a header field in the form of Authorization:
Bearer (access_token), where access_token is generated using the
OAuth url
`Example` : Bearer
AAIkMjU2OTI4OGQtODY5Ny00ZjgzLTg0NzEtY2QyZWYwZjM5ZjJk_m3yqnGAbxR_ovVx5bs9OUfF0dd52qHadLtw2ARkwCw2BJcwg1zHsTOuvjPtsW5ioxxd2xXXjlDDCKLuvg15Ce1gzGxTu17xEvLOzSECLIdU_02JbpS3h9ee9GzB-u_MPfKseOiACXYAh_7AVWQhtRMLDKd8RgCUsNzTGXXBeE4
type: string
required: true
- name: req-sys-id
in: header
description: >-
Client Unique id to identify the particular request.
`Format`:
UUID
`Example`: 7d13245e-243a-5e8f-bc10-8626ec728291
type: string
required: true
- name: Content-Type
in: header
description: >-
The MIME type of the body of the request (used with POST and PUT
requests). Always pass application/json.
type: string
required: false
- name: Accept-Language
in: header
description: List of acceptable human languages for response.
type: string
required: false
- name: clientMaintenanceRequest
in: body
description: clientMaintenanceRequest
required: true
schema:
$ref: '#/definitions/CardMaintenanceRequest'
responses:
'200':
description: Success response sent to client from Citi after Purge is complete.
schema:
$ref: '#/definitions/CardMaintenanceSuccessResponse'
'206':
description: Success response sent to client from Citi after Purge is complete.
schema:
$ref: '#/definitions/CardMaintenancePartialSuccessResponse'
'400':
description: >-
Invalid error response due to validation failure/bad request sent to
client from Citi.
schema:
$ref: '#/definitions/CardMaintenanceInvalidFailureResponse'
'401':
description: >-
Unauthorized error response due to validation failure/bad request
sent to client from Citi.
schema:
$ref: '#/definitions/CardMaintenanceUnAuthorizedResponse'
'405':
description: >-
HTTP method not allowed error response due to wrog HTTP method sent
to client from Citi.
schema:
$ref: '#/definitions/CardMaintenanceMethodNotAllowedResponse'
'500':
description: >-
Internal server error response sent to client from Citi due to
internal error.
schema:
$ref: '#/definitions/CardMaintenanceInternalServerErrorResponse'
/mvca/v1/event/notification:
put:
summary: Card Holder Deletion
description: >-
Use this endpoint to delete users and accounts based on client
notifications.
operationId: purge
parameters:
- name: country
in: header
description: >-
Country code in ISO 3166 alpha-2 format..
`Example`: USA(United
States of America), SGP(Singapore), PHL(Philippines),
THA(Thailand)
type: string
required: true
- name: region
in: header
description: 'region of the client.
`Example`: APAC, EMEA, NAM'
type: string
required: true
- name: authorization
in: header
description: >-
Request should contain OAuth Authorization header
**OAuth:**
Request contains a header field in the form of Authorization:
Bearer (access_token), where access_token is generated using the
OAuth url
`Example` : Bearer
AAIkMjU2OTI4OGQtODY5Ny00ZjgzLTg0NzEtY2QyZWYwZjM5ZjJk_m3yqnGAbxR_ovVx5bs9OUfF0dd52qHadLtw2ARkwCw2BJcwg1zHsTOuvjPtsW5ioxxd2xXXjlDDCKLuvg15Ce1gzGxTu17xEvLOzSECLIdU_02JbpS3h9ee9GzB-u_MPfKseOiACXYAh_7AVWQhtRMLDKd8RgCUsNzTGXXBeE4
type: string
required: true
- name: req-sys-id
in: header
description: >-
Client Unique id to identify the particular request.
`Format`:
UUID
`Example`: 7d13245e-243a-5e8f-bc10-8626ec728291
type: string
required: true
- name: Content-Type
in: header
description: >-
The MIME type of the body of the request (used with POST and PUT
requests). Always pass application/json.
type: string
required: false
- name: Accept-Language
in: header
description: List of acceptable human languages for response.
type: string
required: false
- name: CardPurgeRequest
in: body
description: CardPurgeRequest
required: true
schema:
$ref: '#/definitions/CardPurgeRequest'
responses:
'202':
description: >-
Immediate ACK response sent to client to indicate background
processing.
schema:
$ref: '#/definitions/CardPurgeAckResponse'
'400':
description: >-
Invalid error response due to validation failure/bad request sent to
client from Citi.
schema:
$ref: '#/definitions/CardPurgeInvalidFailureResponse'
'401':
description: >-
Unauthorized error response due to validation failure/bad request
sent to client from Citi.
schema:
$ref: '#/definitions/CardPurgeUnAuthorizedResponse'
'405':
description: >-
HTTP method not allowed error response due to wrog HTTP method sent
to client from Citi.
schema:
$ref: '#/definitions/CardPurgeMethodNotAllowedResponse'
'500':
description: >-
Internal server error response sent to client from Citi due to
internal error.
schema:
$ref: '#/definitions/CardPurgeInternalServerErrorResponse'
definitions:
CardEnrollmentRequest:
required:
- cardHolderUserId
- countryOfIssuance
properties:
cardHolderUserId:
description: >-
Unique ID to be generated & sent by Citi clients to identify user
profile.
type: string
format: alphanumeric [a-zA-Z0-9//s]
example: Billy33896
maxLength: 20
minLength: 1
countryOfIssuance:
description: Country in which the VCA program is issued out of.
type: string
format: alphabets [a-zA-Z]
example: USA
maxLength: 3
minLength: 3
demographicData:
description: >-
Card holder/user's demographic data to be sent by client to perform
CITI screening based on country of issuance.
type: object
format: object
$ref: '#/definitions/DemographicData'
cardInfo:
description: >-
Card related information needs to be sent by client to create virtual
card via Citi.
type: array
items:
$ref: '#/definitions/CardInfo'
CardInfo:
properties:
vcaGuid:
description: Unique Id to refer Virtual Card Account.
type: integer
format: int64
example: 233191
maxLength: 19
minLength: 1
programId:
description: Unique ID of the company record defined in the virtual cards system.
type: string
format: numeric [0-9]
example: '233191'
maxLength: 19
minLength: 1
programName:
description: Company Name as defined in Virtual Card System.
type: string
format: alphanumeric [a-zA-Z0-9] + special character
example: VCA Program NAM
maxLength: 250
minLength: 1
fundingSourceId:
description: >-
Unique identifier of the funding source to which the virtual card
rolls up. It's numeric for MASTER & alphanumeric for VISA.
type: string
format: alphanumeric [a-zA-Z0-9//s]
example: '2718'
maxLength: 19
fundingSourceName:
description: >-
Descriptive name of the real card to which the virtual card rolls up.
Apllicable only for MASTER.
type: string
format: alphanumeric [a-zA-Z0-9]
example: Funding Account 1 for Subsidiary XYZ
maxLength: 100
expiryDate:
description: >-
Expiry Date of the virtual card account. Must not be more than 24
months in the future. If a modification of this parameter is not
needed, the field can be left out of the modification request call.
Citi will then apply the most recently defined value for this field.
Data type has been kept has String instead of Number due to prceeding
0 may get truncated. Applicable only for MASTER.
type: string
format: MMYYYY ([0-9]{6})
example: '102021'
maxLength: 6
mccGrouping:
description: >-
Limits authorizations to defined Merchant Category Codes. Must be the
Purchase Type name associated to the template.
type: array
items:
type: string
format: alphabets [a-zA-Z]
example: '["Air MCCs"]'
currencyCode:
description: >-
Currency Code in which VCA amounts are expressed. currencyCode is not
required if currencyType = B
type: string
format: numeric [0-9]
example: '036'
maxLength: 3
currencyType:
description: >-
Defines the type of the VCA currency. - Value B stands for Billing
Currency which indicates that the VCA currency is equal to the billing
currency of the underlying funding source. - Value M stands for
Merchant Currency which indicates that the VCA currency is expressed
in merchant currency and not in billing currency. Mandatory for
Mastercard
type: string
format: B/M
example: M
enum:
- B
- M
timeZone:
description: >-
Defines the time zone applicable for any date or time parameters
within controls set for a VCA.If any of the following controls are
used, timeZone is required:Validity Period Control,Aging Velocity
Control (Mastercard only), Curfew Control and Time of Day Control.It
sets the specific timeframe when the account and its controls will
become active.
type: string
format: UTC-OFFSET (UTC-[0-9]{2}:[0-9]{2})
example: UTC-04:00
maxLength: 9
templateId:
description: >-
Identifies the template that was setup in the VCA system and that
should be used for this virtual card. The template setup in the VCA
system defines which controls, custom data fields and MCC groupings
can be used. Mandatory for Mastercard
type: integer
format: int64
example: 36091
maximum: 19
virtualCardAccountNumber:
description: VCN created by network & ready to be assigned to user.
type: string
format: numeric
example: '5610349130672269'
maxLength: 16
minLength: 16
customReference:
description: >-
Up to 29 custom reference field lables and values can be defined in a
given request. A custom reference value cannot be sent without a
corresponding custom reference label.
type: array
items:
$ref: '#/definitions/CustomReference'
example:
- customReferenceLabel: Ticket Class
customReferenceValue: Business
- customReferenceLabel: Departure Airport Code
customReferenceValue: IND
enableSpendVelocityControl:
description: >-
Limits the frequency and total cumulative amount of authorizations
performed on the VCA within a specified period. The control is
mandatory unless Aging Velcotiy Control is used. This control cannot
be used in combination with the Aging Velocity Control.
type: boolean
format: boolean
example: true
spendVelocity:
type: array
items:
$ref: '#/definitions/SpendVelocityRequest'
enableValidityPeriodControl:
description: >-
Limits authorization activity to a specific time period. This is an
optional control. If this control is not used, pass False or leave
this section out from the request. If value passed as True,
validityStartDate and validityEndDate are required.
type: boolean
format: boolean
example: true
validityStartDate:
description: >-
Identifies the date from which the virtual card account can be used
for transactions. The Start Date must be prior to the End Date.
Mandatory if enableValidityPeriodControl is true. Mandatory for
MASTER, optional for VISA.
type: string
format: >-
ISO 8601: YYYY-MM-DD
(^(19|20)[0-9]{2}-(((0[13578]|(10|12))-(0[1-9]|[1-2][0-9]|3[0-1]))|(02-(0[1-9]|[1-2][0-9]))|((0[469]|11)-(0[1-9]|[1-2][0-9]|30))))
example: '2024-09-28'
maxLength: 10
validityEndDate:
description: >-
Identifies the date until which the virtual card account can be used
for transactions. The Start Date must be prior to the End Date.
Mandatory if enableValidityPeriodControl is true
type: string
format: >-
ISO 8601: YYYY-MM-DD
(^(19|20)[0-9]{2}-(((0[13578]|(10|12))-(0[1-9]|[1-2][0-9]|3[0-1]))|(02-(0[1-9]|[1-2][0-9]))|((0[469]|11)-(0[1-9]|[1-2][0-9]|30))))
example: '2024-09-28'
maxLength: 10
enableAmountRangeControl:
description: >-
Approves a transaction only if the requested amount for authorization
is equal to or greater than the Minimum Amount and less than or equal
to the Maximum Amount. This is an optional control. If this control is
not used, pass False or leave this section out from the request. If
value passed is True, maxAmount and minAmount are required.
type: boolean
format: boolean
example: true
maxAmount:
description: >-
For MASTER: Identifies the maximum allowed transaction amount. 14
digits max to the left of decimal and 2 digits max to the right of the
decimal. For VISA: Identifies the maximum allowed transaction amount.
12 digits max to the left of decimal and 2 digits max to the right of
the decimal. Mandatory if enableAmountRangeControl is true
type: number
format: '[0-9]{17}$|(?=^.{1,18}$)^[0-9]+\.[0-9]{1,4}'
example: 2000.25
maximum: 15
minAmount:
description: >-
For MASTER: Identifies the minimum allowed transaction amount. 14
digits max to the left of decimal and 2 digits max to the right of the
decimal. For VISA: Identifies the maximum allowed transaction amount.
12 digits max to the left of decimal and 2 digits max to the right of
the decimal. Mandatory if enableAmountRangeControl is true
type: number
format: '[0-9]{17}$|(?=^.{1,18}$)^[0-9]+\.[0-9]{1,4}'
example: 1000.75
maximum: 15
enableTransactionLimitControl:
description: >-
Limits individual transactions to a maximum amount. This is an
optional control. If this control is not used, pass False or leave
this section out from the request. If value passed is True,
amountLimit is required.
type: boolean
format: boolean
example: true
amountLimit:
description: >-
Identifies the maximum allowed transaction amount. Mandatory if
enableTransactionLimitControl is true
type: number
format: '[0-9]{17}$|(?=^.{1,18}$)^[0-9]+\.[0-9]{1,4}'
example: 1000.25
maximum: 15
enableCurfewControl:
description: >-
Limits authorization activity to a single time period for each day
selected. This is an optional control. If this control is not used,
pass False or leave this section out from the request. If value passed
is True, curfewTime is required. Applicable only for MASTER.
type: boolean
format: boolean
example: true
curfewTime:
type: object
format: object
example:
- startTime: '12:30'
endTime: '13:30'
weekdaysEffective:
- Mon
- Tue
enableTimeOfDayControl:
description: >-
Limits authorization request to defined time periods each day. This is
an optional control. If this control is not used, pass False or leave
this section out from the request. If value passed is True, timeOfDay
is required.
type: boolean
format: boolean
example: true
timeOfDay:
type: array
items:
$ref: '#/definitions/TimeOfDay'
example:
- startTime: '12:30'
endTime: '13:30'
weekdayEffective: Mon
enableAgingVelocityControl:
description: >-
Sets a cumulative amount and keeps track of the current remaining
balance. Allows the requester to "age off" approved authorization
requests that have not been cleared by the merchant after a defined
number of days. This is an optional control. If this control is not
used, pass False or leave this section out from the request. If value
passed is True, authorizationHoldDays and cumulativeSpendLimit are
required.
type: boolean
format: boolean
example: true
authorizationHoldDays:
description: >-
Identifies the number of days after which an authorization gets aged
off if no matching clearing record was received. Mandatory if
enableAgingVelocityControl is true. Applicable only for MASTER.
type: number
format: numeric [0-9]
example: 21
maximum: 19
cumulativeSpendLimit:
description: >-
Limits the overall amount spend on the virtual card account. Setting
the this value to 0 will be interpreted as an open limit. In this
case, the underlying funding accounts available balance will drive the
authorization decision to approve or decline a transaction. Mandatory
if enableAgingVelocityControl is true
type: number
format: '[0-9]{17}$|(?=^.{1,18}$)^[0-9]+\.[0-9]{1,4}'
example: 2000.25
maximum: 15
enableGeographyControl:
description: >-
Limits authorization requests to a defined geographic location. This
is an optional control. If this control is not used, pass False or
leave this section out from the request. For Mastercard, if value
passed is True, countryCodes and isCountryAllowed are required.
type: boolean
format: boolean
example: true
countryCodes:
type: array
items:
type: string
example:
- USA
- IND
format: alphabets [a-zA-Z]
maximum: 3
isCountryallowed:
description: >-
Indicate whether the values in countryCode are allowed or disallowed.
True= values provided in countryCode are allowed. False = values
provided in countryCode are not allowed.
type: boolean
format: boolean
example: true
enableMerchantIdControl:
description: >-
Limits authorizations to a particular merchant using the Merchant ID
and Acquirer ID (Mastercard) or Card Acceptor ID (Visa).
type: boolean
format: boolean
example: true
isMerchantIdAllowed:
description: >-
Indicate whether the values in merchantId and acquirerId are allowed
or disallowed. True = values provided in merchantId and acquirerId are
allowed False = values provided in merchantId and acquirerId are not
allowed
type: boolean
format: boolean
example: true
cardAcceptorId:
description: >-
Specifies the Card Acceptor ID that should be allowed / disallowed
when transacting with the virtual card. Only applicable for VISA.
type: string
format: alphanumeric [a-zA-Z0-9//s]
example: CAID12345
maxLength: 15
vcaRequestor:
type: object
$ref: '#/definitions/VcaRequestor'
vcaUser:
type: object
$ref: '#/definitions/VcaUser'
required:
- vcaGuid
- programId
- programName
- fundingSourceId
- fundingSourceName
- expiryDate
- mccGrouping
- currencyType
- currencyCode
- timeZone
- templateId
- enableSpendVelocityControl
- spendVelocity
- customReference
- enableCurfewControl
- enableTransactionLimitControl
- enableAmountRangeControl
- enableValidityPeriodControl
- enableTimeOfDayControl
- enableAgingVelocityControl
- enableGeographyControl
- vcaRequestor
- vcaUser
VcaUser:
properties:
emailId:
description: Email Id of the card holder/user
type: string
format: alphabets [a-zA-Z]
example: wiccan@gmail.com
maxLength: 240
mobileNumber:
description: Mobile number the card holder/user
type: string
format: numeric [0-9]
example: '5512345678'
minLength: 5
maxLength: 13
mobileCountryCode:
description: Mobile number country code of the card holder/user
type: string
format: ^(\+[0-9]+)
example: '+51'
minLength: 2
maxLength: 4
required:
- emailId
- mobileNumber
- mobileCountryCode
CustomReference:
properties:
customReferenceLabel:
description: Specifies the label of a custom reference field.
type: string
format: alphanumeric [a-zA-Z0-9]
example: Purchase Order
maxLength: 50
minLength: 1
customReferenceValue:
description: >-
Specifies the value of a custom reference field. If the template used
for this VCA request identifies a given custom reference field as
required, then the value provided in this field cannot be blank.
type: string
format: alphanumeric [a-zA-Z0-9]
example: PO-1234567
maxLength: 80
minLength: 1
SpendVelocityRequest:
properties:
maxAuth:
description: >-
Limits the number of authorizations that can be made with a VCA.
Should be set to 1, if a single-use VCA is created. Specify any value
larger than one for a multi-use VCA. If a modification of this
parameter is not needed, the field can be left out of the modification
request call. Citi will then apply the most recently defined value for
this field. Set to 0, if unlimited authorizations should be allowed.
For MASTER: 8, VISA: 10
type: number
format: numeric [0-9]
example: 10
maximum: 10
cumulativeSpendLimit:
description: >-
Limits the overall amount spend on the virtual card account. If a
modification of this parameter is not needed, the field can be left
out of the modification request call. Citi will then apply the most
recently defined value for this field.
type: number
format: '[0-9]{17}$|(?=^.{1,18}$)^[0-9]+\.[0-9]{1,4}'
example: '10000'
maximum: 15
periodType:
description: >-
Period for which the control values are valid before they reset.
If
a modification of this parameter is not needed, the field can be left
out of the modification request call. Citi will then apply the most
recently defined value for this field. Mastercard: D = Daily -- The
balances of control parameters enabled for a VCA are reset with their
original values every day at 00:00:00. M = Monthly -- The balances of
control parameters enabled for a VCA are reset with their original
values at the start of every month. W = Weekly -- The balances of
control parameters enabled for a VCA are reset with their original
values every Monday at 00:00:00. Q = Quarterly -- The balances of
control parameters enabled for a VCA are reset with their original
values on the first day of every quarter at 00:00:00. Quarter 1:
January 01 - March 31. Quarter 2: April 01 - June 30. Quarter 3:
July 01 - September 30. Quarter 4: October 01 - December 31. Y =
Annually -- The balances of control parameters enabled for a VCA are
reset with their original values every year on January 1st at
00:00:00. C = Continuous -- The balances of control parameters enabled
for a VCA are retained continuously for the validity period defined.
Balances do not reset with their original values throughout the
validity period. Visa: 1 = Recurring : The balances of control
parameters enabled for a VCA are reset with their original values on a
specified recurring day for every month.
If you select this
periodType, you must also specify the resetDay field. 2 = Monthly :
The balances of control parameters enabled for a VCA are reset with
their original values at the start of every month. 3 = Date Range :
The balances of control parameters enabled for a VCA are retained
continuously for the validity period defined. Balances do not reset
with their original values throughout the validity period.
If you
select this periodType, you must also specify the validityStartDate
and validityEndDate fields.
type: string
format: alphanumeric [a-zA-Z0-9]
example: C
maxLength: 1
required:
- maxAuth
- cumulativeSpendLimit
- periodType
CurfewTime:
properties:
startTime:
description: >-
Specifies the start time from when the card can be used each of the
specified days.
type: string
format: HH:MM 24-hour format (^[0-9]{1,2}:[0-9]{2}:[0-9]{2})
example: '8:30'
maxLength: 5
endTime:
description: >-
Specifies the end time until which the card can be used each of the
specified days.
type: string
format: HH:MM 24-hour format (^[0-9]{1,2}:[0-9]{2}:[0-9]{2})
example: '14:30'
maxLength: 5
weekdayEffective:
description: Listing of days to which the time curfew applies.
type: array
items:
type: string
format: '[a-zA-Z]{3}'
example:
- Sat
- Mon
- Sun
required:
- startTime
- endTime
- weekdayEffective
TimeOfDay:
properties:
startTime:
description: >-
Specifies the start time from when the card can be used each of the
specified days.
type: string
format: HH:MM 24-hour format (^[0-9]{1,2}:[0-9]{2}:[0-9]{2})
example: '8:30'
maxLength: 5
endTime:
description: >-
Specifies the end time until which the virtual card account can be
used on the particular day specified in weekDaysEffective.
type: string
format: HH:MM 24-hour format (^[0-9]{1,2}:[0-9]{2}:[0-9]{2})
example: '14:30'
maxLength: 5
weekdayEffective:
description: Specifies the day applicable to the start and end times defined.
type: string
format: alphabets [a-zA-Z]
example: Wed
maxLength: 3
required:
- startTime
- endTime
- weekdayEffective
VcaRequestor:
properties:
requestorType:
description: >-
Defines whether VCA requestor type. Possible values are INDIVIDUAL,
ORG
type: string
format: alphabets [a-zA-Z]
example: INDIVIDUAL
maxLength: 20
firstName:
description: >-
Last name of Virtual Card requestor. Applicable only for
requestorType: INDIVIDUAL
type: string
format: alphabets [a-zA-Z]
maxLength: 140
middleName:
description: >-
Middle name of Virtual Card requestor. Applicable only for
requestorType: INDIVIDUAL
type: string
format: alphabets [a-zA-Z]
maxLength: 140
lastName:
description: >-
Last name of Virtual Card requestor. Applicable only for
requestorType: INDIVIDUAL
type: string
format: alphabets [a-zA-Z]
maxLength: 140
id:
description: >-
Unique ID of Virtual Card requestor. Applicable for requestorType as
INDIVIDUAL & ORG.
type: string
format: numeric [0-9]
maxLength: 200
minLength: 6
orgName:
description: >-
Organization name of Virtual Card requestor. Applicable only for
requestorType: ORG
type: string
example: GOOGLE
format: alphabets [a-zA-Z]
maxLength: 140
required:
- requestorType
- firstName
- middleName
- lastName
- id
- orgName
DemographicData:
required:
- firstName
- lastName
- city
- country
- zip
- state
- addressLine1
- dateOfBirth
- provinceOfBirth
- countryOfBirth
- nationalities
- documents
properties:
firstName:
description: First name of the card holder/user
type: string
format: alphanumeric [a-zA-Z0-9//s]
example: William
maxLength: 30
lastName:
description: Last name of the card holder/user
type: string
format: alphanumeric [a-zA-Z0-9//s]
maxLength: 35
example: Kaplan
middleName:
description: Middle name of card holder/user
type: string
format: alphanumeric [a-zA-Z0-9//s]
maxLength: 35
example: Billy
city:
description: City of the card holder/user
type: string
format: alphabets [a-zA-Z]
maxLength: 50
example: New York
country:
description: Country of the card holder/user
type: string
format: alphabets [a-zA-Z]
maxLength: 10
example: USA
zip:
description: Zip/Postal code of the card holder/user
type: string
maxLength: 13
example: '123456'
state:
description: State the card holder/user
type: string
maxLength: 50
example: State
addressLine1:
description: Street Address Line 1.Accepts all characters
type: string
maxLength: 60
example: 123, ABC street
addressLine2:
description: Street Address line 2.Accepts all characters
type: string
maxLength: 60
addressLine3:
description: Street Address line 3. Accepts all characters
type: string
maxLength: 60
dateOfBirth:
description: Date of birth of Card holder/user
type: string
format: >-
ISO 8601: YYYY-MM-DD
(^(19|20)[0-9]{2}-(((0[13578]|(10|12))-(0[1-9]|[1-2][0-9]|3[0-1]))|(02-(0[1-9]|[1-2][0-9]))|((0[469]|11)-(0[1-9]|[1-2][0-9]|30))))
example: '2000-11-27'
maxLength: 50
provinceOfBirth:
description: Province of Birth
type: string
maxLength: 50
example: abc
countryOfBirth:
description: Country of Birth
type: string
format: alphabets [a-zA-Z]
maxLength: 10
example: USA
documents:
description: Documents details to scrutinize a customer.
type: array
items:
$ref: '#/definitions/Documents'
example:
- documentType: TIN
documentValue: P2067921
country: USA
nationalities:
description: >-
Length represents the total length of all characters in country field
e.g.., nationalities[0].idValue = "CUBA" nationalities[1].idValue =
"UNITED STATES" nationalities[2].idValue = "IRAQ" Total Length. is 24
(DELIMITER CHARACTER LENGTH 1 is added for each object in the list).
CX will process in to a single field (ID) as below, "";CUBA;UNITED
STATES;IRAQ
type: array
items:
$ref: '#/definitions/Nationalities'
example:
- country: USA
Nationalities:
properties:
country:
description: Country
type: string
format: alphanumeric [a-zA-Z0-9]
maxLength: 10
example: USA
required:
- country
Documents:
properties:
documentType:
description: >-
Type of the document likeSSN, TIN, SSS, GSIS, Passport, IC, Local ID
Number, PAN, Cadastro de Pessoas F�sicas (CPF), Registro Federal de
Contribuyentes (RFC), Permanent ID, DNI
type: string
format: alphabets [a-zA-Z]
maxLength: 10
documentValue:
description: Document Value
type: string
format: alphabets [a-zA-Z0-9]
maxLength: 50
country:
description: Country of the document
type: string
format: alphabets [a-zA-Z]
maxLength: 10
required:
- documentValue
CardEnrollmentSuccessResponse:
properties:
cardHolderUserId:
description: >-
Unique ID to be generated & sent by Citi clients to identify user
profile.
type: string
format: alphanumeric [a-zA-Z0-9]
maxLength: 20
minLength: 1
example: Billy33896
countryOfIssuance:
description: Country in which the VCA program is issued out of.
type: string
format: alphabets [a-zA-Z]
example: USA
maxLength: 3
minLength: 3
screeningInfo:
description: Screening status after performing customer screening.
type: object
format: object
$ref: '#/definitions/ScreeningInfo'
cardSuccessInfo:
description: >-
VCA Card Info tagged to unique vcaRequestId generated by Citi for
client reference.
type: array
items:
$ref: '#/definitions/CardSuccessInfo'
example:
- vcaGuid: 38213
vcaRequestId: '5902838563832'
- vcaGuid: 29107
vcaRequestId: '7110394201820'
CardSuccessInfo:
properties:
vcaGuid:
description: Unique Id to refer Virtual Card Account.
type: integer
format: int64
example: 2331
maxLength: 19
minLength: 1
vcaRequestId:
description: Unique reference Id generated by Citi for MASTER network.
type: string
format: alphanumeric [a-zA-Z0-9-]
maxLength: 20
CardEnrollmentPartialSuccessResponse:
properties:
cardHolderUserId:
description: >-
Unique ID to be generated & sent by Citi clients to identify user
profile.
type: string
format: alphanumeric [a-zA-Z0-9]
maxLength: 20
minLength: 1
example: Billy33896
countryOfIssuance:
description: Country in which the VCA program is issued out of.
type: string
format: alphabets [a-zA-Z]
example: USA
maxLength: 3
minLength: 3
screeningInfo:
description: Screening status after performing customer screening.
type: object
format: object
$ref: '#/definitions/ScreeningInfo'
cardPartialSuccessInfo:
description: Screening status after performing customer screening.
type: array
items:
$ref: '#/definitions/ValidationErrorResponseDetails'
example:
- vcaGuid: 82139
vcaRequestId: '5902838563832'
- vcaGuid: 38213
cardDataErrors:
- errorCode: EVB0271
errorDescription: ExpiryDate is mandatory
ValidationErrorResponseDetails:
properties:
vcaRequestId:
description: Unique reference Id generated by Citi for MASTER network.
type: string
format: alphanumeric [a-zA-Z0-9-]
maxLength: 20
vcaGuid:
description: Unique Id to refer Virtual Card Account.
type: integer
format: int64
example: 2331
maxLength: 19
minLength: 1
cardDataErrors:
type: array
items:
$ref: '#/definitions/EnrollErrorMessage'
userId:
description: >-
Unique ID to be generated & sent by Citi clients to identify user
profile.
type: string
format: alphanumeric [a-zA-Z0-9//s]
example: Billy33896
maxLength: 20
minLength: 1
userDataErrors:
type: array
items:
$ref: '#/definitions/EnrollErrorMessage'
ScreeningInfo:
properties:
status:
description: Final status of Enrollment process.
type: string
format: alphabets[a-zA-Z]
example: UNDER CITI REVIEW
enum:
- APPROVED
- UNDER CITI REVIEW
- DECLINED
description:
description: Description of final status after performing customer screening.
type: string
format: alphabets[a-zA-Z]
example: >-
Screening is pending in review. Citi Cards Clients Services will get
in touch with you to process further.
CardEnrollmentAckResponse:
description: List of error code and description to be sent to the Client
properties:
message:
maxLength: 255
minLength: 1
type: string
example: We have received your request for further processing.
description: >-
Immediate ACK message sent to client indicating that back ground
actions are being performed.
CardPurgeAckResponse:
description: List of error code and description to be sent to the Client
properties:
message:
maxLength: 255
minLength: 1
type: string
example: We have received your request for further processing.
description: >-
Immediate ACK message sent to client indicating that back ground
actions are being performed.
EnrollErrorMessage:
required:
- errorCode
- errorDescription
type: object
description: List of error code and description to be sent to the Client
properties:
errorCode:
maxLength: 10
minLength: 1
type: string
description: error code to be sent to the Client
format: alphanumeric [a-zA-Z0-9]
example: EVB1257
errorDescription:
description: >-
The error description that corresponds to error code when there is
any error occurred while retrieving the trsansaction.
* `GRC0001` - We have encountered an error and couldnt receive your
request. Please try again, or contact Citi support if you have any
further questions or comments
* `GRC0002` - Client ID
is missing in the request header
* `GRC0003` - Contry
code is not available in the request
* `GRC0004` -
Region ID is not available in the request
* `GRC0005`
- We have encountered an error and couldnt receive your request.
Please try again, or contact Citi support if you have any further
questions or comments
* `GRC0006` - We have
encountered an error and couldnt receive your request. Please try
again, or contact Citi support if you have any further questions or
comments
* `GRC0007` - Client requested MediaType is
not supported.
* `GRC0009` - We have encountered an
error and couldnt receive your request. Please try again, or contact
Citi support if you have any further questions or comments
* `GRC0011` - Client ID and/or Country and/or region
id is missing in Client Onboard Configuration setup. Contact Citi
support.
* `GRC0012` - Necessary header value is
missing
* `GRC0003` - Invalid JSON Input
* `GRC0014` - We have encountered an error and couldnt
receive your request. Please try again, or contact Citi support if you
have any further questions or comments
* `EVB1245` -
First Name is mandatory and should not be null or empty
* `EVB1246` - Last Name is mandatory and should not be
null or empty
* `EVB1247` - Line 1 of address is
mandatory and should not be null or empty
* `EVB1248`
- City is mandatory and should not be null or empty
*
`EVB1249` - State is mandatory and should not be null or empty
* `EVB1250` - Zip code is mandatory and should not be
null or empty
* `EVB1251` - Country is mandatory and
should not be null or empty
* `EVB1252` - Date of
Birth is mandatory and should not be null or empty
*
`EVB1253` - Country is mandatory and should not be null or empty
* `EVB1254` - Nationality is mandatory and should not
be null or empty
* `EVB1257` - Document(s) is
mandatory and should not be null or empty and should be one of the
required documents
* `EVB1258` - countryOfIssuance is
mandatory
* `EVB1150` - cardHolderUserId is
mandatory
* `EVB1152` cardHolderUserId must be plain
text
* `EVB1151` - cardHolderUserId size must be between
1 and 20 characters
* `EVB1259` - countryOfIssuance must
be exactly 3 characters
* `EVB1260` - countryOfIssuance
must be only in upper case
* `EVB0017` - vcaGuid is empty or
null
* `EVB0014` - vcaGuid value must be a numeric
*
`EVB0010` - vcaGuid size must be between 1 and 19 digits
*
`EVB0033` - fundingSourceId is mandatory
* `EVB0032` -
fundingSourceId value must be numeric
* `EVB0352` -
FundingSourceId is Invalid. FundingSourceId value should be a valid
long value and size must be between 1 and 19 digits
* `EVB0042` -
fundingSourceName is mandatory
* `EVB0041` - fundingSourceName
must have minimum of 1 and maximum of 100 characters
* `EVB0271` -
expiryDate is mandatory
* `EVB0061` - expiryDate length exceeds
max length allowed of: 6 characters
* `EVB0259` - expiryDate must
have format: MMYYYY
* `EVB0219` - expiryDate month and year cannot
be a past or current date
* `EVB0626` - expiryDate cannot be more
than 24 months into the future
* `EVB0265` - mccGrouping cannot be
null or empty
* `EVB0254` - mccGrouping should not contain
multiple values
* `EVB0062` - TimeZone is mandatory
*
`EVB0063` - timeZone field has an invalid UTC offset time zone format.
Valid format is UTC+/-HH:MM
* `EVB0615` - No time zone found for
UTC value provided in timeZone field
* `EVB0071` - templateId is
mandatory
* `EVB0014` - templateId should be numeric
*
`EVB0010` - templateId should have minimum of 1 & maximum of 19
characters
* `EVB0071` - virtualCardAccountNumber is mandatory
* `EVB0010` - virtualCardAccountNumber must have exactly 16
characters
* `EVB0502` - virtualCardAccountNumber is Invalid
*
`EVB0255` - customReference list should have minimum of 1 & maximum of
29 items
* `EVB504` - templateCustomField.customFieldName is
mandatory
* `EVB0258` - customReferenceLabel should have minimum
of 1 & maximum of 50 characters
* `EVB0505` -
templateCustomField.customFieldValue is mandatory
* `EVB0353` -
customReferenceValue should have minimum of 1 & maximum of 80
characters
* `EVB0136` - currencyType is mandatory
* `EVB0162`
- currencyType must have value which matches regex: M|B|m|b
*
`EVB0130` - currencyType length exceed max length allowed is: 1
characters
* `EVB0065` - currencyCode is mandatory
* `EVB0245`
- currencyCode value must be numeric [0-9]
* `EVB0099` -
currencyCode length allowed is: 3 digits
* `EVB0624` - The
currencyCode value provided is invalid. Please update the currencyCode
value and retry your request
* `EVB0272` - Both Aging and Spend
Velocity Control cannot be enabled
* `EVB0273` - Either Aging or
Spend Velocity Control should be enabled
* `EVB0903` - Atleast one
Spend velocity control is required, When enableSpendVelocity is
true
* `EVB503` - SpendVelocity size should not exceed 6
*
`EVB0137` - spendVelocityControl-cumulativeSpendLimit is mandatory
* `EVB0625` - cumulativeSpendLimit max field length is 14 digits with
12 digits to the left of the decimal and 2 digits to the right of the
decimal
* `EVB0365` - periodType is mandatory if
enableSpendVelocity is true
* `EVB0140` - periodType length
exceeds max length allowed of: 1 character
* `EVB0610` - Invalid
periodType value. periodType can contain a value of either D, M, W, Q,
Y, or C
* `EVB0904` - Invalid request. Duplicate periodType values
cannot be included when setting the Spend Velocity Control
*
`EVB0231` - maxAuth is mandatory if enableSpendVelocityControl is set
to True
* `EVB0362` - Invalid maxAuth format. maxAuth value cannot
exceed 8 digits
* `EVB0163` - authorizationHoldDays is mandatory
if agingVelocityControl is true
* `EVB0621` -
authorizationHoldDays must be positive long value with a maximum of 4
digits
* `EVB0369` - cumulativeSpendLimit is mandatory if Aging
Velocity Control is set to true
* `EVB0625` - cumulativeSpendLimit
max field length is 14 digits with 12 digits to the left of the
decimal and 2 digits to the right of the decimal
* `EVB0378` -
isMerchantIdAllowed is mandatory if MerchantIdControl is enabled
*
`EVB0371` - isCountryallowed is mandatory if GeographyControl is
enabled
* `EVB0370` - countryCodes is required if Geography
Control is set to true
* `EVB0236` - Invalid countryCode,
countryCode doesn't exist.
* `EVB0367` - startTime is mandatory if
Time Of Day Control is true
* `EVB0233` - endTime is mandatory if
Time Of Day Control is true
* `EVB0110` - startTime value must
have valid format: HH:MM - H (0,1,2) | H (0-9) : M (0-5) | M (0-9)
* `EVB0112` - endTime value must have valid format: HH:MM - H (0,1,2)
| H (0-9) : M (0-5) | M (0-9)
* `EVB0622` - startTime cannot be
equal to endTime
* `EVB0235` - startTime value cannot exceed the
requested endTime value
* `EVB0232` - weekdayEffective is
mandatory if Time Of Day Control is true
* `EVB0368` -
weekdayEffective must have value which matches regex:
SUN|MON|TUE|WED|THU|FRI|SAT
* `EVB0623` - timeOfDayControl cannot
have duplicate weekdayEffective values
* `EVB0113` - startTime is
mandatory if CurfewControl is true
* `EVB0110` - startTime value
must have valid format: HH:MM - H (0,1,2) | H (0-9) : M (0-5) | M
(0-9)
* `EVB0114` - endTime is mandatory if CurfewControl is
true
* `EVB0112` - endTime value must have valid format: HH:MM - H
(0,1,2) | H (0-9) : M (0-5) | M (0-9)
* `EVB0622` - startTime
cannot be equal to endTime
* `EVB0235` - startTime value cannot
exceed the requested endTime value
* `EVB0262` - weekdayEffective
is mandatory if enableCurfewControl is true
* `EVB0263` -
CurfewControl-weekdayEffective must have value which matches regex:
((?i)(SUN|MON|TUE|WED|THU|FRI|SAT))(,(?i)(SUN|MON|TUE|WED|THU|FRI|SAT))*
* `EVB0106` - minAmount is mandatory if enableAmountRangeControl is
true
* `EVB0354` - AmountRangeControl-minAmount length exceed max
length allowed is: 14 characters
* `EVB0107` - maxAmount is
mandatory if enableAmountRangeControl is true
* `EVB0355` -
AmountRangeControl-maxAmount length exceed max length allowed is: 14
characters
* `EVB0381` - AmountRangeControl-minAmount is greater
than maxAmount
* `EVB0170` - amountLimit is mandatory if
TransactionLimitControl is true
* `EVB0364` -
transactionlimitcontrol-amount value must be a numeric positive value
with a maximum of 10 digits to the left and 2 digits to the right of
the decimal
* `EVB0125` - validityStartDate is mandatory if
ValidityPeriodControl is true
* `EVB0121` - validityStartDate
value must have valid format: YYYY-MM-DD
* `EVB0211` -
validityStartDate invalid format. MM value must be less than or equal
to 12 and DD value must be less than or equal to 31
* `EVB0238` -
The date specified in validityStartDate does not exist
* `EVB0217`
- validityStartDate cannot be a past date
* `EVB0126` -
validityEndDate is mandatory if ValidityPeriodControl is true
*
`EVB0120` - validityEndDate value must have valid format:
YYYY-MM-DD
* `EVB0211` - validityEndDate invalid format. MM value
must be less than or equal to 12 and DD value must be less than or
equal to 31
* `EVB0237` - The date specified in validityEndDate
does not exist
* `EVB0218` - validityEndDate cannot be a past
date
* `EVB0600` - validityStartDate should be before
validityEndDate
* `EVB0215` - Validity Period Control must be set
to true and validityStartDate and validityEndDate are mandatory if
periodType = C
* `EVB1153` - vcaRequestor.requestorType is
mandatory and can be either 'INDIVIDUAL' or 'ORG'
* `EVB1154` -
vcaRequestor.id is mandatory
* `EVB1155` - vcaRequestor.firstName
is mandatory
* `EVB1156` - vcaRequestor.lastName is mandatory
* `EVB1157` - vcaRequestor.middleName is mandatory
* `EVB1158` -
vcaRequestor.orgName is mandatory
* `EVB1161` - vcaUser.emailId is
mandatory
* `EVB1162` - vcaUser.emailId format is invalid
*
`EVB1163` - vcaUser.mobileNumber is mandatory
* `EVB1164` -
vcaUser.mobileNumber should be numeric
* `EVB1165` -
vcaUser.mobileCountryCode is mandatory
type: string
example: >-
Document(s) is mandatory and should not be null or empty and should be
one of the required documents
format: alphanumeric [a-zA-Z0-9]
CardEnrollmentValidationFailureResponse:
properties:
errors:
type: array
items:
$ref: '#/definitions/ValidationErrorResponseDetails'
example:
- vcaGuid: 29812
cardDataErrors:
- errorCode: EVB0607
errorDescription: At least one spend control is mandatory
- userId: Billy33896
userDataErrors:
- errorCode: EVB1257
errorDescription: >-
Document(s) is mandatory and should not be null or empty and
should be one of the required documents
CardEnrollmentInternalServerErrorResponse:
required:
- errors
type: object
properties:
errors:
minItems: 1
type: array
items:
$ref: '#/definitions/EnrollErrorMessage'
example:
- errorCode: GRC0014
errorDescription: >-
We have encountered an error and couldnt receive your request.
Please try again, or contact Citi support if you have any further
questions or comments
CardEnrollmentUnAuthorizedResponse:
required:
- httpCode
- httpMessage
- moreInformation
type: object
properties:
httpCode:
maxLength: 10
minLength: 1
type: string
description: error code to be sent to the Client
example: '401'
httpMessage:
maxLength: 255
minLength: 1
type: string
description: error message to be sent to the Client
example: Unauthorized
moreInformation:
maxLength: 255
minLength: 1
type: string
description: more details related to the error to be sent to the Client
example: Access Denied
CardEnrollmentMethodNotAllowedResponse:
required:
- httpCode
- httpMessage
- moreInformation
type: object
properties:
httpCode:
maxLength: 10
minLength: 1
type: string
description: error code to be sent to the Client
example: '405'
httpMessage:
maxLength: 255
minLength: 1
type: string
description: error message to be sent to the Client
example: Method Not Allowed
moreInformation:
maxLength: 255
minLength: 1
type: string
description: more details related to the error to be sent to the Client
example: Requested HTTP operation is not supported
CardPurgeRequest:
properties:
cardHolderUserId:
description: >-
Unique ID to be generated & sent by Citi clients to identify user
profile.
type: string
format: alphanumeric [a-zA-Z0-9//s]
maxLength: 200
minLength: 6
countryOfIssuance:
description: Country based on which the santions screening rules are applied.
type: string
format: alphabets [a-zA-Z]
example: USA
maxLength: 3
minLength: 2
required:
- cardHolderUserId
- countryOfIssuance
CardPurgeSuccessResponse:
properties:
cardHolderUserId:
description: >-
This is a cardholder user ID which needs to be purged. Unique Id
belong to indiviual
type: string
format: alphanumeric [a-zA-Z0-90-9]
maxLength: 100
cardStatus:
description: Card status of the offboard operation at card level
type: array
items:
$ref: '#/definitions/CardStatus'
purgeStatus:
description: overall status of the offboard operation, success or failure
type: string
format: alphabets [a-zA-Z]
maxLength: 100
additionalInfo:
description: This is a additional information based on purge request processing
type: string
format: alphabets [a-zA-Z]
maxLength: 200
CardStatus:
properties:
vcaRequestId:
description: Citi generated unique data store ID.
type: string
format: numeric [0-9]
maxLength: 20
status:
description: >-
Card status of each card after the offboard operation for the
particular vcaRequestId
type: string
format: alphabets [a-zA-Z]
maxLength: 100
CardPurgeInvalidFailureResponse:
properties:
errors:
type: array
items:
$ref: '#/definitions/CardPurgeErrorMessage'
CardPurgeInternalServerErrorResponse:
required:
- errors
type: object
properties:
errors:
minItems: 1
type: array
items:
$ref: '#/definitions/CardPurgeErrorMessage'
CardPurgeUnAuthorizedResponse:
required:
- httpCode
- httpMessage
- moreInformation
type: object
properties:
httpCode:
maxLength: 10
minLength: 1
type: string
description: error code to be sent to the Client
example: '401'
httpMessage:
maxLength: 255
minLength: 1
type: string
description: error message to be sent to the Client
example: Unauthorized
moreInformation:
maxLength: 255
minLength: 1
type: string
description: more details related to the error to be sent to the Client
example: Access Denied
CardPurgeMethodNotAllowedResponse:
required:
- httpCode
- httpMessage
- moreInformation
type: object
properties:
httpCode:
maxLength: 10
minLength: 1
type: string
description: error code to be sent to the Client
example: '405'
httpMessage:
maxLength: 255
minLength: 1
type: string
description: error message to be sent to the Client
example: Method Not Allowed
moreInformation:
maxLength: 255
minLength: 1
type: string
description: more details related to the error to be sent to the Client
example: Requested HTTP operation is not supported
CardPurgeErrorMessage:
required:
- errorCode
- errorDescription
type: object
description: List of error code and description to be sent to the Client
properties:
errorCode:
maxLength: 10
minLength: 1
type: string
description: error code to be sent to the Client
format: alphanumeric [a-zA-Z0-9]
example: EVB1257
errorDescription:
description: >-
The error description that corresponds to error code when there is
any
error occurred while retrieving the transactions.
*
`GRC0002` - Client ID is missing in the request header
* `GRC0003`
- Invalid JSON Input
* `GRC0004` - Region ID is not available in
the request
* `GRC0005` - Client Tracking ID is missing in the
request header
* `GRC0010` - Client Tracking ID length should
contain a min of 1 character and a max of 36 characters.
*
`GRC0011` - Client ID and/or Country and/or region id is missing in
Client Onboard Configuration setup. Contact Citi support.
*
`GRC0012` - Necessary header value is missing
* `GRC0014` - We have
encountered an error and couldnt receive your request. Please try
again, or contact Citi support if you have any further questions or
comments
* `GRC0016` - Country code is not available in the
request
* `EVB1150` - cardHolderUserID is mandatory
* `EVB1152`
cardHolderUserID must be numeric
* `EVB1151` - cardHolderUserID
size must be between 1 and 200 characters
* `EVB1258` -
countryOfIssuance is mandatory
type: string
example: >-
Document(s) is mandatory and should not be null or empty and should be
one of the required documents
format: alphanumeric [a-zA-Z0-9]
CardMaintenanceRequest:
properties:
requestType:
description: Action which would help to define the processing flow
type: string
example: DEMOGRAPHIC_UPDATE
items:
enum:
- CARD_MODIFY
- CARD_CANCEL
- DEMOGRAPHIC_UPDATE
format: alpha[a-zA-Z]
cardHolderUserId:
description: >-
Unique ID to be generated & sent by Citi clients to identify user
profile.
type: string
format: alphanumeric [a-zA-Z0-9//s]
example: Billy33896
maxLength: 20
minLength: 1
countryOfIssuance:
description: Country based on which the santions screening rules are applied.
type: string
format: alphabets [a-zA-Z]
example: USA
maxLength: 3
minLength: 2
modifyCardInfo:
description: This object should be populated when requestType is CARD_MODIFY
type: object
format: object
$ref: '#/definitions/ModifyCardRequest'
cancelCardInfo:
description: This object should be populated when requestType is CARD_CANCEL
type: object
format: object
$ref: '#/definitions/CancelCardRequest'
demographicInfo:
description: This object should be populated when requestType is DEMOGRAPHIC_UPDATE
type: object
format: object
$ref: '#/definitions/DemographicUpdateInfo'
required:
- requestType
- cardHolderUserId
- countryOfIssuance
DemographicUpdateInfo:
required:
- firstName
- lastName
- city
- country
- zip
- state
- addressLine1
- dateOfBirth
- provinceOfBirth
- countryOfBirth
properties:
firstName:
description: First name of the cardholder
type: string
format: alphabets [a-zA-Z]
maxLength: 140
example: Bradley
middleName:
description: Middle name of the cardholder
type: string
format: alphabets [a-zA-Z]
maxLength: 140
example: Justin
lastName:
description: Last name of the cardholder
type: string
format: alphabets [a-zA-Z]
maxLength: 140
example: Brown
emailId:
description: Email address of the cardholder
type: string
format: alphabets [a-zA-Z]
example: abc@xyz.dom
maxLength: 240
mobileNumber:
description: Mobile number of the cardholder
type: string
format: '[0-9]'
example: 1234567890 , 52552345678
minLength: 5
maxLength: 13
mobileCountryCode:
description: >-
Mobile country code of the cardholder. It should start with +, minimum
length is 1 numeric digit and maximum is 3 numeric digit excluding +.
type: string
format: +[0-9]
example: +1 / +91 / +512
minLength: 3
maxLength: 4
city:
description: City of the cardholder
type: string
format: alphanumeric
example: Boston
maxLength: 50
minLength: 1
state:
description: State of the cardholder
type: string
format: alphanumeric
example: Massachusetts
maxLength: 50
minLength: 1
country:
description: Country of the cardholder
type: string
format: alphanumeric
example: United States
maxLength: 50
minLength: 1
zip:
description: Postal code of the cardholder
type: string
format: alphanumeric
example: '02108'
maxLength: 13
minLength: 1
addressLine1:
description: Address Line1 of the cardholder
type: string
format: alphanumeric
example: Boston address
maxLength: 100
minLength: 1
addressLine2:
description: Address Line2 of the cardholder
type: string
format: alphanumeric
example: Boston address
maxLength: 100
minLength: 1
addressLine3:
description: Address Line3 of the cardholder
type: string
format: alphanumeric
example: Boston address
maxLength: 100
minLength: 1
dateOfBirth:
description: Date of birth of the cardholder
type: string
format: alphanumeric
maxLength: 50
minLength: 1
example: 1st May 1984
provinceOfBirth:
description: Province of birth of the cardholder
type: string
format: alphanumeric
maxLength: 50
minLength: 1
example: Massachusetts
countryOfBirth:
description: Country of birth of the cardholder
type: string
format: alphanumeric
maxLength: 50
minLength: 1
example: United States
documents:
type: array
items:
$ref: '#/definitions/Documents'
nationalities:
type: array
items:
$ref: '#/definitions/Nationalities'
ModifyCardRequest:
required:
- vcaGuid
- programId
- vcaRequestId
- vcaRequestor
- vcaUser
properties:
vcaGuid:
description: Unique Id to refer Virtual Card Account.
type: integer
format: int64
example: 233191
maxLength: 19
minLength: 1
programId:
description: Unique ID of the company record defined in the virtual cards system.
type: string
format: numeric [0-9]
example: '233191'
maxLength: 19
minLength: 1
vcaRequestId:
description: Unique reference Id generated by Citi for MASTER network.
type: string
format: alphanumeric [a-zA-Z0-9-]
maxLength: 20
programName:
description: Company Name as defined in Virtual Card System.
type: string
format: alphanumeric [a-zA-Z0-9] + special character
example: VCA Program NAM
maxLength: 250
minLength: 1
fundingSourceId:
description: >-
Unique identifier of the funding source to which the virtual card
rolls up. It's numeric for MASTER & alphanumeric for VISA.
type: string
format: alphanumeric [a-zA-Z0-9//s]
example: '2718'
maxLength: 19
fundingSourceName:
description: >-
Descriptive name of the real card to which the virtual card rolls up.
Apllicable only for MASTER.
type: string
format: alphanumeric [a-zA-Z0-9]
example: Funding Account 1 for Subsidiary XYZ
maxLength: 100
expiryDate:
description: >-
Expiry Date of the virtual card account. Must not be more than 24
months in the future. If a modification of this parameter is not
needed, the field can be left out of the modification request call.
Citi will then apply the most recently defined value for this field.
Data type has been kept has String instead of Number due to prceeding
0 may get truncated. Applicable only for MASTER.
type: string
format: MMYYYY ([0-9]{6})
example: '102021'
maxLength: 6
mccGrouping:
description: >-
Limits authorizations to defined Merchant Category Codes. Must be the
Purchase Type name associated to the template.
type: array
items:
type: string
format: alphabets [a-zA-Z]
example: '["Air MCCs"]'
currencyCode:
description: >-
Currency Code in which VCA amounts are expressed. currencyCode is not
required if currencyType = B
type: string
format: numeric [0-9]
example: '036'
maxLength: 3
currencyType:
description: >-
Defines the type of the VCA currency. - Value B stands for Billing
Currency which indicates that the VCA currency is equal to the billing
currency of the underlying funding source. - Value M stands for
Merchant Currency which indicates that the VCA currency is expressed
in merchant currency and not in billing currency. Mandatory for
Mastercard
type: string
format: B/M
example: M
enum:
- B
- M
timeZone:
description: >-
Defines the time zone applicable for any date or time parameters
within controls set for a VCA.If any of the following controls are
used, timeZone is required:Validity Period Control,Aging Velocity
Control (Mastercard only), Curfew Control and Time of Day Control.It
sets the specific timeframe when the account and its controls will
become active.
type: string
format: UTC-OFFSET (UTC-[0-9]{2}:[0-9]{2})
example: UTC-04:00
maxLength: 9
templateId:
description: >-
Identifies the template that was setup in the VCA system and that
should be used for this virtual card. The template setup in the VCA
system defines which controls, custom data fields and MCC groupings
can be used. Mandatory for Mastercard
type: integer
format: int64
example: 36091
maximum: 19
getCardImage:
description: A visual representation of the virtual card account front and back.
type: boolean
format: boolean
example: true
customReference:
description: >-
Up to 29 custom reference field lables and values can be defined in a
given request. A custom reference value cannot be sent without a
corresponding custom reference label.
type: array
example: >-
"customReference": [ { "customReferenceValue": "Business",
"customReferenceLabel": "Ticket Class" }, { "customReferenceValue":
"IND", "customReferenceLabel": "Departure Airport Code" }]
items:
$ref: '#/definitions/CustomReference'
modifySpendVelocityControl:
description: >-
Limits the frequency and total cumulative amount of authorizations
performed on the VCA within a specified period. The control is
mandatory unless Aging Velcotiy Control is used. This control cannot
be used in combination with the Aging Velocity Control.
type: boolean
format: boolean
example: true
spendVelocity:
type: array
items:
$ref: '#/definitions/SpendVelocityRequest'
modifyValidityPeriodControl:
description: >-
Limits authorization activity to a specific time period. This is an
optional control. If this control is not used, pass False or leave
this section out from the request. If value passed as True,
validityStartDate and validityEndDate are required.
type: boolean
format: boolean
example: true
validityStartDate:
description: >-
Identifies the date from which the virtual card account can be used
for transactions. The Start Date must be prior to the End Date.
Mandatory if enableValidityPeriodControl is true. Mandatory for
MASTER, optional for VISA.
type: string
format: >-
ISO 8601: YYYY-MM-DD
(^(19|20)[0-9]{2}-(((0[13578]|(10|12))-(0[1-9]|[1-2][0-9]|3[0-1]))|(02-(0[1-9]|[1-2][0-9]))|((0[469]|11)-(0[1-9]|[1-2][0-9]|30))))
example: '2024-09-28'
maxLength: 10
validityEndDate:
description: >-
Identifies the date until which the virtual card account can be used
for transactions. The Start Date must be prior to the End Date.
Mandatory if enableValidityPeriodControl is true
type: string
format: >-
ISO 8601: YYYY-MM-DD
(^(19|20)[0-9]{2}-(((0[13578]|(10|12))-(0[1-9]|[1-2][0-9]|3[0-1]))|(02-(0[1-9]|[1-2][0-9]))|((0[469]|11)-(0[1-9]|[1-2][0-9]|30))))
example: '2024-09-28'
maxLength: 10
modifyAmountRangeControl:
description: >-
Approves a transaction only if the requested amount for authorization
is equal to or greater than the Minimum Amount and less than or equal
to the Maximum Amount. This is an optional control. If this control is
not used, pass False or leave this section out from the request. If
value passed is True, maxAmount and minAmount are required.
type: boolean
format: boolean
example: true
maxAmount:
description: >-
For MASTER: Identifies the maximum allowed transaction amount. 14
digits max to the left of decimal and 2 digits max to the right of the
decimal. For VISA: Identifies the maximum allowed transaction amount.
12 digits max to the left of decimal and 2 digits max to the right of
the decimal. Mandatory if enableAmountRangeControl is true
type: number
format: '[0-9]{17}$|(?=^.{1,18}$)^[0-9]+\.[0-9]{1,4}'
example: 2000.25
maximum: 15
minAmount:
description: >-
For MASTER: Identifies the minimum allowed transaction amount. 14
digits max to the left of decimal and 2 digits max to the right of the
decimal. For VISA: Identifies the maximum allowed transaction amount.
12 digits max to the left of decimal and 2 digits max to the right of
the decimal. Mandatory if enableAmountRangeControl is true
type: number
format: '[0-9]{17}$|(?=^.{1,18}$)^[0-9]+\.[0-9]{1,4}'
example: 1000.75
maximum: 15
modifyTransactionLimitControl:
description: >-
Limits individual transactions to a maximum amount. This is an
optional control. If this control is not used, pass False or leave
this section out from the request. If value passed is True,
amountLimit is required.
type: boolean
format: boolean
example: true
amountLimit:
description: >-
Identifies the maximum allowed transaction amount. Mandatory if
enableTransactionLimitControl is true
type: number
format: '[0-9]{17}$|(?=^.{1,18}$)^[0-9]+\.[0-9]{1,4}'
example: 1000.25
maximum: 15
modifyCurfewControl:
description: >-
Limits authorization activity to a single time period for each day
selected. This is an optional control. If this control is not used,
pass False or leave this section out from the request. If value passed
is True, curfewTime is required. Applicable only for MASTER.
type: boolean
format: boolean
example: true
curfewTime:
type: object
format: object
example: >-
"curfewTime": { "startTime": "12: 30", "endTime": "13: 30",
"weekdaysEffective": ["Mon","Tue"] }
$ref: '#/definitions/CurfewTime'
modifyTimeOfDayControl:
description: >-
Limits authorization request to defined time periods each day. This is
an optional control. If this control is not used, pass False or leave
this section out from the request. If value passed is True, timeOfDay
is required.
type: boolean
format: boolean
example: true
timeOfDay:
type: array
example: >-
"timeOfDay": [{ "startTime": "12: 30", "endTime": "13: 30",
"weekdayEffective": "Mon" }, { "startTime": "13: 30", "endTime":
"14: 30", "weekdayEffective": "Tue" } ]
items:
$ref: '#/definitions/TimeOfDay'
modifyAgingVelocityControl:
description: >-
Sets a cumulative amount and keeps track of the current remaining
balance. Allows the requester to "age off" approved authorization
requests that have not been cleared by the merchant after a defined
number of days. This is an optional control. If this control is not
used, pass False or leave this section out from the request. If value
passed is True, authorizationHoldDays and cumulativeSpendLimit are
required.
type: boolean
format: boolean
example: true
authorizationHoldDays:
description: >-
Identifies the number of days after which an authorization gets aged
off if no matching clearing record was received. Mandatory if
enableAgingVelocityControl is true. Applicable only for MASTER.
type: number
format: numeric [0-9]
example: 21
maximum: 19
cumulativeSpendLimit:
description: >-
Limits the overall amount spend on the virtual card account. Setting
the this value to 0 will be interpreted as an open limit. In this
case, the underlying funding accounts available balance will drive the
authorization decision to approve or decline a transaction. Mandatory
if enableAgingVelocityControl is true
type: number
format: '[0-9]{17}$|(?=^.{1,18}$)^[0-9]+\.[0-9]{1,4}'
example: 2000.25
maximum: 15
modifyGeographyControl:
description: >-
Limits authorization requests to a defined geographic location. This
is an optional control. If this control is not used, pass False or
leave this section out from the request. For Mastercard, if value
passed is True, countryCodes and isCountryAllowed are required.
type: boolean
format: boolean
example: true
countryCodes:
type: array
items:
type: string
format: alphabets [a-zA-Z]
example: USA
maximum: 3
isCountryallowed:
description: >-
Indicate whether the values in countryCode are allowed or disallowed.
True= values provided in countryCode are allowed. False = values
provided in countryCode are not allowed.
type: boolean
format: boolean
example: true
modifyMerchantIdControl:
description: >-
Limits authorizations to a particular merchant using the Merchant ID
and Acquirer ID (Mastercard) or Card Acceptor ID (Visa).
type: boolean
format: boolean
example: true
isMerchantIdAllowed:
description: >-
Indicate whether the values in merchantId and acquirerId are allowed
or disallowed. True = values provided in merchantId and acquirerId are
allowed False = values provided in merchantId and acquirerId are not
allowed
type: boolean
format: boolean
example: true
cardAcceptorId:
description: >-
Specifies the Card Acceptor ID that should be allowed / disallowed
when transacting with the virtual card. Only applicable for VISA.
type: string
format: alphanumeric [a-zA-Z0-9//s]
example: CAID12345
maxLength: 15
vcaRequestor:
type: object
$ref: '#/definitions/VcaRequestor'
vcaUser:
type: object
$ref: '#/definitions/VcaUser'
CancelCardRequest:
properties:
vcaRequestId:
description: unique id assigned to each virtual card
type: string
format: numeric [0-9]
maxLength: 20
vcaGuid:
description: Unique Id to refer Virtual Card Account.
type: integer
format: int64
example: 'Mastercard: [93396958,93396959] VISA: [897887890]'
maxLength: 19
vcaRequestor:
type: object
$ref: '#/definitions/VcaRequestor'
vcaUser:
type: object
$ref: '#/definitions/VcaUser'
required:
- vcaRequestId
- vcaGuid
CardMaintenanceSuccessResponse:
properties:
requestType:
description: Action which would help to define the processing flow
type: string
example: DEMOGRAPHIC_UPDATE
items:
enum:
- CARD_MODIFY
- CARD_CANCEL
- DEMOGRAPHIC_UPDATE
format: alpha[a-zA-Z]
cardHolderUserId:
description: This is a card holder ID assigned to the card owner
type: string
format: alphanumeric [a-zA-Z0-9]
maxLength: 100
minLength: 1
example: CITI-1234567890
countryOfIssuance:
description: Country based on which the santions screening rules are applied.
type: string
format: alphabets [a-zA-Z]
example: USA
maxLength: 3
minLength: 2
vcaRequestId:
description: Unique id assigned to each card by citi application
type: string
format: numeric [0-9]
maxLength: 20
example: '91980088'
additionalInfo:
description: Unique id assigned to each card by citi application
type: string
format: alphanumeric [a-zA-Z0-9]
CardMaintenancePartialSuccessResponse:
properties:
requestType:
description: Action which would help to define the processing flow
type: string
example: DEMOGRAPHIC_UPDATE
items:
enum:
- CARD_MODIFY
- CARD_CANCEL
- DEMOGRAPHIC_UPDATE
format: alpha[a-zA-Z]
cardHolderUserId:
description: This is a card holder ID assigned to the card owner
type: string
format: alphanumeric [a-zA-Z0-9]
maxLength: 100
minLength: 1
example: CITI-1234567890
countryOfIssuance:
description: Country based on which the santions screening rules are applied.
type: string
format: alphabets [a-zA-Z]
example: USA
maxLength: 3
minLength: 2
vcaRequestId:
description: Unique id assigned to each card by citi application
type: string
format: numeric [0-9]
maxLength: 20
example: '91980088'
additionalInfo:
description: Unique id assigned to each card by citi application
type: string
format: alphanumeric [a-zA-Z0-9]CardMaintenancePartialSuccessResponse
MaintenanceErrorMessage:
properties:
errorCode:
description: which indicates the error code
type: string
format: alphanumeric [a-zA-Z0-9]
example: EVB1257
errorDescription:
description: >-
The error description that corresponds to error code when there is
any error occurred while retrieving the trsansaction.
* `GRC0001`
- We have encountered an error and couldnt receive your request.
Please try again, or contact Citi support if you have any further
questions or comments
* `GRC0003` - Invalid JSON Input
*
`GRC0004` - Region ID is not available in the request
* `GRC0005`
- Client Tracking ID is missing in the request header
* `GRC0010`
- Client Tracking ID length should contain a min of 1 character and a
max of 36 characters.
* `GRC0011` - Client ID and/or Country
and/or region id is missing in Client Onboard Configuration setup.
Contact Citi support.
* `GRC0012` - Necessary header value is
missing
* `GRC0014` - We have encountered an error and couldnt
receive your request. Please try again, or contact Citi support if you
have any further questions or comments
* `GRC0016` - Country code
is not available in the request
* `EVB1150` - cardHolderUserID is
mandatory
* `EVB1152` cardHolderUserID must be numeric
*
`EVB1151` - cardHolderUserID size must be between 1 and 200
characters
* `EVB1245` - First Name is mandatory and should not be
null or empty
* `EVB1246` - Last Name is mandatory and should not
be null or empty
* `EVB1247` - Line 1 of address is mandatory and
should not be null or empty
* `EVB1248` - City is mandatory and
should not be null or empty
* `EVB1249` - State is mandatory and
should not be null or empty
* `EVB1250` - Zip code is mandatory
and should not be null or empty
* `EVB1251` - Country is
mandatory and should not be null or empty
* `EVB1252` - Date of
Birth is mandatory and should not be null or empty
* `EVB1253` -
Country is mandatory and should not be null or empty
* `EVB1254` -
Nationality is mandatory and should not be null or empty
*
`EVB1257` - Document(s) is mandatory and should not be null or empty
and should be one of the required documents * `EVB1258` -
countryOfIssuance is mandatory
type: string
format: alphanumeric
example: >-
Document(s) is mandatory and should not be null or empty and should be
one of the required documents
required:
- errorCode
- errorDescription
CardMaintenanceInvalidFailureResponse:
properties:
errors:
type: array
items:
$ref: '#/definitions/MaintenanceErrorMessage'
CardMaintenanceInternalServerErrorResponse:
required:
- errors
type: object
properties:
errors:
minItems: 1
type: array
items:
$ref: '#/definitions/MaintenanceErrorMessage'
CardMaintenanceUnAuthorizedResponse:
required:
- httpCode
- httpMessage
- moreInformation
type: object
properties:
httpCode:
maxLength: 10
minLength: 1
type: string
description: error code to be sent to the Client
example: '401'
httpMessage:
maxLength: 255
minLength: 1
type: string
description: error message to be sent to the Client
example: Unauthorized
moreInformation:
maxLength: 255
minLength: 1
type: string
description: more details related to the error to be sent to the Client
example: Access Denied
CardMaintenanceMethodNotAllowedResponse:
required:
- httpCode
- httpMessage
- moreInformation
type: object
properties:
httpCode:
maxLength: 10
minLength: 1
type: string
description: error code to be sent to the Client
example: '405'
httpMessage:
maxLength: 255
minLength: 1
type: string
description: error message to be sent to the Client
example: Method Not Allowed
moreInformation:
maxLength: 255
minLength: 1
type: string
description: more details related to the error to be sent to the Client
example: Requested HTTP operation is not supported
securityDefinitions:
clientCredentials:
type: oauth2
description: ''
flow: application
scopes:
/api: ''
tokenUrl: https://tts.apib2b.citi.com/tts/api/v1/oauth2/token