Skip to main content
Payment Method Sessions allow you to securely collect and save payment methods from your customers. Unlike Payment Sessions which collect a one-time payment, Payment Method Sessions save the payment method for future use with subscriptions, invoices, and transactions.

Create a customer

Before creating a Payment Method Session, you need a customer to attach the payment method to. You can either use an existing customer or create a new one using the Customers API
API
.
Create a customer
curl https://api.yorlet.com/v1/customers \
  -H "Authorization: Bearer {{API_KEY}}" \
  -H "Content-Type: application/json" \
  -d '{
        "email": "[email protected]"
      }'
If the request completed successfully, the response contains the customer object.
Customer object
{
  "id": "cus_lrhplff1u4ZhIPSU",
  "object": "customer",
  "email": "[email protected]"
  // ... other fields on the Customer object
}

Create a Payment Method Session

To create a Payment Method Session
API
, you need to specify the customer and payment_method_types. You can optionally include a return_url to redirect customers after the payment method is collected.
Create a Payment Method Session
curl https://api.yorlet.com/v1/payment_method_sessions \
  -H "Authorization: Bearer {{API_KEY}}" \
  -H "Content-Type: application/json" \
  -d '{
        "customer": "{{CUSTOMER_ID}}",
        "payment_method_types": ["card", "bacs_debit"],
        "return_url": "https://example.com/success"
      }'
If the request completed successfully, the Payment Method Session object contains the url parameter.
Payment Method Session object
{
  "id": "pmsess_kfls092pPQalaj2",
  "object": "payment_method_session",
  "customer": "cus_lrhplff1u4ZhIPSU",
  "payment_method": null,
  "payment_method_types": ["card", "bacs_debit"],
  "return_url": "https://example.com/success",
  "url": "https://pay.yorlet.com/payment_methods/pmsess_kfls092pPQalaj2"
  // ... other fields on the Payment Method Session object
}

Supported payment method types

You can collect the following payment method types:
TypeDescription
cardCredit or debit card
bacs_debitBacs Direct Debit (UK)
sepa_debitSEPA Direct Debit (EU)
autogiroAutogiro (Sweden)

Share the Payment Method Session URL

After creating a Payment Method Session, share the url with your customer. They will be guided through a secure flow to enter their payment details. Once complete, they will be redirected to your return_url. You can also set send_email to true to automatically send the URL to the customer’s email address.
Send email to customer
curl https://api.yorlet.com/v1/payment_method_sessions \
  -H "Authorization: Bearer {{API_KEY}}" \
  -H "Content-Type: application/json" \
  -d '{
        "customer": "{{CUSTOMER_ID}}",
        "payment_method_types": ["card"],
        "send_email": true
      }'

Collect payment method for a subscription

You can associate a Payment Method Session with a subscription. Once the customer completes the session, the payment method will automatically be attached to the subscription.
Create a Payment Method Session for a subscription
curl https://api.yorlet.com/v1/payment_method_sessions \
  -H "Authorization: Bearer {{API_KEY}}" \
  -H "Content-Type: application/json" \
  -d '{
        "customer": "{{CUSTOMER_ID}}",
        "payment_method_types": ["bacs_debit"],
        "subscription": "{{SUBSCRIPTION_ID}}",
        "return_url": "https://example.com/success"
      }'

Retrieve a Payment Method Session

You can retrieve a Payment Method Session
API
to check its status and see which payment method was created.
Retrieve a Payment Method Session
curl https://api.yorlet.com/v1/payment_method_sessions/{{PAYMENT_METHOD_SESSION_ID}} \
  -H "Authorization: Bearer {{API_KEY}}"
Once the customer completes the session, the payment_method field will contain the ID of the created payment method.
Completed Payment Method Session
{
  "id": "pmsess_kfls092pPQalaj2",
  "object": "payment_method_session",
  "customer": "cus_lrhplff1u4ZhIPSU",
  "payment_method": "pm_l34dl7phkOVU7wcI",
  "payment_method_types": ["card"],
  "status": "complete"
  // ... other fields on the Payment Method Session object
}