MoneyGram Cash Pickups

5417

Wyre's integration with MoneyGram is fully live and operational. Through this integration, Wyre’s partners can now enable users to seamlessly transition between cash and cryptocurrency.

Powered by the Stellar blockchain and MoneyGram, end users can use fiat to load digital currencies into their digital wallets or cash-out their digital currencies at MoneyGram locations around the world - all without needing access to a bank account.

🚧

Necessary Account Settings

Wyre must manually configure the user scopes on your master account. This applies when your platform creates users with the "MONEY_GRAM_SEP24" scope. Please reach out to sales if interested.

📘

High Level Flow

  1. Create a User
  2. Create a Wallet for the User
  3. Transfer Funds from the User's Wallet to MoneyGram
  4. Poll the Transfer
  5. User Completes MGI Form
  6. Provide More Info

1. Create a User

Create a User, including the following fields:

{
    "fields": {
        "firstName": "Moneygram",
        "lastName": "User",
        "cellphoneNumber": "+16505555555",
        "email": "[email protected]",
        "dateOfBirth": "1990-01-01",
        "residenceAddress": {
            "street1": "123 Main st.",
            "city": "Orlando",
            "state": "FL",
            "postalCode": "12345",
            "country": "US"
        }
    },
    "blockchains": [
        "ALL"
    ],
    "immediate": true
}

Once the User is created, you can retrieve the user to ensure the scope has been approved for that user.

curl --location --request GET 'https://api.testwyre.com/v3/users/US_ZZ8ZCJVG9XU?scopes=MONEY_GRAM_SEP24' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer ' \
--data-raw ''

Validate that the status is 'Approved'.

{
    "id": "US_ZZ8ZCJVG9XU",
    "status": "APPROVED",
    "partnerId": "PT_C9PEGH2L2BU",
    "type": "INDIVIDUAL",
    "createdAt": 1658171719697,
    "depositAddresses": {
        "BTC": "mvaPCjgeLn3VLB9gxMPNcVmUgUqW9eSBUj",
        "MATIC": "0x98bf1231af6183cba038bbb8ff2edad3e4d5fef2",
        "AVAX": "X-fuji1tpa6kknvsjaes4wwsxp4v2u69j7wer9rjz4z7p",
        "ETH": "0x381f94ac6f3e945621b0d6b085eb210052169433",
        "XLM": "GD7WXI7AOAK2CIPZVBEFYLS2NQZI2J4WN4HFYQQ4A2OMFVWGWAL3IW7K:XBXUHBDXCYQ",
        "AVAXC": "0x1b0bc803e50498de25f4d3702c52596c69925a9c"
    },
    "totalBalances": {},
    "availableBalances": {},
    "passingChecks": [],
    "fields": {
        "firstName": {
            "value": "Moneygram",
            "error": null,
            "status": "SUBMITTED"
        },
        "lastName": {
            "value": "User",
            "error": null,
            "status": "SUBMITTED"
        },
        "cellphoneNumber": {
            "value": "+16505555555",
            "error": null,
            "status": "SUBMITTED"
        },
        "dateOfBirth": {
            "value": "1990-01-01",
            "error": null,
            "status": "SUBMITTED"
        },
        "email": {
            "value": "[email protected]",
            "error": null,
            "status": "SUBMITTED"
        },
        "residenceAddress": {
            "value": {
                "street1": "123 Main st.",
                "city": "Orlando",
                "state": "FL",
                "postalCode": "12345",
                "country": "US"
            },
            "error": null,
            "status": "SUBMITTED"
        }
    }
}

2. Create a Wallet for the User

Create a Wallet for the User. Be sure to user masquerading.

{
    "name": "Moneygram User Wallet",
    "type": "DEFAULT"
}

3. Transfer Funds from the User's Wallet to Moneygram

Create a Transfer to send funds from the User's Wallet to Moneygram. Be sure to use masquerading.

