Guide to Lithic API Changes
In this guide, we discuss a few modifications we are making to our API in August and September 2022 that will apply to both our sandbox and production environments.
This guide is intended to help users navigate the upcoming changes to the Lithic API.
For the Transaction Schema Modification and Simulating Transactions Modification, these changes will be effective in Production on September 27, 2022 at 17:00 UTC.
For the API Endpoint Modifications detailed below, the existing endpoints will continue to work. Given new feature development will be focused on the new endpoints, we encourage you to explore them and migrate integrations at a time that makes sense for you.
Transaction Schema Modification (effective Sep 27, 2022 in Production and August 30, 2022 in Sandbox)
transaction.events[].amount to become signed
transaction.events[].amount to become signed- Currently, 
amountfield within the events array within the Transaction schema are unsigned amounts - In both the responses from transactions endpoints and in the Transaction Webhook message, this will become a signed field (positive amounts are debits, negative amounts are credits) and consistent with how the top-level 
transaction.amountappears - To defend against this, users can wrap an 
abs()function around theevents[].amountuntil they are ready to handle negative amounts in the schema - For consistency, once the change is deployed, all transactions, including ones generated before September 27 17:00 UTC, will appear with the new signed amount.
 
Simulating Transactions Modification (effective Sep 27, 2022)
Declined simulated transactions to return 200 response
- Previously, if a simulated transaction (created via the POST /simulate/authorize endpoint) was declined, a 
422response code would be returned - With this update, simulated transactions that are declined will return a 
200response to indicate a “successful” decline 
API Endpoint Modifications
Accounts
Get Accounts: GET /account -> GET /accounts/{account_token}
- Resource naming is changing from 
accounttoaccounts account_tokenshould be passed in as a path parameter and not as a query parameteraccount_tokenin the response will be renamed totoken- Account configurations will only be returned under a "data" field if multiple 
account_tokensare included in the response 
Update Accounts: POST /account/state and POST /account/limit -> PATCH /accounts/{account_token}
- Resource naming is changing from 
accounttoaccounts - Instead of calling two separate endpoints to change an account's state and account's spend limits, those operations are now consolidated under a new "Update Account" endpoint
 - Operation will change from a POST to a PATCH, meaning partial updates to the account details are permitted and only parameters that are passed in will be updated
 
Creating Account Holders: POST enroll/consumer -> POST /account_holders
- Instead of using a dedicated endpoint to enroll consumer end-users onto the Lithic platform, all account creation calls (whether using Lithic's KYCaaS, KYBaaS, or a BYO option) will take place via a "Create Account Holders" endpoint
 - The new endpoint does not require any additional information requested beyond what is required for the existing "Enroll User" process. Customers currently using the 
type=PRECHECKEDworkflow should use the renamedKYC_BYOworkflow, and customers using thetype=BASICworkflow should use the renamedKYC_BASICworkflow - Upon successful creation of an account holder (e.g.,, successful KYC if using Lithic KYCaaS, successful input of all required parameters if using BYO KYC), an associated 
account_tokenwill be returned 
Cards
List Cards: GET /card -> GET /cards
- Resource naming is changing from 
cardtocards 
Get Card: GET /card -> GET /cards/{card_token}
- Resource naming is changing from 
cardtocards card_tokenshould be passed in as a path parameter and not as a query parameter- GET /cards/{card_token} will return a single card object
 
Create Card: POST /card -> POST /cards
- Resource naming is changing from 
cardtocards 
Update Card: PUT /card -> PATCH /cards/{card_token}
- Resource naming is changing from 
cardtocards card_tokenshould be passed in as a path parameter and not as a body parameter- Operation will change from a PUT to a PATCH, meaning partial updates to the card details are permitted and only parameters that are passed in will be updated
 
Reissue Card: POST /card/reissue -> POST /cards/{card_token}/reissue
- Resource naming is changing from 
cardtocards card_tokento be reissued should be passed in as a path parameter and not as a body parameter
Provision Card (Digital Wallet): POST /card/provision -> POST /cards/{card_token}/provision
- Resource naming is changing from 
cardtocards card_tokento be provisioned should be passed in as a path parameter and not as a body parameter
Transactions
List Transactions: GET /transaction -> GET /transactions
- Resource naming is changing from 
transactiontotransactions card_tokenandresult(i.e.,APPROVEDorDECLINED) will now be accepted as query parameters
Get Specific Transaction: GET /transaction/{transaction_filter} -> GET /transactions/{transaction_token}
- Resource naming is changing from 
transactiontotransactions - Endpoint operation will be simplified to return a single transaction as specified by the 
transaction_token; previous use of this endpoint to filter for approved or declined transactions can be done via the "List Transactions" endpoint above 
Enroll ASA: POST /authstream/enroll -> POST /auth_stream
- Resource naming is changing from 
authstreamtoauth_stream - The "enroll" portion of the endpoint URI is no longer needed
 
Disenroll ASA: POST /authstream/disenroll -> DELETE /auth_stream/
- Resource naming is changing from 
authstreamtoauth_stream - Instead of a POST call, disenrolling from ASA will now be done with a DELETE call
 
Funding Sources
List Funding Sources: GET /fundingsource -> GET /funding_sources
- Resource naming is changing from 
fundingsourcetofunding_sources - The list of funding sources will be under a "data" field for consistency
 
Add Funding Source: POST /fundingsource/bank and POST /fundingsource/plaid -> POST /funding_sources
- Resource naming is changing from 
fundingsourcetofunding_sources - Instead of calling two separate endpoints to add a bank funding source and a funding source via Plaid, those operations are consolidated under a new "Add Funding Source" endpoint
 
Update Bank Account: PUT /fundingsource/bank -> PATCH /funding_sources/{funding_source_token}
- Resource naming is changing from 
fundingsourcetofunding_sources funding_source_tokenshould be passed in as a path parameter and not as a body parameter
Verify Bank Account: POST /fundingsource/bank/validate -> POST /funding_sources/{funding_source_token}/verify
- Resource naming is changing from 
fundingsourcetofunding_sources funding_source_tokenshould be passed in as a path parameter and not as a body parameter
Updated 4 months ago
