PUT Update a Business Profile

PUT /business/v1/profiles/{businessProfileId}

Development Guide

The 'Update a Business Profile' endpoint allows the application to make changes to a businessProfileId.



1. Prepare headers & authentication:

The application must call the Update a Business Profile endpoint with a GET HTTP method, providing the OAuth access_token in the header and all other required header values.


Note: MoneyGram uses the OAuth 2.0 framework. The application must use their OAuth client credentials to generate an accessToken by calling the Get access token endpoint. The token is valid for 1 hour and must be passed as a header value in all subsequent API HTTP calls. Learn More


🚀

Launch Example Code




2. Provide businessProfileId as a path parameter:

The application must provide all thebusinessProfileId as a path parameter.


🚀

Launch Example Code




3. Provide request body:

The application must provide the following required fields in the request body: businessDetails.businessName, businessDetails.legalEntityName, businessDetails.businessRegistrationNumber businessDetails.businessCountryOfRegistration, businessDetails.address.line1, businessDetails.address.city, businessDetails.address.countryCode


🚀

Launch Example Code




4. Make the request and handle the response:

The application will call the 'Update a Business Profile' endpoint with a PUT HTTP method. The application must build to handle the following response scenarios.


  • Success | Parse the Response | 200 OK HTTP Status
    When the update a business profile endpoint responds with a 200 HTTP Status, the response will return the updateSuccess: true, and the businessProfileId that was updated.

  • Failed | Handle the Error | 400 Bad Request HTTP Status
    When the Update a consumer profile endpoint responds with 400 HTTP Status, specific error code/s will be returned with an array of offending fields. The application will need to resolve these errors and resubmit the update request

🚀

Launch Example Code

.




Code Examples

const axios = require('axios');
const { v4: uuidv4 } = require('uuid');

const UpdateBusinessProfile = async () => {

    // Step 1: Read configuration values with upmost security
    const token = "your_access_token_from_oauth_response"
    // For production - api.moneygram.com & For test - sandboxapi.moneygram.com    
    const host = "sandboxapi.moneygram.com";
    const url = 'https://' + host + '/business/v1/profiles';

    // Step 2: Create the PUT request headers & body
    const headers = {
        'Content-Type': 'application/json',
        'X-MG-ClientRequestId': uuidv4(), // New UUID for each request tracing
        'Authorization': 'Bearer ' + token,
    };

    const businessProfileId = "business_profile_id";
    const request = {
        agentPartnerId: "your_partner_id",
        targetAudience: "AGENT_FACING",
        userLanguage: "en-US",
        businessDetails: {
            businessName: "ACME Hotels",
            legalEntitiyName: "ACME Hotels",
            businessRegistrationNumber: "ACME1234",
            address: {
                line1: "123 Main St",
                city: "Dallas",
                countryCode: "USA",
                countrySubDivisionCode: "US-TX",
                postalCode: 75001
            },
            contactDetails: {
                email: "[email protected]",
                phone: {
                    number: 555551234,
                    countryDialCode: 1
                },
            },
        },
    }

    try {
        // Step 3: Send the request and obtain the response
        axios.put(url + "/" + businessProfileId, request, { headers })
            .then(function (response) {
                // Step 4: Parse the success response and process further
                console.log(JSON.stringify(response.data, null, 2))
            })
            .catch(function (error) {
                // Step 5: Parse the error response and handle the errors
                if (error.response) {
                    console.log('Response status:', error.response.status);
                    console.log('Response body:', error.response.data);
                } else {
                    // TODO: handle generic errors
                    console.error('Error:', error.message);
                }
            });
    } catch (error) {
        // TODO: handle exception
        console.error('Error:', error.message);
    }
};

updateBusinessProfile();
import requests
import uuid
import json