Key Request AttributeDescription
"source"The funds must be sourced from a User's Wyre Wallet.
"dest"The dest of the transfer must be the Moneygram payment method: "paymentMethod:MGISep24PaymentMethod".
"destCurrency"The destCurrency must be Stellar USDC (sUSDC).
"sourceCurrency"The sourceCurrency must be one of the following supported currencies:
USD, CAD, DAI, ETH, USDC, BTC, BRL, MXN, EUR, GBP, AUD, NZD, ARS, CHF, CLP, COP, CZK, DKK, ILS, INR, ISK, MYR, NOK, PHP, PLN, SEK, SGD, THB, HKD, VND, ZAR, KRW, JPY, USDT, BUSD, XLM, COMP, LINK, AAVE, BAT, RAI, ALGO, AUSDC, AUSDT, LETH, LUSDC, AVAXCUSDC
{
    "dest": "paymentMethod:MGISep24PaymentMethod",
    "source": "wallet:WA_2MTCN3F2ZCP",
    "autoConfirm": true,
    "sourceCurrency": "USD",
    "destCurrency": "SUSDC",
    "destAmount": "5",
    "owner": "user:US_ZZ8ZCJVG9XU"
}

4. Poll the Transfer

Once the transfer has been created, call Get Transfer to retrieve the completeDepositUrl. Use this url to direct the user to the Moneygram form.

curl --location --request GET 'https://api.testwyre.com/v3/transfers/TF_X729TBQ8CB9?masqueradeAs=user:US_79JN4CXZ88A' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer ' \
--data-raw ''
{
    "transfer": {
        "id": "TF_X729TBQ8CB9",
        "status": "PENDING",
        "failureReason": null,
        "language": "en",
        "createdAt": 1658188219000,
        "updatedAt": 1658188219000,
        "completedAt": null,
        "depositInitiatedAt": 1658188224000,
        "cancelledAt": null,
        "expiresAt": 1658188819000,
        "owner": "user:US_79JN4CXZ88A",
        "source": "wallet:WA_2MTCN3F2ZCP",
        "dest": "paymentmethod:MGISep24PaymentMethod",
        "sourceCurrency": "USD",
        "sourceAmount": 5,
        "destCurrency": "SUSDC",
        "destAmount": "5",
        "atMinFee": false,
        "exchangeRate": 1,
        "desc": null,
        "message": null,
        "totalFees": 0,
        "fees": {
            "USD": 0.00,
            "SUSDC": 0.000000
        },
        "authorizingIp": "216.59.131.175",
        "paymentUrl": null,
        "exchangeOrderId": "EX_YQVPYPJ78PE",
        "inExchangeId": null,
        "chargeId": null,
        "depositId": "DE_QZHRF6BP9HU",
        "sourceTxId": "TF_X729TBQ8CB9-W",
        "destTxId": "TR_9R3RYDJJY6Q",
        "customId": null,
        "buy": true,
        "instantBuy": false,
        "sell": false,
        "exchange": true,
        "send": false,
        "deposit": false,
        "withdrawal": true,
        "reversingSubStatus": null,
        "reversalReason": null,
        "retrievalUrl": "https://www.testwyre.com//sign-in",
        "destNickname": null,
        "pendingSubStatus": "PROCESSING_DEPOSIT",
        "destName": "MGI SEP24 PAYMENT METHOD",
        "sourceName": "user:US_79JN4CXZ88A",
        "estimatedArrival": 1658361024000,
        "blockchainTx": null,
        "statusHistories": [
            {
                "id": "GLRZ2RY74QH",
                "transferId": "TF_X729TBQ8CB9",
                "createdAt": 1658188222000,
                "type": "OUTGOING",
                "statusOrder": 0,
                "statusDetail": "Initiating Transfer",
                "state": "INITIATED",
                "failedState": null
            },
            {
                "id": "APPYC8FV3JH",
                "transferId": "TF_X729TBQ8CB9",
                "createdAt": 1658188222000,
                "type": "OUTGOING",
                "statusOrder": 200,
                "statusDetail": "Processing Exchange",
                "state": "PENDING",
                "failedState": null
            },
            {
                "id": "VW7C3PLV3FA",
                "transferId": "TF_X729TBQ8CB9",
                "createdAt": 1658188222000,
                "type": "OUTGOING",
                "statusOrder": 400,
                "statusDetail": "Processing Deposit",
                "state": "PENDING",
                "failedState": null
            }
        ],
        "documents": [],
        "pusherChannel": "5b39e8627fc9758a58b98d7fcc5dcc05",
        "depositInfo": {
            "id": "DE_QZHRF6BP9HU",
            "paymentMethodId": "MGISep24PaymentMethod",
            "createdAt": 1658188222000,
            "currency": "SUSDC",
            "amount": 5,
            "fees": null,
            "txId": "TR_9R3RYDJJY6Q",
            "blockchainTxId": null,
            "owner": "user:US_79JN4CXZ88A",
            "completeDepositUrl": "https://extstellar.moneygram.com?operation=withdraw&lang=en&asset_code=USDC&transaction_id=e02b7d43-b688-4489-871b-44543b3d172e&token=eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJlMDJiN2Q0My1iNjg4LTQ0ODktODcxYi00NDU0M2IzZDE3MmUiLCJpc3MiOiJodHRwOi8vZXh0aW50c3Zjcy5hd3MubW9uZXlncmFtLmNvbS9zdGVsbGFyYWRhcHRlcnNlcnZpY2Uvc2VwMjQvdHJhbnNhY3Rpb25zL3dpdGhkcmF3L2ludGVyYWN0aXZlIiwic3ViIjoiR0Q3V1hJN0FPQUsyQ0lQWlZCRUZZTFMyTlFaSTJKNFdONEhGWVFRNEEyT01GVldHV0FMM0lXN0s6MTIwODM3NTExMyIsImlhdCI6MTY1ODE4ODIyMywiZXhwIjoxNjU4Mjc0NjIzfQ.UBv8RhQbbBE3DhoLj180DN7oUnrHm07IUkoSyqjdeww&amount=5.00&wallet_provider=WYRE",
            "completionExpectedAt": null,
            "originChannel": "API",
            "ownerName": "User US_79JN4CXZ88A",
            "receiptEmail": null,
            "language": "en",
            "originCountry": null,
            "linkType": "AGGREGATOR",
            "status": "PENDING"
        },
        "chargeInfo": null
    }
}

