Supported Payment Methods for Sources Preview

    Learn about the different payment methods and mechanisms available through Sources. If you need help after reading this, search our documentation or check out answers to common questions. You can even chat live with other developers in #stripe on freenode.

    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: How the funds for the method of payment are transferred from your customer
    • Flow: The type of action your customer needs to take
    • Synchronous or asynchronous: Whether the resulting charge can be confirmed immediately or if it takes a few days

    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

    Overview of the customer action flow

    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 Source object’s flow parameter.

    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 Source object 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 successful or 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 Charge object is initially set to pending until 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.

    None Redirect Code verification Receiver
    Pull Synchronous
    Push Synchronous