- 24 Nov 2023
- 5 Minutes To Read
- Print
- DarkLight
- PDF
Marqeta Integration
- Updated On 24 Nov 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 integration is for Mambu customers who want to offer debit cards to their clients. Using the Marqeta integration means you do not 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 integration 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 can 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 responds promptly to these requests.
- 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. These batches are to be stored and then processed asynchronously.
- 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 done using the following 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 reason for declining.
Informative notifications endpoint
To handle Informative JIT Funding messages, Mambu uses an endpoint for receiving event notifications. Shortly after 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 | ||
pindebit | pgfs.auth_plus_capture | DECLINED | To credit a payment card account, if a debit transaction has been executed. |
pindebit.atm.withdrawal | |||
pindebit.cashback | |||
original.credit.auth_plus_capture | pgfs.original.credit.auth_plus_capture | DECLINED | To debit a payment card account, if a credit transaction has been executed. |
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 |