- 23 Feb 2023
- 5 Minutes To Read
- Print
- DarkLight
- PDF
Marqeta Integration
- Updated On 23 Feb 2023
- 5 Minutes To Read
- Print
- DarkLight
- PDF
We partner with Marqeta to provide card issuing and processing services. Marqeta is a card issuing platform providing an Open API.
The Marqueta connector is for Mambu customers who want to offer debit cards to their clients. Using the Marqeta connector means you don't need to build out your own gateways or deal with messaging standards such as ISO 8583.
Marqeta is live across North America, Australia, and Europe and integrated with the Visa, Mastercard, and Discover networks allowing you or your clients to make the best choice of a card product.
For more information about Marqeta see Mambu Marketplace or the Marqeta website.
The Mambu-Marqeta microservice is used to process payment card authorization requests and accept payment card clearing transactions and reversal instructions sent by Marqeta. The integration supports funding card transactions via Marqeta’s Just-in-Time (JIT) Funding™ solution. You manage card authorization via the Marqeta JIT Funding gateway. When a transaction is initiated, funds are moved from a funding account to the card account and the transaction is then settled, following a successful authorization via the JIT gateway. This setup supports use cases with multiple combinations of authorization and settlement business flows.
Prerequisites
Before working with cards, make sure you have your Mambu environment set up. There may be additional setup to be done in Marqeta if you intend to use their simulation APIs for testing purposes.
Architecture
The Mambu-Marqeta integration is built around the Marqeta JIT Funding concept, which can be described as a method of automatically funding an account in real time during the transaction process.
Through the Gateway JIT Funding approach, the Marqeta platform applies spend controls to make authorization decisions and forwards funding requests to the bank’s core system through the gateway so that funding decisions can be made. Mambu receives these funding requests and approves or denies them using the core system’s backend business rules.
The Marqeta platform exchanges the following types of messages with Mambu:
- JIT Funding requests: Actionable messages for authorization requests sent by Marqeta to create a hold for the requested amount, check payment card account, or get the account balance. Mambu should respond in three seconds.
- JIT Funding responses: Sent by Mambu to the Marqeta platform in response to an actionable message to approve or deny an authorization request.
- JIT Funding notifications: Transaction event messages sent by the Marqeta platform to Mambu's JIT Informative Notifications endpoint. These asynchronous messages contain the entire transaction and information about its final outcome. Such batches are to be stored in five seconds and processed in an asynchronous way.
- JIT Funding notification responses: Sent by the JIT Informative Notifications endpoint after a batch of transactions has been validated for the presence of all required parameters.
Communication is made using two endpoints.
Gateway endpoint
This endpoint is designed to receive and respond to actionable requests.
To approve a request, a 200 OK
status code is sent and the jit_funding
object is included as the response body.
To deny a request, a 402 Payment Required
status code is sent and the jit_funding
object is included as the response body with a decline reason.
Informative notifications endpoint
To handle Informative JIT Funding messages, Mambu uses an endpoint for receiving event notifications. Within seconds of each transaction, the Marqeta platform sends webhook notifications to this endpoint to enable tracking of requests, maintaining account balances and resolving timeout issues.
Mambu validates the presence of mandatory parameters for clearing messages and responds to each JIT Informative request through a dedicated API Gateway with a 200 OK
status code if the validation of the batch of transactions has passed. Otherwise, it sends back a 402 Payment Required
status code, at which point Marqeta will resend the events.
JIT actionable requests
The following JIT actionable requests are supported:
Transaction type | Method | Purpose |
---|---|---|
authorization | pgfs.authorization | To create a new reservation for the requested amount, if it is available on the card account. |
authorization.atm.withdrawal | ||
authorization.cashback | ||
authorization.quasi.cash | ||
pindebit.authorization | ||
account.funding.authorization | ||
authorization.incremental | pgfs.authorization.incremental | To increase a reservation with the requested amount, if it is available on the card account. |
original.credit.authorization | pgfs.original.credit.authorization+ Conventional Funds | To check a payment card and approve the credit authorization. |
refund.authorization | pgfs.refund.authorization | |
balanceinquiry | pgfs.balanceinquiry | To return account balances. |
pindebit.balanceinquiry | ||
pindebit | pgfs.auth_plus_capture | To debit card account with the requested amount, if it is available on the card account. |
pindebit.atm.withdrawal | ||
pindebit.cashback | ||
original.credit.auth_plus_capture | pgfs.original.credit.auth_plus_capture | To credit card account with the requested amount. |
original.credit.authorization | pgfs.original.credit.authorization+ Fast Funds |
JIT informative notifications
The following JIT informative notifications are supported:
Transaction type | Method | State | Purpose |
---|---|---|---|
authorization.clearing | pgfs.authorization.capture / pgfs.force_capture | COMPLETION | To debit a card account and remove or reduce the debit hold if it is present. |
authorization.clearing.atm.withdrawal | |||
authorization.clearing.cashback | |||
authorization.clearing.quasi.cash | |||
pindebit.authorization.clearing | |||
account.funding.authorization.clearing | |||
original.credit.authorization.clearing | pgfs.original.credit.authorization.clearing+ Conventional Funds | COMPLETION | To credit a card account and remove the credit hold if it is present. |
refund.authorization.clearing | pgfs.refund.authorization.clearing | ||
refund | pgfs.refund | ||
pindebit.refund | PENDING | ||
original.credit.authorization.clearing | pgfs.original.credit.authorization.clearing+ Fast Funds | COMPLETION | To credit a card account. |
authorization.advice | pgfs.reversal | PENDING | To reduce or remove the debit hold. |
authorization.reversal | CLEARED | ||
authorization.reversal.issuerexpiration | |||
pindebit.authorization.reversal.issuerexpiration | pgfs.authorization.reversal | ||
account.funding.authorization.reversal | |||
authorization.standin | pgfs.authorization.standin | PENDING | To create a hold without checking the available balance. |
original.credit.authorization.reversal | pgfs.original.credit.authorization.reversal+ Conventional Funds | CLEARED | To remove the credit hold. |
refund.authorization.reversal | pgfs.refund.authorization.reversal | ||
original.credit.authorization.reversal | pgfs.original.credit.authorization.reversal+ Fast Funds | CLEARED | To debit a payment card account, if a credit transaction has been executed. |
authorization | pgfs.authorization | DECLINED / CLEARED | To remove the debit hold. |
authorization.atm.withdrawal | |||
authorization.cashback | |||
authorization.quasi.cash | |||
pindebit.authorization | |||
account.funding.authorization | |||
authorization.incremental | pgfs.authorization.incremental | DECLINED | To reduce the debit reservation. |
original.credit.authorization | pgfs.original.credit.authorization+ Conventional Funds | DECLINED / CLEARED | To remove the credit hold. |
refund.authorization | pgfs.refund.authorization | ||
original.credit.authorization | pgfs.original.credit.authorization+ Fast Funds | DECLINED/CLEARED | To debit a payment card account, if a credit transaction has been executed. |
pindebit.reversal | pgfs.auth_plus_capture.reversal | COMPLETION | To credit a payment card account, if a debit transaction has been executed. |
original.credit.auth_plus_capture.reversal | pgfs.original.credit.auth_plus_capture.reversal | COMPLETION | To debit a payment card account, if a credit transaction has been executed. |
pindebit.refund.reversal | pgfs.refund.reversal | ||
authorization.clearing.chargeback | pgfs.authorization.capture.chargeback | COMPLETION | To credit a card account. |
authorization.clearing.chargeback.completed | |||
pindebit.chargeback | pgfs.pindebit.chargeback | ||
pindebit.chargeback.completed | |||
authorization.clearing.chargeback.reversal | pgfs.authorization.capture.chargeback.reversal | CLEARED | To debit a payment card account, if a credit transaction has been executed. |
pindebit.chargeback.reversal | pgfs.pindebit.chargeback.reversal | ||
authorization.clearing.representment | pgfs.authorization.capture.chargeback.reversal / pgfs.force_capture | COMPLETION | To debit a payment card account. |
authorization | pgfs.authorization | PENDING + COMMANDO | To create a new debit hold for the requested amount without checking the available balance. |
authorization.atm.withdrawal | |||
authorization.cashback | |||
authorization.quasi.cash | |||
pindebit.authorization | |||
account.funding.authorization | |||
authorization.incremental | pgfs.authorization.incremental | PENDING + COMMANDO | To increase a hold with the requested amount without checking the available balance. |
original.credit.authorization | pgfs.original.credit.authorization+ Conventional Funds | PENDING + COMMANDO | To create a new credit hold. |
refund.authorization | pgfs.refund.authorization | ||
pindebit | pgfs.auth_plus_capture | PENDING + COMMANDO | To debit card account with the requested amount without checking the available balance. |
pindebit.atm.withdrawal | |||
pindebit.cashback | |||
original.credit.auth_plus_capture | pgfs.original.credit.auth_plus_capture | PENDING + COMMANDO | To credit card account with the requested amount. |
original.credit.authorization | pgfs.original.credit.authorization+ Fast Funds |
Additional processes
Mambu also features a series of supporting processes including business subprocesses, a Notifications module, configuration settings and API gateways for external applications.
The current version also provides an additional layer between Marqeta and Mambu - two API Gateways, one for actionable and one for informative receivers - that handle HTTP response codes on behalf of Mambu.