Release Version 4.13.0 (October 19, 2023)
What’s new
New Integration with Marqeta as a provider of card issuance was implemented. The set of basic external APIs to perform the main operations required for card issuance was implemented (creation of Card product/User/Card/Card State transition)*. Also, the set of internal SDK APIs for creating basic objects inside the SDK system, while the card issuing and card management process performing was added*. Which is used to work the back-end of the system (it can also be used to work front-end of the web or mobile app).
*Find more about API changes in the API section of the Release Notes
So the SDK system implemented the skeleton of the technical integration with basic features for physical and virtual card issuing and further card management. All features that will be available from the vendor (Marqeta) to the client (for both, the source code or cloud clients) depend on the client’s needs and their agreements with the vendor. On the SDK side, a quick way to integrate with the provider from the SDK system.
How it works
The user of the SDK platform initiates the issue of a card (virtual or physical) within the front-end app (web or mobile). Front-end uses the API calls and creates the Business Process in the SDK system regarding the conditions. As a result, the Business Process triggers integration and makes requests (via provider REST API) for the issue of a card to the service provider’s system.
On the provider’s side, a user account and a card is created, with a selected schema and program (according to the agreement between the client and provider) and linked to the user`s profile. At this stage, Marqeta as a service provider performs all necessary communication with the card network or bank, which owns the card and which provides the issue (according to the agreement and card product settings).
After creation, the card ID (token) is returned to the SDK system from the provider, and the system links the card to the profile of the initial user in the SDK system.
As a result, the user in the SDK system can see the issued card, and this card is linked to an in-system account (wallet). The user has access to the card and card management functions (activate or block the card, see card details and balance).
Operations supported on the Test Environment
As Administrator:
- create a card product
- set up the issue card commissions settings (gate product commission profile with product rules and conditions, commission direction must be OUT)
- create user in the Marqeta system and link the user to the user in SDK (updated user Profile)
- approve or decline the business process requests in status waiting_for_approval to process of decline suspended Issue card operation.
As Individual/Merchant (for Merchant only via API):
- issue card and link into the in-system account (gate purchase logic is used)
- change card state (activate/block the card)
- view all issued cards and card details (status, accessory, balance)
Permissions
Two new permissions were added:
- ISSUE_CARD_MANAGER (required for an administrator to manage card and card products)
- ISSUE_CARD_OWNER (required for merchant and individual to issue the card manage it)
Conditions to issue card
- card product should be created
- user in SDK should be activated (status: “approved”) and have filled address data (profile. address: { … }) section in a user profile
- commission for gate Product (operation Issue card) must be set ( commission direction must be OUT)
- user in SDK has a login value [email or phone]. If the existing users in Marqeta have the same email or phone the user creation will fail
The gate transaction engine was changed
- new TxType: ISSUE_CARD was added
- new ProviderCategory [PaymentWay]: CARD_ISSUING was added
- new intermediate TxStatus: WAITING_FOR_APPROVAL was added
- The TxStatus transition was changed
PROVIDER_ASSIGNED.transitsTo(PROVIDER_ASSIGNED, WAITING_FOR_APPROVAL, PENDING, PROCESSED, FAILURE, EXCEPTION); WAITING_FOR_APPROVAL.transitsTo(PENDING, FAILURE, EXCEPTION);
- new BusinessRequestStatus: approved was added
- new intermediate BusinessProcessStatus: waiting_for_approval was added
- The BusinessProcessStatus transition was changed
waiting_for_approval.transits(pending, declined, error);
- BusinessProcessType: GATE_ISSUE_CARD was added
The calculation engine was changed
- IssueCardCalculationStrategy (payment amount transfers to gate PROVIDER commission coin) was added
Marqeta`s API endpoints of Core API integration were implemented:
- POST /users to create a user in the provider`s system
- GET /users to obtain the list of existing users
- POST /cardproducts to create a card product
- GET /cardproducts to obtain the list of existing card products
- POST /cards to issue card (create)
- GET /cards/user/{token} to obtain a card by token
POST /card transitions to change card state
The ability to create a Custom Provider (without technical integration) to set up a commission and to use it for top-up and withdrawal was added.
In cases when technical integration with the provider through the SDK system is not implemented (or is outside the SDK system), but there is a need to account transactions and commissions for their execution, it is possible to configure a custom provider within the system. This allows for the configuration commissions and calculates them when processing such operations (by specifying a custom provider without integration).
Use Case
Technical integration with the provider may be outside the scope of the SDK system. However, the calculation of commissions and accounting is performed within the system, with consideration of the user’s wallet balance.
For this purpose, a custom provider is created in the SDK and commissions for operations of this provider are configured. When a transaction is performed through real integration with the provider, the external system makes a call to the SDK API to create a transaction within the SDK system. The SDK system creates a transaction related to this custom provider (it goes through the balance of the user’s wallet), calculates commissions for it according to the contract, and accounting is performed. The transaction is available in the user`s transaction history within the specified custom provider.
The ELK agent was connected to the SDK.finance pre-prod instance
Improvements
- Typescript was updated to the last version
- The “Add range” button when the first range was added in Product Commission was hide
- The tests for Corefy integration were implemented
- Changes according to the context pass (to support multiple versioning of API) were implemented
- The name of the new Issue card transaction type was added. New txType ISSUE_CARD was added to payload in API POST /v1/contracts/{contractId}/gate-commission-profiles/view to view this operation in gate-commission-profiles
- The new Issue card transaction type was added to “Types” filter in “Transactions list” on the Front-end
- Validation for phone number PATCH /api/profiles/{userId}/person was changed (max amount was extended from 11 to 15 digits)
- Logic to delete all gate-commission-profiles after deleting the appropriate custom gate provider was added
- The Postman collection with a standard set of transactions to run it on the pre-prod environment each time the environment is rebuilt was created.
- Format in current email templates for user`s onboarding notifications was enhanced
- The description for the User about max file size and supported formats for Document upload was enhanced
- The ability for the Administrator to delete Limit rules for Provider operation was added
Fixes
- The issue with setting data in the history_actions table was fixed
- The issue with Merchant Payment (Confirmation Code to execute the payment is not generated correctly) was fixed
- The validation that the amount of gate-investment request must be greater than zero was added
- The Status Code for View cash investment details endpoints was fixed. 500 status code was replaced by 404 “Not found” when trying to view cash investment details GET /gate-investments/{requestIdentifier} using a non-existent request identifier
- The issue with the button “Back” when a user enters the account details and has unpaid invoices was fixed
- Usage of a combination “qualifier”=”quantity” + “timeUnit”=”per_transaction” in limit-profiles was forbidden
- Creation of a combination “qualifier”=”quantity” \+ “timeUnit”=”per\_transaction” when creating limit-profiles was forbidden
- The Status Code for Retrieving all tickets by some categories via POST /tickets/view endpoints was fixed. 500 status code was replaced by the successful response with the list of all tickets filtered by categories and initiator when the user tried to retrieve a list of tickets as customer support manager without “id” in the filter.
- Correct Status Code 400 “Bad Request” of exception in response for POST /media-files and POST /media-files/resources was added (when trying to upload an invalid format file)
- The Status Code for uploading files via POST /media-files/resources and POST /media-files endpoints was fixed. 504 status code was replaced by 400 “Bad Request” when trying to upload a too-large file
- The status Code for filtering the Transaction list of Merchant users by status was fixed. 500 status code was replaced by
- Successful response when trying to filtering Transactions list of Merchant users by status
- The Status Code for issue cards via POST /issue-card/cards endpoints was fixed. 500 status code was replaced by 403 “Forbidden” when trying to create an issue card purchase by an unauthorized user
- Status Code for Create gate transaction via POST /gate/transactions/{transactionId}/prepare endpoints was fixed. 500 status code was replaced by 400 “Bad Request” when trying to use invalid optionName
500 status code was replaced by 401 “Unauthorized” when JWT is expired - The size of dropdown lists when creating a new limit profile and commission rule was corrected on the Front-end
- The Status Code for modifying user profile data via POST /v1/profiles/my/contact and POST /v1/profiles/{userId}/contact endpoints was fixed. 500 status code was replaced by 400 “Bad Request” when trying to add an invalid contact to the Login details
- The issue with displaying of amount in transactions when the user-issued card was fixed
- Displaying of both amounts (source and destination) for Admin and Merchant when user issue card was added
- The issue with the system coin for deactivated currency was fixed
- The ability to duplicate a user creation with the same credentials on both the Back-end and Front-end sides was forbidden
- The issue with the creation of cards and smart cards via Front-end was fixed
API Changes | |
Endpoint | Added |
POST /contracts/{contractId}/gate-commission-profiles/view | was added new endpoint to view gate commission profile by contractId (internal dentifier of the contract) with filter and details in the response. Permission CONTRACT_MANAGER is required Request body: { "types": [ "string" ]} Response: { "records": [ { "id": "string", "gateProviderId": "string", "gateProviderName": "string", "providerCurrency": { "id": "25d59a93-6865-47b7-9afd-076a216fba17", "code": "USD", "digitalCode": "840", "symbol": "$", "name": "US Dollar", "description": "US Dollar", "fraction": 100 }, "createdAt": "2023-10-11T13:56:28.860Z", "updatedAt": "2023-10-11T13:56:28.860Z" } ]} |
POST /issue-card/card-products | was added new endpoint to Create card product (as Administrator). Permission ISSUE_CARD_MANAGER is requred. Request body parameter: { "gateProviderId": "{{issueCardGateProviderId}}", "name": "TEST MARQETA CARD PRODUCT 1234", "description": "card product MASTERCARD", "logo": "https://upload.wikimedia.org/wikipedia/commons/b/b7/MasterCard_Logo.svg", "category": "CARD", "textPayerFields": [ { "name": "cardName", "lengthFrom": 5, "lengthTo": 40 } ], "currencyIds": [ "{{currencyId}}" ], "startDate": "2023-01-01", "endDate": "2024-12-31", "active": true, "visible": true} Response body parameter: { "records": [ { "cardProductId": "9f61d093-38f6-4985-815b-f1bdef430cbd", "cardProductToken": "d9c22172-03f8-4f01-b3ca-1b3a9ad6cece", "gateProductId": "9252b575-154e-49c2-9608-8ad24229d71e", "gateProviderId": "22ee9ad3-d29b-45bd-ad8b-42191553da35", "name": "TEST MARQETA CARD PRODUCT 1234", "startDate": "2023-01-01", "endDate": "2024-12-31", "active": true, "visible": true } ]} |
POST /issue-card/users | was added new endpoint to Link user in SDK system with user in the Provider`s system. Permission ISSUE_CARD_OWNER is requred. Response body parameter: { "records": [ { "userId": "ac7aee4f-633e-4073-865f-9deacc314981", "userToken": "f462b947-de83-4963-88aa-b6fd191da055", "userProfileId": "4decff4c-4b71-4683-8e57-cc0d70b47388", "organizationId": "7accb03b-5a98-4d01-9016-ec5de53322b3" } ]} |
POST /issue-card/cards | was added new endpoint to Create Issue Card Purchase. Permission ISSUE_CARD_OWNER is required Request body: { "serial": "{{user2AccountSerial}}", "productId": "{{gateProductId}}", "description": "Issue Card Test"} Response body: { "id": "b6c4e2e6-bd4e-4320-8fe5-0520f90ac0f9", "orderId": 4, "type": "ISSUE_CARD", "status": "PROVIDER_ASSIGNED", "coin": { "serial": "843936454281", "name": "ISSUE CARD Test USD Account", "amount": 9000.0000, "availableAmount": 9000.0000, "futureAmount": 0.0000, "heldAmount": 0.0000, "creditLimit": 0.0000, "active": true, "type": "client", "main": true, "issuer": { "id": "b5293da5-dfdc-4713-9b9c-ee90a9977676", "sn": "USD", "currency": "USD", "symbol": "$" } }, "paymentMethod": { "gateProvider": { "id": "22ee9ad3-d29b-45bd-ad8b-42191553da35", "name": "Marqeta Card Issuing", "gate": { "name": "Marqeta Card Issuing" } }, "way": "CARD_ISSUING" }, "sourceAmount": 23.0000, "amountToSend": 23.0000, "payerData": {}} |
POST /gate/transactions/{transactionId}/prepare | was added new endpoint to Prepare Tx. Permission required: GATE_OPERATION_EXECUTOR Request URL parameter: transactionId internal unique identifiers of the transaction in SDK system. Required field. Request body: { "optionName": "default", "fields": [ { "name": "cardName", "value": "MY FIRST TEST stage CARD with Accept" } ]} Response body (status='waiting_for_approval') { "id": "93862242-d11f-4556-9897-8f8bc4b0353f", "createdAt": "2023-10-04T06:07:32.989Z", "updatedAt": "2023-10-04T06:07:32.952Z", "type": "gate_issue_card", "status": "waiting_for_approval", "requestIdentifier": 932883590, "requestStatus": "pending", "transactions": [ { "id": "6d38aa47-7b9d-4563-8e1a-8ee5d42026ed", "type": "authorization", "from": { "serial": "843936454281", "organizationId": "7accb03b-5a98-4d01-9016-ec5de53322b3", "organizationName": "sdk_stage_open_api_test_marqeta_artem_0001@mailinator.com", "technical": false, "type": "client", "name": "ISSUE CARD Test USD Account", "issuer": { "id": "b5293da5-dfdc-4713-9b9c-ee90a9977676", "sn": "USD", "currency": "USD", "symbol": "$" } }, "amount": 23.0000, "performedAt": "2023-10-04T06:07:33.028Z", "issuer": { "id": "b5293da5-dfdc-4713-9b9c-ee90a9977676", "sn": "USD", "currency": "USD", "symbol": "$" } } ], "children": [], "categoryCode": "1234", "categoryName": "dummyCategory", "internalSourceAmount": 23.0000, "externalDestinationAmount": 23.0000, "clientCoin": { "serial": "843936454281", "organizationId": "7accb03b-5a98-4d01-9016-ec5de53322b3", "organizationName": "sdk_stage_open_api_test_marqeta_artem_0001@mailinator.com", "technical": false, "type": "client", "name": "ISSUE CARD Test USD Account", "issuer": { "id": "b5293da5-dfdc-4713-9b9c-ee90a9977676", "sn": "USD", "currency": "USD", "symbol": "$" } }, "amount": 23.0000, "commission": 23.0000, "netAmount": 0.0000, "gateProviderId": "22ee9ad3-d29b-45bd-ad8b-42191553da35", "sourceIssuer": { "id": "b5293da5-dfdc-4713-9b9c-ee90a9977676", "sn": "USD", "currency": "USD", "symbol": "$" }, "destinationIssuer": { "id": "b5293da5-dfdc-4713-9b9c-ee90a9977676", "sn": "USD", "currency": "USD", "symbol": "$" }} Response body (status='processed') { "id": "6e6ae8a6-a474-438e-9832-75a6dcbae437", "createdAt": "2023-10-04T07:54:07.807Z", "updatedAt": "2023-10-04T07:54:07.748Z", "type": "gate_issue_card", "status": "processed", "requestIdentifier": 1257342179, "requestStatus": "approved", "transactions": [ { "id": "bc158104-648d-4b6f-9207-98f239ec2ce5", "type": "authorization", "from": { "serial": "649687175005", "organizationId": "7accb03b-5a98-4d01-9016-ec5de53322b3", "organizationName": "sdk_stage_open_api_test_marqeta_artem_0001@mailinator.com", "technical": false, "type": "client", "name": "ISSUE CARD Test USD Account", "issuer": { "id": "b5293da5-dfdc-4713-9b9c-ee90a9977676", "sn": "USD", "currency": "USD", "symbol": "$" } }, "amount": 23.0000, "performedAt": "2023-10-04T07:54:07.860Z", "issuer": { "id": "b5293da5-dfdc-4713-9b9c-ee90a9977676", "sn": "USD", "currency": "USD", "symbol": "$" } }, { "id": "971e11ac-e5c0-46f5-8179-7c68e9cacd92", "type": "capture", "from": { "serial": "649687175005", "organizationId": "7accb03b-5a98-4d01-9016-ec5de53322b3", "organizationName": "sdk_stage_open_api_test_marqeta_artem_0001@mailinator.com", "technical": false, "type": "client", "name": "ISSUE CARD Test USD Account", "issuer": { "id": "b5293da5-dfdc-4713-9b9c-ee90a9977676", "sn": "USD", "currency": "USD", "symbol": "$" } }, "amount": 23.0000, "performedAt": "2023-10-04T07:54:09.114Z", "issuer": { "id": "b5293da5-dfdc-4713-9b9c-ee90a9977676", "sn": "USD", "currency": "USD", "symbol": "$" } } ], "children": [], "categoryCode": "1234", "categoryName": "dummyCategory", "internalSourceAmount": 23.0000, "externalDestinationAmount": 23.0000, "clientCoin": { "serial": "649687175005", "organizationId": "7accb03b-5a98-4d01-9016-ec5de53322b3", "organizationName": "sdk_stage_open_api_test_marqeta_artem_0001@mailinator.com", "technical": false, "type": "client", "name": "ISSUE CARD Test USD Account", "issuer": { "id": "b5293da5-dfdc-4713-9b9c-ee90a9977676", "sn": "USD", "currency": "USD", "symbol": "$" } }, "amount": 23.0000, "commission": 23.0000, "netAmount": 0.0000, "gateProviderId": "22ee9ad3-d29b-45bd-ad8b-42191553da35", "sourceIssuer": { "id": "b5293da5-dfdc-4713-9b9c-ee90a9977676", "sn": "USD", "currency": "USD", "symbol": "$" }, "destinationIssuer": { "id": "b5293da5-dfdc-4713-9b9c-ee90a9977676", "sn": "USD", "currency": "USD", "symbol": "$" }} |
POST /issue-card/cards/issue/view | was added new endpoint to View Issue card business requests. Permissions ISSUE_CARD_MANAGER and ISSUE_CARD_OWNER are required Request body: { "filter": { "ids": [], "startCreatedDate": "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", "finishCreatedDate": "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", "coinSerials": [], "orgIds": [], "requestStatuses": [ "pending" ] }, "sort": { "createdAt": "asc", "status": "asc", "type": "asc" }} Response body: { "pageNumber": 0, "pageSize": 10, "totalPages": 1, "totalRecords": 10, "records": [ { "id": "string", "createdAt": "2023-10-11T15:19:59.401Z", "updatedAt": "2023-10-11T15:19:59.401Z", "type": "string", "status": "limited", "categoryCode": "string", "categoryName": "string", "categoryImageLink": "string", "requestIdentifier": 0, "requestStatus": "limited", "internalSourceAmount": 0, "internalDestinationAmount": 0, "externalSourceAmount": 0, "externalDestinationAmount": 0, "sourceIssuer": { "id": "string", "sn": "string", "currency": "string", "symbol": "string" }, "destinationIssuer": { "id": "string", "sn": "string", "currency": "string", "symbol": "string" }, "transactions": [ { "id": "string", "parentId": "string", "type": "transfer", "from": { "serial": "string", "organizationId": "string", "organizationName": "string", "technical": true, "type": "regular_commission", "issuer": { "id": "string", "sn": "string", "currency": "string", "symbol": "string" }, "name": "string" }, "to": { "serial": "string", "organizationId": "string", "organizationName": "string", "technical": true, "type": "regular_commission", "issuer": { "id": "string", "sn": "string", "currency": "string", "symbol": "string" }, "name": "string" }, "amount": 0, "performedAt": "2023-10-11T15:19:59.402Z", "issuer": { "id": "string", "sn": "string", "currency": "string", "symbol": "string" } } ], "children": [ "string" ], "errorMessage": "string", "customInformation": "string", "commissionAmounts": { "source": { "total": 0, "system": 0, "provider": 0 }, "destination": { "total": 0, "system": 0, "provider": 0 } }, "commissionAmount": 0, "amount": 0, "commission": 0, "netAmount": 0, "gateProviderId": "string", "clientCoin": { "serial": "string", "organizationId": "string", "organizationName": "string", "technical": true, "type": "regular_commission", "issuer": { "id": "string", "sn": "string", "currency": "string", "symbol": "string" }, "name": "string" } } ]} |
POST /issue-card/cards/issue/{requestIdentifier}/accept | was added new endpoint to Accept Issue card business request. Permissions ISSUE_CARD_MANAGER, ISSUE_CARD_OWNER are required. Request URL parameter: requestIdentifier business request identifier. Required field. Response body: { "id": "93862242-d11f-4556-9897-8f8bc4b0353f", "createdAt": "2023-10-04T06:07:32.989Z", "updatedAt": "2023-10-04T06:08:31.369Z", "type": "gate_issue_card", "status": "processed", "requestIdentifier": 932883590, "requestStatus": "approved", "transactions": [ { "id": "6d38aa47-7b9d-4563-8e1a-8ee5d42026ed", "type": "authorization", "from": { "serial": "843936454281", "organizationId": "7accb03b-5a98-4d01-9016-ec5de53322b3", "organizationName": "sdk_stage_open_api_test_marqeta_artem_0001@mailinator.com", "technical": false, "type": "client", "name": "ISSUE CARD Test USD Account", "issuer": { "id": "b5293da5-dfdc-4713-9b9c-ee90a9977676", "sn": "USD", "currency": "USD", "symbol": "$" } }, "amount": 23.0000, "performedAt": "2023-10-04T06:07:33.028Z", "issuer": { "id": "b5293da5-dfdc-4713-9b9c-ee90a9977676", "sn": "USD", "currency": "USD", "symbol": "$" } }, { "id": "2869840d-82ad-41aa-815e-e741dfd33ced", "type": "capture", "from": { "serial": "843936454281", "organizationId": "7accb03b-5a98-4d01-9016-ec5de53322b3", "organizationName": "sdk_stage_open_api_test_marqeta_artem_0001@mailinator.com", "technical": false, "type": "client", "name": "ISSUE CARD Test USD Account", "issuer": { "id": "b5293da5-dfdc-4713-9b9c-ee90a9977676", "sn": "USD", "currency": "USD", "symbol": "$" } }, "amount": 23.0000, "performedAt": "2023-10-04T06:08:32.219Z", "issuer": { "id": "b5293da5-dfdc-4713-9b9c-ee90a9977676", "sn": "USD", "currency": "USD", "symbol": "$" } } ], "children": [], "categoryCode": "1234", "categoryName": "dummyCategory", "internalSourceAmount": 23.0000, "externalDestinationAmount": 23.0000, "clientCoin": { "serial": "843936454281", "organizationId": "7accb03b-5a98-4d01-9016-ec5de53322b3", "organizationName": "sdk_stage_open_api_test_marqeta_artem_0001@mailinator.com", "technical": false, "type": "client", "name": "ISSUE CARD Test USD Account", "issuer": { "id": "b5293da5-dfdc-4713-9b9c-ee90a9977676", "sn": "USD", "currency": "USD", "symbol": "$" } }, "amount": 23.0000, "commission": 23.0000, "netAmount": 0.0000, "gateProviderId": "22ee9ad3-d29b-45bd-ad8b-42191553da35", "sourceIssuer": { "id": "b5293da5-dfdc-4713-9b9c-ee90a9977676", "sn": "USD", "currency": "USD", "symbol": "$" }, "destinationIssuer": { "id": "b5293da5-dfdc-4713-9b9c-ee90a9977676", "sn": "USD", "currency": "USD", "symbol": "$" }} |
POST /issue-card/cards/issue/{requestIdentifier}/decline | was added new endpoint to Decline Issue card business request. Permission ISSUE_CARD_MANAGER, ISSUE_CARD_OWNER are required Request URL parameter: requestIdentifier business request identifier. Required field. Response body: { "id": "91f3f96e-aec7-4cf5-b1b2-11bfd5cb917b", "createdAt": "2023-10-04T05:39:35.837Z", "updatedAt": "2023-10-04T06:01:04.352Z", "type": "gate_issue_card", "status": "declined", "requestIdentifier": 881367838, "requestStatus": "declined", "transactions": [ { "id": "b598522c-ca08-4505-9ff9-78f26a352f24", "type": "authorization", "from": { "serial": "843936454281", "organizationId": "7accb03b-5a98-4d01-9016-ec5de53322b3", "organizationName": "sdk_stage_open_api_test_marqeta_artem_0001@mailinator.com", "technical": false, "type": "client", "name": "ISSUE CARD Test USD Account", "issuer": { "id": "b5293da5-dfdc-4713-9b9c-ee90a9977676", "sn": "USD", "currency": "USD", "symbol": "$" } }, "amount": 23.0000, "performedAt": "2023-10-04T05:39:35.862Z", "issuer": { "id": "b5293da5-dfdc-4713-9b9c-ee90a9977676", "sn": "USD", "currency": "USD", "symbol": "$" } }, { "id": "990266a2-7e23-4385-af81-9341d3b94153", "type": "reversal", "to": { "serial": "843936454281", "organizationId": "7accb03b-5a98-4d01-9016-ec5de53322b3", "organizationName": "sdk_stage_open_api_test_marqeta_artem_0001@mailinator.com", "technical": false, "type": "client", "name": "ISSUE CARD Test USD Account", "issuer": { "id": "b5293da5-dfdc-4713-9b9c-ee90a9977676", "sn": "USD", "currency": "USD", "symbol": "$" } }, "amount": 23.0000, "performedAt": "2023-10-04T06:01:04.458Z", "issuer": { "id": "b5293da5-dfdc-4713-9b9c-ee90a9977676", "sn": "USD", "currency": "USD", "symbol": "$" } } ], "children": [], "categoryCode": "1234", "categoryName": "dummyCategory", "internalSourceAmount": 23.0000, "externalDestinationAmount": 23.0000, "clientCoin": { "serial": "843936454281", "organizationId": "7accb03b-5a98-4d01-9016-ec5de53322b3", "organizationName": "sdk_stage_open_api_test_marqeta_artem_0001@mailinator.com", "technical": false, "type": "client", "name": "ISSUE CARD Test USD Account", "issuer": { "id": "b5293da5-dfdc-4713-9b9c-ee90a9977676", "sn": "USD", "currency": "USD", "symbol": "$" } }, "amount": 23.0000, "commission": 23.0000, "netAmount": 0.0000, "gateProviderId": "22ee9ad3-d29b-45bd-ad8b-42191553da35", "sourceIssuer": { "id": "b5293da5-dfdc-4713-9b9c-ee90a9977676", "sn": "USD", "currency": "USD", "symbol": "$" }, "destinationIssuer": { "id": "b5293da5-dfdc-4713-9b9c-ee90a9977676", "sn": "USD", "currency": "USD", "symbol": "$" }} |
PATCH /issue-card/cards/{cardId} | was added new endpoint to Update card state by 'cardId' as card owner. Permission ISSUE_CARD_OWNER is required Request URL parameter: cardId internal identifier of the in SDK system. Required field. Request body: { "state": "string", "reason": "string", "reasonCode": "string"} state is the state of the card to set Values: ACTIVE, SUSPENDED, TERMINATED Required field. reason is the additional information about the state change Optional field. reasonCode is the standard code describing the reason for the transition Values: 00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31. regex: ^(?:[0-2][0-9]|30|31)$ Optional field. Response body: { "records": [ { "name": "MY FIRST TEST stage CARD with Accept", "cardId": "3597b3bc-32be-4d8c-b399-b90e8b35355e", "cardToken": "cdf432a1-4785-46a2-a1ec-58d18ad3fd8d", "cardProductId": "9f61d093-38f6-4985-815b-f1bdef430cbd", "cardProductToken": "d9c22172-03f8-4f01-b3ca-1b3a9ad6cece", "organizationId": "7accb03b-5a98-4d01-9016-ec5de53322b3", "coinSerial": "843936454281", "state": "ACTIVE", "isDefault": true } ]} |
GET /gate-provider/{gateProviderId}/coins | was added new endpoint to To get Gate Provider coins by gateProviderId. Permission COIN_MANAGER is required. Request URL parameter: gateProviderId is the identifier of the Gate Provider in SDK system. Required field. Response body: { "records": [ { "serial": "551869878118", "type": "business_gate_commission", "amount": 0.0000, "availableAmount": 0.0000, "currency": { "id": "752dc7b4-a79c-43ee-85d9-5c60923517ac", "sn": "USD", "currency": "USD", "symbol": "$" }, "collector": "SDK_FINANCE" }, { "serial": "944876424599", "type": "business_gate_commission", "amount": 0.0000, "availableAmount": 0.0000, "currency": { "id": "752dc7b4-a79c-43ee-85d9-5c60923517ac", "sn": "USD", "currency": "USD", "symbol": "$" }, "collector": "TOTAL" }, { "serial": "854036361612", "type": "gate", "amount": 0.0000, "availableAmount": 0.0000, "currency": { "id": "752dc7b4-a79c-43ee-85d9-5c60923517ac", "sn": "USD", "currency": "USD", "symbol": "$" } }, { "serial": "290398117616", "type": "business_gate_commission", "amount": 0.0000, "availableAmount": 0.0000, "currency": { "id": "752dc7b4-a79c-43ee-85d9-5c60923517ac", "sn": "USD", "currency": "USD", "symbol": "$" }, "collector": "BANK" }, { "serial": "506981411851", "type": "regular_gate_commission", "amount": 0.0000, "availableAmount": 0.0000, "currency": { "id": "752dc7b4-a79c-43ee-85d9-5c60923517ac", "sn": "USD", "currency": "USD", "symbol": "$" }, "collector": "BANK" }, { "serial": "493132074797", "type": "business_gate_commission", "amount": 0.0000, "availableAmount": 0.0000, "currency": { "id": "752dc7b4-a79c-43ee-85d9-5c60923517ac", "sn": "USD", "currency": "USD", "symbol": "$" }, "collector": "PROVIDER" }, { "serial": "268466328084", "type": "regular_gate_commission", "amount": 42.0000, "availableAmount": 42.0000, "currency": { "id": "752dc7b4-a79c-43ee-85d9-5c60923517ac", "sn": "USD", "currency": "USD", "symbol": "$" }, "collector": "PROVIDER" }, { "serial": "152817417157", "type": "regular_gate_commission", "amount": 63.0000, "availableAmount": 63.0000, "currency": { "id": "752dc7b4-a79c-43ee-85d9-5c60923517ac", "sn": "USD", "currency": "USD", "symbol": "$" }, "collector": "TOTAL" } ]} |
GET /issue-card/users/{userId}/search?by=email | was added new endpoint to Search Linked user in Marqeta system by 'userId' and provided user`s contact (as Administrator). Permission ISSUE_CARD_MANAGER is required Request URL parameter: userId is the identifier of the user in SDK system. Required field by is the user`s contact type to search by. Optional field Value: email, phone · email (default or if param does not set), perform search by email · phone perform search user by phone number The email or phone will be taken from the user`s profile contacts. Response body: { "records": [ { "token": "f462b947-de83-4963-88aa-b6fd191da055", "active": true, "metadata": {}, "accountHolderGroupToken": "DEFAULT_AHG", "identifications": [], "email": "sdk_stage_open_api_test_marqeta_artem_0001@mailinator.com", "corporateCardHolder": false, "usesParentAccount": false, "createdTime": "2023-10-04T05:34:18.000Z", "lastModifiedTime": "2023-10-04T05:34:19.000Z", "status": "ACTIVE" } ]} |
GET /issue-card/users/{userId} | was added new endpoint to Obtain Linked user details by 'userId' as Administrator. Permission ISSUE_CARD_MANAGER is required Request URL parameter: userId is the identifier of the user in SDK system. Required field Response body: { "records": [ { "token": "string", "active": "string", "notes": "string", "ipAddress": "string", "password": "string", "phone": "string", "metadata": { "additionalProp1": "string", "additionalProp2": "string", "additionalProp3": "string" }, "accountHolderGroupToken": "string", "identifications": [ { "type": "SSN", "value": "string", "expirationDate": "2023-10-11" } ], "honorific": "string", "gender": "string", "firstName": "string", "middleName": "string", "lastName": "string", "email": "string", "address1": "string", "address2": "string", "city": "string", "state": "string", "country": "string", "birthDate": "2023-10-11", "corporateCardHolder": true, "ssn": "string", "passportNumber": "string", "passportExpirationDate": "2023-10-11", "idCardNumber": "string", "idCardExpirationDate": "2023-10-11", "nationality": "string", "company": "string", "parentToken": "string", "usesParentAccount": true, "postalCode": "string", "createdTime": "2023-10-11T16:51:18.325Z", "lastModifiedTime": "2023-10-11T16:51:18.325Z", "status": "ACTIVE" } ]} |
GET /issue-card/card-products/{cardProductId} | was added new endpoint to Obtain specific Card Product details by 'cardProductId' as Administrator. Permission ISSUE_CARD_MANAGER is required Request URL parameter: cardProductId is the identifier of the card product in SDK system Response body: { "records": [ { "token": "d9c22172-03f8-4f01-b3ca-1b3a9ad6cece", "name": "TEST MARQETA CARD PRODUCT 1234", "active": true, "startDate": "2023-01-01", "endDate": "2024-12-31", "config": { "poi": { "other": { "allow": true, "cardPresenceRequired": false, "cardholderPresenceRequired": false, "track1DiscretionaryData": "000000", "track2DiscretionaryData": "00000", "useStaticPin": false }, "ecommerce": true, "atm": false }, "transactionControls": { "acceptedCountriesToken": "accept_us_only", "alwaysRequirePin": false, "alwaysRequireIcc": false, "allowGpaAuth": true, "requireCardNotPresentCardSecurityCode": false, "allowMccGroupAuthorizationControls": true, "allowFirstPinSetViaFinancialTransaction": false, "ignoreCardSuspendedState": false, "allowChipFallback": true, "allowNetworkLoad": false, "allowNetworkLoadCardActivation": false, "allowQuasiCash": false, "enablePartialAuthApproval": true, "addressVerification": { "avMessages": { "validate": true, "declineOnAddressNumberMismatch": false, "declineOnPostalCodeMismatch": true }, "authMessages": { "validate": true, "declineOnAddressNumberMismatch": false, "declineOnPostalCodeMismatch": false } }, "strongCustomerAuthenticationLimits": {}, "quasiCashExemptMids": "984226812886,000984226812886", "enableCreditService": false }, "selectiveAuth": { "saMode": "NUMBER_1", "dmdLocationSensitivity": "NUMBER_0", "enableRegexSearchChain": false }, "special": { "merchantOnBoarding": false }, "cardLifeCycle": { "activateUponIssue": false, "expirationOffset": { "unit": "YEARS", "value": 4 }, "cardServiceCode": 101, "updateExpirationUponActivation": false }, "clearingAndSettlement": { "overdraftDestination": "GPA" }, "jitFunding": { "paymentcardFundingSource": { "enabled": false, "refundsDestination": "EMPTY" }, "programgatewayFundingSource": { "enabled": false, "fundingSourceToken": "", "refundsDestination": "EMPTY", "alwaysFund": true }, "programFundingSource": { "enabled": false, "fundingSourceToken": "", "refundsDestination": "EMPTY" } }, "digitalWalletTokenization": { "provisioningControls": { "manualEntry": { "enabled": false, "addressVerification": { "validate": true } }, "walletProviderCardOnFile": { "enabled": false, "addressVerification": { "validate": true } }, "inAppProvisioning": { "enabled": false, "addressVerification": { "validate": true } }, "webPushProvisioning": { "wppApplePartnerId": "", "wppAppleCardTemplateId": "", "wppGooglePiaid": "" }, "forceYellowPathForCardProduct": false }, "cardArtId": "" }, "fulfillment": { "paymentInstrument": "PHYSICAL_MSR", "packageId": "0", "allZeroCardSecurityCode": false, "binPrefix": "111111", "bulkShip": false, "panLength": "16", "fulfillmentProvider": "PERFECTPLASTIC", "allowCardCreation": true, "uppercaseNameLines": true, "enableOfflinePin": false } }, "createdTime": "2023-10-04T05:30:43.000Z", "lastModifiedTime": "2023-10-04T05:30:43.000Z" } ]} |
GET /issue-card/users/cards | was added new endpoint to Obtain all user cards as card owner. Return all stored in SDK card info for user`s cards. Permission ISSUE_CARD_OWNER is required Response body: { "records": [ { "name": "MY FIRST TEST stage CARD with Accept", "cardId": "3597b3bc-32be-4d8c-b399-b90e8b35355e", "cardToken": "cdf432a1-4785-46a2-a1ec-58d18ad3fd8d", "cardProductId": "9f61d093-38f6-4985-815b-f1bdef430cbd", "cardProductToken": "d9c22172-03f8-4f01-b3ca-1b3a9ad6cece", "organizationId": "7accb03b-5a98-4d01-9016-ec5de53322b3", "coinSerial": "843936454281", "state": "UNACTIVATED", "isDefault": true } ]} |
POST /issue-card/users/cards/view | was added new endpoint to View user cards as card owner. Return cards into for authorized user with pagination, filter and sorting. Permission ISSUE_CARD_OWNER is requred Available filter by parameters (optional): id - card identifier is SDK system. cardToken - card token. Token is identifier in MARQETA system. cardProductToken - card product token. Token is identifier in MARQETA system. cardUserToken - card user token. Token is identifier in MARQETA system. states - current cart state, value: ACTIVE, SUSPENDED, TERMINATED, UNSUPPORTED, UNACTIVATED, LIMITED. name - card name. This param uses LIKE search approach. coinSerial - related coin serial isDefault - is the related coin default, this param will be useful for multiple card and coin relatin Available sorting by parameters (optional): states - asc/desc name - asc/desc Request body: { "filter": { "coinSerial": "{{user2AccountSerial}}" }} Response body: { "pageNumber": 0, "pageSize": 20, "totalRecords": 1, "totalPages": 1, "records": [ { "name": "MY FIRST TEST stage CARD with Accept", "cardId": "3597b3bc-32be-4d8c-b399-b90e8b35355e", "cardToken": "cdf432a1-4785-46a2-a1ec-58d18ad3fd8d", "cardProductId": "9f61d093-38f6-4985-815b-f1bdef430cbd", "cardProductToken": "d9c22172-03f8-4f01-b3ca-1b3a9ad6cece", "organizationId": "7accb03b-5a98-4d01-9016-ec5de53322b3", "coinSerial": "843936454281", "state": "UNACTIVATED", "isDefault": true } ]} |
GET /issue-card/cards/{cardId} | was added new endpoint to Obtain card details by 'cardId' as card owner. Permission ISSUE_CARD_OWNER is requred Request URL parameter: userId is the identifier of the user in SDK system. Required field showPAN is shown PAN in the response, if showPAN=false CVV will be hidden too. Optional field showCVV is shown or hide CVV in the response, available only if showPAN=true. Optional field By default only masked PAN and hide CVV is presence in the response You can use this optional parameters to show the primary account number (PAN) and card verification value (CVV2) number in the response. This endpoint requires PCI DSS compliance if showPAN and showCVV are set to true. You must comply with PCI DSS data security requirements if you store, transmit, or process sensitive card data. Response body: { "records": [ { "createdTime": "2023-10-04T06:08:32.000Z", "lastModifiedTime": "2023-10-04T06:08:32.000Z", "token": "cdf432a1-4785-46a2-a1ec-58d18ad3fd8d", "userToken": "f462b947-de83-4963-88aa-b6fd191da055", "cardProductToken": "d9c22172-03f8-4f01-b3ca-1b3a9ad6cece", "lastFour": "7392", "pan": "111111______7392", "expiration": "1027", "expirationTime": "2027-10-31T23:59:59.000Z", "barcode": "37092642243816337358", "pinIsSet": false, "state": "UNACTIVATED", "stateReason": "New card", "fulfillmentStatus": "ISSUED", "instrumentType": "PHYSICAL_MSR", "expedite": false, "metadata": {} } ]} Response body if GET /issue-card/cards/:cardId?showPAN=true { "records": [ { "createdTime": "2023-10-04T06:08:32.000Z", "lastModifiedTime": "2023-10-04T06:08:32.000Z", "token": "cdf432a1-4785-46a2-a1ec-58d18ad3fd8d", "userToken": "f462b947-de83-4963-88aa-b6fd191da055", "cardProductToken": "d9c22172-03f8-4f01-b3ca-1b3a9ad6cece", "lastFour": "7392", "pan": "1111111713087392", "expiration": "1027", "expirationTime": "2027-10-31T23:59:59.000Z", "barcode": "37092642243816337358", "pinIsSet": false, "state": "UNACTIVATED", "stateReason": "New card", "fulfillmentStatus": "ISSUED", "instrumentType": "PHYSICAL_MSR", "expedite": false, "metadata": {} } ]} Response body if GET /issue-card/cards/:cardId?showPAN=true&showCVV=true { "records": [ { "createdTime": "2023-10-04T06:08:32.000Z", "lastModifiedTime": "2023-10-04T06:08:32.000Z", "token": "cdf432a1-4785-46a2-a1ec-58d18ad3fd8d", "userToken": "f462b947-de83-4963-88aa-b6fd191da055", "cardProductToken": "d9c22172-03f8-4f01-b3ca-1b3a9ad6cece", "lastFour": "7392", "pan": "1111111713087392", "expiration": "1027", "expirationTime": "2027-10-31T23:59:59.000Z", "cvvNumber": "706", "barcode": "37092642243816337358", "pinIsSet": false, "state": "UNACTIVATED", "stateReason": "New card", "fulfillmentStatus": "ISSUED", "instrumentType": "PHYSICAL_MSR", "expedite": false, "metadata": {} } ]} |
Endpoint | Deprecated |
POST /cash-desks/report-turnover PATCH /coins/{serial}/credit-limit GET /management/filter-templates POST /management/filter-templates PUT /management/filter-templates/{filterTemplateId} DELETE /management/filter-templates/{filterTemplateId} GET /notification/message/keys POST /gate/transactions/payment-points | Was marked as deprecated. Will be removed from API and code in next (4.14.0) release. |