Light APIv1.0.0

API / Reference / Card Transactions

List card transactions

GET https://api.light.inc/v1/card-transactions

Returns a paginated list of card transactions

The filter and sort field lists below are incomplete. The server also accepts ownerId, amount, originalAmount, originalCurrency, receiptDocumentKey, taxId and accountId as filters and originalAmount as a sort; an unknown field fails with INVALID_QUERY_FIELD listing the real set. The two undocumented flags: onlyPostable=true returns transactions a post would currently succeed for (a flag recomputed in the background after each edit, so it can lag a moment behind a PATCH); missingData=true returns transactions with no receipt, or not yet posted and not postable. Sending both fails with CARD_TRANSACTION_INVALID_FILTER_COMBINATION.

This list (and the single GET) returns the enriched shape with labels and exportedAt, but without editStatus — that field only appears on the PATCH, post and reset responses. amount is an unsigned magnitude; direction (DEBIT for spend, CREDIT for a refund or incoming credit) carries the sign. A refund is a separate transaction with status: REFUNDED, not a change to the original capture, and nothing on the model links the two. If the company's card setup has auto-posting on, a transaction can already be POSTED the first time you see it. A cardholder-only credential must filter on its own ownerId or cardId or it receives 403.

Authorization

Send one of these on every request. See Authentication for how to get credentials.

  • API key

    Basic authentication header of the form Basic <api_key>, where <api_key> is your api key.

  • Bearer token

Query parameters

  • sort string

    Sort string in the format field:direction. To provide multiple sort fields, separate them with commas.

    Available directions: asc, desc.

    Available fields: companyEntityId, status, performedAt.

  • filter string

    Filter string in the format field:operator:value. To provide multiple filters, separate them with commas.

    Available operators: eq, ne, in, not_in, gt, gte, lt, lte.

    • For in and not_in operators, provide multiple values separated by the pipe character (|).

    Available fields: transactionId, cardBalanceAccountId, companyEntityId, cardId, status, performedAt, updatedAt.

  • limit integer · int32

    Maximum number of items to return. Default is 50, maximum is 200.

  • offset integer · int64deprecated

    Number of items to skip before starting to collect the result set. Deprecated, use 'cursor' instead.

  • cursor string

    The cursor position to start returning results from. To opt-in into cursor-based pagination, provide 0 for the initial request. For subsequent requests, use nextCursor and prevCursor from the previous response to navigate. Cursor values are opaque and should not be constructed manually.

  • onlyPostable boolean

  • missingData boolean

  • includeParsedReceipt boolean

    If true, includes the AI-parsed receipt in the response. It is null when this parameter is not set, when no receipt scan is on file, and when the scan parsed something that is not a receipt

