Payment Methods
Retrieve available payment methods for your integration
List Available Payment Methods#
Returns the payment methods available for your service in a given country. Use this endpoint to check which payment methods your service supports before displaying options to users.
This endpoint requires Bearer authentication using your Client ID and Client Secret encoded in Base64.
/api/v1/payment-methods/availableQuery Parameters#
countryCodestringrequiredDZ, MA, TNRequired Headers#
AuthorizationstringrequiredBearer base64(client_id:client_secret)Response Fields#
data[].idstringrequireddata[].namestringrequireddata[].codestringrequiredpaymentMethodCode when creating a payment intent.data[].displayNamestringrequireddata[].imagestringrequireddata[].archetypestringoptionalIN_SDK means render the payment form inline (e.g. card entry); REDIRECT means hand off to an external page/app and resume on return. Branch your UI on this field rather than a hardcoded method-code list.IN_SDKREDIRECTdata[].labelstringoptionaldisplayName, only present when one is configured for your service.Filtering by Country
countryCode to get the relevant options for your user.curl "https://api.payment.yassir.io/api/v1/payment-methods/available?countryCode=DZ" \
-H "Authorization: Bearer $(echo -n 'your_client_id:your_client_secret' | base64)" \
-H "x-platform: API"curl "https://api.payment.yassir.io/api/v1/payment-methods/available?countryCode=DZ" \
-H "Authorization: Bearer $(echo -n 'your_client_id:your_client_secret' | base64)" \
-H "x-platform: API"{
"code": 200,
"status": "success",
"message": "payment methods listed successfully",
"data": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "Yassir Cash",
"code": "WALLET_V2",
"displayName": "Yassir Cash",
"image": "https://assets.yassir.com/wallet-logo.png",
"archetype": "IN_SDK"
}
]
}{
"code": 200,
"status": "success",
"message": "payment methods listed successfully",
"data": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "Yassir Cash",
"code": "WALLET_V2",
"displayName": "Yassir Cash",
"image": "https://assets.yassir.com/wallet-logo.png",
"archetype": "IN_SDK"
}
]
}List Payment Methods (with User Context)#
Returns payment methods with user-specific information such as wallet balance. Use this endpoint when you have a payment intent and want to show personalized payment options to the user.
This list also includes the user's saved cards as individual selectable items (alongside the payment method types such as WALLET_V2 for Yassir Cash and the card method). A saved card is identified by paymentOptionType: "card" and a display name like visa *** 3456; its id is the cardId you pass when charging a saved card. The /available endpoint above does not include saved cards.
/api/v1/payment-methodsTwo ways to authenticate this endpoint
- From your web page / SDK (
merchant_auth): your publishable key (Authorization: Bearer pk_yassir_...) plus the payment'sx-client-secret. - On behalf of a signed-in customer (
user_auth): the customer's access token inx-client-token— nox-client-secretneeded.
Query Parameters#
amountnumberrequiredactionCurrencyCodestringoptionalDZD, MADactionCountryCodestringoptionalRequired Headers#
AuthorizationstringrequiredBearer pk_yassir_... (merchant_auth). It pairs with x-client-secret below — see Authentication.x-client-secretstringrequiredx-servicestringoptionaluser_auth. Ignored for merchant_auth — the service is derived from your publishable key instead, so a caller cannot widen scope by sending a different value.x-country-codestringoptionaluser_auth (ISO 3166-1 alpha-3, e.g. DZA). Ignored for merchant_auth — the country is derived from the payment intent this request is scoped to.x-platformstringrequiredAPIWEBANDROIDIOSx-localestringoptionalen_US, fr_FR, ar_DZOriginstringoptionalmerchant_auth from a browser. Must match one of the service's allow-listed origins, or the request is rejected with 403 origin_not_allowed.Getting the Client Secret#
The x-client-secret is returned in the response when you create a payment intent:
// Create a payment intent first
const intent = await fetch("/api/v1/payments/intents?countryCode=DZA", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_ACCESS_TOKEN",
"Content-Type": "application/json",
},
body: JSON.stringify({
actionId: "unique-order-id",
amount: 2500,
actionCurrencyCode: "DZD",
actionCountryCode: "DZA",
userId: "+213555123456",
}),
});
const { data } = await intent.json();
// data.clientSecret => "pa_xxxxxxxx_secret_xxxxxxxx"
// Use this as the x-client-secret header// Create a payment intent first
const intent = await fetch("/api/v1/payments/intents?countryCode=DZA", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_ACCESS_TOKEN",
"Content-Type": "application/json",
},
body: JSON.stringify({
actionId: "unique-order-id",
amount: 2500,
actionCurrencyCode: "DZD",
actionCountryCode: "DZA",
userId: "+213555123456",
}),
});
const { data } = await intent.json();
// data.clientSecret => "pa_xxxxxxxx_secret_xxxxxxxx"
// Use this as the x-client-secret headerResponse Fields#
data[].idstringrequireddata[].namestringrequireddata[].codestringrequiredpaymentMethodCode when proceeding with payment.data[].displayNamestringrequiredx-locale header.data[].imagestringrequireddata[].balancenumberoptionalWALLET_V2).data[].currencystringoptionaldata[].paymentOptionTypestringoptionalcard marks one of the user's saved cards; wallet marks the wallet. For a saved card, id is the cardId to use when proceeding with a payment.walletpaymentMethodcarddata[].archetypestringoptionalIN_SDK for an inline payment form, REDIRECT for an external handoff. Absent on individual saved-card items.IN_SDKREDIRECTdata[].labelstringoptionaldisplayName, only present when one is configured for your service.curl "https://api.payment.yassir.io/api/v1/payment-methods?amount=2500" \
-H "Authorization: Bearer pk_yassir_a1b2c3d4e5f67890a1b2c3d4e5f67890" \
-H "x-client-secret: pa_xxxxxxxx_secret_xxxxxxxx" \
-H "x-service: your-service-code" \
-H "x-country-code: DZA" \
-H "x-platform: WEB" \
-H "Origin: https://yourapp.com"curl "https://api.payment.yassir.io/api/v1/payment-methods?amount=2500" \
-H "Authorization: Bearer pk_yassir_a1b2c3d4e5f67890a1b2c3d4e5f67890" \
-H "x-client-secret: pa_xxxxxxxx_secret_xxxxxxxx" \
-H "x-service: your-service-code" \
-H "x-country-code: DZA" \
-H "x-platform: WEB" \
-H "Origin: https://yourapp.com"{
"code": 200,
"status": "success",
"message": "payment methods listed successfully",
"data": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "Yassir Cash",
"code": "WALLET_V2",
"displayName": "Yassir Cash",
"image": "https://assets.yassir.com/wallet-logo.png",
"balance": 15000,
"currency": "DZD",
"paymentOptionType": "wallet",
"archetype": "IN_SDK"
},
{
"id": "1330fa89-4115-43b1-b34d-0e3df2e6a5ba",
"name": "Card",
"code": "STRIPE",
"displayName": "Card",
"image": "https://assets.yassir.com/card-logo.png",
"archetype": "IN_SDK"
},
{
"id": "d290f1ee-6c54-4b01-90e6-d701748f0851",
"name": "visa *** 3456",
"code": "STRIPE",
"image": "https://assets.yassir.com/card-logo.png",
"paymentOptionType": "card"
}
]
}{
"code": 200,
"status": "success",
"message": "payment methods listed successfully",
"data": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "Yassir Cash",
"code": "WALLET_V2",
"displayName": "Yassir Cash",
"image": "https://assets.yassir.com/wallet-logo.png",
"balance": 15000,
"currency": "DZD",
"paymentOptionType": "wallet",
"archetype": "IN_SDK"
},
{
"id": "1330fa89-4115-43b1-b34d-0e3df2e6a5ba",
"name": "Card",
"code": "STRIPE",
"displayName": "Card",
"image": "https://assets.yassir.com/card-logo.png",
"archetype": "IN_SDK"
},
{
"id": "d290f1ee-6c54-4b01-90e6-d701748f0851",
"name": "visa *** 3456",
"code": "STRIPE",
"image": "https://assets.yassir.com/card-logo.png",
"paymentOptionType": "card"
}
]
}Get Stripe Public Key#
Returns the Stripe publishable key to initialize Stripe.js / Stripe Elements client-side. Resolved per tenant, service, and country — not a single fixed key for the whole platform.
/api/v1/payment-methods/stripe/pkmerchant_auth).Required Headers#
Authorizationstringrequiredclient_auth/user_auth credential, or a publishable key (Bearer pk_yassir_...) for merchant_auth.x-client-secretstringoptionalmerchant_auth only.x-servicestringoptionalclient_auth/user_auth. Ignored for merchant_auth — derived from the publishable key.x-country-codestringoptionalclient_auth/user_auth (ISO 3166-1 alpha-3, e.g. DZA). Ignored for merchant_auth — derived from the resolved payment intent.curl "https://api.payment.yassir.io/api/v1/payment-methods/stripe/pk" \
-H "Authorization: Bearer pk_yassir_a1b2c3d4e5f67890a1b2c3d4e5f67890" \
-H "x-client-secret: pa_xxxxxxxx_secret_xxxxxxxx"curl "https://api.payment.yassir.io/api/v1/payment-methods/stripe/pk" \
-H "Authorization: Bearer pk_yassir_a1b2c3d4e5f67890a1b2c3d4e5f67890" \
-H "x-client-secret: pa_xxxxxxxx_secret_xxxxxxxx"{
"data": { "publicKey": "pk_test_1234567890abcdefghijklmnopqrstuvwxyz" },
"message": "Stripe public key retrieved successfully"
}{
"data": { "publicKey": "pk_test_1234567890abcdefghijklmnopqrstuvwxyz" },
"message": "Stripe public key retrieved successfully"
}