The open, extensible, and customizable design of the Marqeta platform is what makes it so attractive to businesses that want to tailor payment experiences. Those same characteristics can make it seem complex to get started with, but it’s not. All you need is a basic understanding of the main components of the platform and Marqeta’s Core API.
To help you get up to speed, we’ve put together this two-part series to cover everything you need to know. In Part One, we’ll cover the basic architecture and models that enable developers to create payment apps using Marqeta. In Part Two, we’ll get our hands dirty with a walkthrough usage of the Core API, working with users and...
Are you ready? Let’s dive in and get to know the Marqeta platform.
The basic building blocks of Marqeta payment apps are:
Once you understand how these three models work and interact, designing business logic for your apps and financial products is simple. Our developer guides explore these topics in-depth, so here we’ll focus on the basics you need to get started building your apps.
There are two types of account holders on the platform:
The fundamental difference between the two types is this: A business cannot own cards.
These endpoints contain personally identifying information related to an account and details such as the following:
A general purpose account (GPA) is associated with each account holder. A GPA stores the funds for payments on a given account. You can check an account holder’s GPA at the balances endpoint.
You can create parent-child relationships, in which parent businesses (or parent users) monitor and/or control the spending of child users. Note that a business cannot be a child. For example, multiple users can use funds from the GPA of a single parent business (or parent user), like this:
Alternatively, child users can use funds from separate GPAs which the parent manages individually.
You can also create parent ⇢ child ⇢ grandchild users where the “child” does not use the parent’s GPA, but rather the “grandchild” draws from the “parent” GPA.
Every account holder has a status that dictates whether or not they can carry out transactions. Possible statuses include:
The initial status of an account generally depends on KYC requirements and can change throughout the account holder lifecycle (for example, if an account is suspended or closed). The diagram below details the different potential transitions.
Some card programs require KYC identity verification before a user can conduct transactions. While we won’t need to perform KYC in our sandbox environment, the Core API has a KYC endpoint that makes verification simple.
Above, we briefly mentioned Account Holder Groups. An account holder group is a way of grouping together multiple account holders—those are users and/or businesses—as a group. This is particularly related to KYC because you can uniformly apply KYC rules across the board for all new account holders in an account holder group.
We already touched on the GPA and its use as an account to hold funds for individual account holders. Funding models and funding sources define where the funds in an account come from and how balances are carried.
There are two basic funding models on the Marqeta platform, and each requires a different type of funding source.
Under the JIT funding model, there are two different approaches you can take:
1. Managed JIT: You predefine rules on how a cardholder can use their card, and the Marqeta platform approves or denies transactions based on those rules. You do not explicitly approve or deny individual transactions. Visually, here’s how the process works:
2. Gateway JIT: You configure a JIT gateway to individually evaluate and approve each funding response. With Gateway JIT, the process flow looks like this:
If your JIT Gateway becomes unresponsive, you can configure Marqeta’s Commando Mode to be in effect. When turned on, Commando Mode takes over and approves/denies requests based on predefined rules. Essentially, if your JIT Gateway fails, Commando Mode gives you Managed JIT Funding as a failsafe until the gateway is back up.
As you’d expect, approving or denying transactions programmatically in real-time adds some complexity. So, why bother? The JIT funding model allows you to implement business logic to approve or deny every transaction, have more granular control over cash flow, and use custom metadata to speed up reconciliations.
So far, we have covered account holders and account funding. However, account holders need a card to carry out transactions. On the Marqeta platform, understanding cards begins with the following concepts:
It’s important to understand that not every account holder is a cardholder. Cardholders are a subset of account holders consisting of users that have been issued at least one card. A user account holder can have zero, one, or multiple cards assigned to them. An individual card can only be assigned to one user.
Like accounts, cards have a lifecycle with various stages. Physical cards are unactivated until an activation event occurs, while virtual cards are active upon creation. A card can also go into a suspended status, from which it can be restored to active or to a permanently terminated status where it can never be used again. The diagram below details all possible status changes throughout the card’s lifecycle.
Just like that, we’ve covered all of the core concepts for the Marqeta platform that you need to know to get started. Now, you should be ready to jump in and get your feet wet. Join us for the next part in our series, where you’ll begin working directly with the Core API in your sandbox.
Head on over to Part Two. We’ll meet you there!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.