Affirm Admin API Guide
Affirm is a fully integrated Buy Now Pay Later (BNPL) payment method that is supported both in the storefront checkout, and via the Admin API.
Affirm transactions send the customer through an Affirm redirect flow, with the resulting order information provided back to your application. Below are the steps needed to get Affirm set up and working on the Admin API.
API Payment Redirect Flow
Below is a high-level overview of the user flow when creating orders on the Admin API that utilize the payment method redirect flow.
Create Order on Admin API
When creating a new order using Affirm using the orders_create API method, you must specify the payment_method=affirm as well as provide a payment_return_url. The payment_return_url is your endpoint that will receive a POST request containing the final order data.
{
"payment_method": "affirm",
"payment_details": {
"payment_return_url": "<external checkout url>",
"payment_gateway": "<gateway id>", // optional
"payment_gateway_group": "<gateway group id>" // optional
}
}You can optionally provide a payment_gateway when creating the order to use an Affirm account connected to a specific gateway.
Redirect Customer to Affirm
The response when creating the order will provide a payment_complete_url. Your application should redirect the customer to this URL for completing the payment on Affirm.
{
"reference_transaction_id": null,
"payment_complete_url": "<unique checkout url>"
}Receiving Order Data
After the customer has completed their payment, they will be redirected to your application with a POST request containing data in the response key comprising all of the order information as a string. See examples below.
Order data structure follows Admin Order API and is application/x-www-form-urlencoded in a variable called response. If the order data is an empty dictionary , it means payment collection was unsuccessful and the order was not created.
import json
def order_receiver_view(request):
data = json.loads(request.POST.get("response"))
...
return HttpResponse(status=201)Upsells
Upsells are not supported with Affirm payments.