def update_business_profile():

    # Step 1: Read configuration values with upmost security
    token = "your_access_token_from_oauth_response"
    # For production - api.moneygram.com & For test - sandboxapi.moneygram.com
    host = "sandboxapi.moneygram.com"
    url = "https://" + host + "/business/v1/profiles"

    # Step 2: Create the PUT request headers & body
    headers = {
        "Content-Type": "application/json",
        "X-MG-ClientRequestId": str(uuid.uuid4()),  # New UUID for each request tracing
        "Authorization": "Bearer " + token,
    }
    businessProfileId = "business_profile_id"
    request = {
        "agentPartnerId": "your_partner_id",
        "targetAudience": "AGENT_FACING",
        "userLanguage": "en-US",
        " businessDetails": {
            "businessName": "ACME Hotels",
            "legalEntitiyName": "ACME Hotels",
            "businessRegistrationNumber": "ACME1234",
            "address": {
                "line1": "123 Main St",
                "city": "Dallas",
                "countryCode": "USA",
                "countrySubDivisionCode": "US-TX",
                "postalCode": "75001",
            },
            "contactDetails": {
                "email": "[email protected]",
                "phone": {"number": "555551234", "countryDialCode": "1"},
            },
        },
    }

    try:
        # Step 3: Send the request and obtain the response
        response = requests.put(
            url + "/" + businessProfileId, json=request, headers=headers
        )

        # Step 4: Parse the success response and process further
        if response.status_code == 200:
            parsed_response = json.dumps(json.loads(response.text), indent=2)
            print(parsed_response)
        else:
            # Step 5: Parse the error response and handle the errors
            print("Request failed with status code:", response.status_code)
            print(json.dumps(json.loads(response.text), indent=2))

    except requests.exceptions.RequestException as e:
        # Print any error that occurred during the request
        # TODO: handle exception
        print("An error occurred:", e)


update_business_profile()

package businessProfiles;

import javax.json.Json;
import javax.json.JsonObject;
import javax.json.JsonObjectBuilder;
import javax.json.JsonWriter;
import java.io.StringWriter;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.UUID;

public class UpdateBusinessProfile {

    public static void main(String[] args) {
        // Step 1: Read configuration values with upmost security
        String token = "your_access_token_from_oauth_response";

        // For production - api.moneygram.com & For test - sandboxapi.moneygram.com
        String host = "sandboxapi.moneygram.com";
        String businessProfileId = "business_profile_id";
        String uri = "https://" + host + "/business/v1/profiles/" + businessProfileId;

        // Step 2: Create the POST request headers & body
        // Create a JSON object
        JsonObjectBuilder requestBuilder = Json.createObjectBuilder()
                .add("targetAudience", "AGENT_FACING")
                .add("agentPartnerId", "your_partner_id")
                .add("userLanguage", "en-US")
                .add("businessDetails", Json.createObjectBuilder().add("businessName", "ACME Hotels")
                        .add("legalEntityName", "ACME Hotels")
                        .add("businessRegistrationNumber", "ACME1234")
                        .add("businessCountryOfRegistration", "USA")
                        .add("address", Json.createObjectBuilder().add("line1", "100 Main St")
                                .add("line2", "")
                                .add("line3", "")
                                .add("city", "Dallas")
                                .add("countrySubdivisionCode", "US-TX")
                                .add("countryCode", "USA")
                                .add("postalCode", "75001")))
                        .add("contactDetails", Json.createObjectBuilder().add("email", "[email protected]")
                           			.add("phone", Json.createObjectBuilder()
                                        .add("number", "555551234")
                                        .add("countryDialCode", "1")));

        JsonObject jsonObject = requestBuilder.build();
        // Create a StringWriter to write the JSON string
        StringWriter stringWriter = new StringWriter();
        try (JsonWriter jsonWriter = Json.createWriter(stringWriter)) {
            jsonWriter.writeObject(jsonObject);
        }
        // Get the JSON string from the StringWriter
        String jsonString = stringWriter.toString();

        HttpClient httpClient = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(uri))
                .put(HttpRequest.BodyPublishers.ofString(jsonString))
                .setHeader("Authorization", "Bearer " + token)
                .setHeader("X-MG-ClientRequestId", String.valueOf(UUID.randomUUID()))
                .build();

        try {
            // Step 3: Send the request and obtain the response
            HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());

            // Retrieve the status code and body from the response
            int statusCode = response.statusCode();

            // Step 4: Parse the success response and process further
            if (statusCode == 200) {
                String responseBody = response.body();
                System.out.println(responseBody);
            } else {
                // Step 5: Parse the error response and handle the errors
                String responseBody = response.body();
                System.out.println(responseBody);
            }
        } catch (Exception e) {
            e.printStackTrace();
            // TODO: handle exception
        }
    }
}




Request & Response Examples