Response

  • records array of object

    List of records for the current page

    • id string · uuid

      The transaction id, also its accounting document id.

    • companyId string · uuid

      Your company id.

    • companyEntityId string · uuid

      The entity the card belongs to.

    • companyEntityName string

      That entity's name.

    • cardBalanceAccountId string · uuid

      The balance account the card draws on.

    • cardBalanceAccountLabel string

      Its name.

    • cardId string · uuid

      The card that was charged.

    • providerId string

    • cardVendorId string · uuid

      The vendor Light matched to the merchant, if any.

    • cardVendorAvatarUrl string

      That vendor's logo URL.

    • cardVendorName string

      That vendor's name.

    • cardOwnerName string

      The cardholder's name.

    • cardOwnerId string · uuid

      The cardholder's user id.

    • cardLastFour string

      Last four digits of the card number.

    • originalAmount integer · int64

      The amount charged by the merchant, in the merchant's currency, minor units.

    • originalCurrency string

      The merchant's currency.

    • amount integer · int64

      Unsigned, in minor units. The sign is direction: DEBIT is money out, CREDIT is a refund or incoming credit.

    • currency string

      The balance account's currency, which amount is in.

    • direction string

      ⚠️ This enum is not exhaustive; new values may be added in the future.

      One of DEBIT CREDIT

    • transactionReason string

      ⚠️ This enum is not exhaustive; new values may be added in the future.

      One of ACCOUNT_NOT_ACTIVE AMOUNT_LIMIT_EXCEEDED APPROVAL_EXPIRED APPROVED AUTHENTICATION_FAILED AUTHENTICATION_REQUIRED BALANCE_ACCOUNT_BLOCKED_BY_RULE CALL_REFERRAL CANCELLED CARD_BLOCKED CARD_CAPTURED CARD_EXPIRED CARD_LOST_OR_STOLEN CARD_RESTRICTED CARD_VERIFICATION_FAILED CASHBACK_LIMIT_EXCEEDED CONTACTLESS_FALLBACK CONTACTLESS_LIMIT_REACHED COUNTERPARTY_ACCOUNT_UNAVAILABLE COUNTERPARTY_ADDRESS_REQUIRED COUNTERPARTY_BANK_UNAVAILABLE CRYPTOGRAPHIC_FAILURE DECLINED DECLINED_BY_BAP_VALIDATION DECLINED_BY_TRANSACTION_RULE DECLINED_NON_GENERIC DOMESTIC_DEBIT_NOT_ALLOWED DO_NOT_HONOR DUPLICATE_TRANSMISSION FORMAT_ERROR FRAUD HONOR_WITH_ID INSUFFICIENT_FUNDS INTERNAL_TIMEOUT INVALID_ACCOUNT INVALID_AMOUNT INVALID_AUTHORIZATION_LIFECYCLE INVALID_CARD INVALID_ISSUER INVALID_MERCHANT INVALID_TRANSACTION ISSUER_SUSPECTED_FRAUD MOBILE_PIN_REQUIRED NOT_SUBMITTED NO_ACCOUNT_OF_TYPE OTHER PARTIALLY_APPROVED PENDING PIN_INVALID PIN_NOT_CHANGED PIN_REQUIRED PIN_TRIES_EXCEEDED PIN_VALIDATION_NOT_POSSIBLE PROVIDER_ERROR PURCHASE_AMOUNT_ONLY_NO_CASHBACK REFUSED_BY_COUNTERPARTY_BANK REFUSED_BY_CUSTOMER REVOCATION_OF_AUTH ROUTE_NOT_FOUND SCHEME_ADVICE SECURITY_VIOLATION TRANSACTION_NOT_PERMITTED TRANSFER_INSTRUMENT_NOT_FOUND TRANSFER_NOT_SUPPORTED UNKNOWN WITHDRAWAL_AMOUNT_EXCEEDED WITHDRAWAL_COUNT_EXCEEDED

    • purchaseType string

      ⚠️ This enum is not exhaustive; new values may be added in the future.

      One of ATM BALANCE_INQUIRY ECOMMERCE POS RECURRING UNKNOWN OTHER

    • status string

      ⚠️ This enum is not exhaustive; new values may be added in the future.

      Set by the card issuer, never by this API, apart from POSTED. AUTHORIZED moves to CAPTURED, DECLINED or VOIDED; CAPTURED and REFUNDED can be posted. A REFUNDED transaction is its own record with direction: CREDIT — the original capture keeps its status and nothing on the model links the two.

      One of AUTHORIZED DECLINED CAPTURED REFUNDED VOIDED POSTED

    • type string

      ⚠️ This enum is not exhaustive; new values may be added in the future.

      One of PAYMENT REFUND OTHER

    • merchant object

      The merchant, as reported by the card network.

      • name string

        Merchant name as reported by the card network.

      • cleanName string

        The name cleaned up by Light, used for display and vendor matching.

      • country string

        ⚠️ This enum is not exhaustive; new values may be added in the future.

        One of UNDEFINED AC AD AE AF AG AI AL AM AN AO AQ AR AS AT AU AW AX AZ BA BB BD BE BF BG BH BI BJ BL BM BN BO BQ BR BS BT BU BV BW BY BZ CA CC CD CF CG CH CI CK CL CM CN CO CP CR CS CU CV CW CX CY CZ DE DG DJ DK DM DO DZ EA EC EE EG EH ER ES ET EU EZ FI FJ FK FM FO FR FX GA GB GD GE GF GG GH GI GL GM GN GP GQ GR GS GT GU GW GY HK HM HN HR HT HU IC ID IE IL IM IN IO IQ IR IS IT JE JM JO JP KE KG KH KI KM KN KP KR KW KY KZ LA LB LC LI LK LR LS LT LU LV LY MA MC MD ME MF MG MH MK ML MM MN MO MP MQ MR MS MT MU MV MW MX MY MZ NA NC NE NF NG NI NL NO NP NR NT NU NZ OM PA PE PF PG PH PK PL PM PN PR PS PT PW PY QA RE RO RS RU RW SA SB SC SD SE SF SG SH SI SJ SK SL SM SN SO SR SS ST SU SV SX SY SZ TA TC TD TF TG TH TJ TK TL TM TN TO TP TR TT TV TW TZ UA UG UK UM US UY UZ VA VC VE VG VI VN VU WF WS XI XU XK YE YT YU ZA ZM ZR ZW

      • zipcode string

        The merchant's postal code.

      • id string

        The card network's merchant id.

      • mcc string

        Merchant category code.

      • acquirerId string

        Id of the merchant's acquiring bank.

      • logoUrl string

        Logo URL, when Light has one.

    • receiptDocumentKey string

      Filled asynchronously after a receipt upload with the key of the converted PDF, which is not the key the upload endpoint returned.

    • lines array of object

      The accounting split of the transaction: account, tax code and cost center per line.

      • id string · uuid

        The line id.

      • transactionId string · uuid

        The card transaction the line belongs to.

      • companyId string · uuid

        Your company id.

      • accountId string · uuid

        The expense account for the line.

      • accountLabel string

        Its name.

      • taxCodeId string · uuid

        The tax code on the line.

      • taxCodeLabel string

        Its name.

      • costCenterId string · uuid

        Cost center on the line.

      • costCenterName string

        Its name.

      • amount integer · int64

        Gross line amount in the balance account currency, minor units.

      • netAmount integer · int64

        Line amount excluding tax, minor units.

      • description string

        The line description.

      • createdAt string · date-time

        When the line was created.

      • updatedAt string · date-time

        When it was last changed.

      • customProperties array of object

        Custom property values on the line.

        • groupId string · uuid

          ID of the custom property group

        • groupInternalName string

          Internal name of the custom property group

        • values array of object

          List of values. Note that this will be a single value unless the group input type supports multiple values

          • id string · uuid

            Unique identifier for the object

          • groupId string · uuid

            ID of the custom property group

          • groupInternalName string

            Internal name of the custom property group

          • companyId string · uuid

            ID of the company

          • internalName string

            Internal name of the custom property value

          • label string

            Label of the custom property value

          • context string

            Context/description of the custom property value

          • createdAt string · date-time

            Timestamp when the custom property value was created

          • updatedAt string · date-time

            Timestamp when the custom property value was last updated

      • amortizationTemplateId string · uuid

        Release template id when the line is spread over a schedule; null otherwise.

      • amortizationStartDate string · date

        First date of that schedule.

      • amortizationEndDate string · date

        Last date of that schedule.

    • failureContext object

      Failure context when vendor onboarding fails.

      Set when a batch update or a post fails validation, or when receipt conversion fails; cleared by the next successful post. The description about vendor onboarding is a copy-paste from another model.

      • name string

        The error name

      • type string

        The error type

        ⚠️ This enum is not exhaustive; new values may be added in the future.

        One of BAD_REQUEST UNAUTHORIZED FORBIDDEN NOT_FOUND CONFLICT UNPROCESSABLE_CONTENT

      • errors array of object

        List of errors providing details about what went wrong

        • type string

          A string code identifying the error type

        • message string

          A human-readable message providing more details about the error

        • path array of string

          Optional path of the error when the error is for a specific field. Used mostly on BAD_REQUEST errors, that path will match the field name on the request object

        • context object

          Optional context providing additional information about the error. This can include any relevant data that might help in understanding or resolving the error

    • description string

      The transaction description.

    • performedAt string · date-time

      When the card was charged.

    • exportedAt string · date-time

      When the transaction's export to accounting completed; null until then. Legacy field from before card transactions posted to the ledger as documents.

    • createdAt string · date-time

      When Light received the transaction.

    • updatedAt string · date-time

      When it was last changed.

    • customProperties array of object

      Custom property values on the transaction.

      • groupId string · uuid

        ID of the custom property group

      • groupInternalName string

        Internal name of the custom property group

      • values array of object

        List of values. Note that this will be a single value unless the group input type supports multiple values

        • id string · uuid

          Unique identifier for the object

        • groupId string · uuid

          ID of the custom property group

        • groupInternalName string

          Internal name of the custom property group

        • companyId string · uuid

          ID of the company

        • internalName string

          Internal name of the custom property value

        • label string

          Label of the custom property value

        • context string

          Context/description of the custom property value

        • createdAt string · date-time

          Timestamp when the custom property value was created

        • updatedAt string · date-time

          Timestamp when the custom property value was last updated

    • parsedReceipt object

      • currency string

      • lines array of object

        • description string

        • quantity number

        • price number

  • hasMore boolean

    Boolean flag indicating if there are more records available

  • total integer · int64deprecated

    Total number of records (only for offset pagination). This field is not guaranteed to be returned and only available for offset pagination, please do not rely on it and migrate to cursor pagination.

  • nextCursor string

    Cursor for fetching the next page (only for cursor pagination)

  • prevCursor string

    Cursor for fetching the previous page (only for cursor pagination)