Each supported payment method of Sources is defined by three key characteristics. The combination of these determine how a source is made chargeable and used in a charge request to complete the payment.
Pull or push of funds
Each method of payment is categorized as either pull or push, depending on how the transfer of funds from the customer’s payment method takes place.
- Using a pull method, you debit the funds from the customer’s account after they have provided consent. Card payments are an example of a pull method—your customer’s card is debited when a payment is made.
- Using a push method, the customer is required to send the funds to you. Bitcoin is an example of a push method—your customer is provided a receiver address to send (push) the correct amount of bitcoin to. Once it’s confirmed that customer has sent the funds to you, the source becomes chargeable and is ready to be used in a charge request.
Flow for customer action
Certain payment methods require your customer to complete a particular action (flow) before the source is made chargeable. The type of flow that applies to a payment method is stated within the
Each method is categorized into one of the following flow types. Click on each to view the appropriate diagram above:
- None: No action is required from your customer. Some payment methods, such as cards (excluding 3D Secure), require no additional authentication beyond collecting the payment information from customers. Sources representing this payment method can be used immediately when making charge request.
- Redirect: Your customer must approve the payment through their online banking service. When creating a source for this type of payment method, the `Source` object contains the URL to redirect your customer to.
- Code verification: Your customer must verify ownership of their account by providing a code that you post to the Stripe API.
- Receiver: Your customer must push funds to the account information provided. The
Sourceobject contains suitable account information that your customer must push funds to.
Synchronous or asynchronous confirmation
The status of a Charge object created using any payment method source can either be confirmed immediately (synchronously) or after a certain amount of time (asynchronously).
With a synchronous payment method, the charge request’s status can be immediately confirmed as either
failed. If the charge request is successful, the payment is completed—it’s considered guaranteed that the customer has been charged and that you’ll receive the funds. Card payments are an example of a synchronous payment method as there is real-time confirmation of the payment’s success or failure.
For asynchronous payment methods, it can take up to several days to confirm if the payment has been successful, during which time the payment cannot be guaranteed. The status of payment’s
Chargeobject is initially set to
pendinguntil it has been confirmed as successful or failed. ACH debits are an example of an asynchronous method as it takes a few days to confirm that the payment has succeeded.
When accepting any payment method that is asynchronous, Stripe sends a webhook event once the charge’s status has changed. Your integration must be able to receive webhooks so it can receive this notification and confirm whether the customer’s payment was successful or if it has failed.
Supported payment methods
As Sources breaks down payment methods into these three characteristics, you can support additional payment methods that share the same properties without further development. For instance, should you add support for iDEAL, you’re also able to accept Giropay and Bancontact. These payment methods are all push-based, synchronous payment methods that make use of a redirect flow.