curl --request POST \
     --url https://sandboxapi.moneygram.com/business/v1/profiles/8fe93fce-10cb-471b-a505-4dd37adc89fe \
     --header 'X-MG-ClientRequestId: 4c79b06f-a2af-4859-82c8-28cbb0bf361b' \
     --header 'accept: application/json' \
     --header 'authorization: Bearer ***************************' \
     --header 'content-type: application/json' \
     --data '
{
  "targetAudience": "AGENT_FACING",
  "agentPartnerId": "123456789",
  "userLanguage": "en-US",
  "businessDetails": {
    "partnerBusinessProfileId": "987654321",
    "businessName": "ACME HOTELS",
    "legalEntityName": "ACME Hotels",
    "businessType": "ACCOMMODATION_HOTELS",
    "businessRegistrationNumber": "ACME1234",
    "businessIssueDate": "2024-01-10",
    "businessCountryOfRegistration": "USA",
    "address": {
      "line1": "230 Main St",
      "city": "Dallas",
      "countrySubdivisionCode": "US-TX",
      "countryCode": "USA",
      "postalCode": "75001"
    },
    "contactDetails": {
      "email": "[email protected]",
      "phone": {
        "number": "555551234",
        "countryDialCode": "1"
      }
    }
  }
}
{
  "updateSuccess": true,
  "businessProfileId": "267aaaef-dcd0-4682-bb8f-06db4cfb0bfd",
  "partnerProfileId": "987654321"
}



API Structure


Header Parameters

NameTypeRequired
/Optional
Description
X-MG-ClientRequestIdStringRequiredClient Request ID that can be passed by the client application. Client request ID must be unique within a single session for unique requests. This attribute can be used for ensuring idempotent request processing for some APIs. MoneyGram recommends using a UUID for the value of this field.
X-MG-ConsumerIPAddressStringOptionalIP Address of the system initiating the session


Path Parameters

NameTypeRequired
/Optional
Description
businessProfileIdStringRequiredBusiness's unique MoneyGram identifier


Request Fields

FieldTypeRequired
/Optional
Description
targetAudienceStringOptionalEnumerated value to tailor MoneyGram’s error messages and field metadata to a in-store, digital or crypto customer
agentPartnerIdStringOptionalUnique agent or partner identifier
userLanguageStringOptionalLanguage used by the user/operator
businessDetails.partnerBusinessProfileIdStringOptionalPartners business profileId. This will be passed from the partner and mapped to the MoneyGram profileId.
businessDetails.businessNameString
Min Length: 1
Max Length: 100
RequiredName of the business
businessDetails.legalEntityNameString
Min Length: 1
Max Length: 100
RequiredThe legal name of the business
businessDetails.businessTypeStringOptionalType of business
(Enumerated Values)
businessDetails.businessRegistrationNumberStringRequiredBusiness registration number
businessDetails.businessIssueDateStringOptionalDate of business formation
businessDetails.businessCountryOfRegistrationString
Min Length: 1
max Length: 20
RequiredBusiness's country of registration
businessDetails.address.line1String
Min length: 1
Max Length: 30
RequiredResidence address line 1
businessDetails.address.line2String
Min length: 1
Max length: 30
OptionalResidence address line 2 (if applicable)
businessDetails.address.line3String
Min length: 1
Max length: 30
OptionalResidence address line 3 (if applicable)
businessDetails.business.address.cityString
Min length: 1
Max length: 20
RequiredBusiness City
businessDetails.address.countryCodeString
Length: 3
RequiredCountry of residence (ISO Alpha-3 Code)
businessDetails.address.countrySubdivisionCodeString
Length: 6
OptionalState/province of business
businessDetails.address.postalCodeString
Min length: 2
Max length: 6
OptionalPostal code/ZIP of business
businessDetails.contactDetails.emailString
Min length: 1
Max length: 255
OptionalEmail address
businessDetails.contactDetails.phone.numberString
Min length: 5
Max length: 14
OptionalBusiness phone number
businessDetails.contactDetails.phone.countryDialCodeString
Min length: 1
Max length: 3
OptionalCountry calling code

NOTE: For country calling code see Reference Data API Module /countries endpoint phoneDialCodes



Response Fields

FieldTypeRequired/
Optional
Description
updateSuccessStringRequiredFlag to indicate the update to the business profile was successful.
businessProfileIdStringRequiredBusiness's unique MoneyGram identifier
partnerProfileIdStringOptionalPartners business profileId this will be passed from the partner and mapped to the MoneyGram profileId.