Cards v4 - Credit Card Transaction
Create Card Transactions (Bulk)
Endpoint to create credit card transactions as bulk operation. Assuming that the request is properly authorized and the schema validation passes, the API immediately returns 202 (Request Accepted) and performs the actual processing asynchronously.
Scopes
cards.transaction.writeonly - Refer to Scope Usage for full details.
URI
POST https://{datacenterURI}/cards/v4/companies/{companyId}/transactions/bulk
Parameters
| Name | Type | Format | Description |
|---|---|---|---|
companyId |
string |
- | Required The unique identifier of the SAP Concur company. |
Payloads
- Request: Create Transaction List
- Response: Bulk API Response
Notes:
- This API can only be used for creating new transactions. If the same
externalIdis sent a second time, it will be ignored with an error during processing. - The
externalIdis a unique identifier for a card transaction as defined by an external system (outside the SAP Concur platform). It must not contain the primary account number (PAN). It may contain the same value asreferenceNumberas long as it is unique. - A transaction contains a reference to an account using the account
externalId. Referenced accounts need to be created via Card Accounts (Bulk) API. - The
authorizationExternalIdcan be used to reference a posted transaction to a preceding authorization. In this case the authorization will be overwritten by the posted transaction. - A transaction can only contain one type of addendum data (car rental, fleet, lodging, purchase, or travel) at the same time.
Headers
concur-correlationidis a specific custom header used for technical support in the form of a RFC 4122 A Universally Unique IDentifier (UUID) URN Namespace.
HTTP Status Codes
In case of success, HTTP status code 202 (Request Accepted) is returned.
In case of a bad request, HTTP status code 400 (Bad Request) is returned along with an error code describing the cause. Possible error codes are: invalidRequest, invalidJson. For invalidRequest the error response usually contains a detailed error list.
To learn more about response HTTP status codes for this API see HTTP Status Codes.
Examples
Valid Request
POST https://us.api.concursolutions.com/cards/v4/companies/1700f4bc-4166-4516-bffe-91d7ae423189/transactions/bulk
Content-Type: application/json
Accept: application/json
Authorization: Bearer {token}
Concur-CorrelationId: 90f23ece-cb6c-476f-818d-1412bdb23749
{
"transactions": [{
"account": {
"externalId": "59edf00e-6e0a-46c4-bf59-c233000c5b98"
},
"billedAmount": {
"currencyCode": "USD",
"value": 405.10
},
"description": "ACME Hotels,123-456-7890,Seattle",
"externalId": "1047ecc3-bc47-4b2f-bcf5-6c8e13291338",
"lodging": {
"charges": [{
"amount": {
"currencyCode": "USD",
"value": 19.90
},
"name": "INTNT"
}
],
"checkInDate": "2022-08-14",
"checkOutDate": "2022-08-17",
"dailyRoomRate": {
"currencyCode": "USD",
"value": 120
},
"folioNumber": "F344145-51VD",
"guestName": "DOE,JOHN",
"lodgingAddress": {
"city": "Vancouver",
"countryCode": "CA",
"state": "BC",
"streetAddress": "433 Hotel Street",
"zip": "v6b 6l9"
},
"numberOfRoomNights": 3,
"numberOfRooms": 1,
"totalLodgingAmount": {
"currencyCode": "USD",
"value": 360
},
"totalNonRoomChargeAmount": {
"currencyCode": "USD",
"value": 19.90
},
"totalTaxAmount": {
"currencyCode": "USD",
"value": 25.2
}
},
"merchant": {
"address": {
"city": "Seattle",
"countryCode": "US",
"state": "WA",
"streetAddress": "1 Hotel Way",
"zip": "90001"
},
"categoryCode": "7011",
"doingBusinessAs": "ACME Hotels",
"id": "ACME34393",
"name": "ACME Corporation"
},
"postedAmount": {
"currencyCode": "USD",
"value": 405.10
},
"postedDate": "2018-08-19",
"referenceNumber": "gWp859SqAX97DsIVt5aoZmSNh4y8iH6qc",
"transactionAmount": {
"currencyCode": "USD",
"value": 405.10
},
"transactionDate": "2018-08-17",
"transactionDateTime": "2018-08-17T09:15:23.000",
"type": "RPE"
}
]
}
Success Response
202 Accepted
Content-Type: application/json
{
"links": [
{
"href": "https://us.api.concursolutions.com/cards/v4/companies/1700f4bc-4166-4516-bffe-91d7ae423189/bulkrequests/55e45023-813f-46a2-b83c-1a0b0b7bdda6",
"rel": "self"
}
],
"requestId": "55e45023-813f-46a2-b83c-1a0b0b7bdda6"
}
Invalid Request
POST https://us.api.concursolutions.com/cards/v4/companies/1700f4bc-4166-4516-bffe-91d7ae423189/transactions/bulk
Content-Type: application/json
Accept: application/json
Authorization: Bearer {token}
Concur-CorrelationId: 90f23ece-cb6c-476f-818d-1412bdb23749
{
"transactions": [{
"account": {
"externalId": "59edf00e-6e0a-46c4-bf59-c233000c5b98"
},
"externalId": "1047ecc3-bc47-4b2f-bcf5-6c8e13291338-this-is-too-long-must-only-be-50-chars-max",
"merchant": {
"name": "ACME Corporation"
},
"postedDate": "2018-08-19",
"transactionAmount": {
"currencyCode": "USD",
"value": 405.10
},
"transactionDate": "2018-08-17",
"type": "XXX"
}
]
}
Error Response
400 Bad Request
Content-Type: application/json
[
{
"errorCode": "invalidRequest",
"errorMessage": "The request contains errors",
"dataPath": "/v4/companies/1700f4bc-4166-4516-bffe-91d7ae423189/transactions/bulk",
"errors": [
{
"errorCode": "invalidEnum",
"errorMessage": "Value is not one of the allowed values",
"dataPath": "transactions[0].type"
},
{
"errorCode": "missingRequiredField",
"errorMessage": "Missing required field",
"dataPath": "transactions[0].postedAmount"
},
{
"errorCode": "invalidFieldSize",
"errorMessage": "size must be between 1 and 50",
"dataPath": "transactions[0].externalId"
}
]
}
]
Retrieve Card Transactions by User
Endpoint to retrieve credit card transactions of a user. Only cleared card transactions received via file feed, or bespoke API integration are supported; Card transactions received via the Yodlee integration (including personal card transactions) are not exposed.
By default only basic transaction data is returned. It is recommended to only request required options for optimal performance. It is possible to request multiple options in one call.
This endpoint supports user level access tokens only.
Scopes
cards.transaction.read - Refer to Scope Usage for full details.
URI
GET https://{datacenterURI}/cards/v4/users/{userId}/transactions
Parameters
| Name | Type | Format | Description |
|---|---|---|---|
userId |
string |
- | Required The unique identifier of the SAP Concur user. |
status |
array |
string |
Filter transactions by status. Allowed values: UN - Unassigned from Report, AS - Assigned to Report |
transactionDateFrom |
date |
ISO 8601 YYYY-MM-DD | Filter transactions from this transaction date (inclusive). Defaults to 24 months ago; cannot be earlier than 24 months in the past. |
transactionDateTo |
date |
ISO 8601 YYYY-MM-DD | Filter transactions up to this transaction date (inclusive). |
pageSize |
integer |
- | Page size (max limit: 100); default: 100 |
pageToken |
string |
- | Next page token as returned in a previous request. |
sort |
string |
- | Sort criteria. Allowed values: transactionDate, lastModified; default: transactionDate |
order |
string |
- | Sort order (ASC - Ascending or DESC - Descending); default: DESC |
includeAddendumFor |
array |
string |
Option to additionally fetch addendum data. Allowed values: * / all, carRental, fleet, lodging, purchase, travel; default behavior: no addendum data is returned. |
includeAddendumDetailsFor |
array |
string |
Option to additionally fetch addendum detail data. Allowed values: * / all, fleet, lodging, purchase, travel; default behavior: no addendum detail data is returned. |
Payload
- Request: none
- Response: Transaction List Response
Headers
concur-correlationidis a specific custom header used for technical support in the form of a RFC 4122 A Universally Unique IDentifier (UUID) URN Namespace.
HTTP Status Codes
- 200 OK
- 400 Bad Request
- 401 Unauthorized
- 403 Forbidden
- 404 Not Found
- 500 Internal Server Error
- 503 Service Unavailable
To learn more about response HTTP status codes for this API see HTTP Status Codes.
Examples
Request
GET https://us.api.concursolutions.com/cards/v4/users/e48fda91-15c8-4670-afe5-6c76501813c9/transactions
Accept: application/json
Authorization: Bearer {token}
Concur-CorrelationId: 90f23ece-cb6c-476f-818d-1412bdb23749
Response
{
"transactions": [
{
"type": "RPE",
"transactionAmount": {
"currencyCode": "USD",
"value": 405.1
},
"postedAmount": {
"currencyCode": "USD",
"value": 405.1
},
"transactionDate": "2018-08-17",
"postedDate": "2018-08-19",
"billedAmount": {
"currencyCode": "USD",
"value": 405.1
},
"description": "ACME Hotels,123-456-7890,Seattle",
"description2": null,
"description3": null,
"description4": null,
"description5": null,
"referenceNumber": "gWp859SqAX97DsIVt5aoZmSNh4y8iH6qc",
"processorReferenceNumber": null,
"acquirerReferenceNumber": null,
"merchantReferenceNumber": null,
"customerVatNumber": "",
"totalTaxAmount": null,
"taxes": [],
"statement": {
"referenceNumber": null,
"billingDate": "2018-08-31"
},
"id": "d1c555dc",
"companyId": "5c381619-4980-4eac-bf63-d229ce0be23b",
"account": {
"id": "C2593B6F67E44F4587A812CDD4105FF7",
"lastSegment": "4801",
"paymentType": {
"id": "IBCP"
},
"cardProductType": "CORP"
},
"billingAccount": null,
"administrativeData": {
"status": "UN",
"processType": "REG",
"receiptImageId": null,
"integrationPartner": "BATCH",
"addendumType": null,
"lastModified": "2025-08-15T18:23:34.487+00:00",
"hasRichData": false,
"isDeletable": false
},
"merchant": {
"name": "ACME Corporation",
"categoryCode": "7011",
"doingBusinessAs": "ACME Hotels",
"id": "3321329401"
"vatNumber": "",
"address": {
"city": "Seattle",
"countryCode": "US",
"state": "WA",
"streetAddress": "1 Hotel Way",
"zip": "90001"
}
}
}
],
"paging": {
"totalElements": 1,
"nextPageToken": null,
"page": 1,
"pageSize": 1,
"totalPages": 1
}
}