openapi: 3.1.0 info: contact: email: support@lithic.com description: 'The Lithic Developer API is designed to provide a predictable programmatic interface for accessing your Lithic account through an API and transaction webhooks. Note that your API key is a secret and should be treated as such. Don''t share it with anyone, including us. We will never ask you for it. ' termsOfService: https://lithic.com/legal/terms license: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0.txt title: Lithic Developer 3DS Card API version: 1.0.0 servers: - description: Sandbox environment that provides key functionality mirroring production url: https://sandbox.lithic.com security: - ApiKeyAuth: [] tags: - name: Card paths: /v1/cards/{card_token}/signals: get: operationId: getCardSignals summary: Fetch card signals description: 'Returns behavioral feature state derived from a card''s transaction history. These signals expose the same data used by behavioral rule attributes (e.g. `AMOUNT_Z_SCORE` with `scope: CARD`, `IS_NEW_COUNTRY` with `scope: CARD`) and custom code `TRANSACTION_HISTORY_SIGNALS` features, allowing clients to inspect feature values before writing rules and debug rule behavior. ' tags: - Card parameters: - name: card_token in: path required: true schema: type: string format: uuid description: The token of the card to fetch signals for. responses: '200': description: Card Signals content: application/json: schema: $ref: '#/components/schemas/signals-response' '400': $ref: '#/components/responses/components-responses-BadRequest' '403': $ref: '#/components/responses/responses-Forbidden' '404': $ref: '#/components/responses/components-responses-NotFound' /v1/card_programs: get: description: List card programs. operationId: getCardPrograms parameters: - $ref: '#/components/parameters/endingBefore' - $ref: '#/components/parameters/pageSize' - $ref: '#/components/parameters/startingAfter' responses: '200': content: application/json: schema: properties: data: items: $ref: '#/components/schemas/CardProgram' type: array has_more: description: More data exists. type: boolean required: - data - has_more type: object description: OK '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/UnprocessableEntity' '429': $ref: '#/components/responses/TooManyRequests' summary: List card programs tags: - Card /v1/card_programs/{card_program_token}: get: description: Get card program. operationId: getCardProgram parameters: - $ref: '#/components/parameters/cardProgramTokenPath' responses: '200': content: application/json: schema: $ref: '#/components/schemas/CardProgram' description: OK '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/UnprocessableEntity' '429': $ref: '#/components/responses/TooManyRequests' summary: Get card program tags: - Card /v1/cards: get: description: List cards. operationId: getCards parameters: - description: 'Returns cards associated with the specified account. ' in: query name: account_token schema: format: uuid type: string - description: 'Returns cards with the specified state. ' in: query name: state schema: enum: - CLOSED - OPEN - PAUSED - PENDING_ACTIVATION - PENDING_FULFILLMENT type: string - description: 'Returns cards containing the specified partial or full memo text. ' in: query name: memo schema: type: string - $ref: '#/components/parameters/beginTime' - $ref: '#/components/parameters/endTime' - $ref: '#/components/parameters/endingBefore' - $ref: '#/components/parameters/pageSize' - $ref: '#/components/parameters/startingAfter' responses: '200': content: application/json: schema: properties: data: items: $ref: '#/components/schemas/non_pci_card_response' type: array has_more: description: More data exists. type: boolean required: - data - has_more type: object description: OK '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/UnprocessableEntity' '429': $ref: '#/components/responses/TooManyRequests' summary: List cards tags: - Card post: description: 'Create a new virtual or physical card. Parameters `shipping_address` and `product_id` only apply to physical cards. ' operationId: postCards parameters: - $ref: '#/components/parameters/idempotencyKey' requestBody: content: application/json: examples: createCard: summary: Create card value: memo: New Card spend_limit: 1000 spend_limit_duration: TRANSACTION state: OPEN type: VIRTUAL createPhysicalCard: summary: Create a physical card value: carrier: qr_code_url: https://lithic.com/activate-card/1 memo: New physical card product_id: '783991122' shipping_address: address1: '123' city: NEW YORK country: USA first_name: Johnny last_name: Appleseed postal_code: '10001' state: NY state: OPEN type: PHYSICAL schema: properties: account_token: description: 'Globally unique identifier for the account that the card will be associated with. Required for programs enrolling users using the [/account\_holders endpoint](https://docs.lithic.com/docs/account-holders-kyc). See [Managing Your Program](doc:managing-your-program) for more information. ' format: uuid type: string card_program_token: description: For card programs with more than one BIN range. This must be configured with Lithic before use. Identifies the card program/BIN range under which to create the card. If omitted, will utilize the program's default `card_program_token`. In Sandbox, use 00000000-0000-0000-1000-000000000000 and 00000000-0000-0000-2000-000000000000 to test creating cards on specific card programs. example: 5e9483eb-8103-4e16-9794-2106111b2eca format: uuid type: string bulk_order_token: description: Globally unique identifier for an existing bulk order to associate this card with. When specified, the card will be added to the bulk order for batch shipment. Only applicable to cards of type PHYSICAL example: 5e9483eb-8103-4e16-9794-2106111b2eca format: uuid type: string carrier: $ref: '#/components/schemas/Carrier' digital_card_art_token: description: Specifies the digital card art to be displayed in the user’s digital wallet after tokenization. This artwork must be approved by Mastercard and configured by Lithic to use. See [Flexible Card Art Guide](https://docs.lithic.com/docs/about-digital-wallets#flexible-card-art). example: 5e9483eb-8103-4e16-9794-2106111b2eca format: uuid type: string exp_month: description: Two digit (MM) expiry month. If neither `exp_month` nor `exp_year` is provided, an expiration date five years in the future will be generated. Five years is the maximum expiration date. example: '06' maxLength: 2 minLength: 2 type: string exp_year: description: Four digit (yyyy) expiry year. If neither `exp_month` nor `exp_year` is provided, an expiration date five years in the future will be generated. Five years is the maximum expiration date. example: '2027' maxLength: 4 minLength: 4 type: string memo: description: Friendly name to identify the card. example: New Card type: string pin: description: Encrypted PIN block (in base64). Applies to cards of type `PHYSICAL` and `VIRTUAL`. See [Encrypted PIN Block](https://docs.lithic.com/docs/cards#encrypted-pin-block). type: string product_id: description: Only applicable to cards of type `PHYSICAL`. This must be configured with Lithic before use. Specifies the configuration (i.e., physical card art) that the card should be manufactured with. example: '1' type: string replacement_for: description: Globally unique identifier for the card that this card will replace. If the card type is `PHYSICAL` it will be replaced by a `PHYSICAL` card. If the card type is `VIRTUAL` it will be replaced by a `VIRTUAL` card. example: 5e9483eb-8103-4e16-9794-2106111b2eca format: uuid type: string replacement_substatus: description: 'Card state substatus values for the card that this card will replace: * `LOST` - The physical card is no longer in the cardholder''s possession due to being lost or never received by the cardholder. * `COMPROMISED` - Card information has been exposed, potentially leading to unauthorized access. This may involve physical card theft, cloning, or online data breaches. * `DAMAGED` - The physical card is not functioning properly, such as having chip failures or a demagnetized magnetic stripe. * `END_USER_REQUEST` - The cardholder requested the closure of the card for reasons unrelated to fraud or damage, such as switching to a different product or closing the account. * `ISSUER_REQUEST` - The issuer closed the card for reasons unrelated to fraud or damage, such as account inactivity, product or policy changes, or technology upgrades. * `NOT_ACTIVE` - The card hasn’t had any transaction activity for a specified period, applicable to statuses like `PAUSED` or `CLOSED`. * `SUSPICIOUS_ACTIVITY` - The card has one or more suspicious transactions or activities that require review. This can involve prompting the cardholder to confirm legitimate use or report confirmed fraud. * `INTERNAL_REVIEW` - The card is temporarily paused pending further internal review. * `EXPIRED` - The card has expired and has been closed without being reissued. * `UNDELIVERABLE` - The card cannot be delivered to the cardholder and has been returned. * `OTHER` - The reason for the status does not fall into any of the above categories. A comment should be provided to specify the reason. ' enum: - LOST - COMPROMISED - DAMAGED - END_USER_REQUEST - ISSUER_REQUEST - NOT_ACTIVE - SUSPICIOUS_ACTIVITY - INTERNAL_REVIEW - EXPIRED - UNDELIVERABLE - OTHER type: string replacement_comment: description: Additional context or information related to the card that this card will replace. type: string replacement_account_token: description: Restricted field limited to select use cases. Lithic will reach out directly if this field should be used. Globally unique identifier for the replacement card's account. If this field is specified, `replacement_for` must also be specified. If `replacement_for` is specified and this field is omitted, the replacement card's account will be inferred from the card being replaced. example: 5e9483eb-8103-4e16-9794-2106111b2eca format: uuid type: string shipping_address: $ref: '#/components/schemas/ShippingAddress' shipping_method: description: 'Shipping method for the card. Only applies to cards of type PHYSICAL. Use of options besides `STANDARD` require additional permissions. * `STANDARD` - USPS regular mail or similar international option, with no tracking * `STANDARD_WITH_TRACKING` - USPS regular mail or similar international option, with tracking * `PRIORITY` - USPS Priority, 1-3 day shipping, with tracking * `EXPRESS` - FedEx or UPS depending on card manufacturer, Express, 3-day shipping, with tracking * `2_DAY` - FedEx or UPS depending on card manufacturer, 2-day shipping, with tracking * `EXPEDITED` - FedEx or UPS depending on card manufacturer, Standard Overnight or similar international option, with tracking * `BULK` - Card will be shipped as part of a bulk fulfillment order. The shipping method and timeline are inherited from the parent bulk order. ' enum: - 2_DAY - BULK - EXPEDITED - EXPRESS - PRIORITY - STANDARD - STANDARD_WITH_TRACKING type: string spend_limit: description: Amount (in cents) to limit approved authorizations (e.g. 100000 would be a $1,000 limit). Transaction requests above the spend limit will be declined. Note that a spend limit of 0 is effectively no limit, and should only be used to reset or remove a prior limit. Only a limit of 1 or above will result in declined transactions due to checks against the card limit. example: 0 minimum: 0 type: integer spend_limit_duration: $ref: '#/components/schemas/spend_limit_duration' state: description: 'Card state values: * `OPEN` - Card will approve authorizations (if they match card and account parameters). * `PAUSED` - Card will decline authorizations, but can be resumed at a later time. ' enum: - OPEN - PAUSED type: string type: default: VIRTUAL description: 'Card types: * `VIRTUAL` - Card will authorize at any merchant and can be added to a digital wallet like Apple Pay or Google Pay (if the card program is digital wallet-enabled). * `PHYSICAL` - Manufactured and sent to the cardholder. We offer white label branding, credit, ATM, PIN debit, chip/EMV, NFC and magstripe functionality. Reach out at [lithic.com/contact](https://lithic.com/contact) for more information. * `SINGLE_USE` - Card is closed upon first successful authorization. * `MERCHANT_LOCKED` - Card is locked to the first merchant that successfully authorizes the card. * `UNLOCKED` - *[Deprecated]* Similar behavior to VIRTUAL cards, please use VIRTUAL instead. * `DIGITAL_WALLET` - *[Deprecated]* Similar behavior to VIRTUAL cards, please use VIRTUAL instead. ' enum: - MERCHANT_LOCKED - PHYSICAL - SINGLE_USE - VIRTUAL - UNLOCKED - DIGITAL_WALLET type: string required: - type type: object required: true responses: '200': content: application/json: example: account_token: f3f4918c-dee9-464d-a819-4aa42901d624 card_program_token: 5e9483eb-8103-4e16-9794-2106111b2eca cardholder_currency: USD created: '2021-06-28T22:53:15Z' cvv: '776' exp_month: '06' exp_year: '2027' funding: account_name: Sandbox created: '2020-07-08T17:57:36Z' last_four: '5263' nickname: checking account state: ENABLED token: b0f0d91a-3697-46d8-85f3-20f0a585cbea type: DEPOSITORY_CHECKING hostname: '' last_four: '4142' memo: New Card pan: '4111111289144142' replacement_for: null spend_limit: 1000 spend_limit_duration: TRANSACTION state: OPEN token: 7ef7d65c-9023-4da3-b113-3b8583fd7951 type: VIRTUAL pin_status: NOT_SET schema: $ref: '#/components/schemas/pci_card_response' description: OK '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '422': $ref: '#/components/responses/UnprocessableEntity' '429': $ref: '#/components/responses/TooManyRequests' summary: Create card tags: - Card /v1/cards/search_by_pan: post: description: 'Get card configuration such as spend limit and state. Customers must be PCI compliant to use this endpoint. Please contact [support@lithic.com](mailto:support@lithic.com) for questions. *Note: this is a `POST` endpoint because it is more secure to send sensitive data in a request body than in a URL.*' operationId: searchCardByPan requestBody: content: application/json: examples: searchCardByPan: summary: Search for card for by PAN. value: pan: '4111111289144142' schema: properties: pan: description: The PAN for the card being retrieved. example: '4111111289144142' type: string required: - pan responses: '200': content: application/json: schema: $ref: '#/components/schemas/pci_card_response' description: OK '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/UnprocessableEntity' '429': $ref: '#/components/responses/TooManyRequests' summary: Search for card by PAN tags: - Card /v1/cards/{card_token}: get: description: Get card configuration such as spend limit and state. operationId: getCardByToken parameters: - $ref: '#/components/parameters/cardToken' responses: '200': content: application/json: schema: $ref: '#/components/schemas/pci_card_response' description: OK '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/UnprocessableEntity' '429': $ref: '#/components/responses/TooManyRequests' summary: Get card tags: - Card patch: description: 'Update the specified properties of the card. Unsupplied properties will remain unchanged. *Note: setting a card to a `CLOSED` state is a final action that cannot be undone.* ' operationId: patchCardByToken parameters: - $ref: '#/components/parameters/cardToken' requestBody: content: application/json: examples: updateCard: summary: Update card value: memo: Updated Name spend_limit: 100 spend_limit_duration: FOREVER state: OPEN schema: properties: digital_card_art_token: description: Specifies the digital card art to be displayed in the user’s digital wallet after tokenization. This artwork must be approved by Mastercard and configured by Lithic to use. See [Flexible Card Art Guide](https://docs.lithic.com/docs/about-digital-wallets#flexible-card-art). example: 00000000-0000-0000-1000-000000000000 format: uuid type: string memo: description: Friendly name to identify the card. example: New Card type: string network_program_token: description: Globally unique identifier for the card's network program. Currently applicable to Visa cards participating in Account Level Management only. example: 00000000-0000-0000-1000-000000000000 format: uuid type: string pin: description: Encrypted PIN block (in base64). Only applies to cards of type `PHYSICAL` and `VIRTUAL`. Changing PIN also resets PIN status to `OK`. See [Encrypted PIN Block](https://docs.lithic.com/docs/cards#encrypted-pin-block). type: string pin_status: description: Indicates if a card is blocked due a PIN status issue (e.g. excessive incorrect attempts). Can only be set to `OK` to unblock a card. enum: - OK type: string spend_limit: description: Amount (in cents) to limit approved authorizations (e.g. 100000 would be a $1,000 limit). Transaction requests above the spend limit will be declined. Note that a spend limit of 0 is effectively no limit, and should only be used to reset or remove a prior limit. Only a limit of 1 or above will result in declined transactions due to checks against the card limit. example: 0 type: integer spend_limit_duration: $ref: '#/components/schemas/spend_limit_duration' state: description: 'Card state values: * `CLOSED` - Card will no longer approve authorizations. Closing a card cannot be undone. * `OPEN` - Card will approve authorizations (if they match card and account parameters). * `PAUSED` - Card will decline authorizations, but can be resumed at a later time. ' enum: - CLOSED - OPEN - PAUSED type: string substatus: description: 'Card state substatus values: * `LOST` - The physical card is no longer in the cardholder''s possession due to being lost or never received by the cardholder. * `COMPROMISED` - Card information has been exposed, potentially leading to unauthorized access. This may involve physical card theft, cloning, or online data breaches. * `DAMAGED` - The physical card is not functioning properly, such as having chip failures or a demagnetized magnetic stripe. * `END_USER_REQUEST` - The cardholder requested the closure of the card for reasons unrelated to fraud or damage, such as switching to a different product or closing the account. * `ISSUER_REQUEST` - The issuer closed the card for reasons unrelated to fraud or damage, such as account inactivity, product or policy changes, or technology upgrades. * `NOT_ACTIVE` - The card hasn’t had any transaction activity for a specified period, applicable to statuses like `PAUSED` or `CLOSED`. * `SUSPICIOUS_ACTIVITY` - The card has one or more suspicious transactions or activities that require review. This can involve prompting the cardholder to confirm legitimate use or report confirmed fraud. * `INTERNAL_REVIEW` - The card is temporarily paused pending further internal review. * `EXPIRED` - The card has expired and has been closed without being reissued. * `UNDELIVERABLE` - The card cannot be delivered to the cardholder and has been returned. * `OTHER` - The reason for the status does not fall into any of the above categories. A comment should be provided to specify the reason. ' enum: - LOST - COMPROMISED - DAMAGED - END_USER_REQUEST - ISSUER_REQUEST - NOT_ACTIVE - SUSPICIOUS_ACTIVITY - INTERNAL_REVIEW - EXPIRED - UNDELIVERABLE - OTHER type: string comment: description: Additional context or information related to the card. type: string type: object required: true responses: '200': content: application/json: example: account_token: f3f4918c-dee9-464d-a819-4aa42901d624 card_program_token: 5e9483eb-8103-4e16-9794-2106111b2eca cardholder_currency: USD created: '2021-06-28T22:53:15Z' cvv: '742' exp_month: '05' exp_year: '2027' funding: account_name: Sandbox created: '2022-03-08T08:00:00Z' last_four: '5263' nickname: checking account state: ENABLED token: b0f0d91a-3697-46d8-85f3-20f0a585cbea type: DEPOSITORY_CHECKING hostname: '' last_four: '4938' memo: Updated Name pan: '4111111289144142' spend_limit: 100 spend_limit_duration: FOREVER replacement_for: null state: OPEN token: f5f905f5-8a8e-49bf-a9b4-c0adaa401456 type: VIRTUAL pin_status: NOT_SET schema: $ref: '#/components/schemas/pci_card_response' description: OK '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/UnprocessableEntity' '429': $ref: '#/components/responses/TooManyRequests' summary: Update card tags: - Card /v1/cards/{card_token}/balances: get: description: Get the balances for a given card. operationId: getCardBalance parameters: - description: UTC date of the balance to retrieve. Defaults to latest available balance in: query name: balance_date schema: format: date-time type: string - description: 'Balance after a given financial event occured. For example, passing the event_token of a $5 CARD_CLEARING financial event will return a balance decreased by $5 ' in: query name: last_transaction_event_token schema: format: uuid type: string - $ref: '#/components/parameters/cardToken' responses: '200': content: application/json: schema: properties: data: items: $ref: '#/components/schemas/financial-account-balance' type: array has_more: description: More data exists. type: boolean required: - data - has_more type: object description: OK '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/UnprocessableEntity' '429': $ref: '#/components/responses/TooManyRequests' summary: Get card balances tags: - Card /v1/cards/{card_token}/financial_transactions: get: description: List the financial transactions for a given card. operationId: getCardFinancialTransactions parameters: - description: Financial Transaction category to be returned. in: query name: category schema: enum: - CARD - TRANSFER type: string - description: Financial Transaction result to be returned. in: query name: result schema: enum: - APPROVED - DECLINED type: string - description: Financial Transaction status to be returned. in: query name: status schema: enum: - DECLINED - EXPIRED - PENDING - RETURNED - SETTLED - VOIDED type: string - $ref: '#/components/parameters/beginTime' - $ref: '#/components/parameters/cardToken' - $ref: '#/components/parameters/endTime' - $ref: '#/components/parameters/endingBefore' - $ref: '#/components/parameters/startingAfter' responses: '200': content: application/json: schema: properties: data: items: $ref: '#/components/schemas/financial-account-transaction' type: array has_more: description: More data exists. type: boolean required: - data - has_more type: object description: OK '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/UnprocessableEntity' '429': $ref: '#/components/responses/TooManyRequests' summary: List card financial transactions tags: - Card /v1/cards/{card_token}/financial_transactions/{financial_transaction_token}: get: description: Get the card financial transaction for the provided token. operationId: getCardFinancialTransactionByToken parameters: - $ref: '#/components/parameters/cardToken' - $ref: '#/components/parameters/financialTransactionToken' responses: '200': content: application/json: schema: $ref: '#/components/schemas/financial-account-transaction' description: OK '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/UnprocessableEntity' '429': $ref: '#/components/responses/TooManyRequests' summary: Get card financial transaction tags: - Card /v1/cards/{card_token}/provision: post: description: 'Allow your cardholders to directly add payment cards to the device''s digital wallet (e.g. Apple Pay) with one touch from your app. This requires some additional setup and configuration. Please [Contact Us](https://lithic.com/contact) or your Customer Success representative for more information. ' operationId: postCardProvision parameters: - $ref: '#/components/parameters/cardTokenDigitalWallet' requestBody: content: application/json: examples: provisionGoogleCard: summary: Provision a card in Google Pay value: digital_wallet: GOOGLE_PAY schema: properties: certificate: description: Only applicable if `digital_wallet` is `APPLE_PAY`. Omit to receive only `activationData` in the response. Apple's public leaf certificate. Base64 encoded in PEM format with headers `(-----BEGIN CERTIFICATE-----)` and trailers omitted. Provided by the device's wallet. format: byte type: string client_wallet_account_id: description: Only applicable if `digital_wallet` is `GOOGLE_PAY` or `SAMSUNG_PAY` and the card is on the Visa network. Consumer ID that identifies the wallet account holder entity. type: string client_device_id: description: Only applicable if `digital_wallet` is `GOOGLE_PAY` or `SAMSUNG_PAY` and the card is on the Visa network. Stable device identification set by the wallet provider. type: string digital_wallet: description: Name of digital wallet provider. enum: - APPLE_PAY - GOOGLE_PAY - SAMSUNG_PAY type: string nonce: description: Only applicable if `digital_wallet` is `APPLE_PAY`. Omit to receive only `activationData` in the response. Base64 cryptographic nonce provided by the device's wallet. format: byte type: string nonce_signature: description: Only applicable if `digital_wallet` is `APPLE_PAY`. Omit to receive only `activationData` in the response. Base64 cryptographic nonce provided by the device's wallet. format: byte type: string type: object description: Update request. required: true responses: '200': content: application/json: schema: properties: provisioning_payload: oneOf: - type: string description: Base64 encoded JSON payload representing a payment card that can be passed to a device's digital wallet. Applies to Google and Samsung Pay wallets. - type: object properties: activationData: type: string ephemeralPublicKey: type: string encryptedData: type: string description: Object containing the fields required to add a card to Apple Pay. Applies only to Apple Pay wallet. type: object description: 'Returns `provisioning_payload`, a cryptographic payload representing a payment card that can be passed to a device''s digital wallet. Each digital wallet has a different API; consult the wallet''s documentation for more info. ' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/UnprocessableEntity' '429': $ref: '#/components/responses/TooManyRequests' summary: Provision card (Digital Wallet) tags: - Card /v1/cards/{card_token}/web_provision: post: description: 'Allow your cardholders to directly add payment cards to the device''s digital wallet from a browser on the web. This requires some additional setup and configuration. Please [Contact Us](https://lithic.com/contact) or your Customer Success representative for more information. ' operationId: postCardWebProvision parameters: - $ref: '#/components/parameters/cardTokenDigitalWallet' requestBody: content: application/json: examples: webProvisionAppleCard: summary: Web push provision a card for Apple Pay value: digital_wallet: APPLE_PAY webProvisionGoogleCard: summary: Web push provision a card for Google Pay value: digital_wallet: GOOGLE_PAY server_session_id: d3538acf-e5df-4446-8ce6-588fa4472ac1 client_device_id: d3538acf-e5df-4446-8ce6-588fa4472ac1 client_wallet_account_id: d3538acf-e5df-4446-8ce6-588fa4472ac1 schema: properties: digital_wallet: description: Name of digital wallet provider. enum: - APPLE_PAY - GOOGLE_PAY type: string server_session_id: description: Only applicable if `digital_wallet` is GOOGLE_PAY. Google Pay Web Push Provisioning session identifier required for the FPAN flow. format: uuid type: string client_device_id: description: Only applicable if `digital_wallet` is GOOGLE_PAY. Google Pay Web Push Provisioning device identifier required for the tokenization flow format: uuid type: string client_wallet_account_id: description: Only applicable if `digital_wallet` is GOOGLE_PAY. Google Pay Web Push Provisioning wallet account identifier required for the tokenization flow format: uuid type: string type: object description: Update request. required: true responses: '200': content: application/json: examples: applePayResponse: summary: Web push provision response for Apple Pay value: jws: header: kid: 8dc7aed4-29e3-41e4-9cdb-673a05e6615c protected: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9 payload: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9 signature: SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c state: 3cc4c292-727b-4ca8-b9a8-f96c15485f4e googlePayResponse: summary: Web push provision response for Google Pay value: google_opc: WW91ciBTdHJpbmcgSGVyZQ== tsp_opc: WW91ciBTdHJpbmcgSGVyZQ== schema: $ref: '#/components/schemas/WebPushProvisioningResponse' description: OK '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/UnprocessableEntity' '429': $ref: '#/components/responses/TooManyRequests' summary: Web Push Provision card (Digital Wallet) tags: - Card /v1/cards/{card_token}/reissue: post: description: 'Initiate print and shipment of a duplicate physical card (e.g. card is physically damaged). The PAN, expiry, and CVC2 will remain the same and the original card can continue to be used until the new card is activated. Only applies to cards of type `PHYSICAL`. A card can be reissued or renewed a total of 8 times.' operationId: postCardReissue parameters: - $ref: '#/components/parameters/cardToken' requestBody: content: application/json: examples: reissueCardNewAddress: summary: Reissue card with a new address value: carrier: qr_code_url: https://lithic.com/activate-card/1 product_id: '100' shipping_address: address1: 5 Broad Street address2: Unit 5A city: NEW YORK country: USA first_name: Janet last_name: Yellen postal_code: '10001' state: NY shipping_method: STANDARD schema: properties: carrier: $ref: '#/components/schemas/Carrier' description: If omitted, the previous carrier will be used. product_id: description: 'Specifies the configuration (e.g. physical card art) that the card should be manufactured with, and only applies to cards of type `PHYSICAL`. This must be configured with Lithic before use. ' type: string shipping_address: $ref: '#/components/schemas/ShippingAddress' description: If omitted, the previous shipping address will be used. shipping_method: description: 'Shipping method for the card. Only applies to cards of type PHYSICAL. Use of options besides `STANDARD` require additional permissions. * `STANDARD` - USPS regular mail or similar international option, with no tracking * `STANDARD_WITH_TRACKING` - USPS regular mail or similar international option, with tracking * `PRIORITY` - USPS Priority, 1-3 day shipping, with tracking * `EXPRESS` - FedEx or UPS depending on card manufacturer, Express, 3-day shipping, with tracking * `2_DAY` - FedEx or UPS depending on card manufacturer, 2-day shipping, with tracking * `EXPEDITED` - FedEx or UPS depending on card manufacturer, Standard Overnight or similar international option, with tracking * `BULK` - Card will be shipped as part of a bulk fulfillment order. The shipping method and timeline are inherited from the parent bulk order. ' enum: - 2_DAY - BULK - EXPEDITED - EXPRESS - PRIORITY - STANDARD - STANDARD_WITH_TRACKING type: string type: object required: true responses: '200': content: application/json: example: account_token: f3f4918c-dee9-464d-a819-4aa42901d624 card_program_token: 5e9483eb-8103-4e16-9794-2106111b2eca cardholder_currency: USD created: '2021-06-28T22:53:15Z' cvv: '742' exp_month: '05' exp_year: '2027' funding: account_name: Sandbox created: '2022-03-08T08:00:00Z' last_four: '5263' nickname: checking account state: ENABLED token: b0f0d91a-3697-46d8-85f3-20f0a585cbea type: DEPOSITORY_CHECKING hostname: '' last_four: '4938' memo: Updated Name pan: '4111111289144142' spend_limit: 100 spend_limit_duration: FOREVER state: OPEN token: f5f905f5-8a8e-49bf-a9b4-c0adaa401456 type: PHYSICAL pin_status: OK schema: $ref: '#/components/schemas/pci_card_response' description: OK '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/UnprocessableEntity' '429': $ref: '#/components/responses/TooManyRequests' summary: Reissue physical card tags: - Card /v1/cards/{card_token}/renew: post: description: 'Applies to card types `PHYSICAL` and `VIRTUAL`. For `PHYSICAL`, creates a new card with the same card token and PAN, but updated expiry and CVC2 code. The original card will keep working for card-present transactions until the new card is activated. For card-not-present transactions, the original card details (expiry, CVC2) will also keep working until the new card is activated. A `PHYSICAL` card can be reissued or renewed a total of 8 times. For `VIRTUAL`, the card will retain the same card token and PAN and receive an updated expiry and CVC2 code. `product_id`, `shipping_method`, `shipping_address`, `carrier` are only relevant for renewing `PHYSICAL` cards.' operationId: postCardRenew parameters: - $ref: '#/components/parameters/cardToken' requestBody: content: application/json: examples: renewCardNewAddress: summary: Renew card with a new address value: carrier: qr_code_url: https://lithic.com/activate-card/1 product_id: '100' shipping_address: address1: 5 Broad Street address2: Unit 5A city: NEW YORK country: USA first_name: Janet last_name: Yellen postal_code: '10001' state: NY shipping_method: STANDARD schema: properties: carrier: $ref: '#/components/schemas/Carrier' description: If omitted, the previous carrier will be used. exp_month: description: Two digit (MM) expiry month. If neither `exp_month` nor `exp_year` is provided, an expiration date five years in the future will be generated. Five years is the maximum expiration date. example: '06' maxLength: 2 minLength: 2 type: string exp_year: description: Four digit (yyyy) expiry year. If neither `exp_month` nor `exp_year` is provided, an expiration date five years in the future will be generated. Five years is the maximum expiration date. example: '2027' maxLength: 4 minLength: 4 type: string product_id: description: 'Specifies the configuration (e.g. physical card art) that the card should be manufactured with, and only applies to cards of type `PHYSICAL`. This must be configured with Lithic before use. ' type: string shipping_address: $ref: '#/components/schemas/ShippingAddress' description: The shipping address this card will be sent to. shipping_method: description: 'Shipping method for the card. Only applies to cards of type PHYSICAL. Use of options besides `STANDARD` require additional permissions. * `STANDARD` - USPS regular mail or similar international option, with no tracking * `STANDARD_WITH_TRACKING` - USPS regular mail or similar international option, with tracking * `PRIORITY` - USPS Priority, 1-3 day shipping, with tracking * `EXPRESS` - FedEx or UPS depending on card manufacturer, Express, 3-day shipping, with tracking * `2_DAY` - FedEx or UPS depending on card manufacturer, 2-day shipping, with tracking * `EXPEDITED` - FedEx or UPS depending on card manufacturer, Standard Overnight or similar international option, with tracking * `BULK` - Card will be shipped as part of a bulk fulfillment order. The shipping method and timeline are inherited from the parent bulk order. ' enum: - 2_DAY - BULK - EXPEDITED - EXPRESS - PRIORITY - STANDARD - STANDARD_WITH_TRACKING type: string required: - shipping_address type: object required: true responses: '200': content: application/json: example: account_token: f3f4918c-dee9-464d-a819-4aa42901d624 card_program_token: 5e9483eb-8103-4e16-9794-2106111b2eca cardholder_currency: USD created: '2021-06-28T22:53:15Z' cvv: '742' exp_month: '05' exp_year: '2027' funding: account_name: Sandbox created: '2020-07-08T17:57:36Z' last_four: '5263' nickname: checking account state: ENABLED token: b0f0d91a-3697-46d8-85f3-20f0a585cbea type: DEPOSITORY_CHECKING hostname: '' last_four: '4938' memo: Updated Name pan: '4111111289144142' spend_limit: 100 spend_limit_duration: FOREVER state: OPEN token: f5f905f5-8a8e-49bf-a9b4-c0adaa401456 type: PHYSICAL pin_status: OK schema: $ref: '#/components/schemas/pci_card_response' description: OK '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/UnprocessableEntity' '429': $ref: '#/components/responses/TooManyRequests' summary: Renew a card tags: - Card /v1/cards/{card_token}/convert_physical: post: description: 'Convert a virtual card into a physical card and manufacture it. Customer must supply relevant fields for physical card creation including `product_id`, `carrier`, `shipping_method`, and `shipping_address`. The card token will be unchanged. The card''s type will be altered to `PHYSICAL`. The card will be set to state `PENDING_FULFILLMENT` and fulfilled at next fulfillment cycle. Virtual cards created on card programs which do not support physical cards cannot be converted. The card program cannot be changed as part of the conversion. Cards must be in an `OPEN` state to be converted. Only applies to cards of type `VIRTUAL` (or existing cards with deprecated types of `DIGITAL_WALLET` and `UNLOCKED`).' operationId: postConvertPhysical parameters: - $ref: '#/components/parameters/cardToken' requestBody: content: application/json: examples: convertPhysicalAddress: summary: Convert virtual card to physical card value: carrier: qr_code_url: https://lithic.com/activate-card/1 product_id: '100' shipping_address: address1: 5 Broad Street address2: Unit 5A city: NEW YORK country: USA first_name: Janet last_name: Yellen postal_code: '10001' state: NY shipping_method: STANDARD schema: properties: carrier: $ref: '#/components/schemas/Carrier' description: If omitted, the previous carrier will be used. product_id: description: 'Specifies the configuration (e.g. physical card art) that the card should be manufactured with, and only applies to cards of type `PHYSICAL`. This must be configured with Lithic before use. ' type: string shipping_address: $ref: '#/components/schemas/ShippingAddress' description: The shipping address this card will be sent to. shipping_method: description: 'Shipping method for the card. Only applies to cards of type PHYSICAL. Use of options besides `STANDARD` require additional permissions. * `STANDARD` - USPS regular mail or similar international option, with no tracking * `STANDARD_WITH_TRACKING` - USPS regular mail or similar international option, with tracking * `PRIORITY` - USPS Priority, 1-3 day shipping, with tracking * `EXPRESS` - FedEx or UPS depending on card manufacturer, Express, 3-day shipping, with tracking * `2_DAY` - FedEx or UPS depending on card manufacturer, 2-day shipping, with tracking * `EXPEDITED` - FedEx or UPS depending on card manufacturer, Standard Overnight or similar international option, with tracking * `BULK` - Card will be shipped as part of a bulk fulfillment order. The shipping method and timeline are inherited from the parent bulk order. ' enum: - 2_DAY - BULK - EXPEDITED - EXPRESS - PRIORITY - STANDARD - STANDARD_WITH_TRACKING type: string required: - shipping_address type: object required: true responses: '200': content: application/json: example: account_token: f3f4918c-dee9-464d-a819-4aa42901d624 card_program_token: 5e9483eb-8103-4e16-9794-2106111b2eca cardholder_currency: USD created: '2021-06-28T22:53:15Z' cvv: '742' exp_month: '05' exp_year: '2027' funding: account_name: Sandbox created: '2020-07-08T17:57:36Z' last_four: '5263' nickname: checking account state: ENABLED token: b0f0d91a-3697-46d8-85f3-20f0a585cbea type: DEPOSITORY_CHECKING hostname: '' last_four: '4938' memo: Updated Name pan: '4111111289144142' spend_limit: 100 spend_limit_duration: FOREVER state: OPEN token: f5f905f5-8a8e-49bf-a9b4-c0adaa401456 type: PHYSICAL pin_status: OK schema: $ref: '#/components/schemas/pci_card_response' description: OK '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '422': $ref: '#/components/responses/UnprocessableEntity' '429': $ref: '#/components/responses/TooManyRequests' summary: Convert virtual to physical card tags: - Card /v1/cards/{card_token}/spend_limits: get: description: Get a Card's available spend limit, which is based on the spend limit configured on the Card and the amount already spent over the spend limit's duration. For example, if the Card has a monthly spend limit of $1000 configured, and has spent $600 in the last month, the available spend limit returned would be $400. operationId: getCardSpendLimits parameters: - $ref: '#/components/parameters/cardToken' responses: '200': content: application/json: schema: $ref: '#/components/schemas/CardSpendLimits' description: OK '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/TooManyRequests' summary: Get card's available spend limit tags: - Card /v1/embed/card: get: description: "Handling full card PANs and CVV codes requires that you comply with the Payment Card Industry Data Security Standards (PCI DSS). Some clients choose to reduce their compliance obligations by leveraging our embedded card UI solution documented below.\n\nIn this setup, PANs and CVV codes are presented to the end-user via a card UI that we provide, optionally styled in the customer's branding using a specified css stylesheet. A user's browser makes the request directly to api.lithic.com, so card PANs and CVVs never touch the API customer's servers while full card data is displayed to their end-users. The response contains an HTML document (see Embedded Card UI or Changelog for upcoming changes in January). This means that the url for the request can be inserted straight into the `src` attribute of an iframe.\n\n```html\n\n```\n\nYou should compute the request payload on the server side. You can render it (or the whole iframe) on the server or make an ajax call from your front end code, but **do not ever embed your API key into front end code, as doing so introduces a serious security vulnerability**.\n" operationId: getEmbedCard parameters: - description: A base64 encoded JSON string of an EmbedRequest to specify which card to load. in: query name: embed_request required: true schema: type: string - description: SHA256 HMAC of the embed_request JSON string with base64 digest. in: query name: hmac required: true schema: type: string responses: '200': content: text/html: examples: html: summary: Card UI value: "\n
\n\n\n\n\n\n