Create and manage payment intent (Stablecoin support)
We have now upgraded our checkout to support stablecoin for U.S merchants!
What you'll learn
- How to create and manage a payment intent (transaction) with stablecoin checkout options
- How stablecoin checkout is done through both Owlpay Platform UI and Harbor API
Note: In the Owlpay platform these payment objects are referred to as 'Transactions', while on the backend our APIs refer to them as 'Payment_Intents'.
Method #1: Create a payment intent through API
Suppose you are a merchant and would like to enable your customers to use stablecoin to complete their checkout process on your platform. Using our robust API solution, this can be completed in two steps.
- Create the payment intent (transaction)
- There will be a payment 'link' provided in the response. You will need to send this to your customer for them to complete the payment. Here is what it should look like.
Use (POST) Create a Payment Intent to create a transaction with OwlPay.
Request
curl --request POST \
--url 'https://api-release.owlpay.com/api/v1/platform/tunnel/payment_intents' \
--header 'accept: application/json' \
--header 'authorization: Bearer {your api key}'\
--header 'content-type: application/json' \
--data '{
"currency": "USD",
"total": 9.9,
"customer_uuid": "231",
"payment_content_description": "Coffee"
}'Response
{
"data": {
"uuid": "pi_test_Yup4Ku",
"application_payment_intent_uuid": null,
"secret": null,
"description": null,
"is_test": true,
"payment_content_description": "Coffee",
"payment_method": "stablecoin",
"payment_method_type": "stablecoin",
"country": "US",
"currency": "USD",
"total": 9.9,
"net": 9.9,
"fee_currency": "USD",
"fee_total": 0,
"status": "created",
"reversed_uuid": null,
"cancelled_at": null,
"cancelled_reason": null,
"cancelled_transaction_total": null,
"cancelled_transaction_reason": null,
"refund_total": 0,
"refund_reason": null,
"failed_reason": null,
"bank_status": "created",
"application_customer_uuid": null,
"customer_uuid": "cus_test_1Gf73YtVjUIx51xsJxXT7PR",
"customer_type": "visitor",
"customer_first_name": "Maras",
"customer_middle_name": null,
"customer_last_name": "Doe",
"customer_email": "[email protected]",
"customer_phone_code": "US",
"customer_phone_number": "1234567",
"authorized_uuid": null,
"authorized_at": null,
"authorized_card_brand": null,
"authorized_card_number": null,
"authorized_approval_code": null,
"authorized_response_code": null,
"authorized_gateway": "harbor",
"captured_uuid": null,
"capture_defer": 1,
"allow_capture_at": null,
"captured_at": null,
"application_apply_to_payout_at": null,
"application_apply_to_payout_user_name": null,
"application_apply_to_payout_user_uuid": null,
"bank_paid_currency": "USD",
"bank_paid_total": null,
"bank_paid_at": null,
"executed_to_payout_at": null,
"payout_to_application_currency": "USD",
"payout_to_application_total": null,
"payout_to_application_at": null,
"finished_at": null,
"payout_to_application_bank_name": null,
"payout_to_application_bank_account_name": null,
"payout_to_application_bank_account_number": null,
"ip": "220.133.81.12",
"return_url": null,
"tags": [],
"meta_data": {},
"actions": {
"is_allow_auth": false,
"is_allow_cancel_transaction": false,
"is_allow_cancel_authorization": false,
"is_allow_capture": false,
"is_allow_refund": false,
"is_allow_settle": false,
"is_allow_disburse": false,
"is_allow_delete": true
},
"allow_refund_total": null,
"refunds": [],
"created_at": "2025-11-10T07:07:47+00:00",
"updated_at": "2025-11-10T07:07:47+00:00",
"is_manual": false,
"product_list": [],
"link": {
"url": "https://checkout-release.owlpay.com/pi_test_Yup4Ku",
"qrcode": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
},
"bank_account_holder": null,
"paid_at": null
},
"status": 200
}
Note that this is the link that must be sent to the customer to complete payment.: "url": "https://checkout-release.owlpay.com/pi_test_Yup4Ku". The page they will be brought to will look like this:
Check the status of your payment intent
Use (GET) Get status of a payment intent to check the KYC/AML status of your vendor.
After sending the payment link to your customer, you can monitor the status of their payment through this endpoint. Simply add the payment intent's payment_intent_uuid to the url. The following example shows the call for pi_test_intent123.
Request
curl --request GET \
--url https://api.owlpay.com/api/v1/platform/tunnel/payment_intents/pi_test_intent123 \
--header 'accept: application/json' \
--header 'authorization: Bearer {your api key}'
Response
The shape of the response object will be the same as the one returned upon creating the payment intent.
{
"data": {
"uuid": "pi_test_Yup4Ku",
"application_payment_intent_uuid": null,
"secret": null,
"description": null,
"payment_content_description": "Coffee",
"payment_method": "stablecoin",
"payment_method_type": "stablecoin",
"country": "US",
"currency": "USD",
"total": 9.9,
"net": 9.9,
"fee_currency": "USD",
"failed_reason": null,
"bank_status": "created",
"created_at": "2025-11-10T07:07:47+00:00",
"updated_at": "2025-11-10T07:07:47+00:00",
"paid_at": null
},
"............"
"status": 200
}
Method #2: Create a payment intent (Transaction) Owlpay Platform UI
-
Navigate to Acquiring -> Transaction
-
In the top right hand corner of the page create a new transaction by clicking, '+ Create'.
-
Note that the amount must be set to USD as this feature is only available to merchants in the U.S.
-
After creating the transaction you will be redirected to that transaction's details page where you can find the payment link. This link must be send to your customer for them to complete the payment.
Upon opening the link your customer will see our options for stablecoin checkout as shown above in the screenshot above from Method #1 (API)!
Updated about 2 hours ago
Please see our API reference docs for more Payment Intent related endpoints and details...
