Quick Start
A pay-in takes four steps: get credentials, collect a wallet token, create the payment, confirm the final status.
1. Get credentials
Your integration manager issues:
Sdk-Partner-Tokencredentials in the formservice_id:secret;- a
Sign Keyfor theX-Signatureheader; - an allow-list entry for your server IP(s), per environment.
Apple Pay also requires domain registration — see Apple Pay onboarding.
2. Collect a wallet token
Collect the payment token on your frontend with the wallet's own API and pass it to your backend. pay_token is always Base64, and each wallet has its own payload inside:
- Apple Pay — Base64 of the
token.paymentDataJSON. See Apple Pay. - Google Pay — Base64 of
paymentData.paymentMethodData.tokenizationData.token. See Google Pay.
3. Create the payment
Send the token and the buyer's details from your backend. Sign the compact JSON body with your Sign Key — see Authentication & signature.
curl -X POST https://pay-in-api.mrcr.io/sdk-partner/alternative-mobile-pay/mobile-pay \
-H 'Sdk-Partner-Token: 42:your-secret' \
-H 'X-Signature: <hex HMAC-SHA256 of the compact JSON body>' \
-H 'Content-Type: application/json' \
-d '{"pay_system":"apple","pay_token":"<base64 payment token>","merchant_transaction_id":"order-8841","email":"john.doe@example.com","name":"John Doe","fiat_amount":"10.00","fiat_currency":"USD","ip":"203.0.113.10","billing_address":{"country_code":"DE","city":"Berlin","zip_code":"12345"}}'
{
"status": 200,
"data": { "id": "28a3c125a28075453", "status": "pending" }
}
Google Pay additionally requires success_url and failure_url in the request.
4. Confirm the final status
New payments start as pending. Assign your own merchant_transaction_id before the first request and reuse it for every retry of that payment — the rules for retries and unresolved outcomes are in Handling errors.
Track the result through webhooks or GET /mobile-pay/{id}/status. Follow Payment statuses for final outcomes, required actions, and handling an unknown or long-running status. A browser redirect to your success_url is not payment confirmation.
If a response contains redirect_data, follow it to complete 3DS. A Google Pay webhook with redirect_pending does not contain that object: first query GET status to obtain the current state and redirect_data.
Ready for the details? Continue with Sandbox & Testing.