5. User Completes MGI Form

End users will complete a form via MoneyGram's UI to enter transaction details and personal information. For a full demo of deposits and withdrawals, see a video here.

1990 1450

6. Provide More Info

After your user has completed the Moneygram form, you can provide them with information on next steps to complete the process.

curl --location --request GET 'https://api.testwyre.com/v3/sep-24/transaction/TF_X729TBQ8CB9' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer ' \
--data-raw ''
{
    "transaction": {
        "id": "b22470be-0f87-4858-bc28-e918359f0b6b",
        "kind": "WITHDRAWAL",
        "status": "pending_user_transfer_complete",
        "refunded": false,
        "message": null,
        "to": "GAYF33NNNMI2Z6VNRFXQ64D4E4SF77PM46NW3ZUZEEU5X7FCHAZCMHKU",
        "from": "GD7WXI7AOAK2CIPZVBEFYLS2NQZI2J4WN4HFYQQ4A2OMFVWGWAL3IW7K",
        "status_eta": null,
        "stellar_transaction_id": "13f7fcc9f5c281e15582dadcc90b466c9a91a058fa9e658ab350832cc79db6d9",
        "external_transaction_id": "98575108",
        "more_info_url": "https://extstellar.moneygram.com/transaction-status?transaction_id=b22470be-0f87-4858-bc28-e918359f0b6b&token=eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJiMjI0NzBiZS0wZjg3LTQ4NTgtYmMyOC1lOTE4MzU5ZjBiNmIiLCJpc3MiOiJtb3JlSW5mb1VybCIsInN1YiI6IkdEN1dYSTdBT0FLMkNJUFpWQkVGWUxTMk5RWkkySjRXTjRIRllRUTRBMk9NRlZXR1dBTDNJVzdLIiwiaWF0IjoxNjU4NTI1MTQ1LCJleHAiOjE2NTg2MTE1NDUsImNsaWVudF9kb21haW4iOiJ0ZXN0d3lyZS5jb20ifQ.vwUfLVuEsqXfitj45T249iIb8MtWJaZoKLsazslVLwM&lang=en-US&refNumber=98575108",
        "amount_in": 5.0,
        "amount_out": 5.0,
        "amount_fee": 0.0,
        "started_at": 1658182522000,
        "completed_at": null,
        "claimable_balance_id": null,
        "deposit_memo_type": null,
        "deposit_memo": null,
        "withdraw_anchor_account": "GAYF33NNNMI2Z6VNRFXQ64D4E4SF77PM46NW3ZUZEEU5X7FCHAZCMHKU",
        "withdraw_memo_type": "id",
        "withdraw_memo": null
    }
}

Direct the user to the more_info_url to provide next steps. This url will provide the user with a reference ID and directions on how to locate a Moneygram location to receive cash. Once they pick up the funds, the Wyre Transfer will move into Completed status.