Verified against: Public OpenAPI 2.0.0 · digest cd0bbb453245

Sandbox · deterministic outcomes

Simulate payment outcomes

The public artifact contains three sandbox-only operations for completing a checkout session with a success, failure, or cancellation outcome. Create the checkout first and use its session_id with a sandbox merchant payment-service identifier.

Simulate success

POST/api/v2/sandbox/payments/simulate/success

Simulate a successful sandbox payment

Operation ID
simulate_sandbox_payment_success_api_v2_sandbox_payments_simulate_success_post
Environment
https://sandbox.api.moneybag.com.bd (Moneybag sandbox)
Authentication
X-Merchant-API-Key — Sandbox merchant API key. Live keys are rejected.

Parameters

No path or query parameters.

Request body

Required application/json body using SandboxPaymentProcessRequest.

FieldTypeRequiredConstraints and meaning
payment_service_idinteger | stringYes
Merchant payment service UUID from merchant_payment_services. During the migration window the legacy integer service id is still accepted.
session_idstringYes
Payment session ID from checkout

Sandbox example

Set the merchant key and replace resource identifiers with values created in your sandbox workspace.

curl --request POST "https://sandbox.api.moneybag.com.bd/api/v2/sandbox/payments/simulate/success" \
  --header "X-Merchant-API-Key: $MONEYBAG_MERCHANT_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "payment_service_id": "8f14e45f-ceea-467a-9575-9a1b2c3d4e5f",
    "session_id": "ps_1234567890abcdef"
  }'

Run this reviewed operation in the API Lab →

Responses

200 Successful Response

Content type: application/json. Schema: SandboxPaymentProcessResponse.

FieldTypeRequiredConstraints and meaning
dataSandboxPaymentProcessData | SandboxPaymentProcessData[] | nullNo
data<SandboxPaymentProcessData>.redirect_urlstringWhen parent is present
URL to redirect for payment completion
data<SandboxPaymentProcessData[]>[].redirect_urlstringWhen parent is present
URL to redirect for payment completion
messagestring | nullNo
metaobject | nullNo
successbooleanYes

422 Validation Error

Content type: application/json. Schema: HTTPValidationError.

FieldTypeRequiredConstraints and meaning
detailValidationError[]No
detail[].locstring | integer[]When parent is present
detail[].msgstringWhen parent is present
detail[].typestringWhen parent is present
OpenAPI 2.0.0 · operation simulate_sandbox_payment_success_api_v2_sandbox_payments_simulate_success_post · contract digest cd0bbb4532452feec6b880fcc3d9190688618f7bcba1987cf518bc9107799cfe

Simulate failure

POST/api/v2/sandbox/payments/simulate/fail

Simulate a failed sandbox payment

Operation ID
simulate_sandbox_payment_fail_api_v2_sandbox_payments_simulate_fail_post
Environment
https://sandbox.api.moneybag.com.bd (Moneybag sandbox)
Authentication
X-Merchant-API-Key — Sandbox merchant API key. Live keys are rejected.

Parameters

No path or query parameters.

Request body

Required application/json body using SandboxPaymentFailRequest.

FieldTypeRequiredConstraints and meaning
failure_reasonstring | nullNomaximum length 500
Optional reason for failure
payment_service_idinteger | stringYes
Merchant payment service UUID from merchant_payment_services. During the migration window the legacy integer service id is still accepted.
session_idstringYes
Payment session ID from checkout

Sandbox example

Set the merchant key and replace resource identifiers with values created in your sandbox workspace.

curl --request POST "https://sandbox.api.moneybag.com.bd/api/v2/sandbox/payments/simulate/fail" \
  --header "X-Merchant-API-Key: $MONEYBAG_MERCHANT_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "failure_reason": "Insufficient funds",
    "payment_service_id": "8f14e45f-ceea-467a-9575-9a1b2c3d4e5f",
    "session_id": "ps_1234567890abcdef"
  }'

Run this reviewed operation in the API Lab →

Responses

