swagger: '2.0'
info:
description: Virtual Card Create, Modify, Cancel request.
version: ''
title: VCA Life Cycle Management for Payment Intermediaries
servers:
- url: https://tts.apib2b.citi.com/tts/cards/pi/
description: production gateway URL
- url: https://tts.sandbox.apib2b.citi.com/tts/cards/pi/
description: sandbox URL
schemes:
- https
consumes:
- application/json
produces:
- application/json
security:
- clientCredentials: []
paths:
/vca/v1/create:
post:
summary: Create Virtual Card Accounts
operationId: create
description: >-
Create a virtual card and set its associated spending controls, custom
reference data and payment beneficiaries.
parameters:
- name: client_id
in: query
required: true
description: >-
This is your unique identifier shared during your CitiConnect API
onboarding. This is the same `client_id` used for OAuth token
generation
type: string
- name: Content-Type
in: header
description: Supports \"application/xml\" and \"application/json\".
required: true
type: string
- name: Authorization
in: header
description: The OAuth Token prefixed with "Bearer" and a space in between.
required: true
type: string
- name: country
in: header
description: Country of the client.
required: true
type: string
- name: region
in: header
description: region of the client(APAC/EMEA/NAM)
required: true
type: string
- in: body
name: request-body
required: true
schema:
$ref: '#/definitions/CreateVirtualCardRequest'
responses:
'200':
description: Create virtual card acknowledgement response
headers:
api-transactionId:
type: string
description: Citi commercial cards API tracking ID.
messageId:
type: string
description: >-
Unique ID of the API message sent. The messageId will be
provided back in the corresponding response. The ID can be used
for investigation and troubleshooting. The ID must be unique per
integration.
example: '0123456789012345678901234567'
schema:
$ref: '#/definitions/ImmediateAckResponse'
'400':
description: Invalid virtual card request
headers:
api-transactionId:
type: string
description: Citi commercial cards API tracking ID.
messageId:
type: string
description: >-
Unique ID of the API message sent. The messageId will be
provided back in the corresponding response. The ID can be used
for investigation and troubleshooting. The ID must be unique per
integration.
schema:
$ref: '#/definitions/CreateVirtualCardFailureResponse'
'401':
description: Unauthorized Modify Virtual Card request
schema:
$ref: '#/definitions/UnAuthorizedResponse'
'405':
description: Method Not Allowed
headers:
api-transactionId:
type: string
description: Citi commercial cards API tracking ID.
messageId:
type: string
description: >-
Unique ID of the API message sent. The messageId will be
provided back in the corresponding response. The ID can be used
for investigation and troubleshooting. The ID must be unique per
integration.
schema:
$ref: '#/definitions/CreateVirtualCardFailureResponse'
'500':
description: Internal Server Error
headers:
api-transactionId:
type: string
description: Citi commercial cards API tracking ID.
messageId:
type: string
description: >-
Unique ID of the API message sent. The messageId will be
provided back in the corresponding response. The ID can be used
for investigation and troubleshooting. The ID must be unique per
integration.
schema:
$ref: '#/definitions/CreateVirtualCardFailureResponse'
/vca/v1/modify:
post:
summary: Modify Virtual Card Accounts
operationId: update
description: >-
Modify a virtual card and set its associated spending controls, custom
reference data, and payment beneficiaries.
parameters:
- name: client_id
in: query
required: true
description: >-
This is your unique identifier shared during your CitiConnect API
onboarding. This is the same `client_id` used for OAuth token
generation
type: string
- name: Content-Type
in: header
description: Supports \"application/xml\" and \"application/json\".
required: true
type: string
- name: Authorization
in: header
description: The OAuth Token prefixed with "Bearer" and a space in between.
required: true
type: string
- name: country
in: header
description: Country of the client.
required: true
type: string
- name: region
in: header
description: region of the client(APAC/EMEA/NAM)
required: true
type: string
- in: body
name: request-body
required: true
schema:
$ref: '#/definitions/ModifyVirtualCardRequest'
responses:
'200':
description: Modify Virtual Card response
headers:
api-transactionId:
type: string
description: Citi commercial cards API tracking ID.
messageId:
type: string
description: >-
Unique ID of the API message sent. The messageId will be
provided back in the corresponding response. The ID can be used
for investigation and troubleshooting. The ID must be unique per
integration.
schema:
$ref: '#/definitions/ModifyVirtualCardResponse'
'400':
description: Invalid Modify Virtual Card request
headers:
api-transactionId:
type: string
description: Citi commercial cards API tracking ID.
messageId:
type: string
description: >-
Unique ID of the API message sent. The messageId will be
provided back in the corresponding response. The ID can be used
for investigation and troubleshooting. The ID must be unique per
integration.
schema:
$ref: '#/definitions/ModifyVirtualCardFailureResponse'
'401':
description: Unauthorized Modify Virtual Card request
schema:
$ref: '#/definitions/UnAuthorizedResponse'
'405':
description: Method Not Allowed
headers:
api-transactionId:
type: string
description: Citi commercial cards API tracking ID.
messageId:
type: string
description: >-
Unique ID of the API message sent. The messageId will be
provided back in the corresponding response. The ID can be used
for investigation and troubleshooting. The ID must be unique per
integration.
schema:
$ref: '#/definitions/ModifyVirtualCardFailureResponse'
'500':
description: Internal Server Error
headers:
api-transactionId:
type: string
description: Citi commercial cards API tracking ID.
messageId:
type: string
description: >-
Unique ID of the API message sent. The messageId will be
provided back in the corresponding response. The ID can be used
for investigation and troubleshooting. The ID must be unique per
integration.
schema:
$ref: '#/definitions/ModifyVirtualCardFailureResponse'
/vca/v1/cancel:
post:
summary: Cancel Virtual Card Accounts
operationId: cancel
description: Cancel a virtual card when it is no longer needed.
parameters:
- name: client_id
in: query
required: true
description: >-
This is your unique identifier shared during your CitiConnect API
onboarding. This is the same `client_id` used for OAuth token
generation
type: string
- name: Content-Type
in: header
description: Supports \"application/xml\" and \"application/json\".
required: true
type: string
- name: Authorization
in: header
description: The OAuth Token prefixed with "Bearer" and a space in between.
required: true
type: string
- name: country
in: header
description: Country of the client.
required: true
type: string
- name: region
in: header
description: region of the client(APAC/EMEA/NAM)
required: true
type: string
- in: body
name: request-body
required: true
schema:
$ref: '#/definitions/CancelVirtualCardRequest'
responses:
'200':
description: Cancel Virtual Card response
headers:
api-transactionId:
type: string
description: Citi commercial cards API tracking ID.
messageId:
type: string
description: >-
Unique ID of the API message sent. The messageId will be
provided back in the corresponding response. The ID can be used
for investigation and troubleshooting. The ID must be unique per
integration.
schema:
$ref: '#/definitions/CancelVirtualCardResponse'
'400':
description: Invalid Cancel Virtual Card request
headers:
api-transactionId:
type: string
description: Citi commercial cards API tracking ID.
messageId:
type: string
description: >-
Unique ID of the API message sent. The messageId will be
provided back in the corresponding response. The ID can be used
for investigation and troubleshooting. The ID must be unique per
integration.
schema:
$ref: '#/definitions/CancelVirtualCardFailureResponse'
'401':
description: Unauthorized Virtual Card request
schema:
$ref: '#/definitions/UnAuthorizedResponse'
'405':
description: Method Not Allowed
headers:
api-transactionId:
type: string
description: Citi commercial cards API tracking ID.
messageId:
type: string
description: >-
Unique ID of the API message sent. The messageId will be
provided back in the corresponding response. The ID can be used
for investigation and troubleshooting. The ID must be unique per
integration.
schema:
$ref: '#/definitions/CancelVirtualCardFailureResponse'
'500':
description: Internal Server Error
headers:
api-transactionId:
type: string
description: Citi commercial cards API tracking ID.
messageId:
type: string
description: >-
Unique ID of the API message sent. The messageId will be
provided back in the corresponding response. The ID can be used
for investigation and troubleshooting. The ID must be unique per
integration.
schema:
$ref: '#/definitions/CancelVirtualCardFailureResponse'
definitions:
CancelVirtualCardRequest:
type: object
properties:
vcaIds:
type: array
description: Unique Identifier for each Virtual card request.
example:
- 6143447
items:
type: number
virtualCardAccountNumber:
type: string
description: >-
The virtual card account number for which the modifications are
requested.
programId:
type: string
description: Unique ID of the company record defined in the virtual cards system.
example: '429777'
messageId:
type: string
description: >-
Unique ID of the API message sent. The messageId will be provided back
in the corresponding response. The ID can be used for investigation
and troubleshooting. The ID must be unique per integration.
example: '123456789012345678901234567890'
ErrorMessage:
type: object
properties:
errorCode:
type: string
enum:
- EVB0014
- EVB0010
- EVB0017
- EVB0018
- EVB0020
- EVB0030
- EVB0033
- EVB0042
- EVB0044
- EVB0032
- EVB0046
- EVB0050
- EVB0053
- EVB0061
- EVB0062
- EVB0063
- EVB0065
- EVB0066
- EVB0070
- EVB0071
- EVB0099
- EVB0106
- EVB0107
- EVB0110
- EVB0113
- EVB0114
- EVB0112
- EVB0120
- EVB0121
- EVB0125
- EVB0126
- EVB0133
- EVB0136
- EVB0137
- EVB0138
- EVB0140
- EVB0143
- EVB0151
- EVB0163
- EVB0170
- EVB0201
- EVB0202
- EVB0213
- EVB0214
- EVB0215
- EVB0217
- EVB0222
- EVB0224
- EVB0241
- EVB0243
- EVB0245
- EVB0251
- EVB0252
- EVB0244
- EVB0246
- EVB0248
- EVB0250
- EVB0041
- EVB0255
- EVB0256
- EVB0257
- EVB0258
- EVB0025
- EVB0260
- EVB0261
- EVB0262
- EVB0264
- EVB0265
- EVB0267
- EVB0270
- EVB0271
- EVB0272
- EVB0273
- EVB0290
- EVB0350
- EVB0351
- EVB0352
- EVB0353
- EVB0354
- EVB0355
- EVB0356
- EVB0359
- EVB0360
- EVB0361
- EVB0362
- EVB0363
- EVB0364
- EVB0365
- EVB0366
- EVB0367
- EVB0368
- EVB0369
- EVB0370
- EVB0371
- EVB0378
- EVB0381
- EVB0401
- EVB0404
- EVB0430
- EVB0431
- EVB0432
- EVB0435
- EVB0436
- EVB0437
- EVB0438
- EVB0406
- EVB0440
- EVB0441
- EVB0530
- EVB0607
- EVB0211
- EVB0212
- EVB0218
- EVB0219
- EVB0230
- EVB0231
- EVB0281
- EVB0232
- EVB0233
- EVB0234
- EVB0235
- EVB0547
- EVB0600
- EVB0601
- EVB0602
- EVB0609
- EVB0610
- EVB0611
- EVB0612
- EVB0613
- EVB0614
- EVB0615
- EVB0616
- EVB0618
- EVB0619
- EVB0620
- EVB0621
- EVB0604
- EVB0605
- EVB0606
- EVB502
- EVB0254
- EVB0236
- EVB0237
- EVB0238
- EVB0903
- EVB1300
- EVB1301
- EVB1302
- EVB1303
- EVB1304
- EVB1305
- EVB1306
- EVB1307
- EVB1308
- EVB1309
- GRC0001
- GRC0002
- GRC0003
- GRC0004
- GRC0005
- GRC0006
- GRC0007
- GRC0009
- GRC0011
- GRC0012
- GRC0014
- VCCE0001
- VCCV0002
- VCCV0003
- VCCV0004
- VCCV0005
- VCCV0006
- VCCV0007
- VCCV0008
- VCCV0009
- VCCV0010
- VCCV0011
- VCCV0012
- VCCV0013
- VCCV0014
- VCCV0015
- VCCV0016
- VCCV0017
- VCCV0018
- VCCV0019
- VCCV0020
- VCCV0021
- VCCV0022
- VCCV0023
- VCCV0024
- VCCV0025
- VCCV0026
- VCCV0027
- VCCV0028
- VCCV0029
- VCCV0030
- VCCV0031
- VCCV0032
- VCCV0033
- VCCV0034
- VCCV0035
- VCCV0036
- VCCV0037
- VCCV0038
errorDescription:
type: string
description: >
The error description that corresponds to error code when there is any
error occurred while retrieving the trsansaction.
* `EVB0010` - vcaId size must be between 1 and 19 digits
* `EVB0014` - vcaId value must be a numeric
* `EVB0017` - vcaID is empty or null
* `EVB0018` - No previously approved vcaID is present
* `EVB0020` - vcaID and programId combination is not present
* `EVB0030` - FundingSourceId cannot be modified
* `EVB0033` - FundingSourceId is mandatory
* `EVB0042` - fundingSourceName is mandatory
* `EVB0044` - Funding source Id|Funding source Name|Template Id is not required for cancel request
* `EVB0032` - fundingSourceId value must be a numeric
* `EVB0046` - FundingSourceName cannot be modified
* `EVB0050` - paymentBeneficiaryId cannot be modified
* `EVB0053` - paymentBeneficiaryEmails must be alphanumeric and have value with proper email format: '.' and '@'
* `EVB0061` - expiryDate length exceeds max length allowed of: 6 characters
* `EVB0062` - TimeZone is mandatory if any of the following controls are set to true: Validity Period, Aging Velocity (MasterCard only), Curfew Control, Time of Day Control
* `EVB0063` - timeZone field has an invalid UTC offset time zone format
* `EVB0065` - currencyCode is mandatory
* `EVB0066` - ClientId and programId combination is not valid
* `EVB0070` - templateId cannot be modified
* `EVB0071` - templateId cannot be null
* `EVB0099` - currencyCode length allowed is: 3 digits
* `EVB0106` - minAmount is mandatory if enableAmountRangeControl is true
* `EVB0107` - maxAmount is mandatory if enableAmountRangeControl is true
* `EVB0110` - startTime value must have valid format: HH:MM - H (0,1,2) | H (0-9) : M (0-5) | M (0-9)
* `EVB0113` - startTime is mandatory if CurfewControl is true
* `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)
* `EVB0120` - validityEndDate value must have valid format: YYYY-MM-DD
* `EVB0121` - validityStartDate value must have valid format: YYYY-MM-DD
* `EVB0125` - validityStartDate is mandatory if ValidityPeriodControl is true
* `EVB0126` - validityEndDate is mandatory if ValidityPeriodControl is true
* `EVB0133` - VelocityControlType-periodType is mandatory.
* `EVB0136` - currencyType is mandatory
* `EVB0137` - spendVelocityControl-cumulativeSpendLimit is mandatory
* `EVB0138` - spendVelocityControl-maxAuth is mandatory
* `EVB0140` - periodType length exceeds max length allowed of: 1 character
* `EVB0143` - periodType is mandatory
* `EVB0151` - Cannot add any new controls to a previosuly created VCA
* `EVB0163` - authorizationHoldDays is mandatory if agingVelocityControl is true
* `EVB0170` - amountLimit is mandatory if TransactionLimitControl is true
* `EVB0201` - We were unable to process your request. Please try again, or contact Citi support if you have any further questions or comments.
* `EVB0202` - We were unable to process your request. Please try again, or contact Citi support if you have any further questions or comments
* `EVB0213` - virtualCardAccountNumber is Invalid
* `EVB0214` - Validity Period Control must be set to true and validityStartDate and validityEndDate are mandatory if periodType = 3
* `EVB0215` - Validity Period Control must be set to true and validityStartDate and validityEndDate are mandatory if periodType = C
* `EVB0217` -validityStartDate cannot be a past date
* `EVB0222` - messageId cannot be null
* `EVB0224` - messageId size must be between 28 and 36 characters
* `EVB0241` - Transaction Not Found for the respective client id and message id on grace.
* `EVB0243` - Program Id is not present
* `EVB0245` - currencyCode value must be numeric [0-9]
* `EVB0251` - ExpiryDate is not required
* `EVB0252` - messageId should be alphanumeric without special characters
* `EVB0041` - FundingSourceName size must be between 1 and 100 characters
* `EVB0244` - TemplateId Should be a Valid Long Value
* `EVB0246` - paymentBeneficiaryId is mandatory
* `EVB0248` - paymentBeneficiaryId Should be a Valid Long Value
* `EVB0250` - FundingSourceName is not required
* `EVB0255` - customReference size should be between 1 and 29
* `EVB0256` - customReferenceValue should be between 1 and 100 characters
* `EVB0257` - vcaId should not be null or empty
* `EVB0258` - customReferenceLabel should be between 1 and 50 characters
* `EVB00259`- expiryDate must have format: MMYYYY
* `EVB0260` - cardAcceptorId is mandatory if Merchant Control ID is true
* `EVB0261` - cardAcceptorId length exceeds max length allowed of 15 character
* `EVB0262` - weekdaysEffective is mandatory if enableCurfewControl is true
* `EVB0264` - spendVelocityControl is Mandatory
* `EVB0265` - mccGrouping cannot be null or empty
* `EVB0267` - ProgramId should be alphanumeric without special characters
* `EVB0270` - Not allowed to modify when control indicator is disabled
* `EVB0271` - ExpiryDate is mandatory
* `EVB0272` - Both Aging and Spend Velocity Control cannot be enabled
* `EVB0273` - Either Aging or Spend Velocity Control should be enabled
* `EVB0290` - Bulk Cancellation is not Allowed for visa
* `EVB0350` - virtualCardAccountNumber length should be 16 characters
* `EVB0351` - virtualCardAccountNumber is Mandatory
* `EVB0352` - FundingSourceId is Invalid. FundingSourceId value should be a valid long value and size must be between 1 and 19 digits
* `EVB0352` - FundingSourceId is Invalid. FundingSourceId value should be alphanumeric and size must be between 1 and 19 digits
* `EVB0353` - customReferenceValue should be between 1 and 80 characters
* `EVB0354` - AmountRangeControl-minAmount length exceed max length allowed is: 14 characters
* `EVB0355` - AmountRangeControl-maxAmount length exceed max length allowed is: 14 characters
* `EVB0356` - minAmount & maxAmount values must be a numeric positive value with a maximum of 2 decimals digits
* `EVB0359` - programId value must be between 1 and 25 digits
* `EVB0360` - Invalid JSON input
* `EVB0361` - Invalid JSON input
* `EVB0362` - Invalid maxAuth format. maxAuth value cannot exceed 8 digits
* `EVB0363` - cumulativeSpendLimit max field length is 12 digits with 10 digits to the left of the decimal and 2 digits to the right of the decimal
* `EVB0364` - transactionLimitControl-amount value must be a numeric positive value with a maximum of 2 decimals digits
* `EVB0365` - periodType is mandatory if enableSpendVelocity is true
* `EVB0366` - resetDay value must an integer between 1-28
* `EVB0367` - startTime is mandatory if Time Of Day Control is true
* `EVB0368` - \"weekdayEffective must have value which matches regex: SUN|MON|TUE|WED|THU|FRI|SAT\"
* `EVB0369` - cumulativeSpendLimit is mandatory if Aging Velocity Control is set to true
* `EVB0370` - countryCodes is required if Geography Control is set to true
* `EVB0371` - allowed field is required if Geography Control is set to true
* `EVB0378` - allowed field is required if Merchant ID Control is set to true
* `EVB0381` - AmountRangeControl-minAmount is greater than maxAmount
* `EVB0401` - The value is not present in the predefined list for custom field named field name
* `EVB0404` - The value has non numeric characters for custom field named: [field]
* `EVB0430` - The Amount must be greater than or equal to the Cumulative Limit
* `EVB0431` - The Amount must be less than the max amount range
* `EVB0432` - The Amount Range Control was missing from the request
* `EVB0435` - There was a problem retrieving the RCN Data with rcnId : [rcnID]
* `EVB0436` - There was a problem assigning rules to your VCN Request
* `EVB0437` - Invalid date {date given}.[valid date format YYYY-MM-DD]
* `EVB0438` - From date should be before to date.
* `EVB0406` - The Validity Control was missing from the request
* `EVB0440` - There was a problem retrieving the RCN Data with rcnId:
* `EVB0441` - An invalid velocity control field exists in the request. field name:
* `EVB0442` - There was a problem getting the Card Image Data
* `EVB0443` - There was a problem retrieving the RCN Data with rcnId :
* `EVB0427` - There was a problem getting the DataSources for the given issuer
* `EVB0445` - There was a problem getting the issuer id for the company id provided.
* `EVB0446` - There was a problem getting RCN details.
* `EVB0447` - There was a problem getting the custom data fields for the given request id
* `EVB0448` - There was a problem getting the supplier email address by a supplier id
* `EVB0448` - There was a problem getting the supplier email address by a supplier id
* `EVB0449` - There was a problem getting the suppliers for the company ID provided
* `EVB0450` - The Merchant Amount Control was missing from the request
* `EVB0439` - An invalid geography control field exists in the request. field name:
* `EVB0452` - Negate is the only supported attribute; Merchant and Acquirer details should be specified in Supplier Setup
* `EVB0453` - The purchase request rules must have unique rule names
* `EVB0454` - Invalid or inactive supplier.
* `EVB0455` - An invalid travel control field exists in the request. field name:
* `EVB0456` - An invalid time of day control field exists in the request. field name:
* `EVB0457` - An invalid transaction limit control field exists in the request. field name:
* `EVB0426` - An invalid validity control field exists in the request. field name:
* `EVB0441` - An invalid velocity control field exists in the request. field name:
* `EVB0459` - The specified supplier has not been configured to use the Merchant ID control
* `EVB0460` - Cannot have multiple velocity controls in the request with the same period.
* `EVB0461` - A request submitter is not valid user
* `EVB0462` - There was not a Purchase Template with the given Id, Id:
* `EVB0444` - The request's Purchase Template is not associated with the active auto approve purchase group
* `EVB0464` - There was a problem saving the custom data fields for the allocate vcn request
* `EVB0465` - There was a problem getting the Travel Agency Detail for the request
* `EVB0466` - There was a problem getting the Tolerances for the given corpId
* `EVB0470` - There was a problem getting the Template CDF to get the order
* `EVB0468` - There was a problem getting the Air Detail for the request
* `EVB0469` - There was a problem getting the Vehicle Rental Detail for the request
* `EVB0472` - There was a problem getting the companies for the given issuer id and corp number
* `EVB0471` - There was a problem getting the supplier by a supplier name
* `EVB0477` - There was a problem getting the Lodging Summary for the request
* `EVB0473` - There was a problem getting the VCN Request
* `EVB0474` - There was a problem getting the Rail Detail for the request
* `EVB0475` - There was a problem getting the CDF to get the order
* `EVB0476` - There was a problem getting the real cards for the company entered
* `EVB0524` - Date range should be same month.
* `EVB0478` - There was a problem in deleting a vcn.
* `EVB0479` - The maximum number of records has been exceeded.
* `EVB0480` - There was a problem TRYING TO Sync Card Currency
* `EVB0481` - There was a problem saving the custom data fields for the update request
* `EVB0482` - There was a problem saving the vcn request
* `EVB0483` - There was a problem updating the vcn request
* `EVB0484` - Invalid Expiry Date Requested
* `EVB0485` - Unable to correctly analyze a purchase request which did not have required controls present:
* `EVB0528` - There was a problem allocating the vcn
* `EVB0486` - Purchase Request(s) could not be approved
* `EVB0487` - Purchase Request(s) could not be canceled
* `EVB0513` - Message ID is not unique.
* `EVB0516` - Request could not be processed successfully.
* `EVB0515` - Invalid Buyer
* `EVB0516` - Request could not be processed successfully.
* `EVB0517` - Invalid Web Service Method
* `EVB0518` - Proxy number provided in the request is not active.
* `EVB0519` - Invalid visa account number
* `EVB0520` - Proxy number length should be between 1 and 19
* `EVB0521` - Proxy number contains invalid characters
* `EVB0522` - Start Date should not be more than 10 characters
* `EVB0523` - Start Date is invalid. Valid date format is YYYY-MM-DD
* `EVB0525` - End Date is mandatory
* `EVB0526` - End Date should not be more than 10 characters
* `EVB0527` - End Date is invalid. Valid date format is YYYY-MM-DD
* `EVB0528` - End Date cannot be a past date
* `EVB0529` - Rule Code is not valid
* `EVB516` - cumulativeSpendLimit value must be numeric
* `EVB517` - cumulativeSpendLimit value must be numeric
* `EVB0530` - Sequence number should contain only numbers.
* `EVB0531` - OverrideCode contains invalid characters
* `EVB0532` - OverrideCode should not be more than 33 characters.
* `EVB0531` - OverrideValue contains invalid characters
* `EVB0533` - OverrideValue should not be more than 10 characters
* `EVB0559` - End Date should not be less than Start Date
* `EVB0535` - Sequence number should be within 0 to 999 range.
* `EVB0536` - Rule Code is mandatory. Please provide valid rule code
* `EVB0537` - Rule Code cannot contain special characters. Please provide valid rule code
* `EVB0538` - Override code is mandatory
* `EVB0539` - Override Value is mandatory
* `EVB0540` - Action is mandatory. Action code should be A/U/D.
* `EVB0560` - Invalid Action. Action code should be A/U/D.
* `EVB0542` - Request could not be processed successfully. Failed to generate Token.
* `EVB0543` - Add payment control could not be processed successfully.
* `EVB0544` - Account number should be blank.
* `EVB0545` - Atlease one requisition rule is mandaotry.
* `EVB0546` - Atlease one override rule is mandatory.
* `EVB0547` - A cancelled VCA cannot be modified or cancelled again
* `EVB0548` - equence number is mandatory
* `EVB0549` - Account Number is Mandatory
* `EVB0550` - Number of cards count should be 1.
* `EVB0551` - Start Date is Mandatory.
* `EVB0552` - The number of accounts you have requested exceeds the maximum allowed limit
* `EVB0553` - Overrides rule size exceeds maximum Limit
* `EVB0554` - The pseudo account type set for the SUA proxy is not matching the pseudo account type set up for the buyer.
* `EVB0555` - Currency code passed in the request is not configured as one of the allowed currency for the buyer.
* `EVB0556` - The startRange and endRange overrides are mandatory for the Other MCG rule.
* `EVB0557` - Rules can have a maximum of 25 override values
* `EVB0558` - Atleast one RequisitionDetail is mandatory
* `EVB0607` - At least one spend control is mandatory
* `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
* `EVB0212` - validityEndDate invalid format. MM value must be less than or equal to 12 and DD value must be less than or equal to 31
* `EVB0218` - validityEndDate cannot be a past date
* `EVB0219` - expiryDate month and year cannot be a past or current date
* `EVB0230` - Invalid contryCode format. countryCode value cannot exceed 3 characters
* `EVB0231` - maxAuth is mandatory if enableSpendVelocityControl is set to True
* `EVB0281` - maxAuth must be a valid long value with a maximum of 10 digits
* `EVB0232` - weekdayEffective is mandatory if Time Of Day Control is true
* `EVB0233` - endTime is mandatory if Time Of Day Control is true
* `EVB0234` - endTime and startTime are mandatory if Time Of Day Control is set for a new weekdayEffective
* `EVB0235` - startTime value cannot exceed the requested endTime value
* `EVB0600` - validityStartDate should be before validityEndDate
* `EVB0601` - Allowed is the only supported attribute; Merchant and Acquirer details should be specified in Supplier Setup
* `EVB0602` - Invalid or inactive payment beneficiary
* `EVB0609` - Geography control-countryCodes cannot be populated if Geography control is true
* `EVB0610` - Invalid periodType value. periodType can contain a value of either D, M, W, Q, Y, or C
* `EVB0611` - Invalid periodType value. periodType can contain a value of either 1, 2, or 3
* `EVB0612` - resetDay is mandatory if periodType = 1
* `EVB0613` - Geography control-allowed cannot be populated if Geography control is true
* `EVB0614` - Invalid startTime or endTime value for curfew control. startTime and endTime value must have valid format: HH:MM - H (0,1,2) | H (0-9) : M (0) | M (0)
* `EVB0615` - No time zone found for UTC value provided in timeZone field
* `EVB0616` - validityPeriodControl is Mandatory
* `EVB0618` - Amount Range Control minAmount field length is 12 digits with 10 digits to the left of the decimal and 2 digits to the right of the decimal
* `EVB0619` - Amount Range Control maxAmount field length is 12 digits with 10 digits to the left of the decimal and 2 digits to the right of the decimal
* `EVB0620` - transactionLimitControl-amount value must be a numeric positive whole number with a maximum of 7 digits
* `EVB0621` - authorizationHoldDays must be positive long value with a maximum of 4 digits
* `EVB0604` - fundingSourceId provided in the request is not active.
* `EVB0605` - fundingSourceId length should be between 1 and 19
* `EVB0606` - fundingSourceId contains invalid characters
* `EVB502` - virtualCardAccountNumber is Invalid
* `EVB0254` - mccGrouping should not contain multiple values
* `EVB0236` - Invalid contryCode, countryCode doesn't exist
* `EVB0237` - The date specified in validityStartDate does not exist
* `EVB0238` - The date specified in validityEndDate does not exist
* `EVB0903` - Atleast one Spend velocity control is required, When enableSpendVelocity is true
* `EVB1300` - Amount range control is included in the request, but this control is not configured within the Virtual Card Purchase Template that is included in the request. Please configure this control in the Purchase Template
* `EVB1301` - Curfew control is included in the request, but this control is not configured within the Virtual Card Purchase Template that is included in the request. Please configure this control in the Purchase Template
* `EVB1302` - Geography control is included in the request, but this control is not configured within the Virtual Card Purchase Template that is included in the request. Please configure this control in the Purchase Template
* `EVB1303` - Merchant amount control is included in the request, but this control is not configured within the Virtual Card Purchase Template that is included in the request. Please configure this control in the Purchase Template
* `EVB1304` - Merchant ID control is included in the request, but this control is not configured within the Virtual Card Purchase Template that is included in the request. Please configure this control in the Purchase Template
* `EVB1305` - Time of day control is included in the request, but this control is not configured within the Virtual Card Purchase Template that is included in the request. Please configure this control in the Purchase Template
* `EVB1306` - Transaction limit control is included in the request, but this control is not configured within the Virtual Card Purchase Template that is included in the request. Please configure this control in the Purchase Template
* `EVB1307` - Validity period control is included in the request, but this control is not configured within the Virtual Card Purchase Template that is included in the request. Please configure this control in the Purchase Template
* `EVB1308` - Aging velocity control is included in the request, but this control is not configured within the Virtual Card Purchase Template that is included in the request. Please configure this control in the Purchase Template
* `EVB1309` - Velocity control is included in the request, but this control is not configured within the Virtual Card Purchase Template that is included in the request. Please configure this control in the Purchase Template
* `GRC0001` - We have encountered an error and couldn't 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 couldn't 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 couldn't 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 couldn't 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 couldn't receive your request. Please try again, or contact Citi support if you have any further questions or comments
* `VCCE0001` - invalid customReferenceValue for customReferenceLabel Entity Type. It can contain a value of either E or I.
* `VCCV0002` - customReferenceValue is required for customReferenceLabel Last Name.
* `VCCV0003` - invalid customReferenceValue for customReferenceLabel Last Name.
* `VCCV0004` - customReferenceValue is required for customReferenceLabel Primary Address Line 1.
* `VCCV0005` - customReferenceValue for customReferenceLabel = Primary Address Line 1 cannot exceed 35 characters.
* `VCCV0006` - invalid customReferenceValue for customReferenceLabel Primary Address Line 1.
* `VCCV0007` - customReferenceValue for customReferenceLabel = Primary Address Line 2 cannot exceed 35 characters.
* `VCCV0008` - invalid customReferenceValue for customReferenceLabel Primary Address Line 2.
* `VCCV0009` - customReferenceValue is required for customReferenceLabel ZIP code.
* `VCCV0010` - customReferenceValue for customReferenceLabel = ZIP code cannot below 1 characters.
* `VCCV0011` - customReferenceValue for customReferenceLabel = ZIP code cannot exceed 35 characters.
* `VCCV0012` - invalid customReferenceValue for customReferenceLabel ZIP code.
* `VCCV0013` - customReferenceValue is required for customReferenceLabel City.
* `VCCV0014` - customReferenceValue for customReferenceLabel = City cannot exceed 35 characters.
* `VCCV0015` - invalid customReferenceValue for customReferenceLabel City.
* `VCCV0016` - customReferenceValue is required for customReferenceLabel State Or Province.
* `VCCV0017` - customReferenceValue for customReferenceLabel = State Or Province cannot exceed 35 characters.
* `VCCV0018` - invalid customReferenceValue for customReferenceLabel State Or Province.
* `VCCV0019` - customReferenceValue is required for customReferenceLabel Address Country.
* `VCCV0020` - customReferenceValue for customReferenceLabel = Address Country cannot below 3 characters.
* `VCCV0021` - customReferenceValue for customReferenceLabel = Address Country cannot exceed 3 characters.
* `VCCV0022` - invalid customReferenceValue for customReferenceLabel Address Country.
* `VCCV0023` - customReferenceValue is required for customReferenceLabel Country of Incorporation or Nationality.
* `VCCV0024` - customReferenceValue for customReferenceLabel = Country of Incorporation or Nationality cannot below 3 characters.
* `VCCV0025` - customReferenceValue for customReferenceLabel = Country of Incorporation or Nationality cannot exceed 3 characters.
* `VCCV0026` - invalid customReferenceValue for customReferenceLabel Country of Incorporation or Nationality.
* `VCCV0027` - customReferenceValue is required for customReferenceLabel PI Client Name.
* `VCCV0028` - invalid customReferenceValue for customReferenceLabel PI Client Name.
* `VCCV0029` - customReferenceValue is required for customReferenceLabel First Name.
* `VCCV0030` - invalid customReferenceValue for customReferenceLabel First Name.
* `VCCV0031` - customReferenceValue is required for customReferenceLabel ID Number.
* `VCCV0032` - invalid customReferenceValue for customReferenceLabel ID Number.
* `VCCV0033` - customReferenceValue is required for customReferenceLabel Passport Number.
* `VCCV0034` - invalid customReferenceValue for customReferenceLabel Passport Number.
* `VCCV0035` - customReferenceValue is required for customReferenceLabel Date of Birth.
* `VCCV0036` - customReferenceValue for customReferenceLabel = Date of Birth is not in valid format.
* `VCCV0037` - customReferenceValue is required for customReferenceLabel Place of Birth.
* `VCCV0038` - invalid customReferenceValue for customReferenceLabel Place of Birth.
CancelVirtualCardResponse:
type: object
properties:
programId:
type: string
description: Unique ID of the company record defined in the virtual cards system.
example: '429777'
messageId:
type: string
description: >-
Unique ID of the API message sent. The messageId will be provided back
in the corresponding response. The ID can be used for investigation
and troubleshooting. The ID must be unique per integration.
example: '0123456789012345678901234567'
vcaResponse:
type: array
items:
$ref: '#/definitions/VcaResponse'
VcaResponse:
type: object
properties:
programId:
type: string
description: Unique ID of the company record defined in the virtual cards system.
vcaId:
type: number
description: A reference number that uniquely identifies the virtual card account.
example: 5070616
CancelVirtualCardFailureResponse:
type: object
properties:
programId:
type: string
description: Unique ID of the company record defined in the virtual cards system.
messageId:
type: string
description: >-
Unique ID of the API message sent. The messageId will be provided back
in the corresponding response. The ID can be used for investigation
and troubleshooting. The ID must be unique per integration.
vcaResponse:
type: array
items:
$ref: '#/definitions/VcaFailureResponse'
VcaFailureResponse:
type: object
properties:
programId:
type: string
description: Unique ID of the company record defined in the virtual cards system.
vcaId:
type: number
description: A reference number that uniquely identifies the virtual card account.
errorMessage:
type: array
items:
$ref: '#/definitions/ErrorMessage'
CustomReference:
type: object
properties:
customReferenceValue:
type: string
description: >-
Specifies the label of a custom reference field.Mastercard: All field
labels included in the template used for this virtual card account
request should be included.
customReferenceLabel:
type: string
description: "Specifies the value of a custom reference field. Mastercard: 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.\n`For Entity Customer:` \n\n* `VCA PI Identifier` - `Optional`: Defulted as 'MC_VCAPI'. \n* `Entity Type` - `Mandatory`: Indicates whether the VCA is being created for an Entity or an Individual. Possible values: 'E' - Entity.\n* `Last Name` - `Mandatory`: Entity Name and the length should not exceed 80 characters.\n* `Primary Address Line 1` - `Mandatory`: Individual /Business street address line 1 of the applicant. Length should not exceed 35 characters.\n* `Primary Address Line 2` - `Optional`: Individual /Business street address line 2 of the applicant. The length should not exceed 35 characters.\n* `ZIP code` -`Mandatory`: \tIndividual /business address post code of the applicant. The length should not exceed 35 characters.\n* `City` - `Mandatory`: Individual /business address City of the applicant. The length should not exceed 35 characters.\n* `State Or Province` - `Mandatory`: Individual /business address State or Province of the applicant. The length should not exceed 35 characters.\n* `Address Country` - `Mandatory`: 3-byte ISO country code. The length should not exceed 3 characters.\n* `Country of Incorporation or Nationality` - `Mandatory`: 3-byte ISO country code. The length should not exceed 3 characters.\n* `PI Client Name` - `Mandatory`: \t Payment Intermediatory Client Name and the length should not exceed 2 characters.\n\n\n`For Individual/Personal Customer:` \n* `VCA PI Identifier` - `Optional`: Defulted as 'MC_VCAPI'. \n* `Entity Type` - `Mandatory`: Indicates whether the VCA is being created for an Entity or an Individual.
Possible values: 'E' - Entity.\n* `Last Name` - `Mandatory`: Entity Name and the length should not exceed 80 characters.\n* `Primary Address Line 1` - `Mandatory`: Individual /Business street address line 1 of the applicant. Length should not exceed 35 characters.\n* `Primary Address Line 2` - `Optional`: Individual /Business street address line 2 of the applicant. The length should not exceed 35 characters.\n* `ZIP code` -`Mandatory`: \tIndividual /business address post code of the applicant. The length should not exceed 35 characters.\n* `City` - `Mandatory`: Individual /business address City of the applicant. The length should not exceed 35 characters.\n* `State Or Province` - `Mandatory`: Individual /business address State or Province of the applicant. The length should not exceed 35 characters.\n* `Address Country` - `Mandatory`: 3-byte ISO country code. The length should not exceed 3 characters.\n* `Country of Incorporation or Nationality` - `Mandatory`: 3-byte ISO country code. The length should not exceed 3 characters.\n* `PI Client Name` - `Mandatory`: \t Payment Intermediatory Client Name and the length should not exceed 2 characters.\n\n* `First Name` - `Mandatory` : First name of Individual and the length should not exceed 80 characters.\n* `ID Number` - `Mandatory` : Value of ID - The length should not exceed 80 characters.\n\n `For Example`: Drivers License Number, SSN, TIN, Alien Registration Number, National Id, etc.\n\n* `Passport Number` - `Mandatory` : Passport ID. The length should not exceed 80 characters.\n* `Date of Birth` - `Mandatory` : `Format`: YYYY-MM-DD. The length should not exceed 80 characters.\n* `Place of Birth` - `Mandatory` : The length should not exceed 80 characters."
TimeOfDay:
type: object
properties:
startTime:
type: string
description: >-
Specifies the start time from which the virtual card account can be
used on the particular day specified in weekDaysEffective.
endTime:
type: string
description: >-
Specifies the end time until which the virtual card account can be
used on the particular day specified in weekDaysEffective.
weekdayEffective:
type: string
description: Specifies the day applicable to the start and end times defined.
MerchantIdResponse:
type: object
properties:
allowed:
type: boolean
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
cardAcceptorId:
type: string
description: >-
Specifies the Card Acceptor ID that should be allowed / disallowed
when transacting with the virtual card
merchantIds:
type: array
items:
$ref: '#/definitions/MerchantId'
MerchantId:
type: object
properties:
merchantId:
type: string
description: >-
Specifies the Merchant ID that should be allowed / disallowed when
transacting with the virtual card. Must always be provided in
combination with a Acquirer ID.
acquirerId:
type: integer
format: int64
description: >-
Specifies the Acquirer ID that should be allowed / disallowed when
transacting with the virtual card. Must always be provided in
combination with a Merchant ID.
MerchantIdRequest:
type: object
properties:
allowed:
type: boolean
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
cardAcceptorId:
type: string
description: >-
Specifies the Card Acceptor ID that should be allowed / disallowed
when transacting with the virtual card
SpendVelocityResponse:
type: object
properties:
maxAuth:
type: number
format: long
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. Set to 0, if unlimited
authorizations should be allowed.
example: 5,
cumulativeSpendLimit:
type: number
format: bigdecimal
description: Limits the overall amount spend on the virtual card account.
example: 1000,
periodType:
type: string
description: Period for which the control values are valid before they reset
example: D
availableBalance:
type: number
description: The remaining balance available to spend on the virtual card.
periodEndDate:
type: string
description: End date of the current period based on the periodType selected.
SpendVelocityRequest:
type: object
properties:
maxAuth:
type: number
format: long
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. Set to 0, if unlimited
authorizations should be allowed.
example: 5,
cumulativeSpendLimit:
type: number
format: bigdecimal
description: Limits the overall amount spend on the virtual card account.
example: 2000,
periodType:
type: string
description: Period for which the control values are valid before they reset
example: C
CurfewTime:
type: object
properties:
startTime:
type: string
description: >-
Specifies the start time from when the card can be used each of the
specified days.
`Visa`: 24-hour format of HH:MM and the minutes
digit must be populated with zero only
example: '12:30'
endTime:
type: string
description: >-
Specifies the end time until which the card can be used each of the
specified days.
`Visa`: 24-hour format of HH:MM and the minutes
digit must be populated with zero only
example: '13:30'
weekdaysEffective:
type: array
description: Specifies the day applicable to the start and end times defined.
items:
type: string
example:
- MON
- TUE
- FRI
CreateVirtualCardRequest:
type: object
properties:
fundingSourceId:
type: string
description: >-
Unique identifier of the funding source to which the virtual card
rolls up
example: 8675309,
fundingSourceName:
type: string
description: Descriptive name of the real card to which the virtual card rolls up
example: CITIBANK NA SINGAPORE VCN 2
programId:
type: string
description: Unique ID of the company record defined in the virtual cards system
example: 211212,
messageId:
type: string
description: >-
Unique ID of the API message sent. The messageId will be provided back
in the corresponding response. The ID can be used for investigation
and troubleshooting. The ID must be unique per integration
example: '1234567890123456789012345678'
mccGrouping:
type: string
description: Limits authorizations to defined Merchant Category Codes.
example: All MCCs
getCardImage:
type: boolean
description: >-
* Specifies whether cardImage field needs to be included in the
response or not.
* True = cardImage field will be sent in the response
* False = cardImage field will not be sent in the response.
* `Optional field` if not included, cardImage will be sent in the
response.
currencyCode:
type: string
description: Currency Code in which VCA amounts are expressed
example: '008'
currencyType:
type: string
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.
example: B
timeZone:
type: string
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.
example: UTC+02:00
paymentBeneficiaryId:
type: number
description: >-
Uniquely identifies the payment beneficiary for which the virtual card
is created
example: 18690,
paymentBeneficiaryEmails:
type: string
description: >-
Lists the email addresses to which the virtual card details should be
sent to.In order for emails to get delivered, the following two
settings must be enabled in the VCA system:1. Allow VCN details to be
emailed to this supplier2. Allow VCN requestor to manually enter a new
email address when requesting a VCN
example: nagara.harikrishnareddy@citi.com
customReference:
type: array
items:
$ref: '#/definitions/CustomReference'
templateId:
type: number
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.
example: 337561,
expiryDate:
type: string
description: 'Expiry Date of the virtual card account. '
cumulativeSpendLimit:
type: number
format: bigdecimal
description: Limits the overall amount spend on the virtual card account.
enableSpendVelocity:
type: boolean
description: >-
Limits the frequency and total cumulative amount of authorizations
performed on the VCA within a specified period. Mastercard: The
control is mandatory unless Aging Velcotiy Control is used. This
control cannot be used in combination with the Aging Velocity
Control.Visa: Spend Velocity Control is mandatory.
example: true,
spendVelocity:
type: array
items:
$ref: '#/definitions/SpendVelocityRequest'
example: maxAuth
enableValidityPeriodControl:
type: boolean
description: 'Limits authorization activity to a specific time period. '
example: true,
validityStartDate:
type: string
description: >-
Identifies the date from which the virtual card account can be used
for transactions.
example: '2020-09-18'
validityEndDate:
type: string
description: >-
Identifies the date until which the virtual card account can be used
for transactions.
example: '2020-09-23'
enableAmountRangeControl:
type: boolean
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.
example: true,
maxAmount:
type: number
format: bigdecimal
description: Identifies the maximum allowed transaction amount.
minAmount:
type: number
format: bigdecimal
description: Identifies the minimum allowed transaction amount.
enableTransactionLimitControl:
type: boolean
description: Limits individual transactions to a maximum amount.
amountLimit:
type: number
format: bigdecimal
description: Identifies the maximum allowed transaction amount.
enableCurfewControl:
type: boolean
description: >-
Limits authorization activity to a single time period for each day
selected.
curfewTime:
$ref: '#/definitions/CurfewTime'
enableTimeOfDayControl:
type: boolean
description: Limits authorization request to defined time periods each day
timeOfDay:
type: array
items:
$ref: '#/definitions/TimeOfDay'
enableAgingVelocityControl:
type: boolean
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.
authorizationHoldDays:
type: number
format: long
description: >-
Identifies the number of days after which an authorization gets aged
off if no matching clearing record was received.
enableGeographyControl:
type: boolean
description: Limits authorization requests to a defined geographic location.
countryCodes:
type: array
description: Defines the merchant country in which the VCA can be used.
items:
type: string
allowed:
type: boolean
description: Indicate whether the values in countryCode are allowed or disallowed
enableMerchantIdControl:
type: boolean
description: >-
Limits authorizations to a particular merchant using the Merchant ID
and Acquirer ID (Mastercard) or Card Acceptor ID (Visa).
merchantId:
$ref: '#/definitions/MerchantIdRequest'
ModifyVirtualCardRequest:
type: object
properties:
vcaId:
type: number
description: 'A reference number that uniquely identifies the virtual card account. '
fundingSourceId:
type: string
description: >-
Unique identifier of the funding source to which the virtual card
rolls up
fundingSourceName:
type: string
description: Descriptive name of the real card to which the virtual card rolls up
programId:
type: string
description: Unique ID of the company record defined in the virtual cards system
messageId:
type: string
description: >-
Unique ID of the API message sent. The messageId will be provided back
in the corresponding response. The ID can be used for investigation
and troubleshooting. The ID must be unique per integration
mccGrouping:
type: string
description: Limits authorizations to defined Merchant Category Codes.
getCardImage:
type: boolean
description: >-
* Specifies whether cardImage field needs to be included in the
response or not.
* True = cardImage field will be sent in the response
* False = cardImage field will not be sent in the response.
* `Optional field` if not included, cardImage will be sent in the
response.
currencyCode:
type: string
description: Currency Code in which VCA amounts are expressed
currencyType:
type: string
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.
timeZone:
type: string
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.
paymentBeneficiaryId:
type: number
description: >-
Uniquely identifies the payment beneficiary for which the virtual card
is created
paymentBeneficiaryEmails:
type: string
description: >-
Lists the email addresses to which the virtual card details should be
sent to.In order for emails to get delivered, the following two
settings must be enabled in the VCA system:1. Allow VCN details to be
emailed to this supplier2. Allow VCN requestor to manually enter a new
email address when requesting a VCN
customReference:
type: array
items:
$ref: '#/definitions/CustomReference'
templateId:
type: number
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.
expiryDate:
type: string
description: 'Expiry Date of the virtual card account. '
cumulativeSpendLimit:
type: number
format: bigdecimal
description: Limits the overall amount spend on the virtual card account.
maxAuth:
type: number
format: long
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. Mastercard: Set to 0, if
unlimited authorizations should be allowed. (0 is not applicable for
Visa)
modifySpendVelocity:
type: boolean
description: >-
Limits the frequency and total cumulative amount of authorizations
performed on the VCA within a specified period. Mastercard: The
control is mandatory unless Aging Velcotiy Control is used. This
control cannot be used in combination with the Aging Velocity
Control.Visa: Spend Velocity Control is mandatory.
spendVelocity:
type: array
items:
$ref: '#/definitions/SpendVelocityRequest'
modifyValidityPeriodControl:
type: boolean
description: 'Limits authorization activity to a specific time period. '
validityStartDate:
type: string
description: >-
Identifies the date from which the virtual card account can be used
for transactions.
validityEndDate:
type: string
description: >-
Identifies the date until which the virtual card account can be used
for transactions.
modifyAmountRangeControl:
type: boolean
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.
maxAmount:
type: number
format: bigdecimal
description: Identifies the maximum allowed transaction amount.
minAmount:
type: number
format: bigdecimal
description: Identifies the minimum allowed transaction amount.
modifyTransactionLimitControl:
type: boolean
description: Limits individual transactions to a maximum amount.
amountLimit:
type: number
format: bigdecimal
description: Identifies the maximum allowed transaction amount.
modifyCurfewControl:
type: boolean
description: >-
Limits authorization activity to a single time period for each day
selected.
curfewTime:
$ref: '#/definitions/CurfewTime'
modifyTimeOfDayControl:
type: boolean
description: Limits authorization request to defined time periods each day
timeOfDay:
type: array
items:
$ref: '#/definitions/TimeOfDay'
modifyAgingVelocityControl:
type: boolean
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.
authorizationHoldDays:
type: number
format: long
description: >-
Identifies the number of days after which an authorization gets aged
off if no matching clearing record was received.
modifyGeographyControl:
type: boolean
description: Limits authorization requests to a defined geographic location.
countryCodes:
type: array
description: Defines the merchant country in which the VCA can be used.
items:
type: string
allowed:
type: boolean
description: Indicate whether the values in countryCode are allowed or disallowed
modifyMerchantIdControl:
type: boolean
description: >-
Limits authorizations to a particular merchant using the Merchant ID
and Acquirer ID (Mastercard) or Card Acceptor ID (Visa).
merchantId:
$ref: '#/definitions/MerchantIdRequest'
ModifyVirtualCardResponse:
type: object
properties:
vcaId:
type: string
description: A reference number that uniquely identifies the virtual card account.
cardImage:
type: string
description: A visual representation of the virtual card account front and back.
currencyCode:
type: string
description: Currency Code in which VCA amounts are expressed.
timeZone:
type: string
description: >-
Defines the time zone applicable for any date or time parameters
within controls set for a VCA.
virtualCardAccountNumber:
type: string
description: The virtual card account number to use for transactions.
expiryDate:
type: string
description: 'Expiry Date of the virtual card account. '
securityCode:
type: string
description: The security code (i.e. cvv) corresponding to the virtual card accunt.
programId:
type: string
description: Unique ID of the company record defined in the virtual cards system.
messageId:
type: string
description: >-
Unique ID of the API message sent. The messageId will be provided back
in the corresponding response. The ID can be used for investigation
and troubleshooting. The ID must be unique per integration.
mccGrouping:
type: string
description: Limits authorizations to defined Merchant Category Codes.
currencyType:
type: string
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.
paymentBeneficiaryId:
type: number
description: >-
Uniquely identifies the payment beneficiary for which the virtual card
is created.
paymentBeneficiaryEmails:
type: string
description: >-
Specifies up to five email addresses to which the virtual card account
details should be delivered. Email addresses specified in the request
will not override any default email addresses specified in the virtual
card application.
customReference:
type: array
items:
$ref: '#/definitions/CustomReference'
templateId:
type: number
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.
cumulativeSpendLimit:
type: number
format: bigdecimal
description: 'Limits the overall amount spend on the virtual card account. '
modifySpendVelocity:
type: boolean
description: >-
Limits the frequency and total cumulative amount of authorizations
performed on the VCA within a specified period.
spendVelocity:
type: array
items:
$ref: '#/definitions/SpendVelocityResponse'
modifyValidityPeriodControl:
type: boolean
description: 'Limits authorization activity to a specific time period. '
validityStartDate:
type: string
description: >-
Identifies the date from which the virtual card account can be used
for transactions.
validityEndDate:
type: string
description: >-
Identifies the date until which the virtual card account can be used
for transactions.
modifyAmountRangeControl:
type: boolean
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.
maxAmount:
type: number
format: bigdecimal
description: Identifies the maximum allowed transaction amount.
minAmount:
type: number
format: bigdecimal
description: Identifies the minimum allowed transaction amount.
modifyTransactionLimitControl:
type: boolean
description: Limits individual transactions to a maximum amount.
amountLimit:
type: number
format: bigdecimal
description: Identifies the maximum allowed transaction amount.
modifyCurfewControl:
type: boolean
description: >-
Limits authorization activity to a single time period for each day
selected.
curfewTime:
$ref: '#/definitions/CurfewTime'
modifyTimeOfDayControl:
type: boolean
description: 'Limits authorization request to defined time periods each day. '
timeOfDay:
type: array
items:
$ref: '#/definitions/TimeOfDay'
modifyAgingVelocityControl:
type: boolean
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.
authorizationHoldDays:
type: number
format: long
description: >-
Identifies the number of days after which an authorization gets aged
off if no matching clearing record was received.
modifyGeographyControl:
type: boolean
description: 'Limits authorization requests to a defined geographic location. '
countryCodes:
type: array
description: Defines the merchant country in which the VCA can be used.
items:
type: string
allowed:
type: boolean
description: Indicate whether the values in countryCode are allowed or disallowed
modifyMerchantIdControl:
type: boolean
description: >-
Limits authorizations to a particular merchant using the Merchant ID
and Acquirer ID (Mastercard) or Card Acceptor ID (Visa).
merchantInfo:
type: array
items:
$ref: '#/definitions/MerchantIdResponse'
ModifyVirtualCardFailureResponse:
type: object
properties:
vcaId:
type: string
description: A reference number that uniquely identifies the virtual card account.
cardImage:
type: string
description: A visual representation of the virtual card account front and back.
currencyCode:
type: string
description: Currency Code in which VCA amounts are expressed.
timeZone:
type: string
description: >-
Defines the time zone applicable for any date or time parameters
within controls set for a VCA.
virtualCardAccountNumber:
type: string
description: The virtual card account number to use for transactions.
expiryDate:
type: string
description: 'Expiry Date of the virtual card account. '
securityCode:
type: string
description: The security code (i.e. cvv) corresponding to the virtual card accunt.
errors:
type: array
items:
$ref: '#/definitions/ErrorMessage'
programId:
type: string
description: Unique ID of the company record defined in the virtual cards system.
messageId:
type: string
description: >-
Unique ID of the API message sent. The messageId will be provided back
in the corresponding response. The ID can be used for investigation
and troubleshooting. The ID must be unique per integration.
mccGrouping:
type: string
description: Limits authorizations to defined Merchant Category Codes.
currencyType:
type: string
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.
paymentBeneficiaryId:
type: number
description: >-
Uniquely identifies the payment beneficiary for which the virtual card
is created.
paymentBeneficiaryEmails:
type: string
description: >-
Specifies up to five email addresses to which the virtual card account
details should be delivered. Email addresses specified in the request
will not override any default email addresses specified in the virtual
card application.
customReference:
type: array
items:
$ref: '#/definitions/CustomReference'
templateId:
type: number
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.
cumulativeSpendLimit:
type: number
format: bigdecimal
description: 'Limits the overall amount spend on the virtual card account. '
modifySpendVelocity:
type: boolean
description: >-
Limits the frequency and total cumulative amount of authorizations
performed on the VCA within a specified period.
spendVelocity:
type: array
items:
$ref: '#/definitions/SpendVelocityResponse'
modifyValidityPeriodControl:
type: boolean
description: 'Limits authorization activity to a specific time period. '
validityStartDate:
type: string
description: >-
Identifies the date from which the virtual card account can be used
for transactions.
validityEndDate:
type: string
description: >-
Identifies the date until which the virtual card account can be used
for transactions.
modifyAmountRangeControl:
type: boolean
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.
maxAmount:
type: number
format: bigdecimal
description: Identifies the maximum allowed transaction amount.
minAmount:
type: number
format: bigdecimal
description: Identifies the minimum allowed transaction amount.
modifyTransactionLimitControl:
type: boolean
description: Limits individual transactions to a maximum amount.
amountLimit:
type: number
format: bigdecimal
description: Identifies the maximum allowed transaction amount.
modifyCurfewControl:
type: boolean
description: >-
Limits authorization activity to a single time period for each day
selected.
curfewTime:
$ref: '#/definitions/CurfewTime'
modifyTimeOfDayControl:
type: boolean
description: 'Limits authorization request to defined time periods each day. '
timeOfDay:
type: array
items:
$ref: '#/definitions/TimeOfDay'
modifyAgingVelocityControl:
type: boolean
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.
authorizationHoldDays:
type: number
format: long
description: >-
Identifies the number of days after which an authorization gets aged
off if no matching clearing record was received.
modifyGeographyControl:
type: boolean
description: 'Limits authorization requests to a defined geographic location. '
countryCodes:
type: array
description: Defines the merchant country in which the VCA can be used.
items:
type: string
allowed:
type: boolean
description: Indicate whether the values in countryCode are allowed or disallowed
modifyMerchantIdControl:
type: boolean
description: >-
Limits authorizations to a particular merchant using the Merchant ID
and Acquirer ID (Mastercard) or Card Acceptor ID (Visa).
merchantId:
type: array
items:
$ref: '#/definitions/MerchantIdRequest'
ImmediateAckResponse:
type: object
properties:
messageId:
type: string
description: >-
Unique ID of the API message sent. The messageId will be provided back
in the corresponding response. The ID can be used for investigation
and troubleshooting. The ID must be unique per integration.
example: '0123456789012345678901234567'
status:
type: string
description: Immediate Ack response message.
example: CREATED
CreateVirtualCardFailureResponse:
type: object
properties:
vcaId:
type: string
description: A reference number that uniquely identifies the virtual card account.
example: '5070616'
cardImage:
type: string
description: A visual representation of the virtual card account front and back.
currencyCode:
type: string
description: Currency Code in which VCA amounts are expressed.
timeZone:
type: string
description: >-
Defines the time zone applicable for any date or time parameters
within controls set for a VCA.
virtualCardAccountNumber:
type: string
description: The virtual card account number to use for transactions.
expiryDate:
type: string
description: 'Expiry Date of the virtual card account. '
securityCode:
type: string
description: The security code (i.e. cvv) corresponding to the virtual card accunt.
errors:
type: array
items:
$ref: '#/definitions/ErrorMessage'
programId:
type: string
description: Unique ID of the company record defined in the virtual cards system.
messageId:
type: string
description: >-
Unique ID of the API message sent. The messageId will be provided back
in the corresponding response. The ID can be used for investigation
and troubleshooting. The ID must be unique per integration.
example: '12345678901234567890123456789'
mccGrouping:
type: string
description: Limits authorizations to defined Merchant Category Codes.
currencyType:
type: string
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.
example: B
paymentBeneficiaryId:
type: number
description: >-
Uniquely identifies the payment beneficiary for which the virtual card
is created.
example: 41432,
paymentBeneficiaryEmails:
type: string
description: >-
Specifies up to five email addresses to which the virtual card account
details should be delivered. Email addresses specified in the request
will not override any default email addresses specified in the virtual
card application.
example: >-
siyadh.shafee@citi.com;gangasravanthi.gollamudi@citi.com;nagara.harikrishnareddy@citi.com
customReference:
type: array
items:
$ref: '#/definitions/CustomReference'
templateId:
type: number
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.
example: 22646,
cumulativeSpendLimit:
type: number
format: bigdecimal
description: 'Limits the overall amount spend on the virtual card account. '
example: 2000,
enableSpendVelocity:
type: boolean
description: >-
Limits the frequency and total cumulative amount of authorizations
performed on the VCA within a specified period.
spendVelocity:
type: array
items:
$ref: '#/definitions/SpendVelocityResponse'
enableValidityPeriodControl:
type: boolean
description: 'Limits authorization activity to a specific time period. '
validityStartDate:
type: string
description: >-
Identifies the date from which the virtual card account can be used
for transactions.
example: '2020-09-18'
validityEndDate:
type: string
description: >-
Identifies the date until which the virtual card account can be used
for transactions.
example: '2020-09-23'
enableAmountRangeControl:
type: boolean
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.
maxAmount:
type: number
format: bigdecimal
description: Identifies the maximum allowed transaction amount.
minAmount:
type: number
format: bigdecimal
description: Identifies the minimum allowed transaction amount.
enableTransactionLimitControl:
type: boolean
description: Limits individual transactions to a maximum amount.
amountLimit:
type: number
format: bigdecimal
description: Identifies the maximum allowed transaction amount.
enableCurfewControl:
type: boolean
description: >-
Limits authorization activity to a single time period for each day
selected.
curfewTime:
$ref: '#/definitions/CurfewTime'
enableTimeOfDayControl:
type: boolean
description: 'Limits authorization request to defined time periods each day. '
timeOfDay:
type: array
items:
$ref: '#/definitions/TimeOfDay'
enableAgingVelocityControl:
type: boolean
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.
authorizationHoldDays:
type: number
format: long
description: >-
Identifies the number of days after which an authorization gets aged
off if no matching clearing record was received.
enableGeographyControl:
type: boolean
description: 'Limits authorization requests to a defined geographic location. '
countryCodes:
type: array
description: Defines the merchant country in which the VCA can be used.
items:
type: string
example:
- AFG
allowed:
type: boolean
description: Indicate whether the values in countryCode are allowed or disallowed.
enableMerchantIdControl:
type: boolean
description: >-
Limits authorizations to a particular merchant using the Merchant ID
and Acquirer ID (Mastercard) or Card Acceptor ID (Visa).
merchantId:
type: array
items:
$ref: '#/definitions/MerchantIdRequest'
UnAuthorizedResponse:
type: object
properties:
httpCode:
type: string
description: '401'
httpMessage:
type: string
description: Unauthorized
moreInformation:
type: string
description: >-
Client ID and/or Country and/or region id is missing in Client Onboard
Configuration setup. Contact Citi support.
responses:
'200':
description: 200 OK
'401':
description: Unauthorised Access
'403':
description: Access Forbidden
'500':
description: Internal Server Error
securityDefinitions:
clientCredentials:
description: >+
All CitiConnect APIs use the oAuth2 authentication scheme, which requires
a bearer token to authenticate your API call. The Token URL includes the
version of authentication used by this API. See the Citi Authentication API reference for information
on requesting a token.
type: oauth2
tokenUrl: >-
https://tts.sandbox.apib2b.citi.com/citiconnect/sb/authenticationservices/v1/oauth/token
flow: application
scopes: null