200 Successful Response

Content type: application/json. Schema: SandboxPaymentFailResponse.

FieldTypeRequiredConstraints and meaning
dataSandboxPaymentFailData | SandboxPaymentFailData[] | nullNo
data<SandboxPaymentFailData>.redirect_urlstringWhen parent is present
URL to redirect after failure
data<SandboxPaymentFailData>.transaction_idstring | nullNo
Associated transaction ID if created
data<SandboxPaymentFailData[]>[].redirect_urlstringWhen parent is present
URL to redirect after failure
data<SandboxPaymentFailData[]>[].transaction_idstring | nullNo
Associated transaction ID if created
messagestring | nullNo
metaobject | nullNo
successbooleanYes

422 Validation Error

Content type: application/json. Schema: HTTPValidationError.

FieldTypeRequiredConstraints and meaning
detailValidationError[]No
detail[].locstring | integer[]When parent is present
detail[].msgstringWhen parent is present
detail[].typestringWhen parent is present
OpenAPI 2.0.0 · operation simulate_sandbox_payment_fail_api_v2_sandbox_payments_simulate_fail_post · contract digest cd0bbb4532452feec6b880fcc3d9190688618f7bcba1987cf518bc9107799cfe

Simulate cancellation

POST/api/v2/sandbox/payments/simulate/cancel

Simulate a cancelled sandbox payment

Operation ID
simulate_sandbox_payment_cancel_api_v2_sandbox_payments_simulate_cancel_post
Environment
https://sandbox.api.moneybag.com.bd (Moneybag sandbox)
Authentication
X-Merchant-API-Key — Sandbox merchant API key. Live keys are rejected.

Parameters

No path or query parameters.

Request body

Required application/json body using SandboxPaymentCancelRequest.

FieldTypeRequiredConstraints and meaning
cancellation_reasonstring | nullNomaximum length 500
Optional reason for cancellation
payment_service_idinteger | stringYes
Merchant payment service UUID from merchant_payment_services. During the migration window the legacy integer service id is still accepted.
session_idstringYes
Payment session ID from checkout

Sandbox example

Set the merchant key and replace resource identifiers with values created in your sandbox workspace.

curl --request POST "https://sandbox.api.moneybag.com.bd/api/v2/sandbox/payments/simulate/cancel" \
  --header "X-Merchant-API-Key: $MONEYBAG_MERCHANT_KEY" \
  --header "Content-Type: application/json" \
  --data '{
    "cancellation_reason": "User cancelled payment",
    "payment_service_id": "8f14e45f-ceea-467a-9575-9a1b2c3d4e5f",
    "session_id": "ps_1234567890abcdef"
  }'

Run this reviewed operation in the API Lab →

Responses

200 Successful Response

Content type: application/json. Schema: SandboxPaymentCancelResponse.

FieldTypeRequiredConstraints and meaning
dataSandboxPaymentCancelData | SandboxPaymentCancelData[] | nullNo
data<SandboxPaymentCancelData>.redirect_urlstringWhen parent is present
URL to redirect after cancellation
data<SandboxPaymentCancelData>.transaction_idstring | nullNo
Associated transaction ID if created
data<SandboxPaymentCancelData[]>[].redirect_urlstringWhen parent is present
URL to redirect after cancellation
data<SandboxPaymentCancelData[]>[].transaction_idstring | nullNo
Associated transaction ID if created
messagestring | nullNo
metaobject | nullNo
successbooleanYes

422 Validation Error

Content type: application/json. Schema: HTTPValidationError.

FieldTypeRequiredConstraints and meaning
detailValidationError[]No
detail[].locstring | integer[]When parent is present
detail[].msgstringWhen parent is present
detail[].typestringWhen parent is present
OpenAPI 2.0.0 · operation simulate_sandbox_payment_cancel_api_v2_sandbox_payments_simulate_cancel_post · contract digest cd0bbb4532452feec6b880fcc3d9190688618f7bcba1987cf518bc9107